library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart:7:3: Error: The type 'E<int>' of the getter 'E.element2' is not a subtype of the type 'E<String>' of the setter 'E.element2'.
//  - 'E' is from 'pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart'.
//   element2<int>();
//   ^^^^^^^^
// pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart:10:19: Context: This is the declaration of the setter 'E.element2'.
//   static void set element2(E<String> val) {} // Error.
//                   ^^^^^^^^
//
import self as self;
import "dart:core" as core;

class E<T extends core::Object? = dynamic> extends core::_Enum /*isEnum*/  {
  static const field core::List<self::E<dynamic>> values = #C7;
  static const field self::E<core::int> element = #C3;
  static const field self::E<core::int> element2 = #C6;
  const constructor •(core::int index, core::String name) → self::E<self::E::T%>
    : super core::_Enum::•(index, name)
    ;
  method toString() → core::String
    return "E.${this.{core::_Enum::_name}{core::String}}";
  static set element(self::E<core::int> val) → void {}
  static set element2(self::E<core::String> val) → void {}
}
static method main() → dynamic {}

constants  {
  #C1 = 0
  #C2 = "element"
  #C3 = self::E<core::int*> {index:#C1, _name:#C2}
  #C4 = 1
  #C5 = "element2"
  #C6 = self::E<core::int*> {index:#C4, _name:#C5}
  #C7 = <self::E<dynamic>*>[#C3, #C6]
}


Constructor coverage from constants:
org-dartlang-testcase:///setter_getter_type_check.dart:
- E. (from org-dartlang-testcase:///setter_getter_type_check.dart:5:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:103:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
