// 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

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);
}
