| library; |
| import self as self; |
| import "dart:core" as core; |
| |
| class B extends core::Object implements self::A { |
| final field core::int x = 1; |
| synthetic constructor •() → self::B |
| : super core::Object::•() |
| ; |
| static method _#new#tearOff() → self::B |
| return new self::B::•(); |
| } |
| abstract class A extends core::Object { |
| abstract get x() → core::int; |
| static factory •() → self::A /* redirection-target: self::B::• */ |
| return new self::B::•(); |
| static method _#new#tearOff() → self::A |
| return new self::B::•(); |
| } |
| extension type C(self::A point) implements self::A { |
| abstract extension-type-member representation-field get point() → self::A; |
| constructor _ = self::C|constructor#_; |
| constructor tearoff _ = self::C|constructor#_#_#tearOff; |
| constructor • = self::C|constructor#; |
| constructor tearoff • = self::C|constructor#_#new#tearOff; |
| } |
| static extension-type-member method C|constructor#_(self::A point) → self::C /* erasure=self::A */ { |
| lowered final self::C /* erasure=self::A */ #this = point; |
| return #this; |
| } |
| static extension-type-member method C|constructor#_#_#tearOff(self::A point) → self::C /* erasure=self::A */ |
| return self::C|constructor#_(point); |
| static extension-type-member method C|constructor#() → self::C /* erasure=self::A */ { |
| lowered final self::C /* erasure=self::A */ #this = new self::B::•(); |
| return #this; |
| } |
| static extension-type-member method C|constructor#_#new#tearOff() → self::C /* erasure=self::A */ |
| return self::C|constructor#(); |
| static method main() → void { |
| self::expectEquals(new self::B::•().{self::A::x}{core::int}, 1); |
| self::expectEquals(self::C|constructor#().{self::A::x}{core::int}, 1); |
| } |
| static method expectEquals(dynamic x, dynamic y) → dynamic { |
| if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) { |
| throw "Expected equal values, got '${x}' and '${y}'."; |
| } |
| } |