#461. Add nested nullable types tests
diff --git a/LanguageFeatures/nnbd/syntax_A07_t01.dart b/LanguageFeatures/nnbd/syntax_A07_t01.dart
new file mode 100644
index 0000000..bbb97a9
--- /dev/null
+++ b/LanguageFeatures/nnbd/syntax_A07_t01.dart
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2019, 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 The grammar for types does not allow multiple successive ?
+ * operators on a type. That is, the grammar for types is nominally equivalent
+ * to:
+ *  type' ::= functionType
+ *  | qualified typeArguments?
+ *  type ::= type' `?`?
+ *
+ * @description Check that the grammar for types does not allow multiple
+ * successive ? operators on a type
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+
+class A {}
+
+class C<X extends A??> {}
+//                  ^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+test(A?? a) {}
+//     ^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+main() {
+  A?? a = null;
+//  ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
diff --git a/LanguageFeatures/nnbd/syntax_A07_t02.dart b/LanguageFeatures/nnbd/syntax_A07_t02.dart
new file mode 100644
index 0000000..11f35b1
--- /dev/null
+++ b/LanguageFeatures/nnbd/syntax_A07_t02.dart
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2019, 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 The grammar for types does not allow multiple successive ?
+ * operators on a type. That is, the grammar for types is nominally equivalent
+ * to:
+ *  type' ::= functionType
+ *  | qualified typeArguments?
+ *  type ::= type' `?`?
+ *
+ * @description Check that the grammar for types does not allow multiple
+ * successive ? operators on a type. Test type aliases
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable,nonfunction-type-aliases
+
+class A {}
+
+typedef AAlias = A;
+
+typedef AAlias2 = A??;
+//                  ^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+class C<X extends AAlias??> {}
+//                       ^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+test(AAlias?? a) {}
+//          ^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+
+main() {
+  AAlias?? a = null;
+//       ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
diff --git a/LanguageFeatures/nnbd/syntax_A07_t03.dart b/LanguageFeatures/nnbd/syntax_A07_t03.dart
new file mode 100644
index 0000000..963b71b
--- /dev/null
+++ b/LanguageFeatures/nnbd/syntax_A07_t03.dart
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2019, 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 The grammar for types does not allow multiple successive ?
+ * operators on a type. That is, the grammar for types is nominally equivalent
+ * to:
+ *  type' ::= functionType
+ *  | qualified typeArguments?
+ *  type ::= type' `?`?
+ *
+ * @description Check that the grammar for types does not allow multiple
+ * successive ? operators on a type. Test legacy pre-NNBD types
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+import "legacy_library_lib.dart";
+
+class B<X extends A??> {}
+//                  ^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+test(A?? a) {}
+//     ^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+main() {
+  A?? a = null;
+//  ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
diff --git a/LanguageFeatures/nnbd/syntax_A07_t04.dart b/LanguageFeatures/nnbd/syntax_A07_t04.dart
new file mode 100644
index 0000000..2fd7f9b
--- /dev/null
+++ b/LanguageFeatures/nnbd/syntax_A07_t04.dart
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2019, 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 The grammar for types does not allow multiple successive ?
+ * operators on a type. That is, the grammar for types is nominally equivalent
+ * to:
+ *  type' ::= functionType
+ *  | qualified typeArguments?
+ *  type ::= type' `?`?
+ *
+ * @description Check that the grammar for types does not allow multiple
+ * successive ? operators on a type. Test legacy pre-NNBD types and type aliases
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable,nonfunction-type-aliases
+import "legacy_library_aliases_lib.dart";
+
+typedef AAlias2 = A??;
+//                  ^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+class B<X extends AAlias??> {}
+//                       ^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+test(AAlias?? a) {}
+//          ^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+main() {
+  AAlias?? a = null;
+//       ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}