| 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}; |
| } |