blob: 4c346ff4dc8e6e53cfed17aa083fd5b13ee17cf5 [file] [log] [blame]
library;
import self as self;
import "dart:core" as core;
typedef Exactly<invariant T extends core::Object? = dynamic> = (T%) T%;
extension StaticType<T extends core::Object? = dynamic> on T% {
method expectStaticType = self::StaticType|expectStaticType;
method tearoff expectStaticType = self::StaticType|get#expectStaticType;
}
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;
}
extension type ET2<T extends core::Object? = dynamic>(T% id) {
abstract extension-type-member representation-field get id() T%;
constructor = self::ET2|constructor#;
constructor tearoff = self::ET2|constructor#_#new#tearOff;
}
extension type ET3(core::int id) {
abstract extension-type-member representation-field get id() core::int;
constructor = self::ET3|constructor#;
constructor tearoff = self::ET3|constructor#_#new#tearOff;
}
extension type ET4<T extends core::Object? = dynamic>(T% id) {
abstract extension-type-member representation-field get id() T%;
constructor = self::ET4|constructor#;
constructor tearoff = self::ET4|constructor#_#new#tearOff;
}
extension type ET5(core::int id) {
abstract extension-type-member representation-field get id() core::int;
constructor n = self::ET5|constructor#n;
constructor tearoff n = self::ET5|constructor#_#n#tearOff;
}
extension type ET6<T extends core::Object? = dynamic>(T% id) {
abstract extension-type-member representation-field get id() T%;
constructor n = self::ET6|constructor#n;
constructor tearoff n = self::ET6|constructor#_#n#tearOff;
}
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 ET2|constructor#<T extends core::Object? = dynamic>(self::ET2|constructor#::T% id) → self::ET2<self::ET2|constructor#::T%>% /* erasure=self::ET2|constructor#::T%, declared=! */ {
lowered final self::ET2<self::ET2|constructor#::T%>% /* erasure=self::ET2|constructor#::T%, declared=! */ #this = id;
return #this;
}
static extension-type-member method ET2|constructor#_#new#tearOff<T extends core::Object? = dynamic>(self::ET2|constructor#_#new#tearOff::T% id) → self::ET2<self::ET2|constructor#_#new#tearOff::T%>% /* erasure=self::ET2|constructor#_#new#tearOff::T%, declared=! */
return self::ET2|constructor#<self::ET2|constructor#_#new#tearOff::T%>(id);
static extension-type-member method ET3|constructor#(core::int id) → self::ET3% /* erasure=core::int, declared=! */ {
lowered final self::ET3% /* erasure=core::int, declared=! */ #this = id;
return #this;
}
static extension-type-member method ET3|constructor#_#new#tearOff(core::int id) → self::ET3% /* erasure=core::int, declared=! */
return self::ET3|constructor#(id);
static extension-type-member method ET4|constructor#<T extends core::Object? = dynamic>(self::ET4|constructor#::T% id) → self::ET4<self::ET4|constructor#::T%>% /* erasure=self::ET4|constructor#::T%, declared=! */ {
lowered final self::ET4<self::ET4|constructor#::T%>% /* erasure=self::ET4|constructor#::T%, declared=! */ #this = id;
return #this;
}
static extension-type-member method ET4|constructor#_#new#tearOff<T extends core::Object? = dynamic>(self::ET4|constructor#_#new#tearOff::T% id) → self::ET4<self::ET4|constructor#_#new#tearOff::T%>% /* erasure=self::ET4|constructor#_#new#tearOff::T%, declared=! */
return self::ET4|constructor#<self::ET4|constructor#_#new#tearOff::T%>(id);
static extension-type-member method ET5|constructor#n(core::int id) → self::ET5% /* erasure=core::int, declared=! */ {
lowered final self::ET5% /* erasure=core::int, declared=! */ #this = id;
return #this;
}
static extension-type-member method ET5|constructor#_#n#tearOff(core::int id) → self::ET5% /* erasure=core::int, declared=! */
return self::ET5|constructor#n(id);
static extension-type-member method ET6|constructor#n<T extends core::Object? = dynamic>(self::ET6|constructor#n::T% id) → self::ET6<self::ET6|constructor#n::T%>% /* erasure=self::ET6|constructor#n::T%, declared=! */ {
lowered final self::ET6<self::ET6|constructor#n::T%>% /* erasure=self::ET6|constructor#n::T%, declared=! */ #this = id;
return #this;
}
static extension-type-member method ET6|constructor#_#n#tearOff<T extends core::Object? = dynamic>(self::ET6|constructor#_#n#tearOff::T% id) → self::ET6<self::ET6|constructor#_#n#tearOff::T%>% /* erasure=self::ET6|constructor#_#n#tearOff::T%, declared=! */
return self::ET6|constructor#n<self::ET6|constructor#_#n#tearOff::T%>(id);
static method main() dynamic {
self::StaticType|expectStaticType<(core::int) self::ET1% /* erasure=core::int, declared=! */, ((core::int) self::ET1% /* erasure=core::int, declared=! */) (core::int) self::ET1% /* erasure=core::int, declared=! */>(#C1);
self::StaticType|expectStaticType<(core::String) self::ET2<core::String>% /* erasure=core::String, declared=! */, ((core::String) self::ET2<core::String>% /* erasure=core::String, declared=! */) (core::String) self::ET2<core::String>% /* erasure=core::String, declared=! */>(#C3);
self::StaticType|expectStaticType<(core::int) self::ET3% /* erasure=core::int, declared=! */, ((core::int) self::ET3% /* erasure=core::int, declared=! */) (core::int) self::ET3% /* erasure=core::int, declared=! */>(#C4);
self::StaticType|expectStaticType<(core::String) self::ET4<core::String>% /* erasure=core::String, declared=! */, ((core::String) self::ET4<core::String>% /* erasure=core::String, declared=! */) (core::String) self::ET4<core::String>% /* erasure=core::String, declared=! */>(#C6);
self::StaticType|expectStaticType<(core::int) self::ET5% /* erasure=core::int, declared=! */, ((core::int) self::ET5% /* erasure=core::int, declared=! */) (core::int) self::ET5% /* erasure=core::int, declared=! */>(#C7);
self::StaticType|expectStaticType<(core::String) self::ET6<core::String>% /* erasure=core::String, declared=! */, ((core::String) self::ET6<core::String>% /* erasure=core::String, declared=! */) (core::String) self::ET6<core::String>% /* erasure=core::String, declared=! */>(#C9);
}
static extension-member method StaticType|expectStaticType<T extends core::Object? = dynamic, R extends (self::StaticType|expectStaticType::T%) self::StaticType|expectStaticType::T% = (dynamic) dynamic>(lowered final self::StaticType|expectStaticType::T% #this) → self::StaticType|expectStaticType::T% {
return #this;
}
static extension-member method StaticType|get#expectStaticType<T extends core::Object? = dynamic>(lowered final self::StaticType|get#expectStaticType::T% #this) → <R extends (self::StaticType|get#expectStaticType::T%) → self::StaticType|get#expectStaticType::T% = (dynamic) → dynamic>() → self::StaticType|get#expectStaticType::T%
return <R extends (self::StaticType|get#expectStaticType::T%) → self::StaticType|get#expectStaticType::T% = (dynamic) → dynamic>() → self::StaticType|get#expectStaticType::T% => self::StaticType|expectStaticType<self::StaticType|get#expectStaticType::T%, R>(#this);
constants {
#C1 = static-tearoff self::ET1|constructor#_#new#tearOff
#C2 = static-tearoff self::ET2|constructor#_#new#tearOff
#C3 = instantiation #C2 <core::String>
#C4 = static-tearoff self::ET3|constructor#_#new#tearOff
#C5 = static-tearoff self::ET4|constructor#_#new#tearOff
#C6 = instantiation #C5 <core::String>
#C7 = static-tearoff self::ET5|constructor#_#n#tearOff
#C8 = static-tearoff self::ET6|constructor#_#n#tearOff
#C9 = instantiation #C8 <core::String>
}