Fixed Issue #465: NNBD generics tests updated.
diff --git a/LanguageFeatures/nnbd/exports_A01_opted_in_lib.dart b/LanguageFeatures/nnbd/exports_A01_opted_in_lib.dart
index c51d462..ae3a2d6 100644
--- a/LanguageFeatures/nnbd/exports_A01_opted_in_lib.dart
+++ b/LanguageFeatures/nnbd/exports_A01_opted_in_lib.dart
@@ -50,7 +50,7 @@
// Generic classes with nullable type parameter:
-class GENERIC_NULLABLE <T> { dynamic getParamType() => T; }
+class GENERIC_NULLABLE <T extends dynamic> { dynamic getParamType() => T; }
class GENERIC_NULLABLE_INT <T extends int?> { dynamic getParamType() => T; }
class GENERIC_NULLABLE_OBJECT <T extends Object?> { dynamic getParamType() => T; }
class GENERIC_NULLABLE_FUNCTION<T extends Function?> { dynamic getParamType() => T; }
@@ -101,7 +101,7 @@
// Generic functions:
-void testGenericDynamic <T> () { Expect.equals(Null, T); }
+void testGenericDynamic <T extends dynamic> () { Expect.equals(Null, T); }
void testGenericNullableInt <T extends int?> () { Expect.equals(Null, T); }
void testGenericNullableFunction<T extends Function?>() { Expect.equals(Null, T); }
void testGenericNullableObject <T extends Object?> () { Expect.equals(Null, T); }
@@ -152,7 +152,7 @@
// Generic function typedefs like
// [typedef <typeIdentifier> <typeParameters> = <functionType>].
-typedef g_def <T> = void Function();
+typedef g_def <T extends dynamic> = void Function();
typedef g_nullable_int_def <T extends int?> = void Function();
typedef g_nullable_object_def <T extends Object?> = void Function();
typedef g_nullable_function_def<T extends Function?> = void Function();
@@ -165,20 +165,20 @@
typedef g_never_def<T extends Never> = void Function();
-typedef g_def_dynamic_arg <T> = void Function(T);
+typedef g_def_dynamic_arg <T extends dynamic> = void Function(T);
typedef g_def_nullable_int_arg <T extends int?> = void Function(T);
typedef g_def_nullable_object_arg <T extends Object?> = void Function(T);
typedef g_def_nullable_function_arg<T extends Function?> = void Function(T);
typedef g_def_null_arg <T extends Null> = void Function(T);
typedef g_def_futureOr_arg <T extends FutureOr> = void Function(T);
-typedef g_def_int_arg <T> = void Function(T);
+typedef g_def_int_arg <T extends int> = void Function(T);
typedef g_def_object_arg <T extends Object> = void Function(T);
typedef g_def_function_arg<T extends Function> = void Function(T);
typedef g_def_never_arg<T extends Never> = void Function(T);
-typedef g_def_getDynamic <T> = T Function();
+typedef g_def_getDynamic <T extends dynamic> = T Function();
typedef g_def_getNullableInt <T extends int?> = T Function();
typedef g_def_getNullableObject <T extends Object?> = T Function();
typedef g_def_getNullableFunction<T extends Function?> = T Function();
@@ -228,7 +228,7 @@
// Generic Function typedefs like
// [typedef <type> <identifier> <formalParameterPart>].
-typedef g_def1 <T> = void Function();
+typedef g_def1 <T extends dynamic> = void Function();
typedef g_nullable_int_def1 <T extends int?> = void Function();
typedef g_nullable_object_def1 <T extends Object?> = void Function();
typedef g_nullable_function_def1<T extends Function?> = void Function();
@@ -241,20 +241,20 @@
typedef g_never_def1<T extends Never> = void Function();
-typedef g_def1_dynamic_arg <T> = void Function(T);
+typedef g_def1_dynamic_arg <T extends dynamic> = void Function(T);
typedef g_def1_nullable_int_arg <T extends int?> = void Function(T);
typedef g_def1_nullable_object_arg <T extends Object?> = void Function(T);
typedef g_def1_nullable_function_arg<T extends Function?> = void Function(T);
typedef g_def1_null_arg <T extends Null> = void Function(T);
typedef g_def1_futureOr_arg <T extends FutureOr> = void Function(T);
-typedef g_def1_int_arg <T> = void Function(T);
+typedef g_def1_int_arg <T extends int> = void Function(T);
typedef g_def1_object_arg <T extends Object> = void Function(T);
typedef g_def1_function_arg<T extends Function> = void Function(T);
typedef g_def1_never_arg<T extends Never> = void Function(T);
-typedef g_def1_getDynamic <T> = T Function();
+typedef g_def1_getDynamic <T extends dynamic> = T Function();
typedef g_def1_getNullableInt <T extends int?> = T Function();
typedef g_def1_getNullableObject <T extends Object?> = T Function();
typedef g_def1_getNullableFunction<T extends Function?> = T Function();
diff --git a/LanguageFeatures/nnbd/generics_A01_t01.dart b/LanguageFeatures/nnbd/generics_A01_t01.dart
index 53a635e..b44ab09 100644
--- a/LanguageFeatures/nnbd/generics_A01_t01.dart
+++ b/LanguageFeatures/nnbd/generics_A01_t01.dart
@@ -16,18 +16,9 @@
import "../../Utils/expect.dart";
class A<T> {}
-
class B<T1, T2, T3> {}
main() {
- Expect.equals(
- typeOf<A<Object?>>(),
- typeOf<A>()
- );
-
- Expect.equals(
- typeOf<B<Object?, Object?, Object?>>(),
- typeOf<B>()
- );
-
+ Expect.equals(typeOf<A<Object?>>(), typeOf<A>());
+ Expect.equals(typeOf<B<Object?, Object?, Object?>>(), typeOf<B>());
}
diff --git a/LanguageFeatures/nnbd/generics_A01_t02.dart b/LanguageFeatures/nnbd/generics_A01_t02.dart
index 83608e5..626b3da 100644
--- a/LanguageFeatures/nnbd/generics_A01_t02.dart
+++ b/LanguageFeatures/nnbd/generics_A01_t02.dart
@@ -22,9 +22,9 @@
main() {
A? source;
var fsource = toF(source);
- F<A<dynamic>> target = fsource;
+ F<A<Object?>> target = fsource;
B? sourceB;
var fsourceB = toF(sourceB);
- F<B<dynamic, dynamic, dynamic>> targetB = fsourceB;
+ F<B<Object?, Object?, Object?>> targetB = fsourceB;
}
diff --git a/LanguageFeatures/nnbd/generics_A01_t03.dart b/LanguageFeatures/nnbd/generics_A01_t03.dart
index f6cc73a..1d3644c 100644
--- a/LanguageFeatures/nnbd/generics_A01_t03.dart
+++ b/LanguageFeatures/nnbd/generics_A01_t03.dart
@@ -22,13 +22,6 @@
typedef BAlias<T1, T2, T3> = B<T1, T2, T3>;
main() {
- Expect.equals(
- typeOf<AAlias<Object?>>(),
- typeOf<AAlias>()
- );
-
- Expect.equals(
- typeOf<BAlias<Object?, Object?, Object?>>(),
- typeOf<BAlias>()
- );
-}
\ No newline at end of file
+ Expect.equals(typeOf<AAlias<Object?>>(), typeOf<AAlias>());
+ Expect.equals(typeOf<BAlias<Object?, Object?, Object?>>(), typeOf<BAlias>());
+}
diff --git a/LanguageFeatures/nnbd/generics_A01_t04.dart b/LanguageFeatures/nnbd/generics_A01_t04.dart
index 21358e8..4f41fd3 100644
--- a/LanguageFeatures/nnbd/generics_A01_t04.dart
+++ b/LanguageFeatures/nnbd/generics_A01_t04.dart
@@ -24,9 +24,9 @@
main() {
AAlias? source;
var fsource = toF(source);
- F<AAlias<dynamic>> target = fsource;
+ F<AAlias<Object?>> target = fsource;
BAlias? sourceB;
var fsourceB = toF(sourceB);
- F<BAlias<dynamic, dynamic, dynamic>> targetB = fsourceB;
+ F<BAlias<Object?, Object?, Object?>> targetB = fsourceB;
}
diff --git a/LanguageFeatures/nnbd/generics_A01_t05.dart b/LanguageFeatures/nnbd/generics_A01_t05.dart
index 4a654c0..236bfdc 100644
--- a/LanguageFeatures/nnbd/generics_A01_t05.dart
+++ b/LanguageFeatures/nnbd/generics_A01_t05.dart
@@ -7,7 +7,8 @@
* @assertion The default bound of generic type parameters is treated as
* [Object?].
* @description Check that default function typedef type parameter is treated as
- * [Object?] dynamically.
+ * [Object?] dynamically. Typedef is in the form [typedef <typeIdentifier>
+ * <typeParameters> = <functionType>].
* @author iarkh@unipro.ru
*/
// SharedOptions=--enable-experiment=non-nullable
@@ -28,32 +29,11 @@
typedef G5_expected = Object? Function<T>(Object?, Object?);
main() {
- Expect.equals(
- typeOf<G1<Object?>>(),
- typeOf<G1>()
- );
-
- Expect.equals(
- typeOf<G2<Object?>>(),
- typeOf<G2>()
- );
-
+ Expect.equals(typeOf<G1<Object?>>(), typeOf<G1>());
+ Expect.equals(typeOf<G2<Object?>>(), typeOf<G2>());
Expect.equals(G3_expected, G3);
-
- Expect.equals(
- typeOf<G4<Object?, Object?, Object?>>(),
- typeOf<G4>()
- );
-
+ Expect.equals(typeOf<G4<Object?, Object?, Object?>>(), typeOf<G4>());
Expect.equals(G5_expected, G5);
-
- Expect.equals(
- typeOf<G6<Object?>>(),
- typeOf<G6>()
- );
-
- Expect.equals(
- typeOf<G7<Object?, Object?, Object?>>(),
- typeOf<G7>()
- );
+ Expect.equals(typeOf<G6<Object?>>(), typeOf<G6>());
+ Expect.equals(typeOf<G7<Object?, Object?, Object?>>(), typeOf<G7>());
}
diff --git a/LanguageFeatures/nnbd/generics_A01_t06.dart b/LanguageFeatures/nnbd/generics_A01_t06.dart
index 7464661..9afeccf 100644
--- a/LanguageFeatures/nnbd/generics_A01_t06.dart
+++ b/LanguageFeatures/nnbd/generics_A01_t06.dart
@@ -7,7 +7,8 @@
* @assertion The default bound of generic type parameters is treated as
* [Object?].
* @description Check that default function typedef type parameter is treated as
- * [Object?] statically.
+ * [Object?] statically. Typedef is in the form [typedef <typeIdentifier>
+ * <typeParameters> = <functionType>].
* @author iarkh@unipro.ru
*/
// SharedOptions=--enable-experiment=non-nullable
@@ -23,9 +24,7 @@
typedef G5<T> = void Function();
typedef G6<T1, T2, T3> = void Function();
-Object? G3_expected<T extends Object?>() {
- return T;
-}
+Object? G3_expected<T extends Object?>() { return T; }
F<G1<Object?>> test1(G1 source) {
var fsource = toF(source);
diff --git a/LanguageFeatures/nnbd/generics_A01_t07.dart b/LanguageFeatures/nnbd/generics_A01_t07.dart
index 6189e56..b6150e3 100644
--- a/LanguageFeatures/nnbd/generics_A01_t07.dart
+++ b/LanguageFeatures/nnbd/generics_A01_t07.dart
@@ -16,35 +16,34 @@
import "../../Utils/expect.dart";
void test1<T>() {
- Expect.equals(Object?, T);
+ Expect.equals(typeOf<Object?>(), T);
}
T test2<T>() {
- Expect.equals(Object?, T);
+ Expect.equals(typeOf<Object?>(), T);
return null;
}
-void test3<T>(expected, [T t]) {
- Expect.equals(expected, T);
+void test3<T>(T t) {
+ Expect.equals(typeOf<Object?>(), T);
}
-T test4<T>(expected, [T t]) {
- Expect.equals(expected, T);
+T test4<T>([T t]) {
+ Expect.equals(typeOf<Object?>(), T);
return null;
}
void test5<T1, T2, T3>() {
- Expect.equals(dynamic, T1);
- Expect.equals(dynamic, T2);
- Expect.equals(dynamic, T3);
+ Expect.equals(typeOf<Object?>(), T1);
+ Expect.equals(typeOf<Object?>(), T2);
+ Expect.equals(typeOf<Object?>(), T3);
}
void main() {
test1();
test2();
- test3(Object?);
- test3(Null, null);
- test4(Object?);
- test4(int, 45);
+ test3(1);
+ test4();
+ test4(11);
test5();
}
diff --git a/LanguageFeatures/nnbd/generics_A01_t08.dart b/LanguageFeatures/nnbd/generics_A01_t08.dart
index 5fe790b..b38185a 100644
--- a/LanguageFeatures/nnbd/generics_A01_t08.dart
+++ b/LanguageFeatures/nnbd/generics_A01_t08.dart
@@ -22,28 +22,9 @@
typedef void Function5<T>();
void main() {
- Expect.equals(
- typeOf<Function1<Object?>>(),
- typeOf<Function1>()
- );
-
- Expect.equals(
- typeOf<Function2<Object?>>(),
- typeOf<Function2>()
- );
-
- Expect.equals(
- typeOf<Function3<Object?>>(),
- typeOf<Function3>()
- );
-
- Expect.equals(
- typeOf<Function4<Object?, Object?, Object?>>(),
- typeOf<Function4>()
- );
- Expect.equals(
- typeOf<Function5<Object?>>(),
- typeOf<Function5>()
- );
-
+ Expect.equals(typeOf<Function1<Object?>>(), typeOf<Function1>());
+ Expect.equals(typeOf<Function2<Object?>>(), typeOf<Function2>());
+ Expect.equals(typeOf<Function3<Object?>>(), typeOf<Function3>());
+ Expect.equals(typeOf<Function4<Object?, Object?, Object?>>(), typeOf<Function4>());
+ Expect.equals(typeOf<Function5<Object?>>(), typeOf<Function5>());
}
diff --git a/LanguageFeatures/nnbd/generics_A01_t09.dart b/LanguageFeatures/nnbd/generics_A01_t09.dart
index 15ad0ea..d20abdd 100644
--- a/LanguageFeatures/nnbd/generics_A01_t09.dart
+++ b/LanguageFeatures/nnbd/generics_A01_t09.dart
@@ -7,7 +7,8 @@
* @assertion The default bound of generic type parameters is treated as
* [Object?].
* @description Check that default function type alias parameter is treated as
- * [Object?] statically.
+ * [Object?] statically. Typedef is in the form [typedef <type> <identifier>
+ * <formalParameterPart>].
* @author iarkh@unipro.ru
*/
// SharedOptions=--enable-experiment=non-nullable
diff --git a/LanguageFeatures/nnbd/override_checking_A01_opted_in_lib.dart b/LanguageFeatures/nnbd/override_checking_A01_opted_in_lib.dart
index 0884950..d4a0982 100644
--- a/LanguageFeatures/nnbd/override_checking_A01_opted_in_lib.dart
+++ b/LanguageFeatures/nnbd/override_checking_A01_opted_in_lib.dart
@@ -127,7 +127,7 @@
class OPTED_NONNULLABLE_FUNCTION<T extends Function> {}
class OPTED_NULLABLE<T> {}
-class OPTED_DYNAMIC<T> {}
+class OPTED_DYNAMIC<T extends dynamic> {}
class OPTED_NULLABLE_INT<T extends int?> {}
class OPTED_NULLABLE_OBJECT<T extends Object?> {}
class OPTED_NULLABLE_FUNCTION<T extends Function?> {}