| library; |
| import self as self; |
| import "dart:core" as core; |
| |
| class C1 extends core::Object { |
| final field core::int id; |
| constructor n1(core::int id, [core::String s = #C1]) → self::C1 |
| : self::C1::id = id, super core::Object::•() { |
| self::log = s; |
| } |
| static method _#n1#tearOff(core::int id, [core::String s = #C1]) → self::C1 |
| return new self::C1::n1(id, s); |
| } |
| extension type ET1(core::int id) { |
| abstract extension-type-member representation-field get id() → core::int; |
| constructor • = self::ET1|constructor#; |
| constructor tearoff • = self::ET1|constructor#_#new#tearOff; |
| constructor n1 = self::ET1|constructor#n1; |
| constructor tearoff n1 = self::ET1|constructor#_#n1#tearOff; |
| } |
| static field dynamic log; |
| static extension-type-member method ET1|constructor#(core::int id) → self::ET1% /* erasure=core::int, declared=! */ { |
| lowered final self::ET1% /* erasure=core::int, declared=! */ #this = id; |
| return #this; |
| } |
| static extension-type-member method ET1|constructor#_#new#tearOff(core::int id) → self::ET1% /* erasure=core::int, declared=! */ |
| return self::ET1|constructor#(id); |
| static extension-type-member method ET1|constructor#n1(core::int id, [core::String s = #C2]) → self::ET1% /* erasure=core::int, declared=! */ { |
| lowered final self::ET1% /* erasure=core::int, declared=! */ #this = id; |
| { |
| self::log = s; |
| } |
| return #this; |
| } |
| static extension-type-member method ET1|constructor#_#n1#tearOff(core::int id, [core::String s = #C2]) → self::ET1% /* erasure=core::int, declared=! */ |
| return self::ET1|constructor#n1(id, s); |
| static method main() → dynamic { |
| (core::int, [core::String]) → self::C1 x = #C3; |
| x(0){(core::int, [core::String]) → self::C1}; |
| self::expect("a", self::log); |
| (core::int, [core::String]) → self::ET1% /* erasure=core::int, declared=! */ y = #C4; |
| y(1){(core::int, [core::String]) → self::ET1% /* erasure=core::int, declared=! */}; |
| self::expect("b", self::log); |
| } |
| static method expect(dynamic expected, dynamic actual) → dynamic { |
| if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) |
| throw "Expected ${expected}, actual ${actual}"; |
| } |
| |
| constants { |
| #C1 = "a" |
| #C2 = "b" |
| #C3 = static-tearoff self::C1::_#n1#tearOff |
| #C4 = static-tearoff self::ET1|constructor#_#n1#tearOff |
| } |