Fixes #1228. More named arguments anywhere constructors tests added
diff --git a/LanguageFeatures/Named-arguments-anywhere/constructor_t07.dart b/LanguageFeatures/Named-arguments-anywhere/constructor_t07.dart
new file mode 100644
index 0000000..d22d2b2
--- /dev/null
+++ b/LanguageFeatures/Named-arguments-anywhere/constructor_t07.dart
@@ -0,0 +1,35 @@
+// 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 Since named arguments are distinguishable from positional ones,
+/// allowing named arguments to be placed anywhere in the argument list can be
+/// done without changing calling semantics.
+///
+/// @description Checks that named arguments may be placed anywhere in the
+/// argument list. Test constructors
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=named-arguments-anywhere
+
+import "../../Utils/expect.dart";
+
+class A {
+  String log = "";
+
+  A(int x, int y, {int z = 42}) {
+    log = "x=$x, y=$y, z=$z";
+  }
+}
+
+class C extends A {
+  C.named1(int x, int y, int z) : super(x, y, z: z);
+  C.named2(int x, int y, int z) : super(x, z: z, y);
+  C.named3(int x, int y, int z) : super(z: z, x, y);
+}
+
+main() {
+  Expect.equals("x=1, y=2, z=3", C.named1(1, 2, 3).log);
+  Expect.equals("x=1, y=2, z=3", C.named2(1, 2, 3).log);
+  Expect.equals("x=1, y=2, z=3", C.named3(1, 2, 3).log);
+}
diff --git a/LanguageFeatures/Named-arguments-anywhere/constructor_t08.dart b/LanguageFeatures/Named-arguments-anywhere/constructor_t08.dart
new file mode 100644
index 0000000..45fd319
--- /dev/null
+++ b/LanguageFeatures/Named-arguments-anywhere/constructor_t08.dart
@@ -0,0 +1,35 @@
+// 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 Since named arguments are distinguishable from positional ones,
+/// allowing named arguments to be placed anywhere in the argument list can be
+/// done without changing calling semantics.
+///
+/// @description Checks that named arguments may be placed anywhere in the
+/// argument list. Test constructors
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=named-arguments-anywhere
+
+import "../../Utils/expect.dart";
+
+class A<T> {
+  String log = "";
+
+  C(T x, T y, {T? z}) {
+    log = "x=$x, y=$y, z=$z";
+  }
+}
+
+class C<T> extends A<T>{
+  C.named1(T x, T y, T z) : super(x, y, z: z);
+  C.named2(T x, T y, T z) : super(x, z: z, y);
+  C.named3(T x, T y, T z) : super(z: z, x, y);
+}
+
+main() {
+  Expect.equals("x=1, y=2, z=3", C<int>.named1(1, 2, 3).log);
+  Expect.equals("x=1, y=2, z=3", C<int>.named2(1, 2, 3).log);
+  Expect.equals("x=1, y=2, z=3", C<int>.named3(1, 2, 3).log);
+}
diff --git a/LanguageFeatures/Named-arguments-anywhere/constructor_t09.dart b/LanguageFeatures/Named-arguments-anywhere/constructor_t09.dart
new file mode 100644
index 0000000..a5f38f2
--- /dev/null
+++ b/LanguageFeatures/Named-arguments-anywhere/constructor_t09.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 Since named arguments are distinguishable from positional ones,
+/// allowing named arguments to be placed anywhere in the argument list can be
+/// done without changing calling semantics.
+///
+/// @description Checks that named arguments may be placed anywhere in the
+/// argument list. Test constructors
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=named-arguments-anywhere
+
+import "../../Utils/expect.dart";
+
+class C {
+  int x;
+  int y;
+  int? z;
+
+  C(this.x, this.y, {this.z});
+
+  C.named(this.x, this.y, {this.z = 42});
+
+  @override
+  String toString() => "x=$x, y=$y, z=$z";
+}
+
+main() {
+  Expect.equals("x=1, y=2, z=3", C(1, 2, z: 3).toString());
+  Expect.equals("x=1, y=2, z=3", C(z: 3, 1, 2).toString());
+  Expect.equals("x=1, y=2, z=3", C(1, z: 3, 2).toString());
+  Expect.equals("x=1, y=2, z=3", C.named(1, 2, z: 3).toString());
+  Expect.equals("x=1, y=2, z=3", C.named(z: 3, 1, 2).toString());
+  Expect.equals("x=1, y=2, z=3", C.named(1, z: 3, 2).toString());
+}
diff --git a/LanguageFeatures/Named-arguments-anywhere/constructor_t10.dart b/LanguageFeatures/Named-arguments-anywhere/constructor_t10.dart
new file mode 100644
index 0000000..20583a1
--- /dev/null
+++ b/LanguageFeatures/Named-arguments-anywhere/constructor_t10.dart
@@ -0,0 +1,44 @@
+// 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 Since named arguments are distinguishable from positional ones,
+/// allowing named arguments to be placed anywhere in the argument list can be
+/// done without changing calling semantics.
+///
+/// @description Checks that named arguments may be placed anywhere in the
+/// argument list. Test constructors
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=named-arguments-anywhere
+
+import "../../Utils/expect.dart";
+
+class C<T> {
+  T x;
+  T y;
+  T? z;
+
+  C(this.x, this.y, {this.z});
+
+  C.named(this.x, this.y, {this.z});
+
+  @override
+  String toString() => "x=$x, y=$y, z=$z";
+}
+
+main() {
+  Expect.equals("x=1, y=2, z=3", C(1, 2, z: 3).toString());
+  Expect.equals("x=1, y=2, z=3", C(z: 3, 1, 2).toString());
+  Expect.equals("x=1, y=2, z=3", C(1, z: 3, 2).toString());
+  Expect.equals("x=1, y=2, z=3", C.named(1, 2, z: 3).toString());
+  Expect.equals("x=1, y=2, z=3", C.named(z: 3, 1, 2).toString());
+  Expect.equals("x=1, y=2, z=3", C.named(1, z: 3, 2).toString());
+
+  Expect.equals("x=1, y=2, z=3", C<int>(1, 2, z: 3).toString());
+  Expect.equals("x=1, y=2, z=3", C<int>(z: 3, 1, 2).toString());
+  Expect.equals("x=1, y=2, z=3", C<int>(1, z: 3, 2).toString());
+  Expect.equals("x=1, y=2, z=3", C<int>.named(1, 2, z: 3).toString());
+  Expect.equals("x=1, y=2, z=3", C<int>.named(z: 3, 1, 2).toString());
+  Expect.equals("x=1, y=2, z=3", C<int>.named(1, z: 3, 2).toString());
+}