blob: 3b434d80f48dd32bce6aa7d8d8b2e1c6fdd81d62 [file] [log] [blame]
library;
import self as self;
import "dart:core" as core;
class D1 extends core::Object {
synthetic constructor •() self::D1
: super core::Object::•()
;
set property(self::D1 value) void {}
}
extension type A(core::int property) {
abstract extension-type-member representation-field get property() core::int;
set property = self::A|set#property;
constructor = self::A|constructor#;
constructor tearoff = self::A|constructor#_#new#tearOff;
}
extension type B1(core::int it) {
abstract extension-type-member representation-field get it() core::int;
set property = self::B1|set#property;
constructor = self::B1|constructor#;
constructor tearoff = self::B1|constructor#_#new#tearOff;
}
extension type B2(core::int property) implements self::B1% /* erasure=core::int, declared=! */ {
abstract extension-type-member representation-field get property() core::int;
constructor = self::B2|constructor#;
constructor tearoff = self::B2|constructor#_#new#tearOff;
}
extension type C1(core::int property) {
abstract extension-type-member representation-field get property() core::int;
constructor = self::C1|constructor#;
constructor tearoff = self::C1|constructor#_#new#tearOff;
}
extension type C2(core::int it) implements self::C1% /* erasure=core::int, declared=! */ {
abstract extension-type-member representation-field get it() core::int;
set property = self::C2|set#property;
constructor = self::C2|constructor#;
constructor tearoff = self::C2|constructor#_#new#tearOff;
}
extension type D2(self::D1 property) implements self::D1 {
abstract extension-type-member representation-field get property() self::D1;
constructor = self::D2|constructor#;
constructor tearoff = self::D2|constructor#_#new#tearOff;
}
static extension-type-member method A|constructor#(core::int property) → self::A% /* erasure=core::int, declared=! */ {
lowered final self::A% /* erasure=core::int, declared=! */ #this = property;
return #this;
}
static extension-type-member method A|constructor#_#new#tearOff(core::int property) → self::A% /* erasure=core::int, declared=! */
return self::A|constructor#(property);
static extension-type-member method A|set#property(lowered final self::A% /* erasure=core::int, declared=! */ #this, core::int value) → void {}
static extension-type-member method B1|constructor#(core::int it) → self::B1% /* erasure=core::int, declared=! */ {
lowered final self::B1% /* erasure=core::int, declared=! */ #this = it;
return #this;
}
static extension-type-member method B1|constructor#_#new#tearOff(core::int it) → self::B1% /* erasure=core::int, declared=! */
return self::B1|constructor#(it);
static extension-type-member method B1|set#property(lowered final self::B1% /* erasure=core::int, declared=! */ #this, core::int value) → void {}
static extension-type-member method B2|constructor#(core::int property) → self::B2% /* erasure=core::int, declared=! */ {
lowered final self::B2% /* erasure=core::int, declared=! */ #this = property;
return #this;
}
static extension-type-member method B2|constructor#_#new#tearOff(core::int property) → self::B2% /* erasure=core::int, declared=! */
return self::B2|constructor#(property);
static extension-type-member method C1|constructor#(core::int property) → self::C1% /* erasure=core::int, declared=! */ {
lowered final self::C1% /* erasure=core::int, declared=! */ #this = property;
return #this;
}
static extension-type-member method C1|constructor#_#new#tearOff(core::int property) → self::C1% /* erasure=core::int, declared=! */
return self::C1|constructor#(property);
static extension-type-member method C2|constructor#(core::int it) → self::C2% /* erasure=core::int, declared=! */ {
lowered final self::C2% /* erasure=core::int, declared=! */ #this = it;
return #this;
}
static extension-type-member method C2|constructor#_#new#tearOff(core::int it) → self::C2% /* erasure=core::int, declared=! */
return self::C2|constructor#(it);
static extension-type-member method C2|set#property(lowered final self::C2% /* erasure=core::int, declared=! */ #this, core::int value) → void {}
static extension-type-member method D2|constructor#(self::D1 property) → self::D2 /* erasure=self::D1 */ {
lowered final self::D2 /* erasure=self::D1 */ #this = property;
return #this;
}
static extension-type-member method D2|constructor#_#new#tearOff(self::D1 property) → self::D2 /* erasure=self::D1 */
return self::D2|constructor#(property);
static method main() dynamic {
self::A% /* erasure=core::int, declared=! */ a = self::A|constructor#(0);
self::A|set#property(a, a as{Unchecked} core::int);
self::B2% /* erasure=core::int, declared=! */ b = self::B2|constructor#(0);
self::B1|set#property(b, b as{Unchecked} core::int);
self::C2% /* erasure=core::int, declared=! */ c = self::C2|constructor#(0);
self::C2|set#property(c, c as{Unchecked} core::int);
self::D2 /* erasure=self::D1 */ d = self::D2|constructor#(new self::D1::•());
d.{self::D1::property} = d as{Unchecked} self::D1;
}