#1231. More super parameters tests added
diff --git a/LanguageFeatures/Super-parameters/grammar_A01_t01.dart b/LanguageFeatures/Super-parameters/grammar_A01_t01.dart
new file mode 100644
index 0000000..7d458c1
--- /dev/null
+++ b/LanguageFeatures/Super-parameters/grammar_A01_t01.dart
@@ -0,0 +1,41 @@
+// 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 extend the grammar to:
+///
+/// <normalFormalParameterNoMetadata> ::= <functionFormalParameter>
+///   \alt <fieldFormalParameter>
+///   \alt <simpleFormalParameter>
+///   \alt <superFormalParameter>         ## new
+///
+/// <fieldFormalParameter> ::= \gnewline{}
+///   <finalConstVarOrType>? \THIS{} `.' <identifier> (<formalParameterPart> `?'?)?
+///
+/// <superFormalParameter> ::= \gnewline{}                                            ## new
+///   <finalConstVarOrType>? \SUPER{} `.' <identifier> (<formalParameterPart> `?'?)?  ## new
+/// That is, exactly the same grammar as initializing formals, but with super
+/// instead of this.
+///
+/// @description Check that `super.id` is still not allowed in initializer's
+/// list
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=super-parameters
+
+class S {
+  int s1;
+  S(this.s1);
+}
+
+class C extends S {
+  int i;
+  C(this.i) : super.s1 = 0;
+//            ^^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+main() {
+  C(42);
+}
diff --git a/LanguageFeatures/Super-parameters/grammar_A01_t02.dart b/LanguageFeatures/Super-parameters/grammar_A01_t02.dart
new file mode 100644
index 0000000..2277f64
--- /dev/null
+++ b/LanguageFeatures/Super-parameters/grammar_A01_t02.dart
@@ -0,0 +1,41 @@
+// 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 extend the grammar to:
+///
+/// <normalFormalParameterNoMetadata> ::= <functionFormalParameter>
+///   \alt <fieldFormalParameter>
+///   \alt <simpleFormalParameter>
+///   \alt <superFormalParameter>         ## new
+///
+/// <fieldFormalParameter> ::= \gnewline{}
+///   <finalConstVarOrType>? \THIS{} `.' <identifier> (<formalParameterPart> `?'?)?
+///
+/// <superFormalParameter> ::= \gnewline{}                                            ## new
+///   <finalConstVarOrType>? \SUPER{} `.' <identifier> (<formalParameterPart> `?'?)?  ## new
+/// That is, exactly the same grammar as initializing formals, but with super
+/// instead of this.
+///
+/// @description Check that `super.id` is still not allowed in initializer's
+/// list
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=super-parameters
+
+class S {
+  int s1;
+  S(this.s1);
+}
+
+class C extends S {
+  int i;
+  C(super.s1) : this.i = super.s1;
+//                       ^^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+main() {
+  C(42);
+}
diff --git a/LanguageFeatures/Super-parameters/semantics_A06_t17.dart b/LanguageFeatures/Super-parameters/semantics_A06_t17.dart
new file mode 100644
index 0000000..ae6f999
--- /dev/null
+++ b/LanguageFeatures/Super-parameters/semantics_A06_t17.dart
@@ -0,0 +1,48 @@
+// 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 Let C be a non-redirecting generative constructor with, implicit
+/// or explicit, super-constructor invocation s at the end of its initializer
+/// list. Let D be the superclass constructor targeted by s (which must exist).
+///
+/// We define the associated super-constructor parameter for each
+/// super-parameter p of C as follows:
+///
+/// If p is a positional parameter, let j be the number of positional
+/// super-parameters of C up to and including p in source order. The associated
+/// super-constructor parameter of p is the jth positional parameter of D
+/// (1-based), if D has that many positional parameters.
+/// If p is a named parameter with name n, the associated super-constructor
+/// parameter is the named parameter of D with name n, if D has a named
+/// parameter with that name.
+///
+/// It’s a compile-time error if a non-redirecting generative
+/// constructor has a super-parameter with no associated super-constructor
+/// parameter.
+///
+/// @description Check that it is a compile-time error if a non-redirecting
+/// generative constructor has a super-parameter with no associated
+/// super-constructor parameter.
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=super-parameters
+
+class S {
+  int s1;
+  int s2;
+  S(this.s1, {this.s2 = 0});
+}
+
+class C extends S {
+  int i1;
+  int i2;
+  C(this.i1, super.s1, int x, [super.s2]) : this.i2 = x;
+//                             ^^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+main() {
+  C(1, 2, 3, 4);
+}
diff --git a/LanguageFeatures/Super-parameters/semantics_A06_t18.dart b/LanguageFeatures/Super-parameters/semantics_A06_t18.dart
new file mode 100644
index 0000000..9a1c465
--- /dev/null
+++ b/LanguageFeatures/Super-parameters/semantics_A06_t18.dart
@@ -0,0 +1,48 @@
+// 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 Let C be a non-redirecting generative constructor with, implicit
+/// or explicit, super-constructor invocation s at the end of its initializer
+/// list. Let D be the superclass constructor targeted by s (which must exist).
+///
+/// We define the associated super-constructor parameter for each
+/// super-parameter p of C as follows:
+///
+/// If p is a positional parameter, let j be the number of positional
+/// super-parameters of C up to and including p in source order. The associated
+/// super-constructor parameter of p is the jth positional parameter of D
+/// (1-based), if D has that many positional parameters.
+/// If p is a named parameter with name n, the associated super-constructor
+/// parameter is the named parameter of D with name n, if D has a named
+/// parameter with that name.
+///
+/// It’s a compile-time error if a non-redirecting generative
+/// constructor has a super-parameter with no associated super-constructor
+/// parameter.
+///
+/// @description Check that it is a compile-time error if a non-redirecting
+/// generative constructor has a super-parameter with no associated
+/// super-constructor parameter.
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=super-parameters
+
+class S {
+  int s1;
+  int s2;
+  S(this.s1, [this.s2 = 0]);
+}
+
+class C extends S {
+  int i1;
+  int i2;
+  C(this.i1, super.s1, int x, {super.s2}) : this.i2 = x;
+//                             ^^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+main() {
+  C(1, 2, 3, s2: 4);
+}
diff --git a/LanguageFeatures/Super-parameters/semantics_A06_t19.dart b/LanguageFeatures/Super-parameters/semantics_A06_t19.dart
new file mode 100644
index 0000000..8bf291d
--- /dev/null
+++ b/LanguageFeatures/Super-parameters/semantics_A06_t19.dart
@@ -0,0 +1,47 @@
+// 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 Let C be a non-redirecting generative constructor with, implicit
+/// or explicit, super-constructor invocation s at the end of its initializer
+/// list. Let D be the superclass constructor targeted by s (which must exist).
+///
+/// We define the associated super-constructor parameter for each
+/// super-parameter p of C as follows:
+///
+/// If p is a positional parameter, let j be the number of positional
+/// super-parameters of C up to and including p in source order. The associated
+/// super-constructor parameter of p is the jth positional parameter of D
+/// (1-based), if D has that many positional parameters.
+/// If p is a named parameter with name n, the associated super-constructor
+/// parameter is the named parameter of D with name n, if D has a named
+/// parameter with that name.
+///
+/// It’s a compile-time error if a non-redirecting generative
+/// constructor has a super-parameter with no associated super-constructor
+/// parameter.
+///
+/// @description Check that it is a compile-time error if a non-redirecting
+/// generative constructor has a super-parameter with no associated
+/// super-constructor parameter.
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=super-parameters
+
+class S {
+  int s1;
+  S(int x1) : s1 = x1;
+}
+
+class C extends S {
+  int i1;
+  int i2;
+  C(this.i1, super.s1, int x) : this.i2 = x;
+//           ^^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+main() {
+  C(1, 2, 3);
+}
diff --git a/LanguageFeatures/Super-parameters/semantics_A06_t20.dart b/LanguageFeatures/Super-parameters/semantics_A06_t20.dart
new file mode 100644
index 0000000..0f7de6c
--- /dev/null
+++ b/LanguageFeatures/Super-parameters/semantics_A06_t20.dart
@@ -0,0 +1,47 @@
+// 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 Let C be a non-redirecting generative constructor with, implicit
+/// or explicit, super-constructor invocation s at the end of its initializer
+/// list. Let D be the superclass constructor targeted by s (which must exist).
+///
+/// We define the associated super-constructor parameter for each
+/// super-parameter p of C as follows:
+///
+/// If p is a positional parameter, let j be the number of positional
+/// super-parameters of C up to and including p in source order. The associated
+/// super-constructor parameter of p is the jth positional parameter of D
+/// (1-based), if D has that many positional parameters.
+/// If p is a named parameter with name n, the associated super-constructor
+/// parameter is the named parameter of D with name n, if D has a named
+/// parameter with that name.
+///
+/// It’s a compile-time error if a non-redirecting generative
+/// constructor has a super-parameter with no associated super-constructor
+/// parameter.
+///
+/// @description Check that it is a compile-time error if a non-redirecting
+/// generative constructor has a super-parameter with no associated
+/// super-constructor parameter.
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=super-parameters
+
+class S {
+  int s1;
+  S([int x1 = 0]) : s1 = x1;
+}
+
+class C extends S {
+  int i1;
+  int i2;
+  C(this.i1, super.s1, int x) : this.i2 = x;
+//           ^^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+main() {
+  C(1, 2, 3);
+}
diff --git a/LanguageFeatures/Super-parameters/semantics_A06_t21.dart b/LanguageFeatures/Super-parameters/semantics_A06_t21.dart
new file mode 100644
index 0000000..74b11be
--- /dev/null
+++ b/LanguageFeatures/Super-parameters/semantics_A06_t21.dart
@@ -0,0 +1,47 @@
+// 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 Let C be a non-redirecting generative constructor with, implicit
+/// or explicit, super-constructor invocation s at the end of its initializer
+/// list. Let D be the superclass constructor targeted by s (which must exist).
+///
+/// We define the associated super-constructor parameter for each
+/// super-parameter p of C as follows:
+///
+/// If p is a positional parameter, let j be the number of positional
+/// super-parameters of C up to and including p in source order. The associated
+/// super-constructor parameter of p is the jth positional parameter of D
+/// (1-based), if D has that many positional parameters.
+/// If p is a named parameter with name n, the associated super-constructor
+/// parameter is the named parameter of D with name n, if D has a named
+/// parameter with that name.
+///
+/// It’s a compile-time error if a non-redirecting generative
+/// constructor has a super-parameter with no associated super-constructor
+/// parameter.
+///
+/// @description Check that it is a compile-time error if a non-redirecting
+/// generative constructor has a super-parameter with no associated
+/// super-constructor parameter.
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=super-parameters
+
+class S {
+  int s1;
+  S({int x1 = 0}) : s1 = x1;
+}
+
+class C extends S {
+  int i1;
+  int i2;
+  C(this.i1, int x, {super.s1}) : this.i2 = x;
+//                   ^^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+main() {
+  C(1, 2, 3);
+}
diff --git a/LanguageFeatures/Super-parameters/semantics_A06_t22.dart b/LanguageFeatures/Super-parameters/semantics_A06_t22.dart
new file mode 100644
index 0000000..7091593
--- /dev/null
+++ b/LanguageFeatures/Super-parameters/semantics_A06_t22.dart
@@ -0,0 +1,48 @@
+// 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 Let C be a non-redirecting generative constructor with, implicit
+/// or explicit, super-constructor invocation s at the end of its initializer
+/// list. Let D be the superclass constructor targeted by s (which must exist).
+///
+/// We define the associated super-constructor parameter for each
+/// super-parameter p of C as follows:
+///
+/// If p is a positional parameter, let j be the number of positional
+/// super-parameters of C up to and including p in source order. The associated
+/// super-constructor parameter of p is the jth positional parameter of D
+/// (1-based), if D has that many positional parameters.
+/// If p is a named parameter with name n, the associated super-constructor
+/// parameter is the named parameter of D with name n, if D has a named
+/// parameter with that name.
+///
+/// It’s a compile-time error if a non-redirecting generative
+/// constructor has a super-parameter with no associated super-constructor
+/// parameter.
+///
+/// @description Check that it is no compile-time error if a non-redirecting
+/// generative constructor has a super-parameter with associated
+/// super-constructor parameter.
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=super-parameters
+
+import "../../Utils/expect.dart";
+
+class S {
+  int s1;
+  S(int x1) : s1 = x1;
+}
+
+class C extends S {
+  C([super.x1 = 0]);
+}
+
+main() {
+  C c1 = C();
+  Expect.equals(0, c1.s1);
+
+  C c2 = C(42);
+  Expect.equals(42, c2.s1);
+}
diff --git a/LanguageFeatures/Super-parameters/type_inference_A05_t04.dart b/LanguageFeatures/Super-parameters/type_inference_A05_t04.dart
new file mode 100644
index 0000000..3c267c2
--- /dev/null
+++ b/LanguageFeatures/Super-parameters/type_inference_A05_t04.dart
@@ -0,0 +1,36 @@
+// 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 also copy the default value of the associated
+/// super-constructor if applicable:
+///
+/// If p is optional, does not declare a default value, the associated
+/// super-constructor parameter is also optional and has a default value d, and
+/// d is a subtype of the (declared or inferred above) type of p, then p gets
+/// the default value d.
+///
+/// @description Check that if p is optional, does not declare a default value,
+/// the associated super-constructor parameter is also optional and has a
+/// default value d, and d is a subtype of the (declared or inferred above) type
+/// of p, then p gets the default value d
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=super-parameters
+
+import "../../Utils/expect.dart";
+
+class S {
+  int s;
+  S([int x = 0]) : s = x - 1;
+}
+
+class C extends S {
+  int c;
+  C([super.x]) : c = x + 1;
+}
+
+main() {
+  Expect.equals(1, C().c);
+  Expect.equals(43, C(42).c);
+}
diff --git a/LanguageFeatures/Super-parameters/type_inference_A05_t05.dart b/LanguageFeatures/Super-parameters/type_inference_A05_t05.dart
new file mode 100644
index 0000000..843dd21
--- /dev/null
+++ b/LanguageFeatures/Super-parameters/type_inference_A05_t05.dart
@@ -0,0 +1,36 @@
+// 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 also copy the default value of the associated
+/// super-constructor if applicable:
+///
+/// If p is optional, does not declare a default value, the associated
+/// super-constructor parameter is also optional and has a default value d, and
+/// d is a subtype of the (declared or inferred above) type of p, then p gets
+/// the default value d.
+///
+/// @description Check that if p is optional, does not declare a default value,
+/// the associated super-constructor parameter is also optional and has a
+/// default value d, and d is a subtype of the (declared or inferred above) type
+/// of p, then p gets the default value d
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=super-parameters
+
+import "../../Utils/expect.dart";
+
+class S {
+  int s;
+  S({int x = 0}) : s = x - 1;
+}
+
+class C extends S {
+  int c;
+  C({super.x}) : c = x + 1;
+}
+
+main() {
+  Expect.equals(1, C().c);
+  Expect.equals(43, C(x: 42).c);
+}