blob: f207931d5c6c1ae78c82cd359f5b2b0e82b2294e [file] [log] [blame]
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