library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/enum_super_constructor.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'.
//   A() : super();
//   ^
//
// pkg/front_end/testcases/general/enum_super_constructor.dart:9:3: Error: Generative enum constructors must be marked as 'const'.
//   A() : super();
//   ^
//
// pkg/front_end/testcases/general/enum_super_constructor.dart:14: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'.
//   const B() : super();
//   ^
//
// pkg/front_end/testcases/general/enum_super_constructor.dart:14:15: Error: Enum constructors can't contain super-initializers.
//   const B() : super();
//               ^
//
import self as self;
import "dart:core" as core;

class A extends core::_Enum /*isEnum*/  {
  static const field core::List<self::A> values = const <self::A>[self::A::a];
  static const field self::A a = invalid-expression "pkg/front_end/testcases/general/enum_super_constructor.dart:8:3: Error: Couldn't find constructor 'A'.
  a;
  ^";
  constructor •(core::int index, core::String name) → self::A
    ;
  method toString() → core::String
    return "A.${this.{core::_Enum::_name}{core::String}}";
}
class B extends core::_Enum /*isEnum*/  {
  static const field core::List<self::B> values = const <self::B>[self::B::b];
  static const field self::B b = const self::B::•(0, "b");
  const constructor •(core::int index, core::String name) → self::B
    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/enum_super_constructor.dart:14:15: Error: Enum constructors can't contain super-initializers.
  const B() : super();
              ^"
    ;
  method toString() → core::String
    return "B.${this.{core::_Enum::_name}{core::String}}";
}
static method main() → dynamic
  ;
