Fixed Issue #519: it's possible to call generic function with default type parameter if it's Never.
diff --git a/LanguageFeatures/nnbd/exports_A01_functions_t15.dart b/LanguageFeatures/nnbd/exports_A01_functions_t15.dart
index 785ac34..4a4638e 100644
--- a/LanguageFeatures/nnbd/exports_A01_functions_t15.dart
+++ b/LanguageFeatures/nnbd/exports_A01_functions_t15.dart
@@ -9,7 +9,9 @@
* migrated libraries will see their migrated types).
* @description Check that if generic function with [Never] type parameter is
* exported from opted-in library to legacy library and then back to the opted
- * in code, it retains its status.
+ * in code, it retains its status and can be called with default type parameter.
+ *
+ * @Issue 519
* @author iarkh@unipro.ru
*/
// SharedOptions=--enable-experiment=non-nullable
@@ -19,22 +21,4 @@
main() {
testGenericNever();
-// ^
-// [analyzer] unspecified
-// [cfe] unspecified
-
- testGenericNever<Null>();
-// ^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
- testGenericNever<dynamic>();
-// ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
- testGenericNever<int>();
-// ^^^
-// [analyzer] unspecified
-// [cfe] unspecified
}
diff --git a/LanguageFeatures/nnbd/exports_A01_functions_t16.dart b/LanguageFeatures/nnbd/exports_A01_functions_t16.dart
new file mode 100644
index 0000000..d28cd47
--- /dev/null
+++ b/LanguageFeatures/nnbd/exports_A01_functions_t16.dart
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2020, 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 If an unmigrated library re-exports a migrated library, the
+ * re-exported symbols retain their migrated status (that is, downstream
+ * migrated libraries will see their migrated types).
+ * @description Check that if generic function with [Never] type parameter is
+ * exported from opted-in library to legacy library and then back to the opted
+ * in code, it retains its status.
+ *
+ * @Issue 519
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+import "exports_A01_opted_out_lib.dart";
+
+main() {
+ testGenericNever<Null>();
+// ^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+ testGenericNever<dynamic>();
+// ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+ testGenericNever<void>();
+// ^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+ testGenericNever<Object?>();
+// ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+ testGenericNever<int>();
+// ^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
diff --git a/LanguageFeatures/nnbd/exports_A01_opted_in_lib.dart b/LanguageFeatures/nnbd/exports_A01_opted_in_lib.dart
index 009a817..aa28b67 100644
--- a/LanguageFeatures/nnbd/exports_A01_opted_in_lib.dart
+++ b/LanguageFeatures/nnbd/exports_A01_opted_in_lib.dart
@@ -112,7 +112,7 @@
void testGenericFunction<T extends Function>() {}
void testGenericObject <T extends Object >() {}
-void testGenericNever<T extends Never>() {}
+void testGenericNever<T extends Never>() { Expect.equals(typeOf<Never>(), T);}
// Function typedefs like
// [typedef <typeIdentifier> <typeParameters> = <functionType>].
diff --git a/LanguageFeatures/nnbd/override_checking_A01_CLASSPARAM_t09.dart b/LanguageFeatures/nnbd/override_checking_A01_CLASSPARAM_t09.dart
index 3aee54b..e73d325 100644
--- a/LanguageFeatures/nnbd/override_checking_A01_CLASSPARAM_t09.dart
+++ b/LanguageFeatures/nnbd/override_checking_A01_CLASSPARAM_t09.dart
@@ -13,7 +13,7 @@
* @description Check that if legacy class extends opted-in class, child class
* type parameter can be [Null] if parent class type parameter is [Never].
*
- * Issue 40389S
+ * @Issue 40389
* @author iarkh@unipro.ru
*/
// SharedOptions=--enable-experiment=non-nullable
@@ -22,7 +22,7 @@
import "../../Utils/expect.dart";
import "override_checking_A01_opted_in_lib.dart";
-class A<T extends Null> extends OPTED_NEVER<T> { dynamic getParamType() => typeOf<T>(); }
+class A<T extends Null> extends OPTED_NEVER<T> { dynamic getParamType() => T; }
main() {
Expect.equals(Null, A().getParamType());
diff --git a/LanguageFeatures/nnbd/override_checking_A01_CLASSPARAM_t19.dart b/LanguageFeatures/nnbd/override_checking_A01_CLASSPARAM_t19.dart
index a5729d6..e7ffd9c 100644
--- a/LanguageFeatures/nnbd/override_checking_A01_CLASSPARAM_t19.dart
+++ b/LanguageFeatures/nnbd/override_checking_A01_CLASSPARAM_t19.dart
@@ -13,7 +13,7 @@
* @description Check that if legacy class implements opted-in class, child
* class type parameter can be [Null] if parent class type parameter is [Never].
*
- * Issue 40389
+ * @Issue 40389
* @author iarkh@unipro.ru
*/
// SharedOptions=--enable-experiment=non-nullable
diff --git a/LanguageFeatures/nnbd/override_checking_A01_CLASSPARAM_t29.dart b/LanguageFeatures/nnbd/override_checking_A01_CLASSPARAM_t29.dart
index 2e6b347..f72ebfe 100644
--- a/LanguageFeatures/nnbd/override_checking_A01_CLASSPARAM_t29.dart
+++ b/LanguageFeatures/nnbd/override_checking_A01_CLASSPARAM_t29.dart
@@ -13,7 +13,7 @@
* @description Check that if legacy class is a mixin with opted-in class, child
* class type parameter can be [Null] if parent class type parameter is [Never].
*
- * Issue 40389
+ * @Issue 40389
* @author iarkh@unipro.ru
*/
// SharedOptions=--enable-experiment=non-nullable
diff --git a/LanguageFeatures/nnbd/override_checking_A01_CLASSPARAM_t39.dart b/LanguageFeatures/nnbd/override_checking_A01_CLASSPARAM_t39.dart
index cc2bd74..beb3473 100644
--- a/LanguageFeatures/nnbd/override_checking_A01_CLASSPARAM_t39.dart
+++ b/LanguageFeatures/nnbd/override_checking_A01_CLASSPARAM_t39.dart
@@ -14,7 +14,7 @@
* implements opted-in class, child class type parameter can be [Null] if parent
* interface type parameter is [Never].
*
- * Issue 40389
+ * @Issue 40389
* @author iarkh@unipro.ru
*/
// SharedOptions=--enable-experiment=non-nullable
diff --git a/LanguageFeatures/nnbd/override_checking_A06_t149.dart b/LanguageFeatures/nnbd/override_checking_A06_t149.dart
index 6d89be3..50ba2cd 100644
--- a/LanguageFeatures/nnbd/override_checking_A06_t149.dart
+++ b/LanguageFeatures/nnbd/override_checking_A06_t149.dart
@@ -14,7 +14,7 @@
* @description Check that the result of [NNBD_TOP_MERGE(FutureOr*,
* FutureOr<FutureOr>*)] is [FutureOr].
*
- * Issue @40454, 40541
+ * @Issue @40454, 40541
* @author iarkh@unipro.ru
*/
// SharedOptions=--enable-experiment=non-nullable