Fixed Issue #465: New tests for Exports added (function typedefs).
diff --git a/LanguageFeatures/nnbd/exports_A01_typedef1_t01.dart b/LanguageFeatures/nnbd/exports_A01_typedef1_t01.dart
new file mode 100644
index 0000000..e92705b
--- /dev/null
+++ b/LanguageFeatures/nnbd/exports_A01_typedef1_t01.dart
@@ -0,0 +1,26 @@
+/*
+ * 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 typedef [void testme()] exported from opted-in
+ * library to legacy library and then back to the opted in code, retains its
+ * status. Typedef is in the form [typedef <type> <identifier>
+ * <formalParameterPart>].
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+import "../../Utils/expect.dart";
+import "exports_legacy_A01_lib.dart";
+
+typedef expected = void Function();
+
+main() {
+  Expect.equals(expected, def1);
+}
diff --git a/LanguageFeatures/nnbd/exports_A01_typedef1_t02.dart b/LanguageFeatures/nnbd/exports_A01_typedef1_t02.dart
new file mode 100644
index 0000000..2604604
--- /dev/null
+++ b/LanguageFeatures/nnbd/exports_A01_typedef1_t02.dart
@@ -0,0 +1,37 @@
+/*
+ * 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 function typedef with argument of nullable type is
+ * exported from opted-in library to legacy library and then back to the opted
+ * in code, it retains its status. Typedef is in the form [typedef <type> <identifier>
+ * <formalParameterPart>].
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+import "dart:async";
+import "../../Utils/expect.dart";
+import "exports_legacy_A01_lib.dart";
+
+typedef exp_nullable_int_arg      = void Function(int? i);
+typedef exp_nullable_object_arg   = void Function(int? i);
+typedef exp_dynamic_arg           = void Function(dynamic i);
+typedef exp_nullable_function_arg = void Function(Function? f);
+typedef exp_null_arg              = void Function(Null n);
+typedef exp_futureOr_arg          = void Function(FutureOr i);
+
+main() {
+  Expect.equals(exp_nullable_int_arg,      def1_nullable_int_arg);
+  Expect.equals(exp_nullable_object_arg,   def1_nullable_object_arg);
+  Expect.equals(exp_dynamic_arg,           def1_dynamic_arg);
+  Expect.equals(exp_nullable_function_arg, def1_nullable_function_arg);
+  Expect.equals(exp_null_arg,              def1_null_arg);
+  Expect.equals(exp_futureOr_arg,          def1_futureOr_arg);
+}
diff --git a/LanguageFeatures/nnbd/exports_A01_typedef1_t03.dart b/LanguageFeatures/nnbd/exports_A01_typedef1_t03.dart
new file mode 100644
index 0000000..48bf5db
--- /dev/null
+++ b/LanguageFeatures/nnbd/exports_A01_typedef1_t03.dart
@@ -0,0 +1,33 @@
+/*
+ * 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 function typedef with argument of non-nullable
+ * type is exported from opted-in library to legacy library and then back to the
+ * opted in code, it retains its status. Typedef is in the form [typedef <type>
+ * <identifier> <formalParameterPart>].
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+import "dart:async";
+import "../../Utils/expect.dart";
+import "exports_legacy_A01_lib.dart";
+
+typedef exp_int_arg         = void Function(int i);
+typedef exp_object_arg      = void Function(Object o);
+typedef exp_function_arg    = void Function(Function f);
+typedef exp_futureOrInt_arg = void Function(FutureOr<int> i);
+
+main() {
+  Expect.equals(exp_int_arg,         def1_int_arg);
+  Expect.equals(exp_object_arg,      def1_object_arg);
+  Expect.equals(exp_function_arg,    def1_function_arg);
+  Expect.equals(exp_futureOrInt_arg, def1_futureOrInt_arg);
+}
diff --git a/LanguageFeatures/nnbd/exports_A01_typedef1_t04.dart b/LanguageFeatures/nnbd/exports_A01_typedef1_t04.dart
new file mode 100644
index 0000000..c1b9a99
--- /dev/null
+++ b/LanguageFeatures/nnbd/exports_A01_typedef1_t04.dart
@@ -0,0 +1,26 @@
+/*
+ * 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 function typedef with [Never] argument is exported
+ * from opted-in library to legacy library and then back to the opted in code,
+ * it retains its status. Typedef is in the form [typedef <type> <identifier>
+ * <formalParameterPart>].
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+import "../../Utils/expect.dart";
+import "exports_legacy_A01_lib.dart";
+
+typedef exp_never_arg = void Function(Never n);
+
+main() {
+  Expect.equals(exp_never_arg, def1_never_arg);
+}
diff --git a/LanguageFeatures/nnbd/exports_A01_typedef1_t05.dart b/LanguageFeatures/nnbd/exports_A01_typedef1_t05.dart
new file mode 100644
index 0000000..fb533f2
--- /dev/null
+++ b/LanguageFeatures/nnbd/exports_A01_typedef1_t05.dart
@@ -0,0 +1,26 @@
+/*
+ * 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 function typedef with required argument is
+ * exported from opted-in library to legacy library and then back to the opted
+ * in code, it retains its status. Typedef is in the form [typedef <type>
+ * <identifier> <formalParameterPart>].
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+import "../../Utils/expect.dart";
+import "exports_legacy_A01_lib.dart";
+
+typedef exp_required_arg = void Function({required int i});
+
+main() {
+  Expect.equals(exp_required_arg, def1_required_arg);
+}
diff --git a/LanguageFeatures/nnbd/exports_A01_typedef1_t06.dart b/LanguageFeatures/nnbd/exports_A01_typedef1_t06.dart
new file mode 100644
index 0000000..9ad42f2
--- /dev/null
+++ b/LanguageFeatures/nnbd/exports_A01_typedef1_t06.dart
@@ -0,0 +1,37 @@
+/*
+ * 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 function typedef which returns nullable value is
+ * exported from opted-in library to legacy library and then back to the opted
+ * in code, it retains its status. Typedef is in the form [typedef <type>
+ * <identifier> <formalParameterPart>].
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+import "dart:async";
+import "../../Utils/expect.dart";
+import "exports_legacy_A01_lib.dart";
+
+typedef exp_getNullableInt      = int? Function();
+typedef exp_getNullableObject   = Object? Function();
+typedef exp_getDynamic          = dynamic Function();
+typedef exp_getNullableFunction = Function? Function();
+typedef exp_getNull             = Null Function();
+typedef exp_getFutureOr         = FutureOr Function();
+
+main() {
+  Expect.equals(exp_getNullableInt,      def1_getNullableInt);
+  Expect.equals(exp_getNullableObject,   def1_getNullableObject);
+  Expect.equals(exp_getDynamic,          def1_getDynamic);
+  Expect.equals(exp_getNullableFunction, def1_getNullableFunction);
+  Expect.equals(exp_getNull,             def1_getNull);
+  Expect.equals(exp_getFutureOr,         def1_getFutureOr);
+}
diff --git a/LanguageFeatures/nnbd/exports_A01_typedef1_t07.dart b/LanguageFeatures/nnbd/exports_A01_typedef1_t07.dart
new file mode 100644
index 0000000..15bcb59
--- /dev/null
+++ b/LanguageFeatures/nnbd/exports_A01_typedef1_t07.dart
@@ -0,0 +1,33 @@
+/*
+ * 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 function typedef which returns non-nullable value
+ * is exported from opted-in library to legacy library and then back to the
+ * opted in code, it retains its status. Typedef is in the form [typedef <type>
+ * <identifier> <formalParameterPart>].
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+import "dart:async";
+import "../../Utils/expect.dart";
+import "exports_legacy_A01_lib.dart";
+
+typedef exp_getInt         = int Function();
+typedef exp_getObject      = Object Function();
+typedef exp_getFunction    = Function Function();
+typedef exp_getFutureOrInt = FutureOr<int> Function();
+
+main() {
+  Expect.equals(exp_getInt,         def1_getInt);
+  Expect.equals(exp_getObject,      def1_getObject);
+  Expect.equals(exp_getFunction,    def1_getFunction);
+  Expect.equals(exp_getFutureOrInt, def1_getFutureOrInt);
+}
diff --git a/LanguageFeatures/nnbd/exports_A01_typedef1_t08.dart b/LanguageFeatures/nnbd/exports_A01_typedef1_t08.dart
new file mode 100644
index 0000000..5aa6901
--- /dev/null
+++ b/LanguageFeatures/nnbd/exports_A01_typedef1_t08.dart
@@ -0,0 +1,26 @@
+/*
+ * 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 function typedef which returns [Never] is exported
+ * from opted-in library to legacy library and then back to the opted in code,
+ * it retains its status. Typedef is in the form [typedef <type> <identifier>
+ * <formalParameterPart>].
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+import "../../Utils/expect.dart";
+import "exports_legacy_A01_lib.dart";
+
+typedef exp_getNever = Never Function();
+
+main() {
+  Expect.equals(exp_getNever, def1_getNever);
+}
diff --git a/LanguageFeatures/nnbd/exports_A01_typedef_t01.dart b/LanguageFeatures/nnbd/exports_A01_typedef_t01.dart
index 8447063..0ce29f8 100644
--- a/LanguageFeatures/nnbd/exports_A01_typedef_t01.dart
+++ b/LanguageFeatures/nnbd/exports_A01_typedef_t01.dart
@@ -7,9 +7,10 @@
  * @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 [typedef void testme()] exported from opted-in
+ * @description Check that typedef [void testme()] exported from opted-in
  * library to legacy library and then back to the opted in code, retains its
- * status.
+ * status. Typedef is in the form [typedef <typeIdentifier> <typeParameters> =
+ * <functionType>].
  * @author iarkh@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
diff --git a/LanguageFeatures/nnbd/exports_A01_typedef_t02.dart b/LanguageFeatures/nnbd/exports_A01_typedef_t02.dart
index 77f348f..fc7d46c 100644
--- a/LanguageFeatures/nnbd/exports_A01_typedef_t02.dart
+++ b/LanguageFeatures/nnbd/exports_A01_typedef_t02.dart
@@ -9,7 +9,8 @@
  * migrated libraries will see their migrated types).
  * @description Check that if function typedef with argument of nullable type 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. Typedef is in the form [typedef
+ * <typeIdentifier> <typeParameters> = <functionType>].
  * @author iarkh@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
diff --git a/LanguageFeatures/nnbd/exports_A01_typedef_t03.dart b/LanguageFeatures/nnbd/exports_A01_typedef_t03.dart
index a98dc1c..d441039 100644
--- a/LanguageFeatures/nnbd/exports_A01_typedef_t03.dart
+++ b/LanguageFeatures/nnbd/exports_A01_typedef_t03.dart
@@ -9,7 +9,8 @@
  * migrated libraries will see their migrated types).
  * @description Check that if function typedef with argument of non-nullable
  * type is exported from opted-in library to legacy library and then back to the
- * opted in code, it retains its status.
+ * opted in code, it retains its status. Typedef is in the form [typedef
+ * <typeIdentifier> <typeParameters> = <functionType>].
  * @author iarkh@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
diff --git a/LanguageFeatures/nnbd/exports_A01_typedef_t04.dart b/LanguageFeatures/nnbd/exports_A01_typedef_t04.dart
index bac4a6b..3012ad9 100644
--- a/LanguageFeatures/nnbd/exports_A01_typedef_t04.dart
+++ b/LanguageFeatures/nnbd/exports_A01_typedef_t04.dart
@@ -9,7 +9,8 @@
  * migrated libraries will see their migrated types).
  * @description Check that if function typedef with [Never] argument is exported
  * from opted-in library to legacy library and then back to the opted in code,
- * it retains its status.
+ * it retains its status. Typedef is in the form [typedef <typeIdentifier>
+ * <typeParameters> = <functionType>].
  * @author iarkh@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
diff --git a/LanguageFeatures/nnbd/exports_A01_typedef_t05.dart b/LanguageFeatures/nnbd/exports_A01_typedef_t05.dart
index f989679..9097cca 100644
--- a/LanguageFeatures/nnbd/exports_A01_typedef_t05.dart
+++ b/LanguageFeatures/nnbd/exports_A01_typedef_t05.dart
@@ -9,7 +9,8 @@
  * migrated libraries will see their migrated types).
  * @description Check that if function typedef with required argument 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. Typedef is in the form [typedef
+ * <typeIdentifier> <typeParameters> = <functionType>].
  * @author iarkh@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
diff --git a/LanguageFeatures/nnbd/exports_A01_typedef_t06.dart b/LanguageFeatures/nnbd/exports_A01_typedef_t06.dart
index bd3af4d..97317a2 100644
--- a/LanguageFeatures/nnbd/exports_A01_typedef_t06.dart
+++ b/LanguageFeatures/nnbd/exports_A01_typedef_t06.dart
@@ -9,7 +9,8 @@
  * migrated libraries will see their migrated types).
  * @description Check that if function typedef which returns nullable value 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. Typedef is in the form [typedef
+ * <typeIdentifier> <typeParameters> = <functionType>].
  * @author iarkh@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
diff --git a/LanguageFeatures/nnbd/exports_A01_typedef_t07.dart b/LanguageFeatures/nnbd/exports_A01_typedef_t07.dart
index 104d267..2194234 100644
--- a/LanguageFeatures/nnbd/exports_A01_typedef_t07.dart
+++ b/LanguageFeatures/nnbd/exports_A01_typedef_t07.dart
@@ -9,7 +9,8 @@
  * migrated libraries will see their migrated types).
  * @description Check that if function typedef which returns non-nullable value
  * is exported from opted-in library to legacy library and then back to the
- * opted in code, it retains its status.
+ * opted in code, it retains its status. Typedef is in the form [typedef
+ * <typeIdentifier> <typeParameters> = <functionType>].
  * @author iarkh@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
diff --git a/LanguageFeatures/nnbd/exports_A01_typedef_t08.dart b/LanguageFeatures/nnbd/exports_A01_typedef_t08.dart
index be0d1e9..8b32847 100644
--- a/LanguageFeatures/nnbd/exports_A01_typedef_t08.dart
+++ b/LanguageFeatures/nnbd/exports_A01_typedef_t08.dart
@@ -9,7 +9,8 @@
  * migrated libraries will see their migrated types).
  * @description Check that if function typedef which returns [Never] is exported
  * from opted-in library to legacy library and then back to the opted in code,
- * it retains its status.
+ * it retains its status. Typedef is in the form [typedef <typeIdentifier>
+ * <typeParameters> = <functionType>].
  * @author iarkh@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
diff --git a/LanguageFeatures/nnbd/exports_opted_in_lib.dart b/LanguageFeatures/nnbd/exports_opted_in_lib.dart
index b0c250b..c25b84c 100644
--- a/LanguageFeatures/nnbd/exports_opted_in_lib.dart
+++ b/LanguageFeatures/nnbd/exports_opted_in_lib.dart
@@ -147,3 +147,37 @@
 typedef def_getFutureOrInt = FutureOr<int> Function();
 
 typedef def_getNever = Never Function();
+
+// Function typedefs 1:
+
+typedef void def1();
+
+typedef void def1_nullable_int_arg     (int? i);
+typedef void def1_nullable_object_arg  (int? i);
+typedef void def1_dynamic_arg          (dynamic i);
+typedef void def1_nullable_function_arg(Function? f);
+typedef void def1_null_arg             (Null n);
+typedef void def1_futureOr_arg         (FutureOr i);
+
+typedef void def1_int_arg        (int i);
+typedef void def1_object_arg     (Object o);
+typedef void def1_function_arg   (Function f);
+typedef void def1_futureOrInt_arg(FutureOr<int> i);
+
+typedef void def1_never_arg(Never n);
+
+typedef void def1_required_arg({required int i});
+
+typedef int? def1_getNullableInt();
+typedef Object? def1_getNullableObject();
+typedef dynamic def1_getDynamic();
+typedef Function? def1_getNullableFunction();
+typedef Null def1_getNull();
+typedef FutureOr def1_getFutureOr();
+
+typedef int def1_getInt();
+typedef Object def1_getObject();
+typedef Function def1_getFunction();
+typedef FutureOr<int> def1_getFutureOrInt();
+
+typedef Never def1_getNever();