| library; |
| import self as self; |
| import "dart:core" as core; |
| import "inherited_representation_field_lib.dart" as inh; |
| |
| import "org-dartlang-testcase:///inherited_representation_field_lib.dart"; |
| |
| extension type A(core::int a) { |
| abstract extension-type-member representation-field get a() → core::int; |
| constructor • = self::A|constructor#; |
| constructor tearoff • = self::A|constructor#_#new#tearOff; |
| } |
| extension type B(core::int b) implements self::A% /* erasure=core::int, declared=! */ { |
| abstract extension-type-member representation-field get b() → core::int; |
| method methodA = self::B|methodA; |
| method tearoff methodA = self::B|get#methodA; |
| method methodB = self::B|methodB; |
| method tearoff methodB = self::B|get#methodB; |
| constructor • = self::B|constructor#; |
| constructor tearoff • = self::B|constructor#_#new#tearOff; |
| } |
| extension type C(core::int _c) { |
| abstract extension-type-member representation-field get _c() → core::int; |
| constructor • = self::C|constructor#; |
| constructor tearoff • = self::C|constructor#_#new#tearOff; |
| } |
| extension type E(core::int _e) implements inh::D% /* erasure=core::int, declared=! */ { |
| abstract extension-type-member representation-field get _e() → core::int; |
| method methodC = self::E|methodC; |
| method tearoff methodC = self::E|get#methodC; |
| constructor • = self::E|constructor#; |
| constructor tearoff • = self::E|constructor#_#new#tearOff; |
| } |
| extension type G<T extends core::Object? = dynamic>(T% g) { |
| abstract extension-type-member representation-field get g() → T%; |
| constructor • = self::G|constructor#; |
| constructor tearoff • = self::G|constructor#_#new#tearOff; |
| } |
| extension type H<T extends core::Object? = dynamic>(core::List<T%> h) implements self::G<core::List<T%>>% /* erasure=core::List<T%>, declared=! */ { |
| abstract extension-type-member representation-field get h() → core::List<T%>; |
| constructor • = self::H|constructor#; |
| constructor tearoff • = self::H|constructor#_#new#tearOff; |
| } |
| static extension-type-member method A|constructor#(core::int a) → self::A% /* erasure=core::int, declared=! */ { |
| lowered final self::A% /* erasure=core::int, declared=! */ #this = a; |
| return #this; |
| } |
| static extension-type-member method A|constructor#_#new#tearOff(core::int a) → self::A% /* erasure=core::int, declared=! */ |
| return self::A|constructor#(a); |
| static extension-type-member method B|constructor#(core::int b) → self::B% /* erasure=core::int, declared=! */ { |
| lowered final self::B% /* erasure=core::int, declared=! */ #this = b; |
| return #this; |
| } |
| static extension-type-member method B|constructor#_#new#tearOff(core::int b) → self::B% /* erasure=core::int, declared=! */ |
| return self::B|constructor#(b); |
| static extension-type-member method B|methodA(lowered final self::B% /* erasure=core::int, declared=! */ #this) → dynamic |
| return #this as{Unchecked} core::int; |
| static extension-type-member method B|get#methodA(lowered final self::B% /* erasure=core::int, declared=! */ #this) → () → dynamic |
| return () → dynamic => self::B|methodA(#this); |
| static extension-type-member method B|methodB(lowered final self::B% /* erasure=core::int, declared=! */ #this) → dynamic |
| return #this as{Unchecked} core::int; |
| static extension-type-member method B|get#methodB(lowered final self::B% /* erasure=core::int, declared=! */ #this) → () → dynamic |
| return () → dynamic => self::B|methodB(#this); |
| static extension-type-member method C|constructor#(core::int _c) → self::C% /* erasure=core::int, declared=! */ { |
| lowered final self::C% /* erasure=core::int, declared=! */ #this = _c; |
| return #this; |
| } |
| static extension-type-member method C|constructor#_#new#tearOff(core::int _c) → self::C% /* erasure=core::int, declared=! */ |
| return self::C|constructor#(_c); |
| static extension-type-member method E|constructor#(core::int _e) → self::E% /* erasure=core::int, declared=! */ { |
| lowered final self::E% /* erasure=core::int, declared=! */ #this = _e; |
| return #this; |
| } |
| static extension-type-member method E|constructor#_#new#tearOff(core::int _e) → self::E% /* erasure=core::int, declared=! */ |
| return self::E|constructor#(_e); |
| static extension-type-member method E|methodC(lowered final self::E% /* erasure=core::int, declared=! */ #this) → dynamic |
| return #this as{Unchecked} core::int; |
| static extension-type-member method E|get#methodC(lowered final self::E% /* erasure=core::int, declared=! */ #this) → () → dynamic |
| return () → dynamic => self::E|methodC(#this); |
| static extension-type-member method G|constructor#<T extends core::Object? = dynamic>(self::G|constructor#::T% g) → self::G<self::G|constructor#::T%>% /* erasure=self::G|constructor#::T%, declared=! */ { |
| lowered final self::G<self::G|constructor#::T%>% /* erasure=self::G|constructor#::T%, declared=! */ #this = g; |
| return #this; |
| } |
| static extension-type-member method G|constructor#_#new#tearOff<T extends core::Object? = dynamic>(self::G|constructor#_#new#tearOff::T% g) → self::G<self::G|constructor#_#new#tearOff::T%>% /* erasure=self::G|constructor#_#new#tearOff::T%, declared=! */ |
| return self::G|constructor#<self::G|constructor#_#new#tearOff::T%>(g); |
| static extension-type-member method H|constructor#<T extends core::Object? = dynamic>(core::List<self::H|constructor#::T%> h) → self::H<self::H|constructor#::T%>% /* erasure=core::List<self::H|constructor#::T%>, declared=! */ { |
| lowered final self::H<self::H|constructor#::T%>% /* erasure=core::List<self::H|constructor#::T%>, declared=! */ #this = h; |
| return #this; |
| } |
| static extension-type-member method H|constructor#_#new#tearOff<T extends core::Object? = dynamic>(core::List<self::H|constructor#_#new#tearOff::T%> h) → self::H<self::H|constructor#_#new#tearOff::T%>% /* erasure=core::List<self::H|constructor#_#new#tearOff::T%>, declared=! */ |
| return self::H|constructor#<self::H|constructor#_#new#tearOff::T%>(h); |
| static method main() → dynamic { |
| self::A% /* erasure=core::int, declared=! */ a = self::A|constructor#(42); |
| self::expect(42, a as{Unchecked} core::int); |
| self::B% /* erasure=core::int, declared=! */ b = self::B|constructor#(87); |
| self::expect(87, b as{Unchecked} core::int); |
| self::expect(87, b as{Unchecked} core::int); |
| self::expect(87, self::B|methodA(b)); |
| self::expect(87, self::B|methodB(b)); |
| self::C% /* erasure=core::int, declared=! */ c = self::C|constructor#(123); |
| self::expect(123, c as{Unchecked} core::int); |
| inh::D% /* erasure=core::int, declared=! */ d = inh::D|constructor#(442); |
| self::expect(442, d as{Unchecked} core::int); |
| self::E% /* erasure=core::int, declared=! */ e = self::E|constructor#(872); |
| self::expect(872, e as{Unchecked} core::int); |
| self::expect(872, e as{Unchecked} core::int); |
| self::expect(872, self::E|methodC(e)); |
| inh::F% /* erasure=core::int, declared=! */ f = inh::F|constructor#(1023); |
| self::expect(1023, f as{Unchecked} core::int); |
| self::expect(1023, f as{Unchecked} core::int); |
| self::expect(1023, self::E|methodC(f)); |
| self::expect(1023, inh::F|methodD(f)); |
| self::G<core::int>% /* erasure=core::int, declared=! */ g1 = self::G|constructor#<core::int>(72); |
| core::int g1_g = g1 as{Unchecked} core::int; |
| core::int g1_alias = g1_g; |
| self::expect(72, g1 as{Unchecked} core::int); |
| self::G<core::String>% /* erasure=core::String, declared=! */ g2 = self::G|constructor#<core::String>("72"); |
| core::String g2_g = g2 as{Unchecked} core::String; |
| core::String g2_alias = g2_g; |
| self::expect("72", g2 as{Unchecked} core::String); |
| core::List<core::int> list1 = <core::int>[97]; |
| self::H<core::int>% /* erasure=core::List<core::int>, declared=! */ h1 = self::H|constructor#<core::int>(list1); |
| core::List<core::int> h1_g = h1 as{Unchecked} core::List<core::int>; |
| core::List<core::int> h1_g_alias = h1_g; |
| self::expect(list1, h1 as{Unchecked} core::List<core::int>); |
| core::List<core::int> h1_h = h1 as{Unchecked} core::List<core::int>; |
| core::List<core::int> h1_h_alias = h1_h; |
| self::expect(list1, h1 as{Unchecked} core::List<core::int>); |
| core::List<core::String> list2 = <core::String>["foo"]; |
| self::H<core::String>% /* erasure=core::List<core::String>, declared=! */ h2 = self::H|constructor#<core::String>(list2); |
| core::List<core::String> h2_g = h2 as{Unchecked} core::List<core::String>; |
| core::List<core::String> h2_g_alias = h2_g; |
| self::expect(list2, h2 as{Unchecked} core::List<core::String>); |
| core::List<core::String> h2_h = h2 as{Unchecked} core::List<core::String>; |
| core::List<core::String> h2_h_alias = h2_h; |
| self::expect(list2, h2 as{Unchecked} core::List<core::String>); |
| } |
| static method expect(dynamic expected, dynamic actual) → dynamic { |
| if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) |
| throw "Expected ${expected}, actual ${actual}"; |
| } |
| |
| library; |
| import self as inh; |
| import "dart:core" as core; |
| |
| import "org-dartlang-testcase:///inherited_representation_field.dart"; |
| |
| extension type D(core::int _d) implements #lib1::C% /* erasure=core::int, declared=! */ { |
| abstract extension-type-member representation-field get _d() → core::int; |
| constructor • = inh::D|constructor#; |
| constructor tearoff • = inh::D|constructor#_#new#tearOff; |
| } |
| extension type F(core::int _f) implements #lib1::E% /* erasure=core::int, declared=! */ { |
| abstract extension-type-member representation-field get _f() → core::int; |
| method methodD = inh::F|methodD; |
| method tearoff methodD = inh::F|get#methodD; |
| constructor • = inh::F|constructor#; |
| constructor tearoff • = inh::F|constructor#_#new#tearOff; |
| } |
| static extension-type-member method D|constructor#(core::int _d) → inh::D% /* erasure=core::int, declared=! */ { |
| lowered final inh::D% /* erasure=core::int, declared=! */ #this = _d; |
| return #this; |
| } |
| static extension-type-member method D|constructor#_#new#tearOff(core::int _d) → inh::D% /* erasure=core::int, declared=! */ |
| return inh::D|constructor#(_d); |
| static extension-type-member method F|constructor#(core::int _f) → inh::F% /* erasure=core::int, declared=! */ { |
| lowered final inh::F% /* erasure=core::int, declared=! */ #this = _f; |
| return #this; |
| } |
| static extension-type-member method F|constructor#_#new#tearOff(core::int _f) → inh::F% /* erasure=core::int, declared=! */ |
| return inh::F|constructor#(_f); |
| static extension-type-member method F|methodD(lowered final inh::F% /* erasure=core::int, declared=! */ #this) → dynamic |
| return #this as{Unchecked} core::int; |
| static extension-type-member method F|get#methodD(lowered final inh::F% /* erasure=core::int, declared=! */ #this) → () → dynamic |
| return () → dynamic => inh::F|methodD(#this); |