blob: 20b9836d85566014a376a544901f1282eecb2fde [file] [log] [blame]
library;
import self as self;
import "dart:core" as core;
class A extends core::Object {
synthetic constructor •() self::A
: super core::Object::•()
;
}
class B extends core::Object implements self::A {
synthetic constructor •() self::B
: super core::Object::•()
;
@#C1
operator ==(covariant-by-declaration self::A other) core::bool {
return true;
}
}
class C extends core::Object {
synthetic constructor •() self::C
: super core::Object::•()
;
}
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;
abstract forwarding-stub operator ==(covariant-by-declaration core::Object other) core::bool;
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 test() void {
self::ET2 /* erasure=self::B */ e2 = self::ET2|constructor#(new self::B::•());
self::ET1 /* erasure=self::B */ e1 = e2;
e2 =={core::Object::==}{(core::Object) core::bool} new self::A::•();
e2 =={core::Object::==}{(core::Object) core::bool} new self::B::•();
e2 =={core::Object::==}{(core::Object) core::bool} new core::Object::•();
e2 =={core::Object::==}{(core::Object) core::bool} new self::C::•();
e1 =={core::Object::==}{(core::Object) core::bool} new self::A::•();
e1 =={core::Object::==}{(core::Object) core::bool} new self::B::•();
e1 =={core::Object::==}{(core::Object) core::bool} new core::Object::•();
e1 =={core::Object::==}{(core::Object) core::bool} new self::C::•();
}
constants {
#C1 = core::_Override {}
}