#1207. More enhanced enums tests grammar tests added
diff --git a/LanguageFeatures/Enhanced-Enum/grammar_A01_t04.dart b/LanguageFeatures/Enhanced-Enum/grammar_A01_t04.dart
new file mode 100644
index 0000000..8dfa5dc
--- /dev/null
+++ b/LanguageFeatures/Enhanced-Enum/grammar_A01_t04.dart
@@ -0,0 +1,46 @@
+// 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 We propose the following to also be allowed:
+///
+/// enum Name<T> with Mixin1, Mixin2 implements Interface1, Interface2 {
+///   id1<int>(args1), id2<String>(args2), id3<bool>(args3);
+///   memberDeclaration*
+///   const Name(params) : initList;
+/// }
+/// where memberDeclaration* is any sequence of static and instance member
+/// declarations and/or an unnamed generative const constructor declaration.
+///
+/// The ; after the identifier list is optional if there is nothing else in the
+/// declaration, required if there is any member declaration after it. The
+/// identifier list may have a trailing comma (like now).
+///
+/// @description Check that if there is a ; after the identifier list and there
+/// is no any class member then it is a compile time error
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=enhanced-enums
+
+enum Time1<T> {
+  hour<int>(),
+  day<String>(),
+  week<bool>();
+}
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+enum Time2<T> {
+  hour<int>(),
+  day<String>(),
+  week<bool>(),;
+}
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+main() {
+  Time1.week;
+  Time2.week;
+}
diff --git a/LanguageFeatures/Enhanced-Enum/grammar_A01_t05.dart b/LanguageFeatures/Enhanced-Enum/grammar_A01_t05.dart
new file mode 100644
index 0000000..237ed85
--- /dev/null
+++ b/LanguageFeatures/Enhanced-Enum/grammar_A01_t05.dart
@@ -0,0 +1,43 @@
+// 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 We propose the following to also be allowed:
+///
+/// enum Name<T> with Mixin1, Mixin2 implements Interface1, Interface2 {
+///   id1<int>(args1), id2<String>(args2), id3<bool>(args3);
+///   memberDeclaration*
+///   const Name(params) : initList;
+/// }
+/// where memberDeclaration* is any sequence of static and instance member
+/// declarations and/or an unnamed generative const constructor declaration.
+///
+/// The ; after the identifier list is optional if there is nothing else in the
+/// declaration, required if there is any member declaration after it. The
+/// identifier list may have a trailing comma (like now).
+///
+/// @description Check that the ; can appear after the trailing comma
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=enhanced-enums
+
+enum Time1 {
+  hour,
+  day,
+  week,;
+
+  static int foo() => 42;
+}
+
+enum Time2<T> {
+  hour<int>(),
+  day<String>(),
+  week<bool>(),;
+
+  const Time2<T>();
+}
+
+main() {
+  Time1.week;
+  Time2.week;
+}
diff --git a/LanguageFeatures/Enhanced-Enum/grammar_A04_t01.dart b/LanguageFeatures/Enhanced-Enum/grammar_A04_t01.dart
new file mode 100644
index 0000000..c4782cd
--- /dev/null
+++ b/LanguageFeatures/Enhanced-Enum/grammar_A04_t01.dart
@@ -0,0 +1,37 @@
+// 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 The grammar of the enum declaration becomes:
+///
+/// <enumType> ::=
+///   `enum' <identifier> <typeParameters>? <mixins>? <interfaces>? `{'
+///      <enumEntry> (`,' <enumEntry>)* (`,')? (`;'
+///      (<metadata> <classMemberDefinition>)*
+///      )?
+///   `}'
+///
+/// <enumEntry> ::= <metadata> <identifier> <argumentPart>?
+///               | <metadata> <identifier> <typeArguments>? '.'
+///               | identifier> <arguments>
+///
+/// @description Check grammar of the enum declaration
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=enhanced-enums
+
+class A {
+  const A();
+}
+
+enum E<T extends num> {
+  @A() e1,
+  @A() e2(),
+  @A() e3<int>.named(42);
+
+  const E.named(int x);
+}
+
+main() {
+  E.e1;
+}
diff --git a/LanguageFeatures/Enhanced-Enum/grammar_A04_t02.dart b/LanguageFeatures/Enhanced-Enum/grammar_A04_t02.dart
new file mode 100644
index 0000000..35b9c05
--- /dev/null
+++ b/LanguageFeatures/Enhanced-Enum/grammar_A04_t02.dart
@@ -0,0 +1,38 @@
+// 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 The grammar of the enum declaration becomes:
+///
+/// <enumType> ::=
+///   `enum' <identifier> <typeParameters>? <mixins>? <interfaces>? `{'
+///      <enumEntry> (`,' <enumEntry>)* (`,')? (`;'
+///      (<metadata> <classMemberDefinition>)*
+///      )?
+///   `}'
+///
+/// <enumEntry> ::= <metadata> <identifier> <argumentPart>?
+///               | <metadata> <identifier> <typeArguments>? '.'
+///               | identifier> <arguments>
+///
+/// @description Check grammar of the enum declaration
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=enhanced-enums
+
+class A {
+  const A();
+}
+
+enum E<T extends num> {
+  @A() e1<int>(42),
+  @A() e2<double>(3.14),
+  @A() e3<int>.named(0, 42);
+
+  const E(T t);
+  const E.named(T t, int x) : this(t);
+}
+
+main() {
+  E.e1;
+}