library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

class int extends core::Object {
  synthetic constructor •() → self::int
    ;
}
class Object extends core::Object {
  synthetic constructor •() → self::Object
    ;
}
class String extends core::Object {
  synthetic constructor •() → self::String
    ;
}
class _Enum extends core::Object {
  synthetic constructor •() → self::_Enum
    ;
}
class List extends core::Object {
  synthetic constructor •() → self::List
    ;
}
class E extends core::_Enum /*isEnum*/  {
  static const field core::List<self::E> values = const <self::E>[self::E::int, self::E::Object, self::E::String, self::E::_Enum, self::E::List];
  static const field self::E int = const self::E::•(0, "int");
  static const field self::E Object = const self::E::•(1, "Object");
  static const field self::E String = const self::E::•(2, "String");
  static const field self::E _Enum = const self::E::•(3, "_Enum");
  static const field self::E List = const self::E::•(4, "List");
  const constructor •(core::int index, core::String name) → self::E
    : super core::_Enum::•(index, name)
    ;
  method toString() → core::String
    return "E.${this.{core::_Enum::_name}{core::String}}";
}
static method main() → dynamic
  ;


Extra constant evaluation status:
Evaluated: ListLiteral @ org-dartlang-testcase:///enum_names_from_core.dart:15:6 -> ListConstant(const <E*>[const E{_Enum.index: 0, _Enum._name: "int"}, const E{_Enum.index: 1, _Enum._name: "Object"}, const E{_Enum.index: 2, _Enum._name: "String"}, const E{_Enum.index: 3, _Enum._name: "_Enum"}, const E{_Enum.index: 4, _Enum._name: "List"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///enum_names_from_core.dart:16:3 -> InstanceConstant(const E{_Enum.index: 0, _Enum._name: "int"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///enum_names_from_core.dart:17:3 -> InstanceConstant(const E{_Enum.index: 1, _Enum._name: "Object"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///enum_names_from_core.dart:18:3 -> InstanceConstant(const E{_Enum.index: 2, _Enum._name: "String"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///enum_names_from_core.dart:19:3 -> InstanceConstant(const E{_Enum.index: 3, _Enum._name: "_Enum"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///enum_names_from_core.dart:20:3 -> InstanceConstant(const E{_Enum.index: 4, _Enum._name: "List"})
Extra constant evaluation: evaluated: 11, effectively constant: 6
