| library; |
| import self as self; |
| import "dart:core" as core; |
| |
| class A extends core::Object { |
| synthetic constructor •() → self::A |
| : super core::Object::•() |
| ; |
| method foo() → void {} |
| } |
| class B extends core::Object implements self::A { |
| synthetic constructor •() → self::B |
| : super core::Object::•() |
| ; |
| @#C1 |
| method foo([core::int i = #C2]) → void {} |
| } |
| extension type ET1(self::B b) implements self::A { |
| abstract extension-type-member representation-field get b() → self::B; |
| constructor • = self::ET1|constructor#; |
| constructor tearoff • = self::ET1|constructor#_#new#tearOff; |
| } |
| extension type ET2(self::B b) implements self::ET1 /* erasure=self::B */, self::B { |
| abstract extension-type-member representation-field get b() → self::B; |
| constructor • = self::ET2|constructor#; |
| constructor tearoff • = self::ET2|constructor#_#new#tearOff; |
| } |
| static extension-type-member method ET1|constructor#(self::B b) → self::ET1 /* erasure=self::B */ { |
| lowered final self::ET1 /* erasure=self::B */ #this = b; |
| return #this; |
| } |
| static extension-type-member method ET1|constructor#_#new#tearOff(self::B b) → self::ET1 /* erasure=self::B */ |
| return self::ET1|constructor#(b); |
| static extension-type-member method ET2|constructor#(self::B b) → self::ET2 /* erasure=self::B */ { |
| lowered final self::ET2 /* erasure=self::B */ #this = b; |
| return #this; |
| } |
| static extension-type-member method ET2|constructor#_#new#tearOff(self::B b) → self::ET2 /* erasure=self::B */ |
| return self::ET2|constructor#(b); |
| static method main() → void { |
| self::ET2 /* erasure=self::B */ et2 = self::ET2|constructor#(new self::B::•()); |
| et2.{self::B::foo}(42){([core::int]) → void}; |
| } |
| |
| constants { |
| #C1 = core::_Override {} |
| #C2 = 0 |
| } |