| library #lib; |
| import self as self; |
| import "dart:core" as core; |
| |
| abstract class A extends core::Object { |
| synthetic constructor •() → self::A |
| : super core::Object::•() |
| ; |
| abstract method foo() → core::int; |
| } |
| class B extends self::A { |
| synthetic constructor •() → self::B |
| : super self::A::•() |
| ; |
| [@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false] method foo() → core::int |
| return 1; |
| } |
| class C extends core::Object implements self::A { |
| synthetic constructor •() → self::C |
| : super core::Object::•() |
| ; |
| [@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false] method foo() → core::int |
| return 2; |
| } |
| class D extends self::C { |
| synthetic constructor •() → self::D |
| : super self::C::•() |
| ; |
| } |
| class E extends core::Object { |
| synthetic constructor •() → self::E |
| : super core::Object::•() |
| ; |
| [@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false] method toString() → core::String |
| return "D"; |
| } |
| [@vm.inferred-type.metadata=#lib::D?]static field self::A dd; |
| [@vm.inferred-type.metadata=#lib::E?]static field self::E ee = new self::E::•(); |
| static method callerA1([@vm.inferred-type.metadata=!] self::A aa) → void { |
| [@vm.inferred-type.metadata=!? (skip check)] aa.{self::A::foo}(); |
| } |
| static method callerA2([@vm.inferred-type.metadata=#lib::B] self::A aa) → void { |
| [@vm.direct-call.metadata=#lib::B::foo] [@vm.inferred-type.metadata=!? (skip check)] aa.{self::A::foo}(); |
| } |
| static method callerA3({[@vm.inferred-type.metadata=#lib::C] self::A aa = null}) → void { |
| [@vm.direct-call.metadata=#lib::C::foo] [@vm.inferred-type.metadata=!? (skip check)] aa.{self::A::foo}(); |
| } |
| static method callerA4([@vm.inferred-type.metadata=#lib::D?] self::A aa) → void { |
| [@vm.direct-call.metadata=#lib::C::foo??] [@vm.inferred-type.metadata=!? (skip check)] aa.{self::A::foo}(); |
| } |
| static method callerE1([@vm.inferred-type.metadata=dart.core::_OneByteString] dynamic x) → void { |
| [@vm.direct-call.metadata=dart.core::_StringBase::toString] [@vm.inferred-type.metadata=!? (skip check)] x.{core::Object::toString}(); |
| } |
| static method callerE2([@vm.inferred-type.metadata=#lib::E?] dynamic x) → void { |
| x.{core::Object::toString}(); |
| } |
| static method main(core::List<core::String> args) → dynamic { |
| self::callerA1(new self::B::•()); |
| self::callerA1(new self::C::•()); |
| self::callerA2(new self::B::•()); |
| self::callerA3(aa: new self::C::•()); |
| self::callerA4([@vm.inferred-type.metadata=#lib::D?] self::dd); |
| self::dd = new self::D::•(); |
| self::callerE1("abc"); |
| self::callerE2([@vm.inferred-type.metadata=#lib::E?] self::ee); |
| } |