Late variables tests changed according to the spec (await and late final)
diff --git a/LanguageFeatures/nnbd/static_errors_A24_t01.dart b/LanguageFeatures/nnbd/static_errors_A24_t01.dart
index 468a1b0..9c574cf 100644
--- a/LanguageFeatures/nnbd/static_errors_A24_t01.dart
+++ b/LanguageFeatures/nnbd/static_errors_A24_t01.dart
@@ -5,7 +5,8 @@
*/
/**
* @assertion It is an error for the initializer expression of a late local
- * variable to use a prefix await expression.
+ * variable to use a prefix await expression that is not nested inside of
+ * another function expression.
*
* @description Check that it is an error for the initializer expression of a
* late local variable to use a prefix await expression.
diff --git a/LanguageFeatures/nnbd/static_errors_A24_t02.dart b/LanguageFeatures/nnbd/static_errors_A24_t02.dart
index 004fca2..1ff6cd7 100644
--- a/LanguageFeatures/nnbd/static_errors_A24_t02.dart
+++ b/LanguageFeatures/nnbd/static_errors_A24_t02.dart
@@ -5,7 +5,8 @@
*/
/**
* @assertion It is an error for the initializer expression of a late local
- * variable to use a prefix await expression.
+ * variable to use a prefix await expression that is not nested inside of
+ * another function expression.
*
* @description Check that it is an error for the initializer expression of a
* late local variable to use a prefix await expression.
diff --git a/LanguageFeatures/nnbd/static_errors_A24_t03.dart b/LanguageFeatures/nnbd/static_errors_A24_t03.dart
new file mode 100644
index 0000000..be9efa5
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A24_t03.dart
@@ -0,0 +1,43 @@
+/*
+ * 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 for the initializer expression of a late local
+ * variable to use a prefix await expression that is not nested inside of
+ * another function expression.
+ *
+ * @description Check that it is not an error for the initializer expression of
+ * a late local variable to use a prefix await expression if it is nested inside
+ * of another function expression
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+import "dart:async";
+
+class C {
+ static void sTest() async {
+ late Future<int> i = init();
+ }
+
+ void mTest() async {
+ late Future<int> i = init();
+ }
+}
+
+void test() async {
+ late Future<int> i = init();
+}
+
+Future<int> init() async {
+ return await 42;
+}
+
+main() async {
+ late Future<int> i = init();
+ test();
+ C.sTest();
+ C().mTest();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A28_t01.dart b/LanguageFeatures/nnbd/static_errors_A28_t01.dart
new file mode 100644
index 0000000..b4e3e43
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A28_t01.dart
@@ -0,0 +1,75 @@
+/*
+ * 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 a compile time error to assign a value to a local variable
+ * marked late and final when the variable is definitely assigned. This includes
+ * all forms of assignments, including assignments via the composite assignment
+ * operators as well as pre and post-fix operators.
+ *
+ * @description Check that it is a compile time error to assign a value to a
+ * local variable marked late and final when the variable is definitely assigned
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+main() {
+ late final int x = 42;
+ x = 1;
+// ^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+ x += 1;
+// ^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+ x -= 1;
+// ^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+ x *= 1;
+// ^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+ x %= 1;
+// ^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+ x ~/= 1;
+// ^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+ x <<= 1;
+// ^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+ x >>= 1;
+// ^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+ x &= 1;
+// ^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+ x ^= 1;
+// ^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+ x |= 1;
+// ^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A28_t02.dart b/LanguageFeatures/nnbd/static_errors_A28_t02.dart
new file mode 100644
index 0000000..b715d37
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A28_t02.dart
@@ -0,0 +1,25 @@
+/*
+ * 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 a compile time error to assign a value to a local variable
+ * marked late and final when the variable is definitely assigned. This includes
+ * all forms of assignments, including assignments via the composite assignment
+ * operators as well as pre and post-fix operators.
+ *
+ * @description Check that it is a compile time error to assign a value to a
+ * local variable marked late and final when the variable is definitely assigned
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable,triple-shift
+// Requirements=nnbd-strong
+
+main() {
+ late final int x = 42;
+ x >>>= 1;
+// ^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A28_t03.dart b/LanguageFeatures/nnbd/static_errors_A28_t03.dart
new file mode 100644
index 0000000..6140b9a
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A28_t03.dart
@@ -0,0 +1,25 @@
+/*
+ * 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 a compile time error to assign a value to a local variable
+ * marked late and final when the variable is definitely assigned. This includes
+ * all forms of assignments, including assignments via the composite assignment
+ * operators as well as pre and post-fix operators.
+ *
+ * @description Check that it is a compile time error to assign a value to a
+ * local variable marked late and final when the variable is definitely assigned
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+main() {
+ late final num? x = 42;
+ x ??= 1;
+// ^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A28_t04.dart b/LanguageFeatures/nnbd/static_errors_A28_t04.dart
new file mode 100644
index 0000000..e41ce49
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A28_t04.dart
@@ -0,0 +1,30 @@
+/*
+ * 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 a compile time error to assign a value to a local variable
+ * marked late and final when the variable is definitely assigned. This includes
+ * all forms of assignments, including assignments via the composite assignment
+ * operators as well as pre and post-fix operators.
+ *
+ * @description Check that it is a compile time error to assign a value to a
+ * local variable marked late and final when the variable is definitely assigned
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+main() {
+ late final int x = 42;
+ x++;
+// ^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+ x--;
+// ^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}