Merge branch 'master' of https://github.com/dart-lang/co19
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