#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);
}