library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/issue48487.dart:9:3: Error: This requires the 'enhanced-enums' language feature to be enabled.
// Try updating your pubspec.yaml to set the minimum SDK constraint to 2.17 or higher, and running 'pub get'.
//   void test() {
//   ^
//
import self as self;
import "dart:core" as core;

class T extends core::_Enum /*isEnum*/  {
  static const field core::List<self::T> values = const <self::T>[self::T::t];
  static const field self::T t = const self::T::•(0, "t");
  const constructor •(core::int index, core::String name) → self::T
    : super core::_Enum::•(index, name)
    ;
  method toString() → core::String
    return "T.${this.{core::_Enum::_name}{core::String}}";
  method test() → void
    ;
}
static method main() → void
  ;


Extra constant evaluation status:
Evaluated: ListLiteral @ org-dartlang-testcase:///issue48487.dart:7:6 -> ListConstant(const <T*>[const T{_Enum.index: 0, _Enum._name: "t"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///issue48487.dart:8:3 -> InstanceConstant(const T{_Enum.index: 0, _Enum._name: "t"})
Extra constant evaluation: evaluated: 7, effectively constant: 2
