[test] Fix constructor tear off tests in language
Change-Id: Icf5f6e99df68cd4194e9f4d9314757eab3d3fe11
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/207661
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
diff --git a/tests/language/constructor/tear_off_test.dart b/tests/language/constructor/tear_off_test.dart
index f890b44..a0764886 100644
--- a/tests/language/constructor/tear_off_test.dart
+++ b/tests/language/constructor/tear_off_test.dart
@@ -24,18 +24,16 @@
const NGenRedir._(this.x);
}
-class NFac {
+class NFac implements NFacRedir {
final int x;
- factory NFac(int x) => NFacRedir._(x);
- factory NFac.named(int x) => NFacRedir._(x);
- NFac._(this.x);
+ factory NFac(int x) => NFac._(x);
+ factory NFac.named(int x) => NFac._(x);
+ const NFac._(this.x);
}
class NFacRedir {
- final int x;
const factory NFacRedir(int x) = NFac._;
const factory NFacRedir.named(int x) = NFac._;
- NFacRedir._(this.x);
}
// Generic classes.
@@ -52,18 +50,16 @@
const GGenRedir._(this.x);
}
-class GFac<T> {
+class GFac<T> implements GFacRedir<T> {
final int x;
- factory GFac(int x) => GFacRedir._(x);
- factory GFac.named(int x) => GFacRedir._(x);
- GFac._(this.x);
+ factory GFac(int x) => GFac._(x);
+ factory GFac.named(int x) => GFac._(x);
+ const GFac._(this.x);
}
class GFacRedir<T> {
- final int x;
const factory GFacRedir(int x) = GFac._;
const factory GFacRedir.named(int x) = GFac._;
- GFacRedir._(this.x);
}
class Optional<T> {
@@ -96,9 +92,9 @@
GGen<int>.new.expectStaticType<Exactly<GGen<int> Function(int)>>();
GGen<int>.named.expectStaticType<Exactly<GGen<int> Function(int)>>();
GGenRedir<int>.new
- .expectStaticType<Exactly<GGenRedir<T> Function<T>(int)>>();
+ .expectStaticType<Exactly<GGenRedir<int> Function(int)>>();
GGenRedir<int>.named
- .expectStaticType<Exactly<GGenRedir<T> Function<T>(int)>>();
+ .expectStaticType<Exactly<GGenRedir<int> Function(int)>>();
GFac<int>.new.expectStaticType<Exactly<GFac<int> Function(int)>>();
GFac<int>.named.expectStaticType<Exactly<GFac<int> Function(int)>>();
GFacRedir<int>.new
@@ -106,26 +102,26 @@
GFacRedir<int>.named
.expectStaticType<Exactly<GFacRedir<int> Function(int)>>();
- contextType<GGen<int> Function(int)>(
+ context<GGen<int> Function(int)>(
GGen.new..expectStaticType<Exactly<GGen<int> Function(int)>>());
- contextType<GGen<int> Function(int)>(
+ context<GGen<int> Function(int)>(
GGen.named..expectStaticType<Exactly<GGen<int> Function(int)>>());
- contextType<GGenRedir<int> Function(int)>(GGenRedir.new
+ context<GGenRedir<int> Function(int)>(GGenRedir.new
..expectStaticType<Exactly<GGenRedir<int> Function(int)>>());
- contextType<GGenRedir<int> Function(int)>(GGenRedir.named
+ context<GGenRedir<int> Function(int)>(GGenRedir.named
..expectStaticType<Exactly<GGenRedir<int> Function(int)>>());
- contextType<GFac<int> Function(int)>(
+ context<GFac<int> Function(int)>(
GFac.new..expectStaticType<Exactly<GFac<int> Function(int)>>());
- contextType<GFac<int> Function(int)>(
+ context<GFac<int> Function(int)>(
GFac.named..expectStaticType<Exactly<GFac<int> Function(int)>>());
- contextType<GFacRedir<int> Function(int)>(
+ context<GFacRedir<int> Function(int)>(
GFacRedir.new..expectStaticType<Exactly<GFacRedir<int> Function(int)>>());
- contextType<GFacRedir<int> Function(int)>(GFacRedir.named
+ context<GFacRedir<int> Function(int)>(GFacRedir.named
..expectStaticType<Exactly<GFacRedir<int> Function(int)>>());
- contextType<Optional<int> Function()>(Optional.new
+ context<Optional<int> Function()>(Optional.new
..expectStaticType<Exactly<Optional<int> Function([int, int])>>());
- contextType<Optional<int> Function()>(Optional.named
+ context<Optional<int> Function()>(Optional.named
..expectStaticType<Exactly<Optional<int> Function({int x, int y})>>());
// Check that tear-offs are canonicalized where possible
diff --git a/tests/language/static_type_helper.dart b/tests/language/static_type_helper.dart
index 4a7809a..14acd63 100644
--- a/tests/language/static_type_helper.dart
+++ b/tests/language/static_type_helper.dart
@@ -6,7 +6,7 @@
Type typeOf<T>() => T;
/// Ensures a context type of [T] for the operand.
-void context<T>(T x) {}
+Object? context<T>(T x) => x;
/// Captures the context type of the call and returns the same type.
///
diff --git a/tests/language/type_object/explicit_instantiated_type_literal_test.dart b/tests/language/type_object/explicit_instantiated_type_literal_test.dart
index 07fa243..6b3b07f 100644
--- a/tests/language/type_object/explicit_instantiated_type_literal_test.dart
+++ b/tests/language/type_object/explicit_instantiated_type_literal_test.dart
@@ -18,8 +18,8 @@
Type type<T>() => T;
void main() {
- C.expectStaticType<Type>();
- C<int>.expectStaticType<Type>();
+ (C).expectStaticType<Exactly<Type>>();
+ (C<int>).expectStaticType<Exactly<Type>>();
Expect.identical(C<num>, C);
Expect.identical(C<int>, C<int>);
@@ -30,8 +30,8 @@
Expect.identical(C<dynamic>, C<dynamic>);
Expect.equals(C<dynamic>, type<C<dynamic>>());
- prefix.C.expectStaticType<Type>();
- prefix.C<int>.expectStaticType<Type>();
+ (prefix.C).expectStaticType<Exactly<Type>>();
+ (prefix.C<int>).expectStaticType<Exactly<Type>>();
Expect.identical(prefix.C<num>, prefix.C);
Expect.identical(prefix.C<int>, prefix.C<int>);
diff --git a/tests/language/typedef/aliased_constructor_tear_off_test.dart b/tests/language/typedef/aliased_constructor_tear_off_test.dart
index e63b693..7d51dfb 100644
--- a/tests/language/typedef/aliased_constructor_tear_off_test.dart
+++ b/tests/language/typedef/aliased_constructor_tear_off_test.dart
@@ -14,7 +14,7 @@
void use(Type type) {}
class C<T> {
- final T value;
+ final T x;
C(this.x);
C.named(this.x);
}
@@ -37,7 +37,7 @@
// or if instantiated with a constant type.
const List<Object> constructors = [
Special.new,
- Spceial.named,
+ Special.named,
Direct.new,
Direct.named,
Bounded.new,
@@ -64,12 +64,12 @@
Wrapping.new,
Wrapping.named,
],
- const <C<int, int> Function(C<int>)>[
+ const <C<int> Function(int)>[
Extra.new,
Extra.named,
]
];
- Expect.notNull(constructors); // Use variable.
+ Expect.isNotNull(constructors); // Use variable.
// The static type is as expected.
@@ -83,8 +83,8 @@
Bounded.new.expectStaticType<Exactly<C<T> Function<T extends num>(T)>>();
Bounded.named.expectStaticType<Exactly<C<T> Function<T extends num>(T)>>();
- Wrapping.new.expectStaticType<Exactly<C<C<T>> Function<T>(T)>>();
- Wrapping.named.expectStaticType<Exactly<C<C<T>> Function<T>(T)>>();
+ Wrapping.new.expectStaticType<Exactly<C<C<T>> Function<T>(C<T>)>>();
+ Wrapping.named.expectStaticType<Exactly<C<C<T>> Function<T>(C<T>)>>();
Extra.new.expectStaticType<Exactly<C<T> Function<T, S>(T)>>();
Extra.named.expectStaticType<Exactly<C<T> Function<T, S>(T)>>();
@@ -105,24 +105,24 @@
Extra<int, String>.named.expectStaticType<Exactly<C<int> Function(int)>>();
// Implicitly instantiated.
- contextType<C<int> Function(int)>(
- Direct<int>.new..expectStaticType<Exactly<C<int> Function(int)>>());
- contextType<C<int> Function(int)>(
- Direct<int>.named..expectStaticType<Exactly<C<int> Function(int)>>());
+ context<C<int> Function(int)>(
+ Direct.new..expectStaticType<Exactly<C<int> Function(int)>>());
+ context<C<int> Function(int)>(
+ Direct.named..expectStaticType<Exactly<C<int> Function(int)>>());
- contextType<C<int> Function(int)>(
- Bounded<int>.new..expectStaticType<Exactly<C<int> Function(int)>>());
- contextType<C<int> Function(int)>(
- Bounded<int>.named..expectStaticType<Exactly<C<int> Function(int)>>());
+ context<C<int> Function(int)>(
+ Bounded.new..expectStaticType<Exactly<C<int> Function(int)>>());
+ context<C<int> Function(int)>(
+ Bounded.named..expectStaticType<Exactly<C<int> Function(int)>>());
- contextType<C<C<int>> Function(C<int>)>(Wrapping<int>.new
+ context<C<C<int>> Function(C<int>)>(Wrapping.new
..expectStaticType<Exactly<C<C<int>> Function(C<int>)>>());
- contextType<C<C<int>> Function(C<int>)>(Wrapping<int>.named
+ context<C<C<int>> Function(C<int>)>(Wrapping.named
..expectStaticType<Exactly<C<C<int>> Function(C<int>)>>());
- contextType<C<int, String> Function(int)>(Extra<int, String>.new
+ context<C<int> Function(int)>(Extra.new
..expectStaticType<Exactly<C<int> Function(int)>>());
- contextType<C<int, String> Function(int)>(Extra<int, String>.named
+ context<C<int> Function(int)>(Extra.named
..expectStaticType<Exactly<C<int> Function(int)>>());
// Uninstantiated tear-offs always canonicalize.
@@ -176,35 +176,35 @@
// Implicit instantiation.
Expect.identical(
- contextType<C<int> Function(int)>(Direct.new),
+ context<C<int> Function(int)>(Direct.new),
C<int>.new,
);
Expect.identical(
- contextType<C<int> Function(int)>(Direct.named),
+ context<C<int> Function(int)>(Direct.named),
C<int>.named,
);
Expect.identical(
- contextType<C<int> Function(int)>(Bounded.new),
+ context<C<int> Function(int)>(Bounded.new),
C<int>.new,
);
Expect.identical(
- contextType<C<int> Function(int)>(Bounded.named),
+ context<C<int> Function(int)>(Bounded.named),
C<int>.named,
);
Expect.identical(
- contextType<C<C<int>> Function(C<int>)>(Wrapping.new),
+ context<C<C<int>> Function(C<int>)>(Wrapping.new),
C<C<int>>.new,
);
Expect.identical(
- contextType<C<C<int>> Function(C<int>)>(Wrapping.named),
+ context<C<C<int>> Function(C<int>)>(Wrapping.named),
C<C<int>>.named,
);
Expect.identical(
- contextType<D<int, String> Function()>(Swapped.new),
+ context<D<int, String> Function()>(Swapped.new),
D<int, String>.new,
);
Expect.identical(
- contextType<D<int, String> Function()>(Swapped.named),
+ context<D<int, String> Function()>(Swapped.named),
D<int, String>.named,
);
diff --git a/tests/language/typedef/aliased_type_literal_instantiation_test.dart b/tests/language/typedef/aliased_type_literal_instantiation_test.dart
index c99e904..25dc8f9 100644
--- a/tests/language/typedef/aliased_type_literal_instantiation_test.dart
+++ b/tests/language/typedef/aliased_type_literal_instantiation_test.dart
@@ -10,7 +10,7 @@
import "package:expect/expect.dart";
class C<T> {
- final T value;
+ final T x;
C(this.x);
C.named(this.x);
}
@@ -55,7 +55,7 @@
Expect.identical(e2, co);
Expect.identical(e3, ci);
- (<T>() {
+ (<T extends num>() {
// Using a non-constant type.
Expect.equals(Direct<T>, ci);
Expect.equals(Bounded<T>, ci);