blob: ce9c0b300a01e9b54b940937df6830dbdc73064e [file] [log] [blame]
library #lib /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class C<T extends core::Object? = dynamic> extends core::Object {
synthetic constructor •() self::C<self::C::T%>
: super core::Object::•()
;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] method foo() dynamic
return new self::D::•<self::C::T%>();
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method id1([@vm.inferred-type.metadata=#lib::Y (skip check)] covariant-by-class self::C::T% x) dynamic
return x;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] method id2([@vm.inferred-type.metadata=#lib::Z] covariant-by-class self::C::T% x) dynamic
return x;
}
class D<T extends core::Object? = dynamic> extends core::Object {
synthetic constructor •() self::D<self::D::T%>
: super core::Object::•()
;
}
class E<S extends core::Object? = dynamic, T extends core::Object? = dynamic> extends self::C<self::E::T%> {
synthetic constructor •() self::E<self::E::S%, self::E::T%>
: super self::C::•()
;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] method foo() dynamic
return [@vm.inferred-type.metadata=#lib::D<dart.core::String>] super.{self::C::foo}();
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] method bar() dynamic
return new self::D::•<self::E::S%>();
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10] method baz() dynamic
return new self::D::•<self::E::T%>();
}
abstract class X extends core::Object {
synthetic constructor •() self::X
: super core::Object::•()
;
}
class Y extends self::X {
synthetic constructor •() self::Y
: super self::X::•()
;
}
class Z extends self::X {
synthetic constructor •() self::Z
: super self::X::•()
;
}
abstract class I<T extends core::Object? = dynamic> extends core::Object {
}
abstract class J extends self::I<core::int> {
}
class K<T extends core::Object? = dynamic> extends core::Object {
synthetic constructor •() self::K<self::K::T%>
: super core::Object::•()
;
}
class C2<T extends core::Object? = dynamic> extends core::Object {
synthetic constructor •() self::C2<self::C2::T%>
: super core::Object::•()
;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] [@vm.unboxing-info.metadata=(d)->d] method id3([@vm.inferred-type.metadata=dart.core::_Double (skip check) (value: 3.0)] covariant-by-class core::Comparable<self::C2::T%> x) dynamic
return x;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:13,getterSelectorId:14] method id4([@vm.inferred-type.metadata=#lib::K<#lib::J> (skip check)] covariant-by-class self::K<self::I<self::C2::T%>> x) dynamic
return x;
}
static method main() dynamic {
core::print([@vm.direct-call.metadata=#lib::C.foo] [@vm.inferred-type.metadata=#lib::D<dart.core::int> (skip check)] new self::C::•<core::int>().{self::C::foo}(){() dynamic});
core::print([@vm.direct-call.metadata=#lib::E.foo] [@vm.inferred-type.metadata=#lib::D<dart.core::String> (skip check)] new self::E::•<core::int, core::String>().{self::E::foo}(){() dynamic});
core::print([@vm.direct-call.metadata=#lib::E.bar] [@vm.inferred-type.metadata=#lib::D<dart.core::int> (skip check)] new self::E::•<core::int, core::String>().{self::E::bar}(){() dynamic});
core::print([@vm.direct-call.metadata=#lib::E.baz] [@vm.inferred-type.metadata=#lib::D<dart.core::String> (skip check)] new self::E::•<core::int, core::String>().{self::E::baz}(){() dynamic});
self::C<self::X> c = new self::C::•<self::Y>();
[@vm.call-site-attributes.metadata=receiverType:#lib::C<#lib::X>] [@vm.direct-call.metadata=#lib::C.id1] [@vm.inferred-type.metadata=!? (skip check)] c.{self::C::id1}(new self::Y::•()){(self::X) dynamic};
[@vm.call-site-attributes.metadata=receiverType:#lib::C<#lib::X>] [@vm.direct-call.metadata=#lib::C.id2] c.{self::C::id2}(new self::Z::•()){(self::X) dynamic};
self::C2<core::num> c2 = new self::C2::•<core::num>();
[@vm.call-site-attributes.metadata=receiverType:#lib::C2<dart.core::num>] [@vm.direct-call.metadata=#lib::C2.id3] [@vm.inferred-type.metadata=!? (skip check)] c2.{self::C2::id3}(3.0){(core::Comparable<core::num>) dynamic};
[@vm.call-site-attributes.metadata=receiverType:#lib::C2<dart.core::num>] [@vm.direct-call.metadata=#lib::C2.id4] [@vm.inferred-type.metadata=!? (skip check)] c2.{self::C2::id4}(new self::K::•<self::J>()){(self::K<self::I<core::num>>) dynamic};
}