blob: 28bc185728b669dec79628e78e9ab6722deb7dcd [file] [log] [blame]
library;
import self as self;
import "dart:core" as core;
extension type A<T extends core::Object? = dynamic>(core::Object it) {
abstract extension-type-member representation-field get it() core::Object;
method method = self::A|method;
method tearoff method = self::A|get#method;
get getter = self::A|get#getter;
operator [] = self::A|[];
set setter = self::A|set#setter;
constructor = self::A|constructor#;
constructor tearoff = self::A|constructor#_#new#tearOff;
}
extension type B<S extends core::Object? = dynamic>(core::Object it) implements self::A<S%>% /* erasure=core::Object, declared=! */ {
abstract extension-type-member representation-field get it() core::Object;
method method2 = self::B|method2;
method tearoff method2 = self::B|get#method2;
get getter2 = self::B|get#getter2;
operator []= = self::B|[]=;
set setter2 = self::B|set#setter2;
constructor = self::B|constructor#;
constructor tearoff = self::B|constructor#_#new#tearOff;
}
extension type C(core::Object i) implements self::A<core::int>% /* erasure=core::Object, declared=! */ {
abstract extension-type-member representation-field get i() core::Object;
method method3 = self::C|method3;
method tearoff method3 = self::C|get#method3;
get getter3 = self::C|get#getter3;
operator []= = self::C|[]=;
set setter3 = self::C|set#setter3;
constructor = self::C|constructor#;
constructor tearoff = self::C|constructor#_#new#tearOff;
}
static extension-type-member method A|constructor#<T extends core::Object? = dynamic>(core::Object it) → self::A<self::A|constructor#::T%>% /* erasure=core::Object, declared=! */ {
lowered final self::A<self::A|constructor#::T%>% /* erasure=core::Object, declared=! */ #this = it;
return #this;
}
static extension-type-member method A|constructor#_#new#tearOff<T extends core::Object? = dynamic>(core::Object it) → self::A<self::A|constructor#_#new#tearOff::T%>% /* erasure=core::Object, declared=! */
return self::A|constructor#<self::A|constructor#_#new#tearOff::T%>(it);
static extension-type-member method A|method<T extends core::Object? = dynamic>(lowered final self::A<self::A|method::T%>% /* erasure=core::Object, declared=! */ #this) → self::A|method::T%
return throw "";
static extension-type-member method A|get#method<T extends core::Object? = dynamic>(lowered final self::A<self::A|get#method::T%>% /* erasure=core::Object, declared=! */ #this) → () → self::A|get#method::T%
return () self::A|get#method::T% => self::A|method<self::A|get#method::T%>(#this);
static extension-type-member method A|get#getter<T extends core::Object? = dynamic>(lowered final self::A<self::A|get#getter::T%>% /* erasure=core::Object, declared=! */ #this) → self::A|get#getter::T%
return throw "";
static extension-type-member method A|set#setter<T extends core::Object? = dynamic>(lowered final self::A<self::A|set#setter::T%>% /* erasure=core::Object, declared=! */ #this, self::A|set#setter::T% value) → void {}
static extension-type-member method A|[]<T extends core::Object? = dynamic>(lowered final self::A<self::A|[]::T%>% /* erasure=core::Object, declared=! */ #this, self::A|[]::T% index) → self::A|[]::T%
return throw "";
static extension-type-member method B|constructor#<S extends core::Object? = dynamic>(core::Object it) → self::B<self::B|constructor#::S%>% /* erasure=core::Object, declared=! */ {
lowered final self::B<self::B|constructor#::S%>% /* erasure=core::Object, declared=! */ #this = it;
return #this;
}
static extension-type-member method B|constructor#_#new#tearOff<S extends core::Object? = dynamic>(core::Object it) → self::B<self::B|constructor#_#new#tearOff::S%>% /* erasure=core::Object, declared=! */
return self::B|constructor#<self::B|constructor#_#new#tearOff::S%>(it);
static extension-type-member method B|method2<S extends core::Object? = dynamic>(lowered final self::B<self::B|method2::S%>% /* erasure=core::Object, declared=! */ #this) → self::B|method2::S%
return self::A|method<self::B|method2::S%>(#this);
static extension-type-member method B|get#method2<S extends core::Object? = dynamic>(lowered final self::B<self::B|get#method2::S%>% /* erasure=core::Object, declared=! */ #this) → () → self::B|get#method2::S%
return () self::B|get#method2::S% => self::B|method2<self::B|get#method2::S%>(#this);
static extension-type-member method B|get#getter2<S extends core::Object? = dynamic>(lowered final self::B<self::B|get#getter2::S%>% /* erasure=core::Object, declared=! */ #this) → self::B|get#getter2::S%
return self::A|get#getter<self::B|get#getter2::S%>(#this);
static extension-type-member method B|set#setter2<S extends core::Object? = dynamic>(lowered final self::B<self::B|set#setter2::S%>% /* erasure=core::Object, declared=! */ #this, self::B|set#setter2::S% value) → void {
self::A|set#setter<self::B|set#setter2::S%>(#this, value);
}
static extension-type-member method B|[]=<S extends core::Object? = dynamic>(lowered final self::B<self::B|[]=::S%>% /* erasure=core::Object, declared=! */ #this, self::B|[]=::S% index, self::B|[]=::S% value) → void {
value = self::A|[]<self::B|[]=::S%>(#this, index);
}
static extension-type-member method C|constructor#(core::Object i) → self::C% /* erasure=core::Object, declared=! */ {
lowered final self::C% /* erasure=core::Object, declared=! */ #this = i;
return #this;
}
static extension-type-member method C|constructor#_#new#tearOff(core::Object i) → self::C% /* erasure=core::Object, declared=! */
return self::C|constructor#(i);
static extension-type-member method C|method3(lowered final self::C% /* erasure=core::Object, declared=! */ #this) → core::int
return self::A|method<core::int>(#this);
static extension-type-member method C|get#method3(lowered final self::C% /* erasure=core::Object, declared=! */ #this) → () → core::int
return () core::int => self::C|method3(#this);
static extension-type-member method C|get#getter3(lowered final self::C% /* erasure=core::Object, declared=! */ #this) → core::int
return self::A|get#getter<core::int>(#this);
static extension-type-member method C|set#setter3(lowered final self::C% /* erasure=core::Object, declared=! */ #this, core::int value) → void {
self::A|set#setter<core::int>(#this, value);
}
static extension-type-member method C|[]=(lowered final self::C% /* erasure=core::Object, declared=! */ #this, core::int index, core::int value) → void {
value = self::A|[]<core::int>(#this, index);
}
static method test(self::A<core::bool>% /* erasure=core::Object, declared=! */ a, self::B<core::String>% /* erasure=core::Object, declared=! */ b, self::C% /* erasure=core::Object, declared=! */ c) dynamic {
core::bool a1 = self::A|method<core::bool>(a);
core::bool a2 = self::A|get#getter<core::bool>(a);
self::A|set#setter<core::bool>(a, a1);
core::bool a3 = self::A|[]<core::bool>(a, a2);
core::String b1 = self::A|method<core::String>(b);
core::String b2 = self::A|get#getter<core::String>(b);
self::A|set#setter<core::String>(b, b1);
core::String b3 = self::A|[]<core::String>(b, b2);
core::String b4 = self::B|method2<core::String>(b);
core::String b5 = self::B|get#getter2<core::String>(b);
self::B|set#setter2<core::String>(b, b4);
self::B|[]=<core::String>(b, b5, b1);
core::int c1 = self::A|method<core::int>(c);
core::int c2 = self::A|get#getter<core::int>(c);
self::A|set#setter<core::int>(c, c1);
core::int c3 = self::A|[]<core::int>(c, c2);
core::int c4 = self::C|method3(c);
core::int c5 = self::C|get#getter3(c);
self::C|set#setter3(c, c4);
self::C|[]=(c, c5, c1);
}