library;
//
// 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:*: 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:*: 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:*: 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:*: 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:*: Context: This is the overridden method ('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:*: 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:*: 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:*: 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];
  enum-element static const field self::E1 element = const self::E1::•(0, "element");
  const synthetic constructor •(core::int #index, core::String #name) → self::E1
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → 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];
  enum-element static const field self::E2 element = const self::E2::•(0, "element");
  const synthetic constructor •(core::int #index, core::String #name) → self::E2
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → core::String
    return "E2.${this.{core::_Enum::_name}{core::String}}";
  get index() → core::String
    ;
}
class E3 extends core::_Enum /*isEnum*/  {
  final field core::int index;
  static const field core::List<self::E3> values = const <self::E3>[self::E3::element];
  enum-element static const field self::E3 element = const self::E3::•(0, "element");
  const synthetic constructor •(core::int #index, core::String #name) → self::E3
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → 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];
  enum-element static const field self::E4 element = const self::E4::•(0, "element");
  const synthetic constructor •(core::int #index, core::String #name) → self::E4
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → 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];
  enum-element static const field self::E5 element = const self::E5::•(0, "element");
  const synthetic constructor •(core::int #index, core::String #name) → self::E5
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → core::String
    return "E5.${this.{core::_Enum::_name}{core::String}}";
  get index() → Never
    ;
}
class E6 extends core::_Enum /*isEnum*/  {
  final field core::int foo;
  final field core::int index;
  final field core::int bar;
  static const field core::List<self::E6> values = const <self::E6>[self::E6::element];
  enum-element static const field self::E6 element = const self::E6::•(0, "element");
  const synthetic constructor •(core::int #index, core::String #name) → self::E6
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → 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];
  enum-element static const field self::E7 element = const self::E7::•(0, "element");
  const synthetic constructor •(core::int #index, core::String #name) → self::E7
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → 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];
  enum-element static const field self::E8 element = const self::E8::•(0, "element");
  const synthetic constructor •(core::int #index, core::String #name) → self::E8
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → 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];
  enum-element static const field self::E9 element = const self::E9::•(0, "element");
  const synthetic constructor •(core::int #index, core::String #name) → self::E9
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → 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];
  enum-element static const field self::E10 element = const self::E10::•(0, "element");
  const synthetic constructor •(core::int #index, core::String #name) → self::E10
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → 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];
  enum-element static const field self::E11 element = const self::E11::•(0, "element");
  const synthetic constructor •(core::int #index, core::String #name) → self::E11
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → 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];
  enum-element static const field self::E12 index = const self::E12::•(0, "index");
  const synthetic constructor •(core::int #index, core::String #name) → self::E12
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → 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];
  enum-element static const field self::E13 element = const self::E13::•(0, "element");
  const synthetic constructor •(core::int #index, core::String #name) → self::E13
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → 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];
  enum-element static const field self::E14 element = const self::E14::•(0, "element");
  const synthetic constructor •(core::int #index, core::String #name) → self::E14
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → 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
