Optional parameters of abstract method test added
diff --git a/LanguageFeatures/nnbd/static_errors_A07_t01.dart b/LanguageFeatures/nnbd/static_errors_A07_t01.dart
index 971b949..71f130d 100644
--- a/LanguageFeatures/nnbd/static_errors_A07_t01.dart
+++ b/LanguageFeatures/nnbd/static_errors_A07_t01.dart
@@ -5,7 +5,8 @@
  */
 /**
  * @assertion It is an error if an optional parameter (named or otherwise) with
- * no default value has a potentially non-nullable type.
+ * no default value has a potentially non-nullable type except in the parameter
+ * list of an abstract method declaration.
  *
  * @description Check that it is a compile-time error if an optional parameter
  * (named or otherwise) with no default value has a potentially non-nullable
diff --git a/LanguageFeatures/nnbd/static_errors_A07_t02.dart b/LanguageFeatures/nnbd/static_errors_A07_t02.dart
index 953f749..62375d7 100644
--- a/LanguageFeatures/nnbd/static_errors_A07_t02.dart
+++ b/LanguageFeatures/nnbd/static_errors_A07_t02.dart
@@ -5,7 +5,8 @@
  */
 /**
  * @assertion It is an error if an optional parameter (named or otherwise) with
- * no default value has a potentially non-nullable type.
+ * no default value has a potentially non-nullable type except in the parameter
+ * list of an abstract method declaration.
  *
  * @description Check that it is a compile-time error if an optional parameter
  * (named or otherwise) with no default value has a potentially non-nullable
diff --git a/LanguageFeatures/nnbd/static_errors_A07_t03.dart b/LanguageFeatures/nnbd/static_errors_A07_t03.dart
index b159604..cb18876 100644
--- a/LanguageFeatures/nnbd/static_errors_A07_t03.dart
+++ b/LanguageFeatures/nnbd/static_errors_A07_t03.dart
@@ -5,7 +5,8 @@
  */
 /**
  * @assertion It is an error if an optional parameter (named or otherwise) with
- * no default value has a potentially non-nullable type.
+ * no default value has a potentially non-nullable type except in the parameter
+ * list of an abstract method declaration.
  *
  * @description Check that it is a compile-time error if an optional parameter
  * (named or otherwise) with no default value has a potentially non-nullable
diff --git a/LanguageFeatures/nnbd/static_errors_A07_t04.dart b/LanguageFeatures/nnbd/static_errors_A07_t04.dart
index 9d890d0..e251e92 100644
--- a/LanguageFeatures/nnbd/static_errors_A07_t04.dart
+++ b/LanguageFeatures/nnbd/static_errors_A07_t04.dart
@@ -5,7 +5,8 @@
  */
 /**
  * @assertion It is an error if an optional parameter (named or otherwise) with
- * no default value has a potentially non-nullable type.
+ * no default value has a potentially non-nullable type except in the parameter
+ * list of an abstract method declaration.
  *
  * @description Check that it is a compile-time error if an optional parameter
  * (named or otherwise) with no default value has a potentially non-nullable
diff --git a/LanguageFeatures/nnbd/static_errors_A07_t05.dart b/LanguageFeatures/nnbd/static_errors_A07_t05.dart
index 04adbad..e36a4ac 100644
--- a/LanguageFeatures/nnbd/static_errors_A07_t05.dart
+++ b/LanguageFeatures/nnbd/static_errors_A07_t05.dart
@@ -5,7 +5,8 @@
  */
 /**
  * @assertion It is an error if an optional parameter (named or otherwise) with
- * no default value has a potentially non-nullable type.
+ * no default value has a potentially non-nullable type except in the parameter
+ * list of an abstract method declaration.
  *
  * @description Check that it is a compile-time error if an optional parameter
  * (named or otherwise) with no default value has a potentially non-nullable
diff --git a/LanguageFeatures/nnbd/static_errors_A07_t06.dart b/LanguageFeatures/nnbd/static_errors_A07_t06.dart
index 31e9abc..3885c7e 100644
--- a/LanguageFeatures/nnbd/static_errors_A07_t06.dart
+++ b/LanguageFeatures/nnbd/static_errors_A07_t06.dart
@@ -5,7 +5,8 @@
  */
 /**
  * @assertion It is an error if an optional parameter (named or otherwise) with
- * no default value has a potentially non-nullable type.
+ * no default value has a potentially non-nullable type except in the parameter
+ * list of an abstract method declaration.
  *
  * @description Check that it is a compile-time error if an optional parameter
  * (named or otherwise) with no default value has a potentially non-nullable
diff --git a/LanguageFeatures/nnbd/static_errors_A07_t07.dart b/LanguageFeatures/nnbd/static_errors_A07_t07.dart
index 39c3d36..d51c6fb 100644
--- a/LanguageFeatures/nnbd/static_errors_A07_t07.dart
+++ b/LanguageFeatures/nnbd/static_errors_A07_t07.dart
@@ -5,7 +5,8 @@
  */
 /**
  * @assertion It is an error if an optional parameter (named or otherwise) with
- * no default value has a potentially non-nullable type.
+ * no default value has a potentially non-nullable type except in the parameter
+ * list of an abstract method declaration.
  *
  * @description Check that it is a compile-time error if an optional parameter
  * (named or otherwise) with no default value has a potentially non-nullable
diff --git a/LanguageFeatures/nnbd/static_errors_A07_t08.dart b/LanguageFeatures/nnbd/static_errors_A07_t08.dart
index 6ac8041..690a7a4 100644
--- a/LanguageFeatures/nnbd/static_errors_A07_t08.dart
+++ b/LanguageFeatures/nnbd/static_errors_A07_t08.dart
@@ -5,7 +5,8 @@
  */
 /**
  * @assertion It is an error if an optional parameter (named or otherwise) with
- * no default value has a potentially non-nullable type.
+ * no default value has a potentially non-nullable type except in the parameter
+ * list of an abstract method declaration.
  *
  * @description Check that it is a compile-time error if an optional parameter
  * (named or otherwise) with no default value has a potentially non-nullable
diff --git a/LanguageFeatures/nnbd/static_errors_A07_t09.dart b/LanguageFeatures/nnbd/static_errors_A07_t09.dart
index 4a3caa2..3b15706 100644
--- a/LanguageFeatures/nnbd/static_errors_A07_t09.dart
+++ b/LanguageFeatures/nnbd/static_errors_A07_t09.dart
@@ -5,7 +5,8 @@
  */
 /**
  * @assertion It is an error if an optional parameter (named or otherwise) with
- * no default value has a potentially non-nullable type.
+ * no default value has a potentially non-nullable type except in the parameter
+ * list of an abstract method declaration.
  *
  * @description Check that it is a compile-time error if an optional parameter
  * (named or otherwise) with no default value has a potentially non-nullable
diff --git a/LanguageFeatures/nnbd/static_errors_A07_t10.dart b/LanguageFeatures/nnbd/static_errors_A07_t10.dart
index 7e0da5a..967933e 100644
--- a/LanguageFeatures/nnbd/static_errors_A07_t10.dart
+++ b/LanguageFeatures/nnbd/static_errors_A07_t10.dart
@@ -5,7 +5,8 @@
  */
 /**
  * @assertion It is an error if an optional parameter (named or otherwise) with
- * no default value has a potentially non-nullable type.
+ * no default value has a potentially non-nullable type except in the parameter
+ * list of an abstract method declaration.
  *
  * @description Check that it is a compile-time error if an optional parameter
  * (named or otherwise) with no default value has a potentially non-nullable
diff --git a/LanguageFeatures/nnbd/static_errors_A07_t11.dart b/LanguageFeatures/nnbd/static_errors_A07_t11.dart
index 9e20bd5..a4905ce 100644
--- a/LanguageFeatures/nnbd/static_errors_A07_t11.dart
+++ b/LanguageFeatures/nnbd/static_errors_A07_t11.dart
@@ -5,7 +5,8 @@
  */
 /**
  * @assertion It is an error if an optional parameter (named or otherwise) with
- * no default value has a potentially non-nullable type.
+ * no default value has a potentially non-nullable type except in the parameter
+ * list of an abstract method declaration.
  *
  * @description Check that it is a compile-time error if an optional parameter
  * (named or otherwise) with no default value has a potentially non-nullable
diff --git a/LanguageFeatures/nnbd/static_errors_A07_t12.dart b/LanguageFeatures/nnbd/static_errors_A07_t12.dart
index b68b406..1975d1e 100644
--- a/LanguageFeatures/nnbd/static_errors_A07_t12.dart
+++ b/LanguageFeatures/nnbd/static_errors_A07_t12.dart
@@ -5,7 +5,8 @@
  */
 /**
  * @assertion It is an error if an optional parameter (named or otherwise) with
- * no default value has a potentially non-nullable type.
+ * no default value has a potentially non-nullable type except in the parameter
+ * list of an abstract method declaration.
  *
  * @description Check that it is a compile-time error if an optional parameter
  * (named or otherwise) with no default value has a potentially non-nullable
diff --git a/LanguageFeatures/nnbd/static_errors_A07_t13.dart b/LanguageFeatures/nnbd/static_errors_A07_t13.dart
index 40499ca..7910bb8 100644
--- a/LanguageFeatures/nnbd/static_errors_A07_t13.dart
+++ b/LanguageFeatures/nnbd/static_errors_A07_t13.dart
@@ -5,7 +5,8 @@
  */
 /**
  * @assertion It is an error if an optional parameter (named or otherwise) with
- * no default value has a potentially non-nullable type.
+ * no default value has a potentially non-nullable type except in the parameter
+ * list of an abstract method declaration.
  *
  * @description Check that it is a compile-time error if an optional parameter
  * (named or otherwise) with no default value has a potentially non-nullable
diff --git a/LanguageFeatures/nnbd/static_errors_A07_t14.dart b/LanguageFeatures/nnbd/static_errors_A07_t14.dart
index 227910d..4f12ee4 100644
--- a/LanguageFeatures/nnbd/static_errors_A07_t14.dart
+++ b/LanguageFeatures/nnbd/static_errors_A07_t14.dart
@@ -5,7 +5,8 @@
  */
 /**
  * @assertion It is an error if an optional parameter (named or otherwise) with
- * no default value has a potentially non-nullable type.
+ * no default value has a potentially non-nullable type except in the parameter
+ * list of an abstract method declaration.
  *
  * @description Check that it is a compile-time error if an optional parameter
  * (named or otherwise) with no default value has a potentially non-nullable
diff --git a/LanguageFeatures/nnbd/static_errors_A07_t15.dart b/LanguageFeatures/nnbd/static_errors_A07_t15.dart
new file mode 100644
index 0000000..421d11d
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A07_t15.dart
@@ -0,0 +1,71 @@
+/*
+ * 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 It is an error if an optional parameter (named or otherwise) with
+ * no default value has a potentially non-nullable type except in the parameter
+ * list of an abstract method declaration.
+ *
+ * @description Check that it is not an error if an abstract method optional
+ * parameter (named or otherwise) with no default value has a potentially
+ * non-nullable type
+ * @author sgrekhov@unipro.ru
+ * @issue 40287
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+import "legacy_lib.dart";
+import "dart:async";
+
+typedef void Foo();
+
+class X {}
+
+abstract class C {
+  void test1(var v, [Never n]);
+  void test2(var v, {Never n});
+
+  void test3(var v, [Function f]);
+  void test4(var v, {Function f});
+
+  void test5(var v, [Foo f]);
+  void test6(var v, {Foo f});
+
+  void test7(var v, [X x]);
+  void test8(var v, {X x});
+
+  void test9(var v, [A a]);
+  void test10(var v, {A a});
+
+  void test11<T extends Object>(var v, [T t]);
+  void test12<T extends Object>(var v, {T t});
+
+  void test13<T extends Object?>(var v, [T t]);
+  void test14<T extends Object?>(var v, {T t});
+
+  void test15(var v, [FutureOr<Never> n]);
+  void test16(var v, {FutureOr<Never> n});
+
+  void test17(var v, [FutureOr<Function> f]);
+  void test18(var v, {FutureOr<Function> f});
+
+  void test19(var v, [FutureOr<Foo> f]);
+  void test20(var v, {FutureOr<Foo> f});
+
+  void test21(var v, [FutureOr<X> x]);
+  void test22(var v, {FutureOr<X> x});
+
+  void test23(var v, [FutureOr<A> a]);
+  void test24(var v, {FutureOr<A> a});
+
+  void test25(var v, [FutureOr<FutureOr<X>> x]);
+  void test26(var v, {FutureOr<FutureOr<X>> x});
+
+  void test27(var v, [LegacyFoo f]);
+  void test28(var v, {LegacyFoo f});
+}
+
+main() {
+}