blob: cb44bebb43244a99ec123f119797c97e6669553a [file] [log] [blame]
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/enhanced_enums/abstract_members.dart:8:8: Error: Enums can't declare abstract members.
// void foo(); // Error.
// ^^^
//
// pkg/front_end/testcases/enhanced_enums/abstract_members.dart:14:11: Error: Enums can't declare abstract members.
// int get foo; // Error.
// ^^^
//
// pkg/front_end/testcases/enhanced_enums/abstract_members.dart:20:12: Error: Enums can't declare abstract members.
// void set foo(int val); // Error.
// ^^^
//
// pkg/front_end/testcases/enhanced_enums/abstract_members.dart:27:6: Error: The non-abstract class 'E4' is missing implementations for these members:
// - InterfaceMethod.foo
// Try to either
// - provide an implementation,
// - inherit an implementation from a superclass or mixin,
// - mark the class as abstract, or
// - provide a 'noSuchMethod' implementation.
//
// enum E4 implements InterfaceMethod { // Error.
// ^^
// pkg/front_end/testcases/enhanced_enums/abstract_members.dart:24:8: Context: 'InterfaceMethod.foo' is defined here.
// void foo();
// ^^^
//
// pkg/front_end/testcases/enhanced_enums/abstract_members.dart:35:6: Error: The non-abstract class 'E5' is missing implementations for these members:
// - InterfaceGetter.foo
// Try to either
// - provide an implementation,
// - inherit an implementation from a superclass or mixin,
// - mark the class as abstract, or
// - provide a 'noSuchMethod' implementation.
//
// enum E5 implements InterfaceGetter { // Error.
// ^^
// pkg/front_end/testcases/enhanced_enums/abstract_members.dart:32:11: Context: 'InterfaceGetter.foo' is defined here.
// int get foo;
// ^^^
//
// pkg/front_end/testcases/enhanced_enums/abstract_members.dart:43:6: Error: The non-abstract class 'E6' is missing implementations for these members:
// - InterfaceSetter.foo=
// Try to either
// - provide an implementation,
// - inherit an implementation from a superclass or mixin,
// - mark the class as abstract, or
// - provide a 'noSuchMethod' implementation.
//
// enum E6 implements InterfaceSetter { // Error.
// ^^
// pkg/front_end/testcases/enhanced_enums/abstract_members.dart:40:12: Context: 'InterfaceSetter.foo=' is defined here.
// void set foo(int val);
// ^^^
//
import self as self;
import "dart:core" as core;
class E1 extends core::_Enum /*isEnum*/ {
static const field core::List<self::E1> values = const <self::E1>[self::E1::element];
static const field self::E1 element = const self::E1::•(0, "element");
const constructor •(core::int #index, core::String #name) → self::E1
: super core::_Enum::•(#index, #name)
;
method toString() core::String
return "E1.${this.{core::_Enum::_name}{core::String}}";
abstract method foo() void;
}
class E2 extends core::_Enum /*isEnum*/ {
static const field core::List<self::E2> values = const <self::E2>[self::E2::element];
static const field self::E2 element = const self::E2::•(0, "element");
const constructor •(core::int #index, core::String #name) → self::E2
: super core::_Enum::•(#index, #name)
;
method toString() core::String
return "E2.${this.{core::_Enum::_name}{core::String}}";
abstract get foo() core::int;
}
class E3 extends core::_Enum /*isEnum*/ {
static const field core::List<self::E3> values = const <self::E3>[self::E3::element];
static const field self::E3 element = const self::E3::•(0, "element");
const constructor •(core::int #index, core::String #name) → self::E3
: super core::_Enum::•(#index, #name)
;
method toString() core::String
return "E3.${this.{core::_Enum::_name}{core::String}}";
abstract set foo(core::int val) void;
}
abstract class InterfaceMethod extends core::Object {
synthetic constructor •() self::InterfaceMethod
;
abstract method foo() void;
}
class E4 extends core::_Enum implements self::InterfaceMethod /*isEnum*/ {
static const field core::List<self::E4> values = const <self::E4>[self::E4::element];
static const field self::E4 element = const self::E4::•(0, "element");
const constructor •(core::int #index, core::String #name) → self::E4
: super core::_Enum::•(#index, #name)
;
method toString() core::String
return "E4.${this.{core::_Enum::_name}{core::String}}";
}
abstract class InterfaceGetter extends core::Object {
synthetic constructor •() self::InterfaceGetter
;
abstract get foo() core::int;
}
class E5 extends core::_Enum implements self::InterfaceGetter /*isEnum*/ {
static const field core::List<self::E5> values = const <self::E5>[self::E5::element];
static const field self::E5 element = const self::E5::•(0, "element");
const constructor •(core::int #index, core::String #name) → self::E5
: super core::_Enum::•(#index, #name)
;
method toString() core::String
return "E5.${this.{core::_Enum::_name}{core::String}}";
}
abstract class InterfaceSetter extends core::Object {
synthetic constructor •() self::InterfaceSetter
;
abstract set foo(core::int val) void;
}
class E6 extends core::_Enum implements self::InterfaceSetter /*isEnum*/ {
static const field core::List<self::E6> values = const <self::E6>[self::E6::element];
static const field self::E6 element = const self::E6::•(0, "element");
const constructor •(core::int #index, core::String #name) → self::E6
: super core::_Enum::•(#index, #name)
;
method toString() core::String
return "E6.${this.{core::_Enum::_name}{core::String}}";
}
abstract class MethodImplementation extends core::Object /*isMixinDeclaration*/ {
method foo() void
;
}
abstract class _E7&_Enum&MethodImplementation = core::_Enum with self::MethodImplementation /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •(core::int index, core::String _name) self::_E7&_Enum&MethodImplementation
: super core::_Enum::•(index, _name)
;
mixin-super-stub method foo() void
return super.{self::MethodImplementation::foo}();
}
class E7 extends self::_E7&_Enum&MethodImplementation /*isEnum*/ {
static const field core::List<self::E7> values = const <self::E7>[self::E7::element];
static const field self::E7 element = const self::E7::•(0, "element");
const constructor •(core::int #index, core::String #name) → self::E7
;
method toString() core::String
return "E7.${this.{core::_Enum::_name}{core::String}}";
abstract method foo() void;
}
static method main() dynamic
;
Extra constant evaluation status:
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_members.dart:5:6 -> ListConstant(const <E1*>[const E1{_Enum.index: 0, _Enum._name: "element"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///abstract_members.dart:6:3 -> InstanceConstant(const E1{_Enum.index: 0, _Enum._name: "element"})
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_members.dart:11:6 -> ListConstant(const <E2*>[const E2{_Enum.index: 0, _Enum._name: "element"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///abstract_members.dart:12:3 -> InstanceConstant(const E2{_Enum.index: 0, _Enum._name: "element"})
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_members.dart:17:6 -> ListConstant(const <E3*>[const E3{_Enum.index: 0, _Enum._name: "element"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///abstract_members.dart:18:3 -> InstanceConstant(const E3{_Enum.index: 0, _Enum._name: "element"})
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_members.dart:27:6 -> ListConstant(const <E4*>[const E4{_Enum.index: 0, _Enum._name: "element"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///abstract_members.dart:28:3 -> InstanceConstant(const E4{_Enum.index: 0, _Enum._name: "element"})
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_members.dart:35:6 -> ListConstant(const <E5*>[const E5{_Enum.index: 0, _Enum._name: "element"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///abstract_members.dart:36:3 -> InstanceConstant(const E5{_Enum.index: 0, _Enum._name: "element"})
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_members.dart:43:6 -> ListConstant(const <E6*>[const E6{_Enum.index: 0, _Enum._name: "element"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///abstract_members.dart:44:3 -> InstanceConstant(const E6{_Enum.index: 0, _Enum._name: "element"})
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_members.dart:51:6 -> ListConstant(const <E7*>[const E7{}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///abstract_members.dart:52:3 -> InstanceConstant(const E7{})
Extra constant evaluation: evaluated: 50, effectively constant: 14