| library; |
| // |
| // Problems in library: |
| // |
| // pkg/front_end/testcases/extension_types/redirecting_factory_from_enum.dart:7:35: Error: The constructor function type 'E1 Function(A1)' isn't a subtype of 'A1 Function(A1)'. |
| // - 'A1' is from 'pkg/front_end/testcases/extension_types/redirecting_factory_from_enum.dart'. |
| // const factory A1.named(A1 it) = E1.named; // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/redirecting_factory_from_enum.dart:17:35: Error: The constructor function type 'E2 Function(A2)' isn't a subtype of 'A2 Function(A2)'. |
| // - 'A2' is from 'pkg/front_end/testcases/extension_types/redirecting_factory_from_enum.dart'. |
| // const factory A2.named(A2 it) = E2.named; // Error. |
| // ^ |
| // |
| import self as self; |
| import "dart:core" as core; |
| |
| class A1 extends core::Object /*hasConstConstructor*/ { |
| const constructor •() → self::A1 |
| : super core::Object::•() |
| ; |
| static factory named(self::A1 it) → self::A1 |
| return invalid-expression "pkg/front_end/testcases/extension_types/redirecting_factory_from_enum.dart:7:35: Error: The constructor function type 'E1 Function(A1)' isn't a subtype of 'A1 Function(A1)'. |
| - 'A1' is from 'pkg/front_end/testcases/extension_types/redirecting_factory_from_enum.dart'. |
| const factory A1.named(A1 it) = E1.named; // Error. |
| ^"; |
| } |
| class A2 extends core::_Enum /*isEnum*/ { |
| static const field core::List<self::A2> values = const <self::A2>[self::A2::element]; |
| enum-element static const field self::A2 element = const self::A2::•(0, "element"); |
| const constructor •(core::int #index, core::String #name) → self::A2 |
| : super core::_Enum::•(#index, #name) |
| ; |
| method _enumToString() → core::String |
| return "A2.${this.{core::_Enum::_name}{core::String}}"; |
| static factory named(self::A2 it) → self::A2 |
| return invalid-expression "pkg/front_end/testcases/extension_types/redirecting_factory_from_enum.dart:17:35: Error: The constructor function type 'E2 Function(A2)' isn't a subtype of 'A2 Function(A2)'. |
| - 'A2' is from 'pkg/front_end/testcases/extension_types/redirecting_factory_from_enum.dart'. |
| const factory A2.named(A2 it) = E2.named; // Error. |
| ^"; |
| } |
| extension type E1(self::A1 it) { |
| abstract extension-type-member representation-field get it() → self::A1; |
| constructor • = self::E1|constructor#; |
| constructor tearoff • = self::E1|constructor#_#new#tearOff; |
| constructor named = self::E1|constructor#named; |
| constructor tearoff named = self::E1|constructor#_#named#tearOff; |
| } |
| extension type E2(self::A2 it) { |
| abstract extension-type-member representation-field get it() → self::A2; |
| constructor • = self::E2|constructor#; |
| constructor tearoff • = self::E2|constructor#_#new#tearOff; |
| constructor named = self::E2|constructor#named; |
| constructor tearoff named = self::E2|constructor#_#named#tearOff; |
| } |
| static extension-type-member method E1|constructor#(self::A1 it) → self::E1% /* erasure=self::A1, declared=! */ { |
| lowered final self::E1% /* erasure=self::A1, declared=! */ #this = it; |
| return #this; |
| } |
| static extension-type-member method E1|constructor#_#new#tearOff(self::A1 it) → self::E1% /* erasure=self::A1, declared=! */ |
| return self::E1|constructor#(it); |
| static extension-type-member method E1|constructor#named(self::A1 it) → self::E1% /* erasure=self::A1, declared=! */ { |
| lowered final self::E1% /* erasure=self::A1, declared=! */ #this; |
| #this = self::E1|constructor#(it); |
| return #this; |
| } |
| static extension-type-member method E1|constructor#_#named#tearOff(self::A1 it) → self::E1% /* erasure=self::A1, declared=! */ |
| return self::E1|constructor#named(it); |
| static extension-type-member method E2|constructor#(self::A2 it) → self::E2% /* erasure=self::A2, declared=! */ { |
| lowered final self::E2% /* erasure=self::A2, declared=! */ #this = it; |
| return #this; |
| } |
| static extension-type-member method E2|constructor#_#new#tearOff(self::A2 it) → self::E2% /* erasure=self::A2, declared=! */ |
| return self::E2|constructor#(it); |
| static extension-type-member method E2|constructor#named(self::A2 it) → self::E2% /* erasure=self::A2, declared=! */ { |
| lowered final self::E2% /* erasure=self::A2, declared=! */ #this; |
| #this = self::E2|constructor#(it); |
| return #this; |
| } |
| static extension-type-member method E2|constructor#_#named#tearOff(self::A2 it) → self::E2% /* erasure=self::A2, declared=! */ |
| return self::E2|constructor#named(it); |
| |
| |
| Extra constant evaluation status: |
| Evaluated: ListLiteral @ org-dartlang-testcase:///redirecting_factory_from_enum.dart:14:6 -> ListConstant(const <A2>[const A2{_Enum.index: 0, _Enum._name: "element"}]) |
| Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_from_enum.dart:15:3 -> InstanceConstant(const A2{_Enum.index: 0, _Enum._name: "element"}) |
| Extra constant evaluation: evaluated: 27, effectively constant: 2 |