diff --git a/LanguageFeatures/Super-parameters/semantics_A06_t10.dart b/LanguageFeatures/Super-parameters/semantics_A06_t10.dart
index 13fdba1..e4886fd 100644
--- a/LanguageFeatures/Super-parameters/semantics_A06_t10.dart
+++ b/LanguageFeatures/Super-parameters/semantics_A06_t10.dart
@@ -33,7 +33,7 @@
 class S {
   int s1;
   int s2;
-  S(this.s1, [this.s2]);
+  S(this.s1, [this.s2 = 42]);
 }
 
 class C extends S {
@@ -43,9 +43,15 @@
 }
 
 main() {
-  C c = C(1, 2, 3, 4);
-  Expect.equals(2, c.s1);
-  Expect.equals(4, c.s2);
-  Expect.equals(1, c.i1);
-  Expect.equals(3, c.i2);
+  C c1 = C(1, 2, 3, 4);
+  Expect.equals(2, c1.s1);
+  Expect.equals(4, c1.s2);
+  Expect.equals(1, c1.i1);
+  Expect.equals(3, c1.i2);
+
+  C c2 = C(1, 2, 3);
+  Expect.equals(2, c2.s1);
+  Expect.equals(42, c2.s2);
+  Expect.equals(1, c2.i1);
+  Expect.equals(3, c2.i2);
 }
diff --git a/LanguageFeatures/Super-parameters/semantics_A06_t11.dart b/LanguageFeatures/Super-parameters/semantics_A06_t11.dart
index 6857f4a..138241e 100644
--- a/LanguageFeatures/Super-parameters/semantics_A06_t11.dart
+++ b/LanguageFeatures/Super-parameters/semantics_A06_t11.dart
@@ -33,7 +33,7 @@
 class S {
   int s1;
   int s2;
-  S(this.s1, [this.s2]);
+  S(this.s1, [this.s2 = 42]);
 }
 
 class C extends S {
diff --git a/LanguageFeatures/Super-parameters/semantics_A06_t21.dart b/LanguageFeatures/Super-parameters/semantics_A06_t21.dart
index 74b11be..31f5fba 100644
--- a/LanguageFeatures/Super-parameters/semantics_A06_t21.dart
+++ b/LanguageFeatures/Super-parameters/semantics_A06_t21.dart
@@ -43,5 +43,5 @@
 }
 
 main() {
-  C(1, 2, 3);
+  C(1, 2, s1: 3);
 }
diff --git a/LanguageFeatures/Super-parameters/type_inference_A01_t03.dart b/LanguageFeatures/Super-parameters/type_inference_A01_t03.dart
index 0da00de..cd37ef0 100644
--- a/LanguageFeatures/Super-parameters/type_inference_A01_t03.dart
+++ b/LanguageFeatures/Super-parameters/type_inference_A01_t03.dart
@@ -18,7 +18,7 @@
 
 test<T>(T t) {}
 
-class S<T> {
+class S<T extends num> {
   final f;
   var v;
   num n;
@@ -32,7 +32,7 @@
   }
 }
 
-class C<T> extends S<T> {
+class C<T extends num> extends S<T> {
   C(int x, int super.f, int super.v, int super.n, int super.t, int y,
       int super.i) {
     Expect.isTrue(f is int);
@@ -47,5 +47,5 @@
 }
 
 main() {
-  C(1, 2, 3, 4);
+  C(1, 2, 3, 4, 5, 6, 7);
 }
diff --git a/LanguageFeatures/Super-parameters/type_inference_A02_t03.dart b/LanguageFeatures/Super-parameters/type_inference_A02_t03.dart
new file mode 100644
index 0000000..8b4c5ec
--- /dev/null
+++ b/LanguageFeatures/Super-parameters/type_inference_A02_t03.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 infer the type of a parameter declaration, p, of a
+/// non-redirecting generative constructor, C, as:
+/// ...
+/// Otherwise, if the parameter is an initializing formal (this.name) the
+/// inferred type of the parameter is the declared/inferred type of the instance
+/// variable named name of the surrounding class (which must exist, otherwise
+/// it’s a compile-time error.)
+///
+/// @description Check that if the parameter is an initializing formal
+/// (this.name) then it must exists in the surrounding class
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=super-parameters
+
+test<T>(T t) {}
+
+class S {
+  int s1;
+  S(this.s1);
+}
+
+class C extends S {
+  int i1;
+  C(this.i1, this.s1);
+//           ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  C.n(this.i1, this.s1) : super(42);
+//             ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+}
+
+main() {
+  C(1, 2);
+  C.n(1, 2);
+}
diff --git a/LanguageFeatures/Super-parameters/type_inference_A03_t01.dart b/LanguageFeatures/Super-parameters/type_inference_A03_t01.dart
index e376a4f..3ea3e8b 100644
--- a/LanguageFeatures/Super-parameters/type_inference_A03_t01.dart
+++ b/LanguageFeatures/Super-parameters/type_inference_A03_t01.dart
@@ -40,30 +40,57 @@
 }
 
 main() {
-  var c = C(1, 2, 3, 4, 5, 6, 7, 8, 9);
-  test<int>(c.f1);
-  test<int>(c.v1);
-  test<int>(c.i1);
-  test<int>(c.t1);
-  test<int>(c.f2);
-  test<int>(c.v2);
-  test<int>(c.i2);
-  test<int>(c.t2);
+  var c1 = C(1, 2, 3, 4, 5, 6, 7, 8, 9);
+  test<int>(c1.f1);
+  test<int>(c1.v1);
+  test<int>(c1.i1);
+  test<int>(c1.t1);
+  test<int>(c1.f2);
+  test<int>(c1.v2);
+  test<int>(c1.i2);
+  test<int>(c1.t2);
 
-  Expect.isTrue(c.f1 is int);
-  Expect.isFalse(c.f1 is String);
-  Expect.isTrue(c.v1 is int);
-  Expect.isFalse(c.v1 is String);
-  Expect.isTrue(c.i1 is int);
-  Expect.isFalse(c.i1 is String);
-  Expect.isTrue(c.t1 is int);
-  Expect.isFalse(c.t1 is String);
-  Expect.isTrue(c.f2 is int);
-  Expect.isFalse(c.f2 is String);
-  Expect.isTrue(c.v2 is int);
-  Expect.isFalse(c.v2 is String);
-  Expect.isTrue(c.i2 is int);
-  Expect.isFalse(c.i2 is String);
-  Expect.isTrue(c.t2 is int);
-  Expect.isFalse(c.t2 is String);
+  Expect.isTrue(c1.f1 is int);
+  Expect.isFalse(c1.f1 is String);
+  Expect.isTrue(c1.v1 is int);
+  Expect.isFalse(c1.v1 is String);
+  Expect.isTrue(c1.i1 is int);
+  Expect.isFalse(c1.i1 is String);
+  Expect.isTrue(c1.t1 is int);
+  Expect.isFalse(c1.t1 is String);
+  Expect.isTrue(c1.f2 is int);
+  Expect.isFalse(c1.f2 is String);
+  Expect.isTrue(c1.v2 is int);
+  Expect.isFalse(c1.v2 is String);
+  Expect.isTrue(c1.i2 is int);
+  Expect.isFalse(c1.i2 is String);
+  Expect.isTrue(c1.t2 is int);
+  Expect.isFalse(c1.t2 is String);
+
+  C<int> c2 = C<int>(1, 2, 3, 4, 5, 6, 7, 8, 9);
+  test<int>(c2.f1);
+  test<int>(c2.v1);
+  test<int>(c2.i1);
+  test<int>(c2.t1);
+  test<int>(c2.f2);
+  test<int>(c2.v2);
+  test<int>(c2.i2);
+  test<int>(c2.t2);
+
+  Expect.isTrue(c2.f1 is int);
+  Expect.isFalse(c2.f1 is String);
+  Expect.isTrue(c2.v1 is int);
+  Expect.isFalse(c2.v1 is String);
+  Expect.isTrue(c2.i1 is int);
+  Expect.isFalse(c2.i1 is String);
+  Expect.isTrue(c2.t1 is int);
+  Expect.isFalse(c2.t1 is String);
+  Expect.isTrue(c2.f2 is int);
+  Expect.isFalse(c2.f2 is String);
+  Expect.isTrue(c2.v2 is int);
+  Expect.isFalse(c2.v2 is String);
+  Expect.isTrue(c2.i2 is int);
+  Expect.isFalse(c2.i2 is String);
+  Expect.isTrue(c2.t2 is int);
+  Expect.isFalse(c2.t2 is String);
 }
diff --git a/LanguageFeatures/Super-parameters/type_inference_A03_t02.dart b/LanguageFeatures/Super-parameters/type_inference_A03_t02.dart
index c3f9257..1efe958 100644
--- a/LanguageFeatures/Super-parameters/type_inference_A03_t02.dart
+++ b/LanguageFeatures/Super-parameters/type_inference_A03_t02.dart
@@ -23,47 +23,71 @@
 class S<T> {
   final f1;
   var v1;
-  int i1;
-  T t1;
-  S(this.f1, this.v1, this.i1, this.t1, var x) {
-    test<int>(x);
-  }
+  int? i1;
+  T? t1;
+  S([this.f1, this.v1, this.i1, this.t1]);
 }
 
 class C<T> extends S<T> {
   final f2;
   var v2;
-  int i2;
-  T t2;
-  C(super.f1, super.v1, super.i1, super.t1, super.x, this.f2, this.v2, this.i2,
-    this.t2);
+  int? i2;
+  T? t2;
+  C([super.f1, super.v1, super.i1, super.t1, this.f2, this.v2, this.i2, this.t2]);
 }
 
 main() {
-  C<int> c = C<int>(1, 2, 3, 4, 5, 6, 7, 8, 9);
-  test<int>(c.f1);
-  test<int>(c.v1);
-  test<int>(c.i1);
-  test<int>(c.t1);
-  test<int>(c.f2);
-  test<int>(c.v2);
-  test<int>(c.i2);
-  test<int>(c.t2);
+  var c1 = C(1, 2, 3, 4, 5, 6, 7, 8);
+  test<int>(c1.f1);
+  test<int>(c1.v1);
+  test<int?>(c1.i1);
+  test<int>(c1.t1);
+  test<int>(c1.f2);
+  test<int>(c1.v2);
+  test<int?>(c1.i2);
+  test<int>(c1.t2);
 
-  Expect.isTrue(c.f1 is int);
-  Expect.isFalse(c.f1 is String);
-  Expect.isTrue(c.v1 is int);
-  Expect.isFalse(c.v1 is String);
-  Expect.isTrue(c.i1 is int);
-  Expect.isFalse(c.i1 is String);
-  Expect.isTrue(c.t1 is int);
-  Expect.isFalse(c.t1 is String);
-  Expect.isTrue(c.f2 is int);
-  Expect.isFalse(c.f2 is String);
-  Expect.isTrue(c.v2 is int);
-  Expect.isFalse(c.v2 is String);
-  Expect.isTrue(c.i2 is int);
-  Expect.isFalse(c.i2 is String);
-  Expect.isTrue(c.t2 is int);
-  Expect.isFalse(c.t2 is String);
+  Expect.isTrue(c1.f1 is int);
+  Expect.isFalse(c1.f1 is String);
+  Expect.isTrue(c1.v1 is int);
+  Expect.isFalse(c1.v1 is String);
+  Expect.isTrue(c1.i1 is int?);
+  Expect.isFalse(c1.i1 is String);
+  Expect.isTrue(c1.t1 is int);
+  Expect.isFalse(c1.t1 is String);
+  Expect.isTrue(c1.f2 is int);
+  Expect.isFalse(c1.f2 is String);
+  Expect.isTrue(c1.v2 is int);
+  Expect.isFalse(c1.v2 is String);
+  Expect.isTrue(c1.i2 is int?);
+  Expect.isFalse(c1.i2 is String);
+  Expect.isTrue(c1.t2 is int);
+  Expect.isFalse(c1.t2 is String);
+
+  C<int> c2 = C(1, 2, 3, 4, 5, 6, 7, 8);
+  test<int>(c2.f1);
+  test<int>(c2.v1);
+  test<int?>(c2.i1);
+  test<int?>(c2.t1);
+  test<int>(c2.f2);
+  test<int>(c2.v2);
+  test<int?>(c2.i2);
+  test<int?>(c2.t2);
+
+  Expect.isTrue(c2.f1 is int);
+  Expect.isFalse(c2.f1 is String);
+  Expect.isTrue(c2.v1 is int);
+  Expect.isFalse(c2.v1 is String);
+  Expect.isTrue(c2.i1 is int?);
+  Expect.isFalse(c2.i1 is String);
+  Expect.isTrue(c2.t1 is int);
+  Expect.isFalse(c2.t1 is String);
+  Expect.isTrue(c2.f2 is int);
+  Expect.isFalse(c2.f2 is String);
+  Expect.isTrue(c2.v2 is int);
+  Expect.isFalse(c2.v2 is String);
+  Expect.isTrue(c2.i2 is int?);
+  Expect.isFalse(c2.i2 is String);
+  Expect.isTrue(c2.t2 is int);
+  Expect.isFalse(c2.t2 is String);
 }
diff --git a/LanguageFeatures/Super-parameters/type_inference_A03_t03.dart b/LanguageFeatures/Super-parameters/type_inference_A03_t03.dart
index 0832efc..de316bb 100644
--- a/LanguageFeatures/Super-parameters/type_inference_A03_t03.dart
+++ b/LanguageFeatures/Super-parameters/type_inference_A03_t03.dart
@@ -16,51 +16,19 @@
 
 // SharedOptions=--enable-experiment=super-parameters
 
-import "../../Utils/expect.dart";
-
-test<T>(T t) {}
-
-class S<T> {
-  final f1;
-  var v1;
-  int? i1;
-  T? t1;
-  S([this.f1, this.v1, this.i1, this.t1]);
+class S {
+  var s1;
+  S(int x) : s1 = x;
 }
 
-class C<T> extends S<T> {
-  final f2;
-  var v2;
-  int? i2;
-  T? t2;
-  C([super.f1, super.v1, super.i1, super.t1, this.f2, this.v2, this.i2, this.t2]);
+class C extends S {
+  var i1;
+  C(this.i1, String super.x);
+//           ^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
 
 main() {
-  var c = C(1, 2, 3, 4, 5, 6, 7, 8);
-  test<int>(c.f1);
-  test<int>(c.v1);
-  test<int?>(c.i1);
-  test<int>(c.t1);
-  test<int>(c.f2);
-  test<int>(c.v2);
-  test<int?>(c.i2);
-  test<int>(c.t2);
-
-  Expect.isTrue(c.f1 is int);
-  Expect.isFalse(c.f1 is String);
-  Expect.isTrue(c.v1 is int);
-  Expect.isFalse(c.v1 is String);
-  Expect.isTrue(c.i1 is int?);
-  Expect.isFalse(c.i1 is String);
-  Expect.isTrue(c.t1 is int);
-  Expect.isFalse(c.t1 is String);
-  Expect.isTrue(c.f2 is int);
-  Expect.isFalse(c.f2 is String);
-  Expect.isTrue(c.v2 is int);
-  Expect.isFalse(c.v2 is String);
-  Expect.isTrue(c.i2 is int?);
-  Expect.isFalse(c.i2 is String);
-  Expect.isTrue(c.t2 is int);
-  Expect.isFalse(c.t2 is String);
+  print(C);
 }
diff --git a/LanguageFeatures/Super-parameters/type_inference_A03_t04.dart b/LanguageFeatures/Super-parameters/type_inference_A03_t04.dart
new file mode 100644
index 0000000..b014d7c
--- /dev/null
+++ b/LanguageFeatures/Super-parameters/type_inference_A03_t04.dart
@@ -0,0 +1,40 @@
+// 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 infer the type of a parameter declaration, p, of a
+/// non-redirecting generative constructor, C, as:
+/// ...
+/// Otherwise, if the parameter is a super parameter (super.name) the inferred
+/// type of the parameter is the associated super-constructor parameter (which
+/// must exist, otherwise we’d have a compile-time error).
+///
+/// @description Check that if the parameter is a super parameter (super.name)
+/// the inferred type of the parameter is the associated super-constructor
+/// parameter
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=super-parameters
+
+class S {
+  var s1;
+  S(num x) : s1 = x;
+}
+
+class C extends S {
+  var i1;
+  C(this.i1, super.x);
+}
+
+main() {
+  C(1, 2);
+  C(1, 3.14);
+  C(1, "2");
+//     ^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+  C(1, Object());
+//     ^^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
diff --git a/LanguageFeatures/Super-parameters/type_inference_A03_t05.dart b/LanguageFeatures/Super-parameters/type_inference_A03_t05.dart
new file mode 100644
index 0000000..1c03b4d
--- /dev/null
+++ b/LanguageFeatures/Super-parameters/type_inference_A03_t05.dart
@@ -0,0 +1,40 @@
+// 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 infer the type of a parameter declaration, p, of a
+/// non-redirecting generative constructor, C, as:
+/// ...
+/// Otherwise, if the parameter is a super parameter (super.name) the inferred
+/// type of the parameter is the associated super-constructor parameter (which
+/// must exist, otherwise we’d have a compile-time error).
+///
+/// @description Check that if the parameter is a super parameter (super.name)
+/// the inferred type of the parameter is the associated super-constructor
+/// parameter
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=super-parameters
+
+class S<T> {
+  var s1;
+  S(T x) : s1 = x;
+}
+
+class C extends S<num> {
+  var i1;
+  C(this.i1, super.x);
+}
+
+main() {
+  C(1, 2);
+  C(1, 3.14);
+  C(1, "2");
+//     ^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+  C(1, Object());
+//     ^^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
diff --git a/LanguageFeatures/Super-parameters/type_inference_A04_t01.dart b/LanguageFeatures/Super-parameters/type_inference_A04_t01.dart
index 3711369..045d3ea 100644
--- a/LanguageFeatures/Super-parameters/type_inference_A04_t01.dart
+++ b/LanguageFeatures/Super-parameters/type_inference_A04_t01.dart
@@ -8,7 +8,7 @@
 /// Otherwise the inferred type of the parameter is dynamic
 ///
 /// @description Check that the inferred type of the parameter is dynamic if
-/// there is no information about the parameter type
+// /// there is no information about the parameter type
 /// @author sgrekhov@unipro.ru
 
 // SharedOptions=--enable-experiment=super-parameters
@@ -25,6 +25,8 @@
   }
 }
 
+testType(String s) {}
+
 test(var v) {
   var c = C(v, v, v);
   Expect.throws(() {
@@ -35,8 +37,6 @@
   });
 }
 
-testType(String s) {}
-
 main() {
   test(42);
 }
diff --git a/LanguageFeatures/Super-parameters/type_inference_A04_t02.dart b/LanguageFeatures/Super-parameters/type_inference_A04_t02.dart
index ebd0846..ce8d970 100644
--- a/LanguageFeatures/Super-parameters/type_inference_A04_t02.dart
+++ b/LanguageFeatures/Super-parameters/type_inference_A04_t02.dart
@@ -25,6 +25,8 @@
   C(super.x, super.t);
 }
 
+testType(String s) {}
+
 test(var v) {
   var c = C(v, v);
   Expect.throws(() {
@@ -35,8 +37,6 @@
   });
 }
 
-testType(String s) {}
-
 main() {
   test(42);
 }
diff --git a/LanguageFeatures/Super-parameters/type_inference_A04_t03.dart b/LanguageFeatures/Super-parameters/type_inference_A04_t03.dart
index 6ca2bbf..b585035 100644
--- a/LanguageFeatures/Super-parameters/type_inference_A04_t03.dart
+++ b/LanguageFeatures/Super-parameters/type_inference_A04_t03.dart
@@ -25,6 +25,8 @@
   C({required super.x, required super.t});
 }
 
+testType(String s) {}
+
 test(var v) {
   var c = C(x: v, t: v);
   Expect.throws(() {
@@ -35,8 +37,6 @@
   });
 }
 
-testType(String s) {}
-
 main() {
   test(42);
 }
diff --git a/LanguageFeatures/Super-parameters/type_inference_A04_t04.dart b/LanguageFeatures/Super-parameters/type_inference_A04_t04.dart
index 76b9f08..e0eca0b 100644
--- a/LanguageFeatures/Super-parameters/type_inference_A04_t04.dart
+++ b/LanguageFeatures/Super-parameters/type_inference_A04_t04.dart
@@ -25,6 +25,8 @@
   C([super.x, super.t]);
 }
 
+testType(String s) {}
+
 test(var v) {
   var c = C(v, v);
   Expect.throws(() {
@@ -35,8 +37,6 @@
   });
 }
 
-testType(String s) {}
-
 main() {
   test(42);
 }
diff --git a/LanguageFeatures/Super-parameters/type_inference_A06_t01.dart b/LanguageFeatures/Super-parameters/type_inference_A06_t01.dart
index 882a42a..2bb8c13 100644
--- a/LanguageFeatures/Super-parameters/type_inference_A06_t01.dart
+++ b/LanguageFeatures/Super-parameters/type_inference_A06_t01.dart
@@ -16,8 +16,7 @@
 
 abstract class S {
   int s1;
-  int s2;
-  S([this.s1, this.s2]);
+  S([this.s1]);
 //        ^^
 // [analyzer] unspecified
 // [cfe] unspecified
@@ -25,7 +24,7 @@
 
 class C extends S {
   num c1;
-  C(this.c1, [super.s1, num x, super.s2]);
+  C(this.c1, [super.s1, num x]);
 }
 
 main() {
diff --git a/LanguageFeatures/Super-parameters/type_inference_A06_t02.dart b/LanguageFeatures/Super-parameters/type_inference_A06_t02.dart
new file mode 100644
index 0000000..57c5ab9
--- /dev/null
+++ b/LanguageFeatures/Super-parameters/type_inference_A06_t02.dart
@@ -0,0 +1,32 @@
+// 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:
+/// ...
+/// It’s then a compile-time error if p is optional, its type is potentially
+/// non-nullable and it still does not have a default value.
+///
+/// @description Check that it’s then a compile-time error if p is optional, its
+/// type is potentially non-nullable and it still does not have a default value.
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=super-parameters
+
+class S {
+  var s1;
+  S([this.s1]);
+}
+
+class C extends S {
+  num c1;
+  C(this.c1, [int super.s1, num x]);
+//            ^^^^^^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+main() {
+  C(42);
+}
diff --git a/LanguageFeatures/Super-parameters/type_inference_A06_t03.dart b/LanguageFeatures/Super-parameters/type_inference_A06_t03.dart
new file mode 100644
index 0000000..adaa38a
--- /dev/null
+++ b/LanguageFeatures/Super-parameters/type_inference_A06_t03.dart
@@ -0,0 +1,32 @@
+// 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:
+/// ...
+/// It’s then a compile-time error if p is optional, its type is potentially
+/// non-nullable and it still does not have a default value.
+///
+/// @description Check that it’s then a compile-time error if p is optional, its
+/// type is potentially non-nullable and it still does not have a default value.
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=super-parameters
+
+class S {
+  var s1;
+  S([this.s1]);
+}
+
+class C extends S {
+  num c1;
+  C(this.c1, int super.s1, num x);
+//           ^^^^^^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+main() {
+  C(1, 2, 3);
+}
diff --git a/LanguageFeatures/Super-parameters/type_inference_A06_t04.dart b/LanguageFeatures/Super-parameters/type_inference_A06_t04.dart
new file mode 100644
index 0000000..48173b6
--- /dev/null
+++ b/LanguageFeatures/Super-parameters/type_inference_A06_t04.dart
@@ -0,0 +1,32 @@
+// 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:
+/// ...
+/// It’s then a compile-time error if p is optional, its type is potentially
+/// non-nullable and it still does not have a default value.
+///
+/// @description Check that it’s then a compile-time error if p is optional, its
+/// type is potentially non-nullable and it still does not have a default value.
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=super-parameters
+
+class S {
+  var s1;
+  S({this.s1});
+}
+
+class C extends S {
+  num c1;
+  C(this.c1, {int super.s1, num x});
+//            ^^^^^^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+main() {
+  C(42);
+}
diff --git a/LanguageFeatures/Super-parameters/type_inference_A07_t01.dart b/LanguageFeatures/Super-parameters/type_inference_A07_t01.dart
index 20135e5..f23b125 100644
--- a/LanguageFeatures/Super-parameters/type_inference_A07_t01.dart
+++ b/LanguageFeatures/Super-parameters/type_inference_A07_t01.dart
@@ -20,7 +20,7 @@
 
 class C extends S {
   num c1;
-  C(this.c1, [super.s1 = 3.14, num x, super.s2 = 0]);
+  C(this.c1, [super.s1 = "42", num x, super.s2 = 0]);
 //                       ^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
diff --git a/LanguageFeatures/Super-parameters/type_inference_A07_t02.dart b/LanguageFeatures/Super-parameters/type_inference_A07_t02.dart
index 5801462..d81ab89 100644
--- a/LanguageFeatures/Super-parameters/type_inference_A07_t02.dart
+++ b/LanguageFeatures/Super-parameters/type_inference_A07_t02.dart
@@ -20,7 +20,7 @@
 
 class C extends S {
   num c1;
-  C(this.c1, {super.s1 = 3.14, num x = 0, super.s2 = 0});
+  C(this.c1, {super.s1 = "42", num x = 0, super.s2 = 0});
 //                       ^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
