blob: bf9f2bf77dd1a76375cd918e3bfdac1a8ac21663 [file] [log] [blame]
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}'.";
}
}