Version 2.10.0-128.0.dev

Merge commit 'e72adbc6ca3cb8f767f3b2a777ac080058c217ac' into 'dev'
diff --git a/pkg/test_runner/lib/src/command_output.dart b/pkg/test_runner/lib/src/command_output.dart
index 64996c0..4c953dd 100644
--- a/pkg/test_runner/lib/src/command_output.dart
+++ b/pkg/test_runner/lib/src/command_output.dart
@@ -1249,10 +1249,12 @@
 
 class FastaCommandOutput extends CompilationCommandOutput
     with _StaticErrorOutput {
-  static void parseErrors(String stdout, List<StaticError> errors,
-      [List<StaticError> warnings]) {
+  static void parseErrors(
+      String stdout, List<StaticError> errors, List<StaticError> warnings) {
     _StaticErrorOutput._parseCfeErrors(
         ErrorSource.cfe, _errorRegexp, stdout, errors);
+    _StaticErrorOutput._parseCfeErrors(
+        ErrorSource.cfe, _warningRegexp, stdout, warnings);
   }
 
   /// Matches the first line of a Fasta error message. Fasta prints errors to
@@ -1268,6 +1270,19 @@
   static final _errorRegexp =
       RegExp(r"^([^:]+):(\d+):(\d+): Error: (.*)$", multiLine: true);
 
+  /// Matches the first line of a Fasta warning message. Fasta prints errors to
+  /// stdout that look like:
+  ///
+  ///     tests/language_2/some_test.dart:7:21: Warning: Some message.
+  ///     Try fixing the code to be less bad.
+  ///       var _ = <int>[if (1) 2];
+  ///                    ^
+  ///
+  /// The test runner only validates the main error message, and not the
+  /// suggested fixes, so we only parse the first line.
+  static final _warningRegexp =
+      RegExp(r"^([^:]+):(\d+):(\d+): Warning: (.*)$", multiLine: true);
+
   FastaCommandOutput(
       Command command,
       int exitCode,
@@ -1282,8 +1297,10 @@
   @override
   void _parseErrors() {
     var errors = <StaticError>[];
-    parseErrors(decodeUtf8(stdout), errors);
+    var warnings = <StaticError>[];
+    parseErrors(decodeUtf8(stdout), errors, warnings);
     errors.forEach(addError);
+    warnings.forEach(addWarning);
   }
 }
 
diff --git a/pkg/test_runner/tool/update_static_error_tests.dart b/pkg/test_runner/tool/update_static_error_tests.dart
index eacb060..6b7379a 100644
--- a/pkg/test_runner/tool/update_static_error_tests.dart
+++ b/pkg/test_runner/tool/update_static_error_tests.dart
@@ -268,8 +268,9 @@
     return null;
   }
   var errors = <StaticError>[];
-  FastaCommandOutput.parseErrors(result.stdout as String, errors);
-  return errors;
+  var warnings = <StaticError>[];
+  FastaCommandOutput.parseErrors(result.stdout as String, errors, warnings);
+  return [...errors, ...warnings];
 }
 
 /// Invoke dart2js on [path] and gather all static errors it reports.
diff --git a/runtime/platform/globals.h b/runtime/platform/globals.h
index 91d062b..46ea17b 100644
--- a/runtime/platform/globals.h
+++ b/runtime/platform/globals.h
@@ -598,7 +598,7 @@
 // The USE(x) template is used to silence C++ compiler warnings issued
 // for unused variables.
 template <typename T>
-static inline void USE(T) {}
+static inline void USE(T&&) {}
 
 // The type-based aliasing rule allows the compiler to assume that
 // pointers of different types (for some definition of different)
diff --git a/tests/language/const/syntax_test.dart b/tests/language/const/syntax_test.dart
index 138d30c..aa33723 100644
--- a/tests/language/const/syntax_test.dart
+++ b/tests/language/const/syntax_test.dart
@@ -59,7 +59,11 @@
 const int F3;
 //        ^^
 // [analyzer] COMPILE_TIME_ERROR.CONST_NOT_INITIALIZED
+// [cfe] Field 'F3' should be initialized because its type 'int' doesn't allow null.
+//        ^
 // [cfe] The const variable 'F3' must be initialized.
+//          ^
+// [cfe] A value of type 'Null' can't be assigned to a variable of type 'int'.
 
 class Point {
   final x, y;
diff --git a/tests/language/if_null/assignment_behavior_test.dart b/tests/language/if_null/assignment_behavior_test.dart
index b17afd1..9bbfe18 100644
--- a/tests/language/if_null/assignment_behavior_test.dart
+++ b/tests/language/if_null/assignment_behavior_test.dart
@@ -123,6 +123,8 @@
     finalOne ??= null;
 //  ^^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL
+// [cfe] Operand of null-aware operation '??=' has type 'int' which excludes null.
+//  ^
 // [cfe] The setter 'finalOne' isn't defined for the class 'C'.
 //               ^^^^
 // [analyzer] STATIC_WARNING.DEAD_NULL_AWARE_EXPRESSION
@@ -162,6 +164,8 @@
   h.xGetValue = 1; check(1, () => h.x ??= bad(), ['h.x']);
   yGetValue = 1; check(1, () => h.x ??= y, ['h.x', 'y', 'h.x=1']);
   { var l = 1; check(1, () => l ??= bad(), []); }
+  //                          ^
+  // [cfe] Operand of null-aware operation '??=' has type 'int' which excludes null.
   //                                ^^^^^
   // [analyzer] STATIC_WARNING.DEAD_NULL_AWARE_EXPRESSION
   { var l; yGetValue = 1; check(1, () => l ??= y, ['y']); Expect.equals(1, l); }
@@ -169,6 +173,8 @@
   //             ^
   // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_LOCAL
   // [cfe] Can't assign to the final variable 'l'.
+  //             ^
+  // [cfe] Operand of null-aware operation '??=' has type 'int' which excludes null.
   //                   ^^^^
   // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
   //                   ^^^^
@@ -177,6 +183,8 @@
 //^
 // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_TYPE
 // [cfe] Can't assign to a type literal.
+//^
+// [cfe] Operand of null-aware operation '??=' has type 'Type' which excludes null.
   h ??= null;
 //^
 // [analyzer] COMPILE_TIME_ERROR.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT
diff --git a/tests/language/if_null/precedence_test.dart b/tests/language/if_null/precedence_test.dart
index eeb9570..abc0755 100644
--- a/tests/language/if_null/precedence_test.dart
+++ b/tests/language/if_null/precedence_test.dart
@@ -41,6 +41,8 @@
   // type warning if b doesn't have type bool.  An incorrect parse of
   // "a || (b ?? c)" would allow b to have any type provided that c is bool.
   falsity || 1 ?? true;
+//        ^
+// [cfe] Operand of null-aware operation '??' has type 'bool' which excludes null.
 //           ^
 // [analyzer] COMPILE_TIME_ERROR.NON_BOOL_OPERAND
 // [cfe] A value of type 'int' can't be assigned to a variable of type 'bool'.
@@ -50,6 +52,8 @@
   // An incorrect parse of "a || (b ?? c)" would result in no checked-mode
   // error.
   Expect.throwsAssertionError(() => false || null ?? true);
+  //                                      ^
+  // [cfe] Operand of null-aware operation '??' has type 'bool' which excludes null.
   //                                         ^^^^
   // [analyzer] COMPILE_TIME_ERROR.NON_BOOL_OPERAND
   // [cfe] A value of type 'Null' can't be assigned to a variable of type 'bool'.
diff --git a/tests/language/nnbd/operator_type_test.dart b/tests/language/nnbd/operator_type_test.dart
index 2885ffd..d9024fc 100644
--- a/tests/language/nnbd/operator_type_test.dart
+++ b/tests/language/nnbd/operator_type_test.dart
@@ -27,97 +27,99 @@
   _ = bq && b;
   //  ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
 
   _ = b && bq;
   //       ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
 
   _ = bq || b;
   //  ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
 
   _ = b || bq;
   //       ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
 
   _ = !bq;
   //   ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
 
   _ = bq ? "a" : "b";
   //  ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
 
   if (bq) {}
   //  ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
 
   while (bq) {}
   //     ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
 
   do {} while (bq);
   //           ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
 
   for (; bq;) {}
   //     ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
 
   try {
     throw bq;
     //    ^^
     // [analyzer] unspecified
-    // [cfe] unspecified
+    // [cfe] Can't throw a value of 'bool?' since it is neither dynamic nor non-nullable.
   } catch (e) {}
 
   assert(bq);
   //     ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
 
   _ = [if (bq) 1];
   //       ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
 
   _ = [for (; bq;) 1];
   //         ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  //          ^
+  // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
 
   Iterable<int>? iq = maybeNullable([1]);
   for (var v in iq) {}
   //            ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] The type 'Iterable<int>?' used in the 'for' loop must implement 'Iterable<dynamic>'.
 
   _ = [...iq];
+  //      ^
+  // [cfe] An expression whose value can be 'null' must be null-checked before it can be dereferenced.
   //       ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
 
   Stream<Object?> foo() async* {
     Stream<int>? sq = maybeNullable(Stream<int>.fromIterable([1]));
     await for (var v in sq) {}
     //                  ^^
     // [analyzer] unspecified
-    // [cfe] unspecified
+    // [cfe] The type 'Stream<int>?' used in the 'for' loop must implement 'Stream<dynamic>'.
 
     yield* sq;
     //     ^^
     // [analyzer] unspecified
-    // [cfe] unspecified
+    // [cfe] A value of type 'Stream<int>?' can't be assigned to a variable of type 'Stream<Object?>'.
   }
 
   foo().toList();
@@ -138,97 +140,98 @@
   _ = bq && b;
   //  ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'BQ' can't be assigned to a variable of type 'bool'.
 
   _ = b && bq;
   //       ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'BQ' can't be assigned to a variable of type 'bool'.
 
   _ = bq || b;
   //  ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'BQ' can't be assigned to a variable of type 'bool'.
 
   _ = b || bq;
   //       ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'BQ' can't be assigned to a variable of type 'bool'.
 
   _ = !bq;
   //   ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'BQ' can't be assigned to a variable of type 'bool'.
 
   _ = bq ? "a" : "b";
   //  ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'BQ' can't be assigned to a variable of type 'bool'.
 
   if (bq) {}
   //  ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'BQ' can't be assigned to a variable of type 'bool'.
 
   while (bq) {}
   //     ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'BQ' can't be assigned to a variable of type 'bool'.
 
   do {} while (bq);
   //           ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'BQ' can't be assigned to a variable of type 'bool'.
 
   for (; bq;) {}
   //     ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'BQ' can't be assigned to a variable of type 'bool'.
 
   try {
     throw bq;
     //    ^^
     // [analyzer] unspecified
-    // [cfe] unspecified
+    // [cfe] Can't throw a value of 'BQ' since it is neither dynamic nor non-nullable.
   } catch (e) {}
 
   assert(bq);
   //     ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'BQ' can't be assigned to a variable of type 'bool'.
 
   _ = [if (bq) 1];
   //       ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] A value of type 'BQ' can't be assigned to a variable of type 'bool'.
 
   _ = [for (; bq;) 1];
   //         ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  //          ^
+  // [cfe] A value of type 'BQ' can't be assigned to a variable of type 'bool'.
 
   Iterable<int>? iq = maybeNullable([1]);
   for (var v in iq) {}
   //            ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] The type 'Iterable<int>?' used in the 'for' loop must implement 'Iterable<dynamic>'.
 
   _ = [...iq];
   //      ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] An expression whose value can be 'null' must be null-checked before it can be dereferenced.
 
   Stream<Object?> foo<SQ extends Stream<Object?>?>() async* {
     SQ sq = maybeNotNullable<SQ>(Stream<int>.fromIterable([1]));
     await for (var v in sq) {}
     //                  ^^
     // [analyzer] unspecified
-    // [cfe] unspecified
+    // [cfe] The type 'Stream<Object?>?' used in the 'for' loop must implement 'Stream<dynamic>'.
 
     yield* sq;
     //     ^^
     // [analyzer] unspecified
-    // [cfe] unspecified
+    // [cfe] A value of type 'SQ' can't be assigned to a variable of type 'Stream<Object?>'.
   }
 
   foo<Stream<Object?>>().toList();
@@ -250,7 +253,7 @@
     return cq;
     //     ^^
     // [analyzer] unspecified
-    // [cfe] unspecified
+    // [cfe] A value of type 'C?' can't be returned from a function with return type 'C'.
   }
 }
 
@@ -265,38 +268,38 @@
   _ = nn ?? 1;
   //  ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] Operand of null-aware operation '??' has type 'int' which excludes null.
 
   _ = nn ??= 1;
   //  ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] Operand of null-aware operation '??=' has type 'int' which excludes null.
 
   _ = nn?.toRadixString(16);
   //  ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] Operand of null-aware operation '?.' has type 'int' which excludes null.
 
   _ = nn?..toRadixString(16);
   //  ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] Operand of null-aware operation '?..' has type 'int' which excludes null.
 
   _ = nn!;
   //  ^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] Operand of null-aware operation '!' has type 'int' which excludes null.
 
   List<int> nni = [1];
   _ = [...?nni];
   //       ^^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] Operand of null-aware operation '...?' has type 'List<int>' which excludes null.
 
   _ = nni?[0];
   //  ^^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] Operand of null-aware operation '?.' has type 'List<int>' which excludes null.
 
   return _;
 }
diff --git a/tests/language/nnbd/resolution/question_question_lub_test.dart b/tests/language/nnbd/resolution/question_question_lub_test.dart
index 73dab4a..beae0f8 100644
--- a/tests/language/nnbd/resolution/question_question_lub_test.dart
+++ b/tests/language/nnbd/resolution/question_question_lub_test.dart
@@ -17,14 +17,20 @@
   (nullableInt ?? nullableInt) + 1;
 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
-// [cfe] unspecified
+//                             ^
+// [cfe] Operator '+' cannot be called on 'int?' because it is potentially null.
   (nonNullInt ?? nullableInt) + 1;
-//               ^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.DEAD_NULL_AWARE_EXPRESSION
 //^^^^^^^^^^^^^^^^^^^^^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
-// [cfe] unspecified
+// ^
+// [cfe] Operand of null-aware operation '??' has type 'int' which excludes null.
+//               ^^^^^^^^^^^
+// [analyzer] STATIC_WARNING.DEAD_NULL_AWARE_EXPRESSION
+//                            ^
+// [cfe] Operator '+' cannot be called on 'int?' because it is potentially null.
   (nonNullInt ?? nonNullInt) + 1;
+// ^
+// [cfe] Operand of null-aware operation '??' has type 'int' which excludes null.
 //               ^^^^^^^^^^
 // [analyzer] STATIC_WARNING.DEAD_NULL_AWARE_EXPRESSION
 }
diff --git a/tests/language/nnbd/syntax/class_member_declarations_error_test.dart b/tests/language/nnbd/syntax/class_member_declarations_error_test.dart
index d06b113..607e46f 100644
--- a/tests/language/nnbd/syntax/class_member_declarations_error_test.dart
+++ b/tests/language/nnbd/syntax/class_member_declarations_error_test.dart
@@ -8,11 +8,13 @@
   static late x1;
   //     ^^^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  //          ^
+  // [cfe] Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
   static late x5 = 0;
   //     ^^^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  //          ^
+  // [cfe] Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
 
   static final late x9;
   //           ^^^^
@@ -32,15 +34,18 @@
   // [cfe] The modifier 'late' should be before the modifier 'final'.
   //                        ^^^^
   // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
+  // [cfe] A value of type 'Null' can't be assigned to a variable of type 'A'.
 
   covariant late x15;
   //        ^^^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  //             ^
+  // [cfe] Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
   covariant late x16 = '';
   //        ^^^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  //             ^
+  // [cfe] Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
 
   late covariant var x17;
   //   ^^^^^^^^^
@@ -56,12 +61,14 @@
   // [cfe] The modifier 'covariant' should be before the modifier 'late'.
   //             ^^^
   // [analyzer] SYNTACTIC_ERROR.MISSING_CONST_FINAL_VAR_OR_TYPE
+  // [cfe] Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
   late covariant x20 = '';
   //   ^^^^^^^^^
   // [analyzer] SYNTACTIC_ERROR.MODIFIER_OUT_OF_ORDER
   // [cfe] The modifier 'covariant' should be before the modifier 'late'.
   //             ^^^
   // [analyzer] SYNTACTIC_ERROR.MISSING_CONST_FINAL_VAR_OR_TYPE
+  // [cfe] Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
   
   covariant var late x21;
   //            ^^^^
@@ -78,6 +85,7 @@
   // [cfe] Expected ';' after this.
   //               ^^^^
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
+  // [cfe] Field 'late' should be initialized because its type 'double' doesn't allow null.
   //                    ^^^
   // [analyzer] SYNTACTIC_ERROR.MISSING_CONST_FINAL_VAR_OR_TYPE
   // [cfe] Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
@@ -97,11 +105,11 @@
   late x25;
   //   ^^^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
   late x29 = 0;
   //   ^^^^
   // [analyzer] unspecified
-  // [cfe] unspecified
+  // [cfe] Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
 
   final late x33;
   //    ^^^^
@@ -160,7 +168,7 @@
       required p2 = null,
       //       ^^
       // [analyzer] COMPILE_TIME_ERROR.DEFAULT_VALUE_ON_REQUIRED_PARAMETER
-      // [cfe] unspecified
+      // [cfe] Named parameter 'p2' is required and can't have a default value.
       required covariant p3,
       required covariant int p4,
   });
diff --git a/tests/language/nnbd/syntax/nullable_type_ambiguous_test.dart b/tests/language/nnbd/syntax/nullable_type_ambiguous_test.dart
index 753cff9..23565da 100644
--- a/tests/language/nnbd/syntax/nullable_type_ambiguous_test.dart
+++ b/tests/language/nnbd/syntax/nullable_type_ambiguous_test.dart
@@ -37,6 +37,8 @@
   // { a is bool ?? true : 3 } is parsed as a map literal { ((a is bool) ?? true) : 3 }.
   a = true;
   var x5 = {a is bool ?? true : 3};
+  //          ^
+  // [cfe] Operand of null-aware operation '??' has type 'bool' which excludes null.
   //                     ^^^^
   // [analyzer] STATIC_WARNING.DEAD_NULL_AWARE_EXPRESSION
   Expect.type<Map<dynamic, dynamic>>(x5);
diff --git a/tests/language/null_aware/access_test.dart b/tests/language/null_aware/access_test.dart
index 4ee967e..224a794 100644
--- a/tests/language/null_aware/access_test.dart
+++ b/tests/language/null_aware/access_test.dart
@@ -26,6 +26,8 @@
   // e1?.id is equivalent to ((x) => x == null ? null : x.id)(e1).
   Expect.equals(null, nullC()?.v);
   Expect.equals(1, new C(1)?.v);
+  //                   ^
+  // [cfe] Operand of null-aware operation '?.' has type 'C' which excludes null.
   //                       ^^
   // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
 
@@ -35,6 +37,8 @@
 
   // The static type of e1?.d is the static type of e1.id.
   { int? i = new C(1)?.v; Expect.equals(1, i); }
+  //             ^
+  // [cfe] Operand of null-aware operation '?.' has type 'C' which excludes null.
   //                 ^^
   // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
   { String? s = new C(null)?.v; Expect.equals(null, s); }
@@ -42,6 +46,8 @@
   // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
   //                ^
   // [cfe] A value of type 'int?' can't be assigned to a variable of type 'String?'.
+  //                ^
+  // [cfe] Operand of null-aware operation '?.' has type 'C' which excludes null.
   //                       ^^
   // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
   { C.staticInt = 1; int? i = C?.staticInt; Expect.equals(1, i); }
diff --git a/tests/language/null_aware/assignment_test.dart b/tests/language/null_aware/assignment_test.dart
index 79f566c..112b0a6 100644
--- a/tests/language/null_aware/assignment_test.dart
+++ b/tests/language/null_aware/assignment_test.dart
@@ -49,6 +49,8 @@
   // e1?.v = e2 is equivalent to ((x) => x == null ? null : x.v = e2)(e1).
   Expect.equals(null, nullC()?.v = bad());
   { C c = new C(1); Expect.equals(2, c?.v = 2); Expect.equals(2, c.v); }
+  //                                 ^
+  // [cfe] Operand of null-aware operation '?.' has type 'C' which excludes null.
   //                                  ^^
   // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
 
@@ -61,7 +63,6 @@
   { D? d = new D(new E()); E e = new G(); F? f = (d?.v = e); }
   //                                              ^^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
-  //                                              ^
   // [cfe] A value of type 'E?' can't be assigned to a variable of type 'F?'.
   { D.staticE = new E(); G g = new G(); F? f = (D?.staticE = g); Expect.identical(f, g); }
   { h.D.staticE = new h.E(); h.G g = new h.G(); h.F? f = (h.D?.staticE = g); Expect.identical(f, g); }
@@ -83,6 +84,8 @@
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_SETTER
   // [cfe] The setter 'bad' isn't defined for the class 'C'.
   { B b = new C(1); Expect.equals(2, b?.v = 2); }
+  //                                 ^
+  // [cfe] Operand of null-aware operation '?.' has type 'B' which excludes null.
   //                                  ^^
   // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
   //                                    ^
@@ -92,6 +95,8 @@
   // e1?.v op= e2 is equivalent to ((x) => x?.v = x.v op e2)(e1).
   Expect.equals(null, nullC()?.v += bad());
   { C c = new C(1); Expect.equals(3, c?.v += 2); Expect.equals(3, c.v); }
+  //                                 ^
+  // [cfe] Operand of null-aware operation '?.' has type 'C' which excludes null.
   //                                  ^^
   // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
 
@@ -100,6 +105,8 @@
 
   // The static type of e1?.v op= e2 is the static type of e1.v op e2.
   { D d = new D(new E()); F? f = (d?.v += 1); Expect.identical(d.v, f); }
+  //                              ^
+  // [cfe] Operand of null-aware operation '?.' has type 'D' which excludes null.
   //                               ^^
   // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
   { D.staticE = new E(); F? f = (D?.staticE += 1); Expect.identical(D.staticE, f); }
@@ -113,6 +120,8 @@
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_SETTER
   // [cfe] The setter 'bad' isn't defined for the class 'C'.
   { B b = new C(1); b?.v += 2; }
+  //                ^
+  // [cfe] Operand of null-aware operation '?.' has type 'B' which excludes null.
   //                 ^^
   // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
   //                   ^
@@ -122,6 +131,8 @@
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_SETTER
   // [cfe] The setter 'v' isn't defined for the class 'B'.
   { D d = new D(new E()); F? f = (d?.v += nullC()); }
+  //                              ^
+  // [cfe] Operand of null-aware operation '?.' has type 'D' which excludes null.
   //                               ^^
   // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
   //                                      ^^^^^^^
@@ -130,8 +141,9 @@
   { D d = new D(new E()); H? h = (d?.v += 1); }
   //                              ^^^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
-  //                              ^
   // [cfe] A value of type 'G?' can't be assigned to a variable of type 'H?'.
+  //                              ^
+  // [cfe] Operand of null-aware operation '?.' has type 'D' which excludes null.
   //                               ^^
   // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
   { D.staticE = new E(); F? f = (D?.staticE += nullC()); }
diff --git a/tests/language/spread_collections/null_spread_test.dart b/tests/language/spread_collections/null_spread_test.dart
index 777378d..aad1331 100644
--- a/tests/language/spread_collections/null_spread_test.dart
+++ b/tests/language/spread_collections/null_spread_test.dart
@@ -21,6 +21,8 @@
   var l3 = [...?myNever];
   //        ^^^^
   // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
+  //            ^
+  // [cfe] Operand of null-aware operation '...?' has type 'Never' which excludes null.
   List<Never> l3b = l3;
   var s1 = {...?x, if (false) throw 1};
   Set<Never> s1b = s1;
@@ -29,6 +31,8 @@
   var s3 = {...?myNever, if (false) throw 1};
   //        ^^^^
   // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
+  //            ^
+  // [cfe] Operand of null-aware operation '...?' has type 'Never' which excludes null.
   Set<Never> s3b = s3;
   var m1 = {...?x, if (false) throw 1: throw 1};
   Map<Never, Never> m1b = m1;
@@ -37,6 +41,8 @@
   var m3 = {...?myNever, if (false) throw 1: throw 1};
   //        ^^^^
   // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
+  //            ^
+  // [cfe] Operand of null-aware operation '...?' has type 'Never' which excludes null.
   Map<Never, Never> m3b = m3;
 
   // Test non-empty collection of `Never` and `int`.
@@ -47,6 +53,8 @@
   var li3 = [...?myNever, 1];
   //         ^^^^
   // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
+  //             ^
+  // [cfe] Operand of null-aware operation '...?' has type 'Never' which excludes null.
   List<int> li3b = li3;
   var si1 = {1, ...?x};
   Set<int> si1b = si1;
@@ -55,6 +63,8 @@
   var si3 = {1, ...?myNever};
   //            ^^^^
   // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
+  //                ^
+  // [cfe] Operand of null-aware operation '...?' has type 'Never' which excludes null.
   Set<int> si3b = si3;
   var mi1 = {1: 1, ...?x};
   Map<int, int> mi1b = mi1;
@@ -63,6 +73,8 @@
   var mi3 = {1: 1, ...?myNever};
   //               ^^^^
   // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
+  //                   ^
+  // [cfe] Operand of null-aware operation '...?' has type 'Never' which excludes null.
   Map<int, int> mi3b = mi3;
 }
 
diff --git a/tests/language/string/substring_test.dart b/tests/language/string/substring_test.dart
index 6f33829..6d7943f 100644
--- a/tests/language/string/substring_test.dart
+++ b/tests/language/string/substring_test.dart
@@ -13,7 +13,7 @@
     // [cfe] The argument type 'double' can't be assigned to the parameter type 'int'.
     //                            ^^^
     // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
-    // [cfe] The argument type 'double' can't be assigned to the parameter type 'int'.
+    // [cfe] The argument type 'double' can't be assigned to the parameter type 'int?'.
     Expect.fail("Should have thrown an exception");
   } on TypeError catch (e) {
     // OK.
diff --git a/tests/language/super/conditional_operator_test.dart b/tests/language/super/conditional_operator_test.dart
index c93ed77..dcbc633 100644
--- a/tests/language/super/conditional_operator_test.dart
+++ b/tests/language/super/conditional_operator_test.dart
@@ -34,6 +34,8 @@
     //   ^^
     // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER
     // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null.
+    //     ^
+    // [cfe] Operand of null-aware operation '??=' has type 'int' which excludes null.
     //               ^
     // [analyzer] STATIC_WARNING.DEAD_NULL_AWARE_EXPRESSION
     super?.field;
@@ -47,17 +49,17 @@
     // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER
     // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null.
     -super?.field;
+//   ^^^^^^^^^^^^
+// [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
     //    ^^
     // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER
     // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null.
-//   ^^^^^^^^^^^^
-// [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
     ~super?.field;
+//   ^^^^^^^^^^^^
+// [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
     //    ^^
     // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER
     // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null.
-//   ^^^^^^^^^^^^
-// [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
     !super?.field;
 //   ^^^^^^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.NON_BOOL_NEGATION_EXPRESSION
diff --git a/tests/language/unsorted/external_test.dart b/tests/language/unsorted/external_test.dart
index 12d6306c..00c7f42 100644
--- a/tests/language/unsorted/external_test.dart
+++ b/tests/language/unsorted/external_test.dart
@@ -37,6 +37,8 @@
   //  ^^^^^^^^
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
   // [cfe] Expected ';' after this.
+  //  ^
+  // [cfe] Field 'external' should be initialized because its type 'int' doesn't allow null.
   //           ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
 
@@ -67,13 +69,13 @@
 }
 
 external int t06(int i) { return 1; }
-// [error line 69, column 1, length 8]
+// [error line 71, column 1, length 8]
 // [analyzer] SYNTACTIC_ERROR.EXTERNAL_METHOD_WITH_BODY
 // [cfe] An external or native method can't have a body.
 //                      ^
 // [cfe] An external or native method can't have a body.
 external int t07(int i) => i + 1;
-// [error line 75, column 1, length 8]
+// [error line 77, column 1, length 8]
 // [analyzer] SYNTACTIC_ERROR.EXTERNAL_METHOD_WITH_BODY
 // [cfe] An external or native method can't have a body.
 //                         ^
diff --git a/tests/language/variable/duplicate_field_with_initializer_test.dart b/tests/language/variable/duplicate_field_with_initializer_test.dart
index 68bd560..929fc64 100644
--- a/tests/language/variable/duplicate_field_with_initializer_test.dart
+++ b/tests/language/variable/duplicate_field_with_initializer_test.dart
@@ -3,9 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 class Repeated {
-  var a = '', b = 'Something';
-  var b;
-  //  ^
+  dynamic a = '', b = 'Something';
+  dynamic b;
+  //      ^
   // [analyzer] COMPILE_TIME_ERROR.DUPLICATE_DEFINITION
   // [cfe] 'b' is already declared in this scope.
 }
diff --git a/tools/VERSION b/tools/VERSION
index a242d7e..255ff78 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 10
 PATCH 0
-PRERELEASE 127
+PRERELEASE 128
 PRERELEASE_PATCH 0
\ No newline at end of file