// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

/// @assertion EnumName extension Null safety
/// Access to the name of an enum value.
///
/// This method is declared as an extension method instead of an instance method
/// in order to allow enum values to have the name name.
///
/// The name of the enum value.
///
/// The name is a string containing the source identifier used to declare the
/// enum value.
///
/// For example, given a declaration like:
///
/// enum MyEnum {
///   value1,
///   value2
/// }
/// the result of MyEnum.value1.name is the string "value1".
/// @description Check grammar of the enum declaration. Test covariant members
/// @author sgrekhov@unipro.ru

// SharedOptions=--enable-experiment=enhanced-enums

import "../../Utils/expect.dart";

enum E<T extends num> {
  e1,
  e2(),
  e3<int>.named(42);

  const E();
  const E.named(int x);
}

main() {
  Expect.equals("e1", E.e1.name);
  Expect.equals("e2", E.e2.name);
  Expect.equals("e3", E.e3.name);
}
