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