#1087. Constructor tear-off tests fixed and new ones added
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t23.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t23.dart
new file mode 100644
index 0000000..bd2270b
--- /dev/null
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t23.dart
@@ -0,0 +1,39 @@
+// 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 Similarly, [params] is almost exactly the same parameter list
+/// as the constructor [C.name], with the one exception that initializing
+/// formals are represented by normal parameters with the same name and type.
+/// All remaining properties of the parameters are the same as for the
+/// corresponding constructor parameter, including any default values, and
+/// [args] is an argument list passing those parameters to [C.name] directly as
+/// they are received.
+///
+/// @description Checks that initializing formals are represented by normal
+/// parameters with the same name and type.
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
+import "../../Utils/expect.dart";
+
+class C {
+  int x;
+  dynamic y;
+  C.name(int i, dynamic d) : this.x = i, this.y = d;
+}
+
+main() {
+  final dynamic dn = 3.14;
+  var v = C.name;
+  Expect.isTrue(v is C Function(int x, dynamic y));
+  var x = v(42, "Lily was here");
+  Expect.equals(42, x.x);
+  Expect.equals("Lily was here", x.y);
+  var y = v(1, dn);
+  Expect.equals(1, y.x);
+  Expect.equals(dn, y.y);
+
+  Expect.throws(() { v(dn, "test"); });
+}
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t24.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t24.dart
new file mode 100644
index 0000000..d92e624
--- /dev/null
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t24.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 Similarly, [params] is almost exactly the same parameter list
+/// as the constructor [C.name], with the one exception that initializing
+/// formals are represented by normal parameters with the same name and type.
+/// All remaining properties of the parameters are the same as for the
+/// corresponding constructor parameter, including any default values, and
+/// [args] is an argument list passing those parameters to [C.name] directly as
+/// they are received.
+///
+/// @description Checks that initializing formals are represented by normal
+/// parameters with the same name and type.
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
+import "../../Utils/expect.dart";
+
+class C {
+  int x;
+  dynamic y;
+  C.name(int i, dynamic d) : this.x = i, this.y = d {
+    x = 42;
+  }
+}
+
+main() {
+  final dynamic dn = 3.14;
+  var v = C.name;
+  Expect.isTrue(v is C Function(int x, dynamic y));
+  var x = v(0, "Lily was here");
+  Expect.equals(42, x.x);
+  Expect.equals("Lily was here", x.y);
+  var y = v(1, dn);
+  Expect.equals(42, y.x);
+  Expect.equals(dn, y.y);
+
+  Expect.throws(() { v(dn, "test"); });
+}
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t01.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t01.dart
index b1faecd..6523b68 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t01.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t01.dart
@@ -24,4 +24,5 @@
   var v1 = C.new;
   var v2 = C.new;
   Expect.equals(v1, v2);
+  Expect.identical(v1, v2);
 }
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t02.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t02.dart
index d5f1d28..c607316 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t02.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t02.dart
@@ -26,14 +26,17 @@
   var v1 = C.name1;
   var v2 = C.name1;
   Expect.equals(v1, v2);
+  Expect.identical(v1, v2);
 
   var v4 = C.name2;
   var v5 = C.name2;
   Expect.equals(v4, v5);
+  Expect.identical(v4, v5);
 
   var v7 = C.name3;
   var v8 = C.name3;
   Expect.equals(v7, v8);
+  Expect.identical(v7, v8);
 
   Expect.notEquals(v1, v4);
   Expect.notEquals(v2, v7);
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t03.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t03.dart
index a2a7dd9..4f2db04 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t03.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t03.dart
@@ -27,14 +27,17 @@
   var v1 = C.new;
   var v2 = C.new;
   Expect.equals(v1, v2);
+  Expect.identical(v1, v2);
 
   var v4 = C.constr1;
   var v5 = C.constr1;
   Expect.equals(v4, v5);
+  Expect.identical(v4, v5);
 
   var v7 = C.constr1;
   var v8 = C.constr1;
   Expect.equals(v7, v8);
+  Expect.identical(v7, v8);
 
   Expect.notEquals(v1, v4);
   Expect.notEquals(v2, v7);
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t04.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t04.dart
index 7cc2355..eedc192 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t04.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t04.dart
@@ -26,10 +26,12 @@
   var v1 = C.name1;
   var v2 = C.name1;
   Expect.equals(v1, v2);
+  Expect.identical(v1, v2);
 
   var v4 = C.name2;
   var v5 = C.name2;
   Expect.equals(v4, v5);
+  Expect.identical(v4, v5);
 
   var v7 = C.name3;
   var v8 = C.name3;
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t05.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t05.dart
index 062d575..5a9bc86 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t05.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t05.dart
@@ -26,14 +26,17 @@
   var v1 = C.name1;
   var v2 = C.name1;
   Expect.equals(v1, v2);
+  Expect.identical(v1, v2);
 
   var v4 = C.name2;
   var v5 = C.name2;
   Expect.equals(v4, v5);
+  Expect.identical(v4, v5);
 
   var v7 = C.name3;
   var v8 = C.name3;
   Expect.equals(v7, v8);
+  Expect.identical(v7, v8);
 
   Expect.notEquals(v1, v4);
   Expect.notEquals(v2, v7);
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t06.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t06.dart
index 6fddfb0..a6fde6e 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t06.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t06.dart
@@ -27,14 +27,17 @@
   var v1 = C.name1;
   var v2 = C.name1;
   Expect.equals(v1, v2);
+  Expect.identical(v1, v2);
 
   var v4 = C.name2;
   var v5 = C.name2;
   Expect.equals(v4, v5);
+  Expect.identical(v4, v5);
 
   var v7 = C.new;
   var v8 = C.new;
   Expect.equals(v7, v8);
+  Expect.identical(v7, v8);
 
   Expect.notEquals(v1, v4);
   Expect.notEquals(v2, v7);
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t07.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t07.dart
index 6bfe004..2c6d676 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t07.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t07.dart
@@ -27,14 +27,17 @@
   var v1 = C.name1;
   var v2 = C.name1;
   Expect.equals(v1, v2);
+  Expect.identical(v1, v2);
 
   var v4 = C.name2;
   var v5 = C.name2;
   Expect.equals(v4, v5);
+  Expect.identical(v4, v5);
 
   var v7 = C.new;
   var v8 = C.new;
   Expect.equals(v7, v8);
+  Expect.identical(v7, v8);
 
   Expect.notEquals(v1, v4);
   Expect.notEquals(v2, v7);
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t08.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t08.dart
index 7f49477..161d941 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t08.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t08.dart
@@ -27,14 +27,17 @@
   var v1 = C.name1;
   var v2 = C.name1;
   Expect.equals(v1, v2);
+  Expect.identical(v1, v2);
 
   var v4 = C.name2;
   var v5 = C.name2;
   Expect.equals(v4, v5);
+  Expect.identical(v4, v5);
 
   var v7 = C.new;
   var v8 = C.new;
   Expect.equals(v7, v8);
+  Expect.identical(v7, v8);
 
   Expect.notEquals(v1, v4);
   Expect.notEquals(v2, v7);
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t09.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t09.dart
index 1c07c91..be0869c 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t09.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t09.dart
@@ -26,14 +26,17 @@
   var v1 = C.name1;
   var v2 = C.name1;
   Expect.equals(v1, v2);
+  Expect.identical(v1, v2);
 
   var v4 = C.name2;
   var v5 = C.name2;
   Expect.equals(v4, v5);
+  Expect.identical(v4, v5);
 
   var v7 = C.new;
   var v8 = C.new;
   Expect.equals(v7, v8);
+  Expect.identical(v7, v8);
 
   Expect.notEquals(v1, v4);
   Expect.notEquals(v2, v7);
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t10.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t10.dart
index 8e012cc..60aafba 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t10.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t10.dart
@@ -26,14 +26,17 @@
   var v1 = C.name1;
   var v2 = C.name1;
   Expect.equals(v1, v2);
+  Expect.identical(v1, v2);
 
   var v4 = C.name2;
   var v5 = C.name2;
   Expect.equals(v4, v5);
+  Expect.identical(v4, v5);
 
   var v7 = C.new;
   var v8 = C.new;
   Expect.equals(v7, v8);
+  Expect.identical(v7, v8);
 
   Expect.notEquals(v1, v4);
   Expect.notEquals(v2, v7);
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t11.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t11.dart
index 5d40380..2861013 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t11.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t11.dart
@@ -26,14 +26,17 @@
   var v1 = C.name1;
   var v2 = C.name1;
   Expect.equals(v1, v2);
+  Expect.identical(v1, v2);
 
   var v4 = C.name2;
   var v5 = C.name2;
   Expect.equals(v4, v5);
+  Expect.identical(v4, v5);
 
   var v7 = C.new;
   var v8 = C.new;
   Expect.equals(v7, v8);
+  Expect.identical(v7, v8);
 
   Expect.notEquals(v1, v4);
   Expect.notEquals(v2, v7);
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t12.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t12.dart
index abe71a8..b61acc4 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t12.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t12.dart
@@ -26,14 +26,17 @@
   var v1 = C.name1;
   var v2 = C.name1;
   Expect.equals(v1, v2);
+  Expect.identical(v1, v2);
 
   var v4 = C.name2;
   var v5 = C.name2;
   Expect.equals(v4, v5);
+  Expect.identical(v4, v5);
 
   var v7 = C.new;
   var v8 = C.new;
   Expect.equals(v7, v8);
+  Expect.identical(v7, v8);
 
   Expect.notEquals(v1, v4);
   Expect.notEquals(v2, v7);
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t13.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t13.dart
index 768ed58..cd596ec 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t13.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t13.dart
@@ -26,14 +26,17 @@
   var v1 = C.name1;
   var v2 = C.name1;
   Expect.equals(v1, v2);
+  Expect.identical(v1, v2);
 
   var v4 = C.name2;
   var v5 = C.name2;
   Expect.equals(v4, v5);
+  Expect.identical(v4, v5);
 
   var v7 = C.new;
   var v8 = C.new;
   Expect.equals(v7, v8);
+  Expect.identical(v7, v8);
 
   Expect.notEquals(v1, v4);
   Expect.notEquals(v2, v7);
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t14.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t14.dart
index 083d7db..330dcc5 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t14.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t14.dart
@@ -27,14 +27,17 @@
   var v1 = C.name1;
   var v2 = C.name1;
   Expect.equals(v1, v2);
+  Expect.identical(v1, v2);
 
   var v4 = C.name2;
   var v5 = C.name2;
   Expect.equals(v4, v5);
+  Expect.identical(v4, v5);
 
   var v7 = C.new;
   var v8 = C.new;
   Expect.equals(v7, v8);
+  Expect.identical(v7, v8);
 
   Expect.notEquals(v1, v4);
   Expect.notEquals(v2, v7);
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t15.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t15.dart
index 9da9632..21ab0df 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t15.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t15.dart
@@ -27,14 +27,17 @@
   var v1 = C<int>.name1;
   var v2 = C<int>.name1;
   Expect.equals(v1, v2);
+  Expect.identical(v1, v2);
 
   var v4 = C<int>.name2;
   var v5 = C<int>.name2;
   Expect.equals(v4, v5);
+  Expect.identical(v4, v5);
 
   var v7 = C<int>.new;
   var v8 = C<int>.new;
   Expect.equals(v7, v8);
+  Expect.identical(v7, v8);
 
   Expect.notEquals(v1, v4);
   Expect.notEquals(v2, v7);
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A01.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A01.dart
index 561e80d..cbe8bf9 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A01.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A01.dart
@@ -29,14 +29,17 @@
   var v1 = C.new;
   var v2 = (C.new);
   Expect.equals(v1, v2);
+  Expect.identical(v1, v2);
 
   var v3 = C.constr1;
   var v4 = (C.constr1);
   Expect.equals(v3, v4);
+  Expect.identical(v3, v4);
 
   var v5 = C.constr2;
   var v6 = (C.constr2);
   Expect.equals(v5, v6);
+  Expect.identical(v5, v6);
 
   var v7 = C.constr3;
   var v8 = (C.constr3);
@@ -45,4 +48,5 @@
   var v9 = C.constr4;
   var v10 = (C.constr4);
   Expect.equals(v9, v10);
+  Expect.identical(v9, v10);
 }
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A02.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A02.dart
index c9c051d..4a92e39 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A02.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A02.dart
@@ -21,7 +21,7 @@
   C();
   C.constr1(T i) {}
   C.constr2(int i, String s, x) {}
-  C.constr3({int i=1, required T j}) {}
+  C.constr3({int i = 1, required T j}) {}
   C.constr4(this.i, this.j);
 }
 
@@ -29,20 +29,25 @@
   var v1 = C.new;
   var v2 = (C.new);
   Expect.equals(v1, v2);
+  Expect.identical(v1, v2);
 
   var v3 = C.constr1;
   var v4 = (C.constr1);
   Expect.equals(v3, v4);
+  Expect.identical(v3, v4);
 
   var v5 = C.constr2;
   var v6 = (C.constr2);
   Expect.equals(v5, v6);
+  Expect.identical(v5, v6);
 
   var v7 = C.constr3;
   var v8 = (C.constr3);
   Expect.equals(v7, v8);
+  Expect.identical(v7, v8);
 
   var v9 = C.constr4;
   var v10 = (C.constr4);
   Expect.equals(v9, v10);
+  Expect.identical(v9, v10);
 }
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A03.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A03.dart
index 1fd4e59..93c8451 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A03.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A03.dart
@@ -21,7 +21,7 @@
   C();
   C.constr1(T i) {}
   C.constr2(int i, String s, x) {}
-  C.constr3({int i=1, required T j}) {}
+  C.constr3({int i = 1, required T j}) {}
   C.constr4(this.i, this.j);
 }
 
@@ -31,28 +31,38 @@
   var v3 = C.new<int>;
   Expect.equals(v1, v2);
   Expect.equals(v1, v3);
+  Expect.identical(v1, v2);
+  Expect.identical(v1, v3);
 
   var v4 = C<Never>.constr1;
   var v5 = (C<Never>).constr1;
   var v6 = (C.constr1)<Never>;
   Expect.equals(v4, v5);
   Expect.equals(v5, v6);
+  Expect.identical(v4, v5);
+  Expect.identical(v5, v6);
 
   var v7 = C<Null>.constr2;
   var v8 = (C<Null>).constr2;
   var v9 = (C.constr2)<Null>;
   Expect.equals(v7, v8);
   Expect.equals(v8, v9);
+  Expect.identical(v7, v8);
+  Expect.identical(v8, v9);
 
   var v10 = C<List>.constr3;
   var v11 = (C<List>).constr3;
   var v12 = (C.constr3)<List>;
   Expect.equals(v10, v11);
   Expect.equals(v11, v12);
+  Expect.identical(v10, v11);
+  Expect.identical(v11, v12);
 
   var v13 = C<Object?>.constr4;
   var v14 = (C<Object?>).constr4;
   var v15 = (C.constr4)<Object?>;
   Expect.equals(v13, v14);
   Expect.equals(v13, v15);
+  Expect.identical(v13, v14);
+  Expect.identical(v13, v15);
 }