library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/enhanced_enums/declared_index.dart:8:11: Error: An enum can't declare a non-abstract member named 'index'.
//   int get index => 42; // Error.
//           ^^^^^
//
// pkg/front_end/testcases/enhanced_enums/declared_index.dart:14:14: Error: An enum can't declare a non-abstract member named 'index'.
//   String get index => "foo"; // Error.
//              ^^^^^
//
// pkg/front_end/testcases/enhanced_enums/declared_index.dart:20:13: Error: An enum can't declare a non-abstract member named 'index'.
//   final int index = 42; // Error.
//             ^^^^^
//
// pkg/front_end/testcases/enhanced_enums/declared_index.dart:26:16: Error: An enum can't declare a non-abstract member named 'index'.
//   List<String> index() => []; // Error.
//                ^^^^^
//
// pkg/front_end/testcases/enhanced_enums/declared_index.dart:32:13: Error: An enum can't declare a non-abstract member named 'index'.
//   Never get index => throw 42; // Error.
//             ^^^^^
//
// pkg/front_end/testcases/enhanced_enums/declared_index.dart:38:22: Error: An enum can't declare a non-abstract member named 'index'.
//   final int foo = 0, index = 1, bar = 2; // Error.
//                      ^^^^^
//
// pkg/front_end/testcases/enhanced_enums/declared_index.dart:64:18: Error: An enum can't declare a non-abstract member named 'index'.
//   static int get index => 42; // Error.
//                  ^^^^^
//
// pkg/front_end/testcases/enhanced_enums/declared_index.dart:26:16: Error: Can't declare a member that conflicts with an inherited one.
//   List<String> index() => []; // Error.
//                ^^^^^
// sdk/lib/core/enum.dart:101:13: Context: This is the inherited member.
//   final int index;
//             ^^^^^
//
// pkg/front_end/testcases/enhanced_enums/declared_index.dart:64:18: Error: Can't declare a member that conflicts with an inherited one.
//   static int get index => 42; // Error.
//                  ^^^^^
// sdk/lib/core/enum.dart:101:13: Context: This is the inherited member.
//   final int index;
//             ^^^^^
//
// pkg/front_end/testcases/enhanced_enums/declared_index.dart:70:19: Error: Can't declare a member that conflicts with an inherited one.
//   static void set index(int value) {} // Error.
//                   ^^^^^
// sdk/lib/core/enum.dart:101:13: Context: This is the inherited member.
//   final int index;
//             ^^^^^
//
// pkg/front_end/testcases/enhanced_enums/declared_index.dart:74:3: Error: Can't declare a member that conflicts with an inherited one.
//   index // Error.
//   ^^^^^
// sdk/lib/core/enum.dart:101:13: Context: This is the inherited member.
//   final int index;
//             ^^^^^
//
// pkg/front_end/testcases/enhanced_enums/declared_index.dart:14:14: Error: The return type of the method 'E2.index' is 'String', which does not match the return type, 'int', of the overridden method, '_Enum.index'.
// Change to a subtype of 'int'.
//   String get index => "foo"; // Error.
//              ^
// sdk/lib/core/enum.dart:101:13: Context: This is the overridden method ('index').
//   final int index;
//             ^
//
// pkg/front_end/testcases/enhanced_enums/declared_index.dart:52:12: Error: The type 'int' of the inherited field '_Enum.index' is not a subtype of the type 'String' of the setter 'E8.index'.
//   void set index(String value) {} // Error.
//            ^^^^^
// sdk/lib/core/enum.dart:101:13: Context: This is the declaration of the field '_Enum.index'.
//   final int index;
//             ^^^^^
//
// pkg/front_end/testcases/enhanced_enums/declared_index.dart:58:14: Error: The return type of the method 'E9.index' is 'double', which does not match the return type, 'int', of the overridden method, '_Enum.index'.
// Change to a subtype of 'int'.
//   double get index; // Error.
//              ^
// sdk/lib/core/enum.dart:101:13: Context: This is the overridden method ('index').
//   final int index;
//             ^
//
// pkg/front_end/testcases/enhanced_enums/declared_index.dart:55:6: Error: The implementation of 'index' in the non-abstract class 'E9' does not conform to its interface.
// enum E9 {
//      ^^
// sdk/lib/core/enum.dart:101:13: Context: The return type of the method '_Enum.index' is 'int', which does not match the return type, 'double', of the overridden method, 'E9.index'.
// Change to a subtype of 'double'.
//   final int index;
//             ^
// pkg/front_end/testcases/enhanced_enums/declared_index.dart:58:14: Context: This is the overridden method ('index').
//   double get index; // Error.
//              ^
//
// pkg/front_end/testcases/enhanced_enums/declared_index.dart:87:6: Error: The implementation of 'index' in the non-abstract class 'E14' does not conform to its interface.
// enum E14 implements I14 { element } // Error.
//      ^^^
// sdk/lib/core/enum.dart:101:13: Context: The return type of the method '_Enum.index' is 'int', which does not match the return type, 'Never', of the overridden method, 'I14.index'.
// Change to a subtype of 'Never'.
//   final int index;
//             ^
// pkg/front_end/testcases/enhanced_enums/declared_index.dart:84:13: Context: This is the overridden method ('index').
//   Never get index;
//             ^
//
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}}";
  get index() → core::int
    ;
}
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}}";
  get index() → core::String
    ;
}
class E3 extends core::_Enum /*isEnum*/  {
  static const field core::List<self::E3> values = const <self::E3>[self::E3::element];
  final field core::int index;
  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}}";
}
class E4 extends core::_Enum /*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}}";
  method index() → core::List<core::String>
    ;
}
class E5 extends core::_Enum /*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}}";
  get index() → Never
    ;
}
class E6 extends core::_Enum /*isEnum*/  {
  static const field core::List<self::E6> values = const <self::E6>[self::E6::element];
  final field core::int foo;
  final field core::int index;
  final field core::int bar;
  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}}";
}
class E7 extends core::_Enum /*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
    : super core::_Enum::•(index, name)
    ;
  method toString() → core::String
    return "E7.${this.{core::_Enum::_name}{core::String}}";
  set index(core::int value) → void
    ;
  abstract get index() → core::int;
}
class E8 extends core::_Enum /*isEnum*/  {
  static const field core::List<self::E8> values = const <self::E8>[self::E8::element];
  static const field self::E8 element = const self::E8::•(0, "element");
  const constructor •(core::int index, core::String name) → self::E8
    : super core::_Enum::•(index, name)
    ;
  method toString() → core::String
    return "E8.${this.{core::_Enum::_name}{core::String}}";
  set index(core::String value) → void
    ;
}
class E9 extends core::_Enum /*isEnum*/  {
  static const field core::List<self::E9> values = const <self::E9>[self::E9::element];
  static const field self::E9 element = const self::E9::•(0, "element");
  const constructor •(core::int index, core::String name) → self::E9
    : super core::_Enum::•(index, name)
    ;
  method toString() → core::String
    return "E9.${this.{core::_Enum::_name}{core::String}}";
  abstract get index() → core::double;
}
class E10 extends core::_Enum /*isEnum*/  {
  static const field core::List<self::E10> values = const <self::E10>[self::E10::element];
  static const field self::E10 element = const self::E10::•(0, "element");
  const constructor •(core::int index, core::String name) → self::E10
    : super core::_Enum::•(index, name)
    ;
  method toString() → core::String
    return "E10.${this.{core::_Enum::_name}{core::String}}";
  static get index() → core::int
    ;
}
class E11 extends core::_Enum /*isEnum*/  {
  static const field core::List<self::E11> values = const <self::E11>[self::E11::element];
  static const field self::E11 element = const self::E11::•(0, "element");
  const constructor •(core::int index, core::String name) → self::E11
    : super core::_Enum::•(index, name)
    ;
  method toString() → core::String
    return "E11.${this.{core::_Enum::_name}{core::String}}";
  static set index(core::int value) → void
    ;
}
class E12 extends core::_Enum /*isEnum*/  {
  static const field core::List<self::E12> values = const <self::E12>[self::E12::index];
  static const field self::E12 index = const self::E12::•(0, "index");
  const constructor •(core::int index, core::String name) → self::E12
    : super core::_Enum::•(index, name)
    ;
  method toString() → core::String
    return "E12.${this.{core::_Enum::_name}{core::String}}";
}
abstract class I13 extends core::Object {
  synthetic constructor •() → self::I13
    ;
  abstract get index() → core::int;
}
class E13 extends core::_Enum implements self::I13 /*isEnum*/  {
  static const field core::List<self::E13> values = const <self::E13>[self::E13::element];
  static const field self::E13 element = const self::E13::•(0, "element");
  const constructor •(core::int index, core::String name) → self::E13
    : super core::_Enum::•(index, name)
    ;
  method toString() → core::String
    return "E13.${this.{core::_Enum::_name}{core::String}}";
}
abstract class I14 extends core::Object {
  synthetic constructor •() → self::I14
    ;
  abstract get index() → Never;
}
class E14 extends core::_Enum implements self::I14 /*isEnum*/  {
  static const field core::List<self::E14> values = const <self::E14>[self::E14::element];
  static const field self::E14 element = const self::E14::•(0, "element");
  const constructor •(core::int index, core::String name) → self::E14
    : super core::_Enum::•(index, name)
    ;
  method toString() → core::String
    return "E14.${this.{core::_Enum::_name}{core::String}}";
  abstract member-signature get index() → Never; -> self::I14::index
}
static method main() → dynamic
  ;


Extra constant evaluation status:
Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:5:6 -> ListConstant(const <E1*>[const E1{_Enum.index: 0, _Enum._name: "element"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:6:3 -> InstanceConstant(const E1{_Enum.index: 0, _Enum._name: "element"})
Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:11:6 -> ListConstant(const <E2*>[const E2{_Enum.index: 0, _Enum._name: "element"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:12:3 -> InstanceConstant(const E2{_Enum.index: 0, _Enum._name: "element"})
Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:17:6 -> ListConstant(const <E3*>[const E3{E3.index: null, _Enum.index: 0, _Enum._name: "element"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:18:3 -> InstanceConstant(const E3{E3.index: null, _Enum.index: 0, _Enum._name: "element"})
Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:23:6 -> ListConstant(const <E4*>[const E4{_Enum.index: 0, _Enum._name: "element"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:24:3 -> InstanceConstant(const E4{_Enum.index: 0, _Enum._name: "element"})
Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:29:6 -> ListConstant(const <E5*>[const E5{_Enum.index: 0, _Enum._name: "element"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:30:3 -> InstanceConstant(const E5{_Enum.index: 0, _Enum._name: "element"})
Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:35:6 -> ListConstant(const <E6*>[const E6{E6.foo: null, E6.index: null, E6.bar: null, _Enum.index: 0, _Enum._name: "element"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:36:3 -> InstanceConstant(const E6{E6.foo: null, E6.index: null, E6.bar: null, _Enum.index: 0, _Enum._name: "element"})
Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:41:6 -> ListConstant(const <E7*>[const E7{_Enum.index: 0, _Enum._name: "element"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:42:3 -> InstanceConstant(const E7{_Enum.index: 0, _Enum._name: "element"})
Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:49:6 -> ListConstant(const <E8*>[const E8{_Enum.index: 0, _Enum._name: "element"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:50:3 -> InstanceConstant(const E8{_Enum.index: 0, _Enum._name: "element"})
Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:55:6 -> ListConstant(const <E9*>[const E9{_Enum.index: 0, _Enum._name: "element"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:56:3 -> InstanceConstant(const E9{_Enum.index: 0, _Enum._name: "element"})
Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:61:6 -> ListConstant(const <E10*>[const E10{_Enum.index: 0, _Enum._name: "element"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:62:3 -> InstanceConstant(const E10{_Enum.index: 0, _Enum._name: "element"})
Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:67:6 -> ListConstant(const <E11*>[const E11{_Enum.index: 0, _Enum._name: "element"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:68:3 -> InstanceConstant(const E11{_Enum.index: 0, _Enum._name: "element"})
Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:73:6 -> ListConstant(const <E12*>[const E12{_Enum.index: 0, _Enum._name: "index"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:74:3 -> InstanceConstant(const E12{_Enum.index: 0, _Enum._name: "index"})
Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:81:6 -> ListConstant(const <E13*>[const E13{_Enum.index: 0, _Enum._name: "element"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:81:27 -> InstanceConstant(const E13{_Enum.index: 0, _Enum._name: "element"})
Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:87:6 -> ListConstant(const <E14*>[const E14{_Enum.index: 0, _Enum._name: "element"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:87:27 -> InstanceConstant(const E14{_Enum.index: 0, _Enum._name: "element"})
Extra constant evaluation: evaluated: 98, effectively constant: 28
