blob: 2fb7e1340a9f9ff622ed746efb4c4712fb0d83d4 [file] [log] [blame]
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
}