blob: 842d75bc2b51f40aafc91cf8296526445f5d1f86 [file] [log] [blame]
library;
//
// Problems in library:
//
// pkg/front_end/testcases/extension_types/issue53840.dart:20:39: Error: Type 'void' can't be used here.
// Try removing 'void' keyword or replace it with 'var', 'final', or a type.
// extension type E5(Null it) implements void {} // Error.
// ^^^^
//
// pkg/front_end/testcases/extension_types/issue53840.dart:20:39: Error: Type 'void' not found.
// extension type E5(Null it) implements void {} // Error.
// ^^^^
//
// pkg/front_end/testcases/extension_types/issue53840.dart:20:39: Error: The type 'void' can't be implemented by an extension type.
// extension type E5(Null it) implements void {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53840.dart:21:39: Error: The type 'dynamic' can't be implemented by an extension type.
// extension type E6(Null it) implements dynamic {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53840.dart:22:39: Error: Can't implement 'double?' because it's nullable.
// Try removing the question mark.
// extension type E7(Null it) implements double? {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53840.dart:23:39: Error: The type 'FutureOr<bool>' can't be implemented by an extension type.
// extension type E8(bool it) implements FutureOr<bool> {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53840.dart:24:39: Error: The type 'FutureOr<X>' can't be implemented by an extension type.
// extension type E9<X>(X it) implements FutureOr<X> {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53840.dart:25:54: Error: The type 'Function' can't be implemented by an extension type.
// extension type E10(void Function(int) it) implements Function {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53840.dart:26:60: Error: The type '() -> String' can't be implemented by an extension type.
// extension type E11(String Function() it) implements String Function() {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53840.dart:27:50: Error: The type 'Record' can't be implemented by an extension type.
// extension type E12((int, Object?) it) implements Record {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53840.dart:28:47: Error: The type '(Null, num)' can't be implemented by an extension type.
// extension type E13((Null, num) it) implements (Null, num) {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53840.dart:29:40: Error: The type 'Null' can't be implemented by an extension type.
// extension type E14(Null it) implements Null {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53840.dart:30:40: Error: The type 'Never' can't be implemented by an extension type.
// extension type E15<X>(X it) implements Never {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53840.dart:31:40: Error: The type 'Never' can't be implemented by an extension type.
// extension type E16(Null it) implements Never {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53840.dart:17:42: Error: The implemented interface 'Object' must be a supertype of the representation type 'String?' of extension type 'E3'.
// - 'Object' is from 'dart:core'.
// Try changing the interface type to a supertype of 'String?' or the representation type to a subtype of 'Object'.
// extension type E3(String? it) implements Object {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53840.dart:18:37: Error: The implemented interface 'Object' must be a supertype of the representation type 'E3' of extension type 'E4'.
// - 'Object' is from 'dart:core'.
// Try changing the interface type to a supertype of 'E3' or the representation type to a subtype of 'Object'.
// extension type E4(E3 it) implements Object {} // Error.
// ^
//
import self as self;
import "dart:core" as core;
import "dart:async";
class A extends core::Object {
synthetic constructor •() self::A
;
}
abstract class M extends self::A /*isMixinDeclaration*/ {
}
class En extends core::_Enum /*isEnum*/ {
static const field core::List<self::En> values = const <self::En>[self::En::element];
enum-element static const field self::En element = const self::En::•(0, "element");
const synthetic constructor •(core::int #index, core::String #name) → self::En
: super core::_Enum::•(#index, #name)
;
method _enumToString() core::String
return "En.${this.{core::_Enum::_name}{core::String}}";
}
extension type E1(core::num it) implements core::Object {
abstract extension-type-member representation-field get it() core::num;
constructor = self::E1|constructor#;
constructor tearoff = self::E1|constructor#_#new#tearOff;
}
extension type E2(self::E1 /* erasure=core::num */ it) implements core::Object {
abstract extension-type-member representation-field get it() self::E1 /* erasure=core::num */;
constructor = self::E2|constructor#;
constructor tearoff = self::E2|constructor#_#new#tearOff;
}
extension type E3(core::String? it) implements core::Object {
abstract extension-type-member representation-field get it() core::String?;
constructor = self::E3|constructor#;
constructor tearoff = self::E3|constructor#_#new#tearOff;
}
extension type E4(self::E3 /* erasure=core::String? */ it) implements core::Object {
abstract extension-type-member representation-field get it() self::E3 /* erasure=core::String? */;
constructor = self::E4|constructor#;
constructor tearoff = self::E4|constructor#_#new#tearOff;
}
extension type E5(Null it) {
abstract extension-type-member representation-field get it() Null;
constructor = self::E5|constructor#;
constructor tearoff = self::E5|constructor#_#new#tearOff;
}
extension type E6(Null it) {
abstract extension-type-member representation-field get it() Null;
constructor = self::E6|constructor#;
constructor tearoff = self::E6|constructor#_#new#tearOff;
}
extension type E7(Null it) {
abstract extension-type-member representation-field get it() Null;
constructor = self::E7|constructor#;
constructor tearoff = self::E7|constructor#_#new#tearOff;
}
extension type E8(core::bool it) {
abstract extension-type-member representation-field get it() core::bool;
constructor = self::E8|constructor#;
constructor tearoff = self::E8|constructor#_#new#tearOff;
}
extension type E9<X extends core::Object? = dynamic>(X% it) {
abstract extension-type-member representation-field get it() X%;
constructor = self::E9|constructor#;
constructor tearoff = self::E9|constructor#_#new#tearOff;
}
extension type E10((core::int) void it) {
abstract extension-type-member representation-field get it() (core::int) void;
constructor = self::E10|constructor#;
constructor tearoff = self::E10|constructor#_#new#tearOff;
}
extension type E11(() core::String it) {
abstract extension-type-member representation-field get it() () core::String;
constructor = self::E11|constructor#;
constructor tearoff = self::E11|constructor#_#new#tearOff;
}
extension type E12((core::int, core::Object?) it) {
abstract extension-type-member representation-field get it() (core::int, core::Object?);
constructor = self::E12|constructor#;
constructor tearoff = self::E12|constructor#_#new#tearOff;
}
extension type E13((Null, core::num) it) {
abstract extension-type-member representation-field get it() (Null, core::num);
constructor = self::E13|constructor#;
constructor tearoff = self::E13|constructor#_#new#tearOff;
}
extension type E14(Null it) {
abstract extension-type-member representation-field get it() Null;
constructor = self::E14|constructor#;
constructor tearoff = self::E14|constructor#_#new#tearOff;
}
extension type E15<X extends core::Object? = dynamic>(X% it) {
abstract extension-type-member representation-field get it() X%;
constructor = self::E15|constructor#;
constructor tearoff = self::E15|constructor#_#new#tearOff;
}
extension type E16(Null it) {
abstract extension-type-member representation-field get it() Null;
constructor = self::E16|constructor#;
constructor tearoff = self::E16|constructor#_#new#tearOff;
}
extension type E17(self::A a) implements self::A {
abstract extension-type-member representation-field get a() self::A;
constructor = self::E17|constructor#;
constructor tearoff = self::E17|constructor#_#new#tearOff;
}
extension type E18(self::M m) implements self::M {
abstract extension-type-member representation-field get m() self::M;
constructor = self::E18|constructor#;
constructor tearoff = self::E18|constructor#_#new#tearOff;
}
extension type E19(self::En en) implements self::En {
abstract extension-type-member representation-field get en() self::En;
constructor = self::E19|constructor#;
constructor tearoff = self::E19|constructor#_#new#tearOff;
}
static extension-type-member method E1|constructor#(core::num it) → self::E1 /* erasure=core::num */
;
static extension-type-member method E1|constructor#_#new#tearOff(core::num it) → self::E1 /* erasure=core::num */
return self::E1|constructor#(it);
static extension-type-member method E2|constructor#(self::E1 /* erasure=core::num */ it) → self::E2 /* erasure=core::num */
;
static extension-type-member method E2|constructor#_#new#tearOff(self::E1 /* erasure=core::num */ it) → self::E2 /* erasure=core::num */
return self::E2|constructor#(it);
static extension-type-member method E3|constructor#(core::String? it) → self::E3 /* erasure=core::String? */
;
static extension-type-member method E3|constructor#_#new#tearOff(core::String? it) → self::E3 /* erasure=core::String? */
return self::E3|constructor#(it);
static extension-type-member method E4|constructor#(self::E3 /* erasure=core::String? */ it) → self::E4 /* erasure=core::String? */
;
static extension-type-member method E4|constructor#_#new#tearOff(self::E3 /* erasure=core::String? */ it) → self::E4 /* erasure=core::String? */
return self::E4|constructor#(it);
static extension-type-member method E5|constructor#(Null it) → self::E5% /* erasure=Null, declared=! */
;
static extension-type-member method E5|constructor#_#new#tearOff(Null it) → self::E5% /* erasure=Null, declared=! */
return self::E5|constructor#(it);
static extension-type-member method E6|constructor#(Null it) → self::E6% /* erasure=Null, declared=! */
;
static extension-type-member method E6|constructor#_#new#tearOff(Null it) → self::E6% /* erasure=Null, declared=! */
return self::E6|constructor#(it);
static extension-type-member method E7|constructor#(Null it) → self::E7% /* erasure=Null, declared=! */
;
static extension-type-member method E7|constructor#_#new#tearOff(Null it) → self::E7% /* erasure=Null, declared=! */
return self::E7|constructor#(it);
static extension-type-member method E8|constructor#(core::bool it) → self::E8% /* erasure=core::bool, declared=! */
;
static extension-type-member method E8|constructor#_#new#tearOff(core::bool it) → self::E8% /* erasure=core::bool, declared=! */
return self::E8|constructor#(it);
static extension-type-member method E9|constructor#<X extends core::Object? = dynamic>(self::E9|constructor#::X% it) → self::E9<self::E9|constructor#::X%>% /* erasure=self::E9|constructor#::X%, declared=! */
;
static extension-type-member method E9|constructor#_#new#tearOff<X extends core::Object? = dynamic>(self::E9|constructor#_#new#tearOff::X% it) → self::E9<self::E9|constructor#_#new#tearOff::X%>% /* erasure=self::E9|constructor#_#new#tearOff::X%, declared=! */
return self::E9|constructor#<self::E9|constructor#_#new#tearOff::X%>(it);
static extension-type-member method E10|constructor#((core::int) → void it) → self::E10% /* erasure=(core::int) → void, declared=! */
;
static extension-type-member method E10|constructor#_#new#tearOff((core::int) → void it) → self::E10% /* erasure=(core::int) → void, declared=! */
return self::E10|constructor#(it);
static extension-type-member method E11|constructor#(() → core::String it) → self::E11% /* erasure=() → core::String, declared=! */
;
static extension-type-member method E11|constructor#_#new#tearOff(() → core::String it) → self::E11% /* erasure=() → core::String, declared=! */
return self::E11|constructor#(it);
static extension-type-member method E12|constructor#((core::int, core::Object?) it) → self::E12% /* erasure=(core::int, core::Object?), declared=! */
;
static extension-type-member method E12|constructor#_#new#tearOff((core::int, core::Object?) it) → self::E12% /* erasure=(core::int, core::Object?), declared=! */
return self::E12|constructor#(it);
static extension-type-member method E13|constructor#_#new#tearOff((Null, core::num) it) → self::E13% /* erasure=(Null, core::num), declared=! */
return self::E13|constructor#(it);
static extension-type-member method E13|constructor#((Null, core::num) it) → self::E13% /* erasure=(Null, core::num), declared=! */
;
static extension-type-member method E14|constructor#(Null it) → self::E14% /* erasure=Null, declared=! */
;
static extension-type-member method E14|constructor#_#new#tearOff(Null it) → self::E14% /* erasure=Null, declared=! */
return self::E14|constructor#(it);
static extension-type-member method E15|constructor#<X extends core::Object? = dynamic>(self::E15|constructor#::X% it) → self::E15<self::E15|constructor#::X%>% /* erasure=self::E15|constructor#::X%, declared=! */
;
static extension-type-member method E15|constructor#_#new#tearOff<X extends core::Object? = dynamic>(self::E15|constructor#_#new#tearOff::X% it) → self::E15<self::E15|constructor#_#new#tearOff::X%>% /* erasure=self::E15|constructor#_#new#tearOff::X%, declared=! */
return self::E15|constructor#<self::E15|constructor#_#new#tearOff::X%>(it);
static extension-type-member method E16|constructor#(Null it) → self::E16% /* erasure=Null, declared=! */
;
static extension-type-member method E16|constructor#_#new#tearOff(Null it) → self::E16% /* erasure=Null, declared=! */
return self::E16|constructor#(it);
static extension-type-member method E17|constructor#(self::A a) → self::E17 /* erasure=self::A */
;
static extension-type-member method E17|constructor#_#new#tearOff(self::A a) → self::E17 /* erasure=self::A */
return self::E17|constructor#(a);
static extension-type-member method E18|constructor#(self::M m) → self::E18 /* erasure=self::M */
;
static extension-type-member method E18|constructor#_#new#tearOff(self::M m) → self::E18 /* erasure=self::M */
return self::E18|constructor#(m);
static extension-type-member method E19|constructor#(self::En en) → self::E19 /* erasure=self::En */
;
static extension-type-member method E19|constructor#_#new#tearOff(self::En en) → self::E19 /* erasure=self::En */
return self::E19|constructor#(en);
Extra constant evaluation status:
Evaluated: ListLiteral @ org-dartlang-testcase:///issue53840.dart:11:6 -> ListConstant(const <En>[const En{_Enum.index: 0, _Enum._name: "element"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///issue53840.dart:12:3 -> InstanceConstant(const En{_Enum.index: 0, _Enum._name: "element"})
Extra constant evaluation: evaluated: 45, effectively constant: 2