| library; |
| // |
| // Problems in library: |
| // |
| // pkg/front_end/testcases/extension_types/built_in_types.dart:43:18: Error: A value of type 'bool' can't be assigned to a variable of type 'BoolET'. |
| // BoolET b2 = e2 == e2; /* Error */ |
| // ^ |
| // |
| 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 |
| get hashCode() → self::IntET /* erasure=core::int */ |
| return self::IntET|constructor#(super.{core::Object::hashCode}); |
| @#C1 |
| get runtimeType() → self::TypeET /* erasure=core::Type */ |
| return self::TypeET|constructor#(super.{core::Object::runtimeType}); |
| @#C1 |
| operator ==(core::Object? other) → self::BoolET /* erasure=core::bool */ |
| return self::BoolET|constructor#(other =={core::Object::==}{(core::Object) → core::bool} this); |
| } |
| 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; |
| constructor • = self::ET2|constructor#; |
| constructor tearoff • = self::ET2|constructor#_#new#tearOff; |
| } |
| extension type IntET(core::int i) implements core::int { |
| abstract extension-type-member representation-field get i() → core::int; |
| constructor • = self::IntET|constructor#; |
| constructor tearoff • = self::IntET|constructor#_#new#tearOff; |
| } |
| extension type TypeET(core::Type t) implements core::Type { |
| abstract extension-type-member representation-field get t() → core::Type; |
| constructor • = self::TypeET|constructor#; |
| constructor tearoff • = self::TypeET|constructor#_#new#tearOff; |
| } |
| extension type BoolET(core::bool b) implements core::bool { |
| abstract extension-type-member representation-field get b() → core::bool; |
| constructor • = self::BoolET|constructor#; |
| constructor tearoff • = self::BoolET|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 extension-type-member method IntET|constructor#(core::int i) → self::IntET /* erasure=core::int */ { |
| lowered final self::IntET /* erasure=core::int */ #this = i; |
| return #this; |
| } |
| static extension-type-member method IntET|constructor#_#new#tearOff(core::int i) → self::IntET /* erasure=core::int */ |
| return self::IntET|constructor#(i); |
| static extension-type-member method TypeET|constructor#(core::Type t) → self::TypeET /* erasure=core::Type */ { |
| lowered final self::TypeET /* erasure=core::Type */ #this = t; |
| return #this; |
| } |
| static extension-type-member method TypeET|constructor#_#new#tearOff(core::Type t) → self::TypeET /* erasure=core::Type */ |
| return self::TypeET|constructor#(t); |
| static extension-type-member method BoolET|constructor#(core::bool b) → self::BoolET /* erasure=core::bool */ { |
| lowered final self::BoolET /* erasure=core::bool */ #this = b; |
| return #this; |
| } |
| static extension-type-member method BoolET|constructor#_#new#tearOff(core::bool b) → self::BoolET /* erasure=core::bool */ |
| return self::BoolET|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; |
| core::int hc1 = e1.{core::Object::hashCode}{core::int}; |
| self::IntET /* erasure=core::int */ hc2 = e2.{self::B::hashCode}{self::IntET /* erasure=core::int */}; |
| core::Type t1 = e1.{core::Object::runtimeType}{core::Type}; |
| self::TypeET /* erasure=core::Type */ t2 = e2.{self::B::runtimeType}{self::TypeET /* erasure=core::Type */}; |
| core::bool b1 = e1 =={core::Object::==}{(core::Object) → core::bool} e1; |
| self::BoolET /* erasure=core::bool */ b2 = invalid-expression "pkg/front_end/testcases/extension_types/built_in_types.dart:43:18: Error: A value of type 'bool' can't be assigned to a variable of type 'BoolET'. |
| BoolET b2 = e2 == e2; /* Error */ |
| ^" in (e2 =={self::B::==}{(core::Object?) → self::BoolET /* erasure=core::bool */} e2) as{TypeError} self::BoolET /* erasure=core::bool */; |
| } |
| |
| constants { |
| #C1 = core::_Override {} |
| } |