Version 2.12.0-220.0.dev

Merge commit 'ef8cc2c1cff303134fe7bd3b7625f84696fcce3c' into 'dev'
diff --git a/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart b/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
index ddcd0ff..45318c1b 100644
--- a/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
+++ b/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
@@ -16,6 +16,7 @@
 import 'package:analysis_server/src/services/correction/dart/convert_add_all_to_spread.dart';
 import 'package:analysis_server/src/services/correction/dart/convert_conditional_expression_to_if_element.dart';
 import 'package:analysis_server/src/services/correction/dart/convert_documentation_into_line.dart';
+import 'package:analysis_server/src/services/correction/dart/convert_into_is_not.dart';
 import 'package:analysis_server/src/services/correction/dart/convert_map_from_iterable_to_for_literal.dart';
 import 'package:analysis_server/src/services/correction/dart/convert_quotes.dart';
 import 'package:analysis_server/src/services/correction/dart/convert_to_contains.dart';
@@ -208,7 +209,10 @@
       ReplaceWithIsEmpty.newInstance,
     ],
     LintNames.prefer_is_not_empty: [
-      UesIsNotEmpty.newInstance,
+      UseIsNotEmpty.newInstance,
+    ],
+    LintNames.prefer_is_not_operator: [
+      ConvertIntoIsNot.newInstance,
     ],
     LintNames.prefer_iterable_whereType: [
       ConvertToWhereType.newInstance,
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/use_is_not_empty.dart b/pkg/analysis_server/lib/src/services/correction/dart/use_is_not_empty.dart
index 39ee83b..cc06b0d 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/use_is_not_empty.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/use_is_not_empty.dart
@@ -10,7 +10,7 @@
 import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
 import 'package:analyzer_plugin/utilities/range_factory.dart';
 
-class UesIsNotEmpty extends CorrectionProducer {
+class UseIsNotEmpty extends CorrectionProducer {
   @override
   FixKind get fixKind => DartFixKind.USE_IS_NOT_EMPTY;
 
@@ -40,5 +40,5 @@
   }
 
   /// Return an instance of this class. Used as a tear-off in `FixProcessor`.
-  static UesIsNotEmpty newInstance() => UesIsNotEmpty();
+  static UseIsNotEmpty newInstance() => UseIsNotEmpty();
 }
diff --git a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
index 7cd30ff..b84c1e6 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -417,7 +417,7 @@
       ReplaceWithIsEmpty.newInstance,
     ],
     LintNames.prefer_is_not_empty: [
-      UesIsNotEmpty.newInstance,
+      UseIsNotEmpty.newInstance,
     ],
     LintNames.prefer_if_null_operators: [
       ConvertToIfNull.newInstance,
diff --git a/pkg/analysis_server/lib/src/services/linter/lint_names.dart b/pkg/analysis_server/lib/src/services/linter/lint_names.dart
index 767aabb..46abeb4 100644
--- a/pkg/analysis_server/lib/src/services/linter/lint_names.dart
+++ b/pkg/analysis_server/lib/src/services/linter/lint_names.dart
@@ -76,6 +76,7 @@
       'prefer_interpolation_to_compose_strings';
   static const String prefer_is_empty = 'prefer_is_empty';
   static const String prefer_is_not_empty = 'prefer_is_not_empty';
+  static const String prefer_is_not_operator = 'prefer_is_not_operator';
   static const String prefer_iterable_whereType = 'prefer_iterable_whereType';
   static const String prefer_null_aware_operators =
       'prefer_null_aware_operators';
diff --git a/pkg/analysis_server/test/src/services/correction/fix/bulk/convert_to_is_not_test.dart b/pkg/analysis_server/test/src/services/correction/fix/bulk/convert_to_is_not_test.dart
new file mode 100644
index 0000000..42a907d
--- /dev/null
+++ b/pkg/analysis_server/test/src/services/correction/fix/bulk/convert_to_is_not_test.dart
@@ -0,0 +1,33 @@
+// Copyright (c) 2021, 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.
+
+import 'package:analysis_server/src/services/linter/lint_names.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import 'bulk_fix_processor.dart';
+
+void main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(ConvertIntoIsNotTest);
+  });
+}
+
+@reflectiveTest
+class ConvertIntoIsNotTest extends BulkFixProcessorTest {
+  @override
+  String get lintCode => LintNames.prefer_is_not_operator;
+
+  Future<void> test_singleFile() async {
+    await resolveTestCode('''
+main(p) {
+  !(p is String) && !!(p is String);
+}
+''');
+    await assertHasFix('''
+main(p) {
+  p is! String && !(p is! String);
+}
+''');
+  }
+}
diff --git a/pkg/analysis_server/test/src/services/correction/fix/bulk/test_all.dart b/pkg/analysis_server/test/src/services/correction/fix/bulk/test_all.dart
index d7f62b78..4ed3e33 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/bulk/test_all.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/bulk/test_all.dart
@@ -21,6 +21,7 @@
 import 'convert_to_if_element_test.dart' as convert_to_if_element;
 import 'convert_to_if_null_test.dart' as convert_to_if_null;
 import 'convert_to_int_literal_test.dart' as convert_to_int_literal;
+import 'convert_to_is_not_test.dart' as convert_to_is_not;
 import 'convert_to_list_literal_test.dart' as convert_to_list_literal;
 import 'convert_to_map_literal_test.dart' as convert_to_map_literal;
 import 'convert_to_null_aware_test.dart' as convert_to_null_aware;
@@ -84,6 +85,7 @@
     convert_to_if_element.main();
     convert_to_if_null.main();
     convert_to_int_literal.main();
+    convert_to_is_not.main();
     convert_to_list_literal.main();
     convert_to_map_literal.main();
     convert_to_null_aware.main();
diff --git a/pkg/analyzer/lib/src/dart/error/todo_codes.dart b/pkg/analyzer/lib/src/dart/error/todo_codes.dart
index 15db063..3fbccd3 100644
--- a/pkg/analyzer/lib/src/dart/error/todo_codes.dart
+++ b/pkg/analyzer/lib/src/dart/error/todo_codes.dart
@@ -30,9 +30,16 @@
    * But not
    * * todo
    * * TODOS
+   * 
+   * It also supports wrapped TODOs where the next line is indented by a space:
+   * 
+   *   /**
+   *    * TODO(username): This line is
+   *    *  wrapped onto the next line
+   *    */
    */
-  static RegExp TODO_REGEX =
-      RegExp("([\\s/\\*])((TODO[^\\w\\d][^\\r\\n]*)|(TODO:?\$))");
+  static RegExp TODO_REGEX = RegExp(
+      "([\\s/\\*])((TODO[^\\w\\d][^\\r\\n]*(?:\\n\\s*\\*  [^\\r\\n]*)*)|(TODO:?\$))");
 
   /**
    * Initialize a newly created error code to have the given [name].
diff --git a/pkg/analyzer/lib/src/error/todo_finder.dart b/pkg/analyzer/lib/src/error/todo_finder.dart
index 3241562..140a09e 100644
--- a/pkg/analyzer/lib/src/error/todo_finder.dart
+++ b/pkg/analyzer/lib/src/error/todo_finder.dart
@@ -5,6 +5,7 @@
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/token.dart';
 import 'package:analyzer/error/listener.dart';
+import 'package:analyzer/source/line_info.dart';
 import 'package:analyzer/src/error/codes.dart';
 
 /// Instances of the class `ToDoFinder` find to-do comments in Dart code.
@@ -12,6 +13,15 @@
   /// The error reporter by which to-do comments will be reported.
   final ErrorReporter _errorReporter;
 
+  /// A regex for whitespace and comment markers to be removed from the text
+  /// of multiline TODOs in multiline comments.
+  final RegExp _commentNewlineAndMarker = RegExp('\\s*\\n\\s*\\*\\s*');
+
+  /// A regex for any character that is not a comment marker `/` or whitespace
+  /// used for finding the first "real" character of a comment to compare its
+  /// indentation for wrapped todos.
+  final RegExp _nonWhitespaceOrCommentMarker = RegExp('[^/ ]');
+
   /// Initialize a newly created to-do finder to report to-do comments to the
   /// given reporter.
   ///
@@ -24,46 +34,101 @@
   ///
   /// @param unit the compilation unit containing the to-do comments
   void findIn(CompilationUnit unit) {
-    _gatherTodoComments(unit.beginToken);
+    _gatherTodoComments(unit.beginToken, unit.lineInfo);
   }
 
   /// Search the comment tokens reachable from the given token and create errors
   /// for each to-do comment.
   ///
   /// @param token the head of the list of tokens being searched
-  void _gatherTodoComments(Token token) {
+  void _gatherTodoComments(Token token, LineInfo lineInfo) {
     while (token != null && token.type != TokenType.EOF) {
       Token commentToken = token.precedingComments;
       while (commentToken != null) {
         if (commentToken.type == TokenType.SINGLE_LINE_COMMENT ||
             commentToken.type == TokenType.MULTI_LINE_COMMENT) {
-          _scrapeTodoComment(commentToken);
+          commentToken = _scrapeTodoComment(commentToken, lineInfo);
+        } else {
+          commentToken = commentToken.next;
         }
-        commentToken = commentToken.next;
       }
       token = token.next;
     }
   }
 
-  /// Look for user defined tasks in comments and convert them into info level
-  /// analysis issues.
+  /// Look for user defined tasks in comments starting [commentToken] and convert
+  /// them into info level analysis issues.
   ///
-  /// @param commentToken the comment token to analyze
-  void _scrapeTodoComment(Token commentToken) {
+  /// Subsequent comments that are indented with an additional space are
+  /// considered continuations and will be included in a single analysis issue.
+  ///
+  /// Returns the next comment token to begin searching from (skipping over
+  /// any continuations).
+  Token _scrapeTodoComment(Token commentToken, LineInfo lineInfo) {
     Iterable<Match> matches =
         TodoCode.TODO_REGEX.allMatches(commentToken.lexeme);
+    // Track the comment that will be returned for looking for the next todo.
+    // This will be moved along if additional comments are consumed by multiline
+    // TODOs.
+    var nextComment = commentToken.next;
+    final commentLocation = lineInfo.getLocation(commentToken.offset);
+
     for (Match match in matches) {
       int offset = commentToken.offset + match.start + match.group(1).length;
+      int column =
+          commentLocation.columnNumber + match.start + match.group(1).length;
       String todoText = match.group(2);
+      int end = offset + todoText.length;
 
-      if (commentToken.type == TokenType.MULTI_LINE_COMMENT &&
-          todoText.endsWith('*/')) {
-        // Remove the `*/` and trim any trailing whitespace.
-        todoText = todoText.substring(0, todoText.length - 2).trimRight();
+      if (commentToken.type == TokenType.MULTI_LINE_COMMENT) {
+        // Remove any `*/` and trim any trailing whitespace.
+        if (todoText.endsWith('*/')) {
+          todoText = todoText.substring(0, todoText.length - 2).trimRight();
+          end = offset + todoText.length;
+        }
+
+        // Replace out whitespace/comment markers to unwrap multiple lines.
+        // Do not reset length after this, as length must include all characters.
+        todoText = todoText.replaceAll(_commentNewlineAndMarker, ' ');
+      } else if (commentToken.type == TokenType.SINGLE_LINE_COMMENT) {
+        // Append any indented lines onto the end.
+        var line = commentLocation.lineNumber;
+        while (nextComment != null) {
+          final nextCommentLocation = lineInfo.getLocation(nextComment.offset);
+          final columnOfFirstNoneMarkerOrWhitespace =
+              nextCommentLocation.columnNumber +
+                  nextComment.lexeme.indexOf(_nonWhitespaceOrCommentMarker);
+
+          final isContinuation =
+              nextComment.type == TokenType.SINGLE_LINE_COMMENT &&
+                  // Only consider TODOs on the very next line.
+                  nextCommentLocation.lineNumber == line++ + 1 &&
+                  // Only consider comment tokens starting at the same column.
+                  nextCommentLocation.columnNumber ==
+                      commentLocation.columnNumber &&
+                  // And indented more than the original 'todo' text.
+                  columnOfFirstNoneMarkerOrWhitespace == column + 1 &&
+                  // And not their own todos.
+                  !TodoCode.TODO_REGEX.hasMatch(nextComment.lexeme);
+          if (!isContinuation) {
+            break;
+          }
+
+          // Track the end of the continuation for the diagnostic range.
+          end = nextComment.end;
+          final lexemeTextOffset = columnOfFirstNoneMarkerOrWhitespace -
+              nextCommentLocation.columnNumber;
+          final continuationText =
+              nextComment.lexeme.substring(lexemeTextOffset).trimRight();
+          todoText = '$todoText $continuationText';
+          nextComment = nextComment.next;
+        }
       }
 
       _errorReporter.reportErrorForOffset(
-          TodoCode.TODO, offset, todoText.length, [todoText]);
+          TodoCode.TODO, offset, end - offset, [todoText]);
     }
+
+    return nextComment;
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/todo_test.dart b/pkg/analyzer/test/src/diagnostics/todo_test.dart
index 1a540df..c2cb064 100644
--- a/pkg/analyzer/test/src/diagnostics/todo_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/todo_test.dart
@@ -27,6 +27,40 @@
     ]);
   }
 
+  test_todo_multiLineCommentWrapped() async {
+    await assertErrorsInCode(r'''
+main() {
+  /* TODO(a): Implement something
+   *  that is too long for one line
+   * This line is not part of the todo
+   */
+  /* TODO: Implement something
+   *  that is too long for one line
+   * This line is not part of the todo
+   */
+  /* TODO(a): Implement something
+   *  that is too long for one line
+   * 
+   *  This line is not part of the todo
+   */
+  /* TODO: Implement something
+   *  that is too long for one line
+   * 
+   *  This line is not part of the todo
+   */
+}
+''', [
+      error(TodoCode.TODO, 14, 64,
+          text: 'TODO(a): Implement something that is too long for one line'),
+      error(TodoCode.TODO, 129, 61,
+          text: 'TODO: Implement something that is too long for one line'),
+      error(TodoCode.TODO, 241, 64,
+          text: 'TODO(a): Implement something that is too long for one line'),
+      error(TodoCode.TODO, 363, 61,
+          text: 'TODO: Implement something that is too long for one line'),
+    ]);
+  }
+
   test_todo_singleLineComment() async {
     await assertErrorsInCode(r'''
 main() {
@@ -36,4 +70,96 @@
       error(TodoCode.TODO, 14, 15, text: 'TODO: Implement'),
     ]);
   }
+
+  test_todo_singleLineCommentDoubleCommented() async {
+    // Continuations are ignored for code that looks like commented comments
+    // although the original TODOs are still picked up.
+    await assertErrorsInCode(r'''
+main() {
+//      // TODO: Implement something
+//      //  that is too long for one line
+//      main() {
+
+//      // TODO: Implement something
+//      // this is not a todo
+//      main() {
+
+//      // TODO: Implement something
+//      main() {
+}
+''', [
+      error(TodoCode.TODO, 20, 67,
+          text: 'TODO: Implement something that is too long for one line'),
+      error(TodoCode.TODO, 117, 25, text: 'TODO: Implement something'),
+      error(TodoCode.TODO, 202, 25, text: 'TODO: Implement something'),
+    ]);
+  }
+
+  test_todo_singleLineCommentLessIndentedContinuation() async {
+    await assertErrorsInCode(r'''
+main() {
+  // TODO: Implement something
+  //  that is too long for one line
+//    this is not part of the todo
+}
+''', [
+      error(TodoCode.TODO, 14, 61,
+          text: 'TODO: Implement something that is too long for one line'),
+    ]);
+  }
+
+  test_todo_singleLineCommentMoreIndentedContinuation() async {
+    await assertErrorsInCode(r'''
+main() {
+  // TODO: Implement something
+  //  that is too long for one line
+  //      this is not part of the todo
+}
+''', [
+      error(TodoCode.TODO, 14, 61,
+          text: 'TODO: Implement something that is too long for one line'),
+    ]);
+  }
+
+  test_todo_singleLineCommentNested() async {
+    await assertErrorsInCode(r'''
+main() {
+  // TODO: Implement something
+  //  that is too long for one line
+  //  TODO: This is a seperate todo that is accidentally indented
+}
+''', [
+      error(TodoCode.TODO, 14, 61,
+          text: 'TODO: Implement something that is too long for one line'),
+      error(TodoCode.TODO, 82, 59,
+          text: 'TODO: This is a seperate todo that is accidentally indented'),
+    ]);
+  }
+
+  test_todo_singleLineCommentWrapped() async {
+    await assertErrorsInCode(r'''
+main() {
+  // TODO: Implement something
+  //  that is too long for one line
+  // this is not part of the todo
+
+  // TODO: Implement something
+  //  that is too long for one line
+  
+  //  this is not part of the todo
+
+  // TODO: Implement something
+  //  that is too long for one line
+  // 
+  //  this is not part of the todo
+}
+''', [
+      error(TodoCode.TODO, 14, 61,
+          text: 'TODO: Implement something that is too long for one line'),
+      error(TodoCode.TODO, 116, 61,
+          text: 'TODO: Implement something that is too long for one line'),
+      error(TodoCode.TODO, 222, 61,
+          text: 'TODO: Implement something that is too long for one line'),
+    ]);
+  }
 }
diff --git a/pkg/compiler/lib/src/js_emitter/main_call_stub_generator.dart b/pkg/compiler/lib/src/js_emitter/main_call_stub_generator.dart
index d26bb2e..c969c26 100644
--- a/pkg/compiler/lib/src/js_emitter/main_call_stub_generator.dart
+++ b/pkg/compiler/lib/src/js_emitter/main_call_stub_generator.dart
@@ -73,7 +73,7 @@
         }
         // When running as a content-script of a chrome-extension the
         // 'currentScript' is `null` (but not undefined).
-        if (typeof document.currentScript != 'undefined') {
+        if (typeof document.currentScript != "undefined") {
           callback(document.currentScript);
           return;
         }
diff --git a/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart b/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart
index 88d26a9..939a39f 100644
--- a/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart
@@ -82,7 +82,7 @@
     for (var j = 0; j < keys.length; j++) {
       var key = keys[j];
       var f = holder[key];
-      if (typeof f == 'function') f.name = key;
+      if (typeof f == "function") f.name = key;
     }
   }
 }
@@ -260,7 +260,7 @@
   var funs = [];
   for (var i = 0; i < funsOrNames.length; i++) {
     var fun = funsOrNames[i];
-    if ((typeof fun) == 'string') fun = container[fun];
+    if ((typeof fun) == "string") fun = container[fun];
     fun.#callName = callNames[i];
     funs.push(fun);
   }
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart
index d444b164..be4ad50 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart
@@ -48,7 +48,7 @@
   dynamic value;
   try {
     value = f();
-  } on LateInitializationError catch (e) {
+  } on Error catch (e) {
     print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.expect
index 16fa8e0..477672b 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.expect
@@ -72,7 +72,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.transformed.expect
index 16fa8e0..477672b 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.transformed.expect
@@ -72,7 +72,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.expect
index ad9e30d..f0df89a 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.expect
@@ -99,7 +99,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.transformed.expect
index ad9e30d..f0df89a 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.transformed.expect
@@ -99,7 +99,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart b/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart
index 2f01985..9c2a8e0 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart
@@ -57,7 +57,7 @@
   dynamic value;
   try {
     value = f();
-  } on LateInitializationError catch (e) {
+  } on Error catch (e) {
     print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.strong.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.strong.expect
index df72516..74f12ef 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.strong.expect
@@ -75,7 +75,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.strong.transformed.expect
index df72516..74f12ef 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.strong.transformed.expect
@@ -75,7 +75,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.weak.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.weak.expect
index fc0e98b..c0f506a 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.weak.expect
@@ -102,7 +102,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.weak.transformed.expect
index fc0e98b..c0f506a 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.weak.transformed.expect
@@ -102,7 +102,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart b/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart
index 637dae7..6e83a66 100644
--- a/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart
+++ b/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart
@@ -85,7 +85,7 @@
   dynamic value;
   try {
     value = f();
-  } on LateInitializationError catch (e) {
+  } on Error catch (e) {
     print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.strong.expect
index 7fe4159..6e465d7 100644
--- a/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.strong.expect
@@ -93,7 +93,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.strong.transformed.expect
index 7fe4159..6e465d7 100644
--- a/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.strong.transformed.expect
@@ -93,7 +93,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.weak.expect
index 1710036..5c9ecce 100644
--- a/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.weak.expect
@@ -96,7 +96,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.weak.transformed.expect
index 1710036..5c9ecce 100644
--- a/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.weak.transformed.expect
@@ -96,7 +96,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart b/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart
index 168a7d0..24676a7 100644
--- a/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart
+++ b/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart
@@ -89,7 +89,7 @@
   dynamic value;
   try {
     value = f();
-  } on LateInitializationError catch (e) {
+  } on Error catch (e) {
     print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.strong.expect
index d212088..c480ab9 100644
--- a/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.strong.expect
@@ -98,7 +98,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.strong.transformed.expect
index d212088..c480ab9 100644
--- a/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.strong.transformed.expect
@@ -98,7 +98,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.weak.expect
index effd7a1..2f21d23 100644
--- a/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.weak.expect
@@ -101,7 +101,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.weak.transformed.expect
index effd7a1..2f21d23 100644
--- a/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.weak.transformed.expect
@@ -101,7 +101,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart b/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart
index 387ecbf..b08cd8d 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart
@@ -85,7 +85,7 @@
   dynamic value;
   try {
     value = f();
-  } on LateInitializationError catch (e) {
+  } on Error catch (e) {
     print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.strong.expect
index 76deb58..1692057 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.strong.expect
@@ -96,7 +96,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.strong.transformed.expect
index 76deb58..1692057 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.strong.transformed.expect
@@ -96,7 +96,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.weak.expect
index 76deb58..1692057 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.weak.expect
@@ -96,7 +96,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.weak.transformed.expect
index 76deb58..1692057 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.weak.transformed.expect
@@ -96,7 +96,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart b/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart
index 17346d7..7505ea0 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart
@@ -89,7 +89,7 @@
   dynamic value;
   try {
     value = f();
-  } on LateInitializationError catch (e) {
+  } on Error catch (e) {
     print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.strong.expect
index 310cc22..e4e4f30 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.strong.expect
@@ -101,7 +101,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.strong.transformed.expect
index 310cc22..e4e4f30 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.strong.transformed.expect
@@ -101,7 +101,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.weak.expect
index 310cc22..e4e4f30 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.weak.expect
@@ -101,7 +101,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.weak.transformed.expect
index 310cc22..e4e4f30 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.weak.transformed.expect
@@ -101,7 +101,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/issue44372.dart b/pkg/front_end/testcases/late_lowering/issue44372.dart
index 2550604..0415076 100644
--- a/pkg/front_end/testcases/late_lowering/issue44372.dart
+++ b/pkg/front_end/testcases/late_lowering/issue44372.dart
@@ -35,7 +35,7 @@
   dynamic value;
   try {
     value = f();
-  } on LateInitializationError catch (e) {
+  } on Error catch (e) {
     print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/issue44372.dart.strong.expect b/pkg/front_end/testcases/late_lowering/issue44372.dart.strong.expect
index 2e8255b..6d44223 100644
--- a/pkg/front_end/testcases/late_lowering/issue44372.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/issue44372.dart.strong.expect
@@ -40,7 +40,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/issue44372.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/issue44372.dart.strong.transformed.expect
index 2e8255b..6d44223 100644
--- a/pkg/front_end/testcases/late_lowering/issue44372.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue44372.dart.strong.transformed.expect
@@ -40,7 +40,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/issue44372.dart.weak.expect b/pkg/front_end/testcases/late_lowering/issue44372.dart.weak.expect
index 16f8718..bc6ab71 100644
--- a/pkg/front_end/testcases/late_lowering/issue44372.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/issue44372.dart.weak.expect
@@ -52,7 +52,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/issue44372.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/issue44372.dart.weak.transformed.expect
index 16f8718..bc6ab71 100644
--- a/pkg/front_end/testcases/late_lowering/issue44372.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue44372.dart.weak.transformed.expect
@@ -52,7 +52,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart b/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart
index 9d17619..5b68b28 100644
--- a/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart
+++ b/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart
@@ -85,7 +85,7 @@
   dynamic value;
   try {
     value = f();
-  } on LateInitializationError catch (e) {
+  } on Error catch (e) {
     print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.strong.expect
index e6c2ae9..8bbf5d9 100644
--- a/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.strong.expect
@@ -103,7 +103,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.strong.transformed.expect
index e6c2ae9..8bbf5d9 100644
--- a/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.strong.transformed.expect
@@ -103,7 +103,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.weak.expect
index d782319..c20d687 100644
--- a/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.weak.expect
@@ -123,7 +123,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.weak.transformed.expect
index d782319..c20d687 100644
--- a/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.weak.transformed.expect
@@ -123,7 +123,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart b/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart
index 9aaefc1..34d4626 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart
+++ b/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart
@@ -79,7 +79,7 @@
   dynamic value;
   try {
     value = f();
-  } on LateInitializationError catch (e) {
+  } on Error catch (e) {
     print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.strong.expect
index 13abe89..f425376 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.strong.expect
@@ -109,7 +109,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.strong.transformed.expect
index 13abe89..f425376 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.strong.transformed.expect
@@ -109,7 +109,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.weak.expect
index 63c7b11..e2db739 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.weak.expect
@@ -129,7 +129,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.weak.transformed.expect
index 63c7b11..e2db739 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.weak.transformed.expect
@@ -129,7 +129,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart b/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart
index 65d28e2..10e63d9 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart
+++ b/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart
@@ -50,7 +50,7 @@
   dynamic value;
   try {
     value = f();
-  } on LateInitializationError catch (e) {
+  } on Error catch (e) {
     print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.strong.expect
index c5acb90..103a9f9 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.strong.expect
@@ -57,7 +57,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.strong.transformed.expect
index c5acb90..103a9f9 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.strong.transformed.expect
@@ -57,7 +57,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.weak.expect
index 5976395..4ed637a 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.weak.expect
@@ -60,7 +60,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.weak.transformed.expect
index 5976395..4ed637a 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_local_without_initializer.dart.weak.transformed.expect
@@ -60,7 +60,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart
index 525ba2c..6a06cad 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart
@@ -90,7 +90,7 @@
   dynamic value;
   try {
     value = f();
-  } on LateInitializationError catch (e) {
+  } on Error catch (e) {
     print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.strong.expect
index d2f5afa..b107b44 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.strong.expect
@@ -146,7 +146,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.strong.transformed.expect
index d2f5afa..b107b44 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.strong.transformed.expect
@@ -146,7 +146,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.weak.expect
index d2f5afa..b107b44 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.weak.expect
@@ -146,7 +146,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.weak.transformed.expect
index d2f5afa..b107b44 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.weak.transformed.expect
@@ -146,7 +146,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart
index 494d850..d76da4c 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart
@@ -45,7 +45,7 @@
   dynamic value;
   try {
     value = f();
-  } on LateInitializationError catch (e) {
+  } on Error catch (e) {
     print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.strong.expect
index 5d5693d..9fa00df 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.strong.expect
@@ -54,7 +54,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.strong.transformed.expect
index 15d60ff..b844175 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.strong.transformed.expect
@@ -54,7 +54,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.weak.expect
index 5d5693d..9fa00df 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.weak.expect
@@ -54,7 +54,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.weak.transformed.expect
index 15d60ff..b844175 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_local_without_initializer.dart.weak.transformed.expect
@@ -54,7 +54,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart b/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart
index 0fbd507..f64dacf 100644
--- a/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart
+++ b/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart
@@ -29,7 +29,7 @@
   dynamic value;
   try {
     value = f();
-  } on LateInitializationError catch (e) {
+  } on Error catch (e) {
     print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.strong.expect
index a8ded51..40781ea 100644
--- a/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.strong.expect
@@ -38,7 +38,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.strong.transformed.expect
index a8ded51..40781ea 100644
--- a/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.strong.transformed.expect
@@ -38,7 +38,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.weak.expect
index 44d30d6..237c5ac 100644
--- a/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.weak.expect
@@ -41,7 +41,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.weak.transformed.expect
index 44d30d6..237c5ac 100644
--- a/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_local_without_initializer.dart.weak.transformed.expect
@@ -41,7 +41,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart b/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart
index b594a40..a161f23 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart
@@ -78,7 +78,7 @@
   dynamic value;
   try {
     value = f();
-  } on LateInitializationError catch (e) {
+  } on Error catch (e) {
     print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.strong.expect
index 5faf637..d01d771 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.strong.expect
@@ -119,7 +119,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.strong.transformed.expect
index 5faf637..d01d771 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.strong.transformed.expect
@@ -119,7 +119,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.weak.expect
index 5faf637..d01d771 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.weak.expect
@@ -119,7 +119,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.weak.transformed.expect
index 5faf637..d01d771 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.weak.transformed.expect
@@ -119,7 +119,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart b/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart
index 0e29214..ff5dfcd 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart
@@ -30,7 +30,7 @@
   dynamic value;
   try {
     value = f();
-  } on LateInitializationError catch (e) {
+  } on Error catch (e) {
     print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.strong.expect b/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.strong.expect
index a635204..7fa4edc 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.strong.expect
@@ -42,7 +42,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.strong.transformed.expect
index a635204..7fa4edc 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.strong.transformed.expect
@@ -42,7 +42,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.weak.expect b/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.weak.expect
index a635204..7fa4edc 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.weak.expect
@@ -42,7 +42,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.weak.transformed.expect
index a635204..7fa4edc 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_local_without_initializer.dart.weak.transformed.expect
@@ -42,7 +42,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/override.dart b/pkg/front_end/testcases/late_lowering/override.dart
index 69afea9..87d8858 100644
--- a/pkg/front_end/testcases/late_lowering/override.dart
+++ b/pkg/front_end/testcases/late_lowering/override.dart
@@ -91,7 +91,7 @@
   dynamic value;
   try {
     value = f();
-  } on LateInitializationError catch (e) {
+  } on Error catch (e) {
     print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/override.dart.strong.expect b/pkg/front_end/testcases/late_lowering/override.dart.strong.expect
index bc88c3f..6fa984a 100644
--- a/pkg/front_end/testcases/late_lowering/override.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/override.dart.strong.expect
@@ -113,7 +113,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/override.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/override.dart.strong.transformed.expect
index 6b5321f..31e4f1c 100644
--- a/pkg/front_end/testcases/late_lowering/override.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/override.dart.strong.transformed.expect
@@ -113,7 +113,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/override.dart.weak.expect b/pkg/front_end/testcases/late_lowering/override.dart.weak.expect
index ee8f06d..9b3ba60 100644
--- a/pkg/front_end/testcases/late_lowering/override.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/override.dart.weak.expect
@@ -148,7 +148,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/override.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/override.dart.weak.transformed.expect
index ee8f06d..9b3ba60 100644
--- a/pkg/front_end/testcases/late_lowering/override.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/override.dart.weak.transformed.expect
@@ -148,7 +148,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/override_getter_setter.dart b/pkg/front_end/testcases/late_lowering/override_getter_setter.dart
index 6ef5ecc..c6fd9a3 100644
--- a/pkg/front_end/testcases/late_lowering/override_getter_setter.dart
+++ b/pkg/front_end/testcases/late_lowering/override_getter_setter.dart
@@ -45,7 +45,7 @@
   dynamic value;
   try {
     value = f();
-  } on LateInitializationError catch (e) {
+  } on Error catch (e) {
     print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.strong.expect b/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.strong.expect
index a40aad4..600c0c9 100644
--- a/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.strong.expect
@@ -81,7 +81,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.strong.transformed.expect
index 270a287..474f90a 100644
--- a/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.strong.transformed.expect
@@ -81,7 +81,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.weak.expect b/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.weak.expect
index ed7604c..1cb53d8 100644
--- a/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.weak.expect
@@ -93,7 +93,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.weak.transformed.expect
index ed7604c..1cb53d8 100644
--- a/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.weak.transformed.expect
@@ -93,7 +93,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_in.dart b/pkg/front_end/testcases/static_field_lowering/opt_in.dart
index c549cad..360ee61 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_in.dart
+++ b/pkg/front_end/testcases/static_field_lowering/opt_in.dart
@@ -139,7 +139,7 @@
   dynamic value;
   try {
     value = f();
-  } on LateInitializationError catch (e) {
+  } on Error catch (e) {
     print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.expect b/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.expect
index c4ea2b5..b02a477 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.expect
+++ b/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.expect
@@ -327,7 +327,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.transformed.expect
index c4ea2b5..b02a477 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.transformed.expect
@@ -327,7 +327,7 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError catch(final core::LateInitializationError e) {
+  on core::Error catch(final core::Error e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_out.dart b/pkg/front_end/testcases/static_field_lowering/opt_out.dart
index 7ca4c56..a725ecb 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_out.dart
+++ b/pkg/front_end/testcases/static_field_lowering/opt_out.dart
@@ -95,8 +95,6 @@
   dynamic value;
   try {
     value = f();
-  } on LateInitializationError catch (e) {
-    throw '$message: Unexpected LateInitializationError: $e';
   } catch (e) {
     print(e);
     return;
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.expect b/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.expect
index 7fcf775..fe00cf4 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.expect
+++ b/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.expect
@@ -74,9 +74,6 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError* catch(final core::LateInitializationError* e) {
-    throw "${message}: Unexpected LateInitializationError: ${e}";
-  }
   on dynamic catch(final dynamic e) {
     core::print(e);
     return;
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.transformed.expect
index 7fcf775..fe00cf4 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.transformed.expect
@@ -74,9 +74,6 @@
   try {
     value = f.call();
   }
-  on core::LateInitializationError* catch(final core::LateInitializationError* e) {
-    throw "${message}: Unexpected LateInitializationError: ${e}";
-  }
   on dynamic catch(final dynamic e) {
     core::print(e);
     return;
diff --git a/runtime/bin/main.cc b/runtime/bin/main.cc
index ca8e95e..fec166f 100644
--- a/runtime/bin/main.cc
+++ b/runtime/bin/main.cc
@@ -621,7 +621,7 @@
     isolate_run_app_snapshot = false;
     dartdev_path = DartDevIsolate::TryResolveDartDevKernelPath();
     // Clear error from app snapshot and retry from kernel.
-    if (*error != nullptr) {
+    if (error != nullptr && *error != nullptr) {
       free(*error);
       *error = nullptr;
     }
diff --git a/runtime/vm/clustered_snapshot.cc b/runtime/vm/clustered_snapshot.cc
index d8c12f3..bfff86b 100644
--- a/runtime/vm/clustered_snapshot.cc
+++ b/runtime/vm/clustered_snapshot.cc
@@ -5349,12 +5349,6 @@
           static_cast<CompressedStackMapsPtr>(d->ReadRef());
       code->ptr()->code_source_map_ =
           static_cast<CodeSourceMapPtr>(d->ReadRef());
-
-      // TODO(rmacnak): Should we finalize any pending GC before deserializing
-      // instead?
-      if (d->thread()->is_marking()) {
-        d->thread()->DeferredMarkingStackAddObject(code);
-      }
     }
 
     // Reinitialize the dispatch table by rereading the table's serialization
@@ -6787,15 +6781,28 @@
 
   canonical_clusters_ = new DeserializationCluster*[num_canonical_clusters_];
   clusters_ = new DeserializationCluster*[num_clusters_];
-  refs_ = Array::New(num_objects_ + kFirstReference, Heap::kOld);
+  refs = Array::New(num_objects_ + kFirstReference, Heap::kOld);
   if (initial_field_table_len > 0) {
     initial_field_table_->AllocateIndex(initial_field_table_len - 1);
     ASSERT_EQUAL(initial_field_table_->NumFieldIds(), initial_field_table_len);
   }
 
   {
-    NoSafepointScope no_safepoint;
+    // The deserializer initializes objects without using the write barrier,
+    // partly for speed since we know all the deserialized objects will be
+    // long-lived and partly because the target objects can be not yet
+    // initialized at the time of the write. To make this safe, we must ensure
+    // there are no other threads mutating this heap, and that incremental
+    // marking is not in progress. This is normally the case anyway for the
+    // main snapshot being deserialized at isolate load, but needs checks for
+    // loading secondary snapshots are part of deferred loading.
+    HeapIterationScope iter(thread());
+    // For bump-pointer allocation in old-space.
     HeapLocker hl(thread(), heap_->old_space());
+    // Must not perform any other type of allocation, which might trigger GC
+    // while there are still uninitialized objects.
+    NoSafepointScope no_safepoint;
+    refs_ = refs.raw();
 
     roots->AddBaseObjects(this);
 
@@ -6856,7 +6863,6 @@
     ASSERT(section_marker == kSectionMarker);
 #endif
 
-    refs = refs_;
     refs_ = NULL;
   }
 
diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
index 78c6eda..e8fdaa4 100644
--- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
+++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
@@ -2093,7 +2093,7 @@
         initialize += Goto(join);
       }
     } else {
-      // The variable has no initializer, so throw a LateInitializationError.
+      // The variable has no initializer, so throw a late initialization error.
       Fragment initialize(is_uninitialized);
       initialize += flow_graph_builder_->ThrowLateInitializationError(
           position, "_throwLocalNotInitialized", variable->name());
@@ -2173,7 +2173,6 @@
 
   return instructions;
 }
-
 Fragment StreamingFlowGraphBuilder::BuildPropertyGet(TokenPosition* p) {
   const intptr_t offset = ReaderOffset() - 1;     // Include the tag.
   const TokenPosition position = ReadPosition();  // read position.
diff --git a/sdk/lib/_internal/js_runtime/lib/js_helper.dart b/sdk/lib/_internal/js_runtime/lib/js_helper.dart
index dc18038..c30d332 100644
--- a/sdk/lib/_internal/js_runtime/lib/js_helper.dart
+++ b/sdk/lib/_internal/js_runtime/lib/js_helper.dart
@@ -1347,7 +1347,7 @@
     // get the text "[object Object]". The shortest way to get that
     // string is using "String({})".
     // See: http://code.google.com/p/v8/issues/detail?id=2519.
-    message = JS('String', r"#.replace(String({}), '$receiver$')", message);
+    message = JS('String', r'#.replace(String({}), "$receiver$")', message);
 
     // Since we want to create a new regular expression from an unknown string,
     // we must escape all regular expression syntax.
@@ -1374,14 +1374,14 @@
     // JavaScript, "." does not match newlines.
     String pattern = JS(
         'String',
-        r"#.replace(new RegExp('\\\\\\$arguments\\\\\\$', 'g'), "
-            r"'((?:x|[^x])*)')"
-            r".replace(new RegExp('\\\\\\$argumentsExpr\\\\\\$', 'g'),  "
-            r"'((?:x|[^x])*)')"
-            r".replace(new RegExp('\\\\\\$expr\\\\\\$', 'g'),  '((?:x|[^x])*)')"
-            r".replace(new RegExp('\\\\\\$method\\\\\\$', 'g'),  '((?:x|[^x])*)')"
-            r".replace(new RegExp('\\\\\\$receiver\\\\\\$', 'g'),  "
-            r"'((?:x|[^x])*)')",
+        r'#.replace(new RegExp("\\\\\\$arguments\\\\\\$", "g"), '
+            r'"((?:x|[^x])*)")'
+            r'.replace(new RegExp("\\\\\\$argumentsExpr\\\\\\$", "g"),  '
+            r'"((?:x|[^x])*)")'
+            r'.replace(new RegExp("\\\\\\$expr\\\\\\$", "g"),  "((?:x|[^x])*)")'
+            r'.replace(new RegExp("\\\\\\$method\\\\\\$", "g"),  "((?:x|[^x])*)")'
+            r'.replace(new RegExp("\\\\\\$receiver\\\\\\$", "g"),  '
+            r'"((?:x|[^x])*)")',
         message);
 
     return new TypeErrorDecoder(
@@ -1436,7 +1436,7 @@
     // "(.*)\\.(.*) is not a function"
 
     var function = JS('', r"""function($expr$) {
-  var $argumentsExpr$ = '$arguments$';
+  var $argumentsExpr$ = "$arguments$";
   try {
     $expr$.$method$($argumentsExpr$);
   } catch (e) {
@@ -1451,7 +1451,7 @@
   static String provokeCallErrorOnNull() {
     // See [provokeCallErrorOn] for a detailed explanation.
     var function = JS('', r"""function() {
-  var $argumentsExpr$ = '$arguments$';
+  var $argumentsExpr$ = "$arguments$";
   try {
     null.$method$($argumentsExpr$);
   } catch (e) {
@@ -1466,7 +1466,7 @@
   static String provokeCallErrorOnUndefined() {
     // See [provokeCallErrorOn] for a detailed explanation.
     var function = JS('', r"""function() {
-  var $argumentsExpr$ = '$arguments$';
+  var $argumentsExpr$ = "$arguments$";
   try {
     (void 0).$method$($argumentsExpr$);
   } catch (e) {
@@ -1774,7 +1774,7 @@
 }
 
 int objectHashCode(var object) {
-  if (object == null || JS('bool', "typeof # != 'object'", object)) {
+  if (object == null || JS('bool', 'typeof # != "object"', object)) {
     return object.hashCode;
   } else {
     return Primitives.objectHashCode(object);
diff --git a/sdk/lib/core/errors.dart b/sdk/lib/core/errors.dart
index d30b436..7ef44c0 100644
--- a/sdk/lib/core/errors.dart
+++ b/sdk/lib/core/errors.dart
@@ -586,18 +586,3 @@
         : "Reading static variable '$variableName' during its initialization";
   }
 }
-
-/// Error thrown when a late variable is accessed in an invalid manner.
-///
-/// A late variable must be initialized before it's read.
-/// If a late variable has no initializer expression and has not
-/// been written to, then reading it will throw a
-/// late initialization error.
-///
-/// A late final variable with no initializer expression may only
-/// be written to once.
-/// If it is written to again, the writing will throw a
-/// late initialization error.
-abstract class LateInitializationError extends Error {
-  factory LateInitializationError._() => throw UnsupportedError("");
-}
diff --git a/sdk/lib/internal/errors.dart b/sdk/lib/internal/errors.dart
index 8b93cd1..60fa350 100644
--- a/sdk/lib/internal/errors.dart
+++ b/sdk/lib/internal/errors.dart
@@ -4,7 +4,7 @@
 
 part of dart._internal;
 
-class LateError extends Error implements LateInitializationError {
+class LateError extends Error {
   final String? _message;
 
   LateError([this._message]);
diff --git a/tests/language/nnbd/syntax/late_modifier_bug_39658.dart b/tests/language/nnbd/syntax/late_modifier_bug_39658.dart
index 67ca1c2..3b8307a 100644
--- a/tests/language/nnbd/syntax/late_modifier_bug_39658.dart
+++ b/tests/language/nnbd/syntax/late_modifier_bug_39658.dart
@@ -25,14 +25,12 @@
   Expect.equals(1.23, a.fieldWithInit);
   Expect.equals(1.23, a.fieldWithTrivialInit);
   Expect.equals(null, a.fieldWithNullInit);
-  Expect.throws(
-      () => a.fieldWithNoInit, (error) => error is LateInitializationError);
+  Expect.throws<Error>(() => a.fieldWithNoInit);
   Expect.equals(1, initCalls);
   Expect.equals(1.23, a.fieldWithInit);
   Expect.equals(1.23, a.fieldWithTrivialInit);
   Expect.equals(null, a.fieldWithNullInit);
-  Expect.throws(
-      () => a.fieldWithNoInit, (error) => error is LateInitializationError);
+  Expect.throws<Error>(() => a.fieldWithNoInit);
   Expect.equals(1, initCalls);
   a.fieldWithInit = 4.56;
   a.fieldWithTrivialInit = 4.56;
diff --git a/tests/language/nnbd/syntax/late_modifier_final_field_test.dart b/tests/language/nnbd/syntax/late_modifier_final_field_test.dart
index a22c6ec..bfa9d7f 100644
--- a/tests/language/nnbd/syntax/late_modifier_final_field_test.dart
+++ b/tests/language/nnbd/syntax/late_modifier_final_field_test.dart
@@ -39,8 +39,7 @@
     Expect.equals(123, a.fieldWithInit);
     Expect.equals(1, initCalls);
     // Setting Base.fieldWithInit twice throws an error.
-    Expect.throws(() => {a.fieldWithInit = 789},
-        (error) => error is LateInitializationError);
+    Expect.throws<Error>(() => {a.fieldWithInit = 789});
     Expect.equals(1, initCalls);
     Expect.equals(123, a.fieldWithInit);
     Expect.equals(1, initCalls);
@@ -53,20 +52,17 @@
     Expect.equals(456, (a as A).superFieldWithInit);
     Expect.equals(0, initCalls);
     // Setting Base.fieldWithInit twice throws an error.
-    Expect.throws(() => {a2.fieldWithInit = 789},
-        (error) => error is LateInitializationError);
+    Expect.throws<Error>(() => {a2.fieldWithInit = 789});
     Expect.equals(0, initCalls);
     Expect.equals(123, a2.fieldWithInit);
     Expect.equals(456, (a as A).superFieldWithInit);
     Expect.equals(1, initCalls);
 
     B b = B();
-    Expect.throws(
-        () => b.fieldWithNoInit, (error) => error is LateInitializationError);
+    Expect.throws<Error>(() => b.fieldWithNoInit);
     b.fieldWithNoInit = 123;
     Expect.equals(123, b.fieldWithNoInit);
-    Expect.throws(() => {b.fieldWithNoInit = 456},
-        (error) => error is LateInitializationError);
+    Expect.throws<Error>(() => {b.fieldWithNoInit = 456});
     Expect.equals(123, b.fieldWithNoInit);
     initCalls = 0;
   }
diff --git a/tests/language/nnbd/syntax/late_modifier_final_local_var_test.dart b/tests/language/nnbd/syntax/late_modifier_final_local_var_test.dart
index 97d790d..cca2eaa 100644
--- a/tests/language/nnbd/syntax/late_modifier_final_local_var_test.dart
+++ b/tests/language/nnbd/syntax/late_modifier_final_local_var_test.dart
@@ -22,21 +22,13 @@
     Expect.equals(1, initCalls);
 
     late final int fieldWithNoInit;
-    Expect.throws(
-      () => fieldWithNoInit,
-      (error) => error is LateInitializationError,
-    );
+    Expect.throws<Error>(() => fieldWithNoInit);
     // Confuse the definite assignment analysis.
     if (1 > 0) {
       fieldWithNoInit = 123;
     }
     Expect.equals(123, fieldWithNoInit);
-    Expect.throws(
-      () {
-        fieldWithNoInit = 456;
-      },
-      (error) => error is LateInitializationError,
-    );
+    Expect.throws<Error>(() => fieldWithNoInit = 456);
     Expect.equals(123, fieldWithNoInit);
     initCalls = 0;
   }
diff --git a/tests/language/nnbd/syntax/late_modifier_global_var_test.dart b/tests/language/nnbd/syntax/late_modifier_global_var_test.dart
index 7a7f9c9..b084f02 100644
--- a/tests/language/nnbd/syntax/late_modifier_global_var_test.dart
+++ b/tests/language/nnbd/syntax/late_modifier_global_var_test.dart
@@ -27,14 +27,12 @@
   Expect.equals(123, varWithInit);
   Expect.equals(123, varWithTrivialInit);
   Expect.equals(null, varWithNullInit);
-  Expect.throws(
-      () => varWithNoInit, (error) => error is LateInitializationError);
+  Expect.throws<Error>(() => varWithNoInit);
   Expect.equals(1, initCalls);
   Expect.equals(123, varWithInit);
   Expect.equals(123, varWithTrivialInit);
   Expect.equals(null, varWithNullInit);
-  Expect.throws(
-      () => varWithNoInit, (error) => error is LateInitializationError);
+  Expect.throws<Error>(() => varWithNoInit);
   Expect.equals(1, initCalls);
   varWithInit = 456;
   varWithTrivialInit = 456;
@@ -70,11 +68,9 @@
   Expect.equals(null, finalVarWithNullInit);
   Expect.equals(1, initCalls);
 
-  Expect.throws(
-      () => finalVarWithNoInit, (error) => error is LateInitializationError);
+  Expect.throws<Error>(() => finalVarWithNoInit);
   finalVarWithNoInit = 123;
   Expect.equals(123, finalVarWithNoInit);
-  Expect.throws(() => {finalVarWithNoInit = 456},
-      (error) => error is LateInitializationError);
+  Expect.throws<Error>(() => {finalVarWithNoInit = 456});
   Expect.equals(123, finalVarWithNoInit);
 }
diff --git a/tests/language/nnbd/syntax/late_modifier_local_var_test.dart b/tests/language/nnbd/syntax/late_modifier_local_var_test.dart
index 4164b8b..88878bb 100644
--- a/tests/language/nnbd/syntax/late_modifier_local_var_test.dart
+++ b/tests/language/nnbd/syntax/late_modifier_local_var_test.dart
@@ -22,14 +22,12 @@
     Expect.equals(123, varWithInit);
     Expect.equals(123, varWithTrivialInit);
     Expect.equals(null, varWithNullInit);
-    Expect.throws(
-        () => varWithNoInit, (error) => error is LateInitializationError);
+    Expect.throws<Error>(() => varWithNoInit);
     Expect.equals(1, initCalls);
     Expect.equals(123, varWithInit);
     Expect.equals(123, varWithTrivialInit);
     Expect.equals(null, varWithNullInit);
-    Expect.throws(
-        () => varWithNoInit, (error) => error is LateInitializationError);
+    Expect.throws<Error>(() => varWithNoInit);
     Expect.equals(1, initCalls);
     varWithInit = 456;
     varWithTrivialInit = 456;
diff --git a/tests/language/nnbd/syntax/late_modifier_non_final_field_test.dart b/tests/language/nnbd/syntax/late_modifier_non_final_field_test.dart
index bd7e91c..1ebb8ee 100644
--- a/tests/language/nnbd/syntax/late_modifier_non_final_field_test.dart
+++ b/tests/language/nnbd/syntax/late_modifier_non_final_field_test.dart
@@ -33,20 +33,16 @@
     Expect.equals(123, a.fieldWithInit);
     Expect.equals(123, a.fieldWithTrivialInit);
     Expect.equals(null, a.fieldWithNullInit);
-    Expect.throws(
-        () => a.fieldWithNoInit, (error) => error is LateInitializationError);
-    Expect.throws(() => a.nullableFieldWithNoInit,
-        (error) => error is LateInitializationError);
+    Expect.throws<Error>(() => a.fieldWithNoInit);
+    Expect.throws<Error>(() => a.nullableFieldWithNoInit);
     Expect.equals(null, a.fieldWithOnlyCtorInit);
     Expect.equals(null, a.fieldWithOnlyBothInitAndCtorInit);
     Expect.equals(1, initCalls);
     Expect.equals(123, a.fieldWithInit);
     Expect.equals(123, a.fieldWithTrivialInit);
     Expect.equals(null, a.fieldWithNullInit);
-    Expect.throws(
-        () => a.fieldWithNoInit, (error) => error is LateInitializationError);
-    Expect.throws(() => a.nullableFieldWithNoInit,
-        (error) => error is LateInitializationError);
+    Expect.throws<Error>(() => a.fieldWithNoInit);
+    Expect.throws<Error>(() => a.nullableFieldWithNoInit);
     Expect.equals(null, a.fieldWithOnlyCtorInit);
     Expect.equals(null, a.fieldWithOnlyBothInitAndCtorInit);
     Expect.equals(1, initCalls);
diff --git a/tests/language/nnbd/syntax/late_modifier_runtime_error_test.dart b/tests/language/nnbd/syntax/late_modifier_runtime_error_test.dart
index c410775..d561457 100644
--- a/tests/language/nnbd/syntax/late_modifier_runtime_error_test.dart
+++ b/tests/language/nnbd/syntax/late_modifier_runtime_error_test.dart
@@ -32,13 +32,8 @@
   }
 }
 
-bool isValidError(error, String message) {
-  if (error is LateInitializationError) {
-    Expect.equals('LateInitializationError: $message', error.toString());
-    return true;
-  }
-  return false;
-}
+bool isValidError(error, String message) =>
+    (error is Error && 'LateInitializationError: $message' == error.toString());
 
 main() {
   // Static fields.
diff --git a/tests/language/nnbd/syntax/late_modifier_static_field_test.dart b/tests/language/nnbd/syntax/late_modifier_static_field_test.dart
index ffa8b37..d536db6 100644
--- a/tests/language/nnbd/syntax/late_modifier_static_field_test.dart
+++ b/tests/language/nnbd/syntax/late_modifier_static_field_test.dart
@@ -31,14 +31,12 @@
   Expect.equals(123, A.fieldWithInit);
   Expect.equals(123, A.fieldWithTrivialInit);
   Expect.equals(null, A.fieldWithNullInit);
-  Expect.throws(
-      () => A.fieldWithNoInit, (error) => error is LateInitializationError);
+  Expect.throws<Error>(() => A.fieldWithNoInit);
   Expect.equals(1, initCalls);
   Expect.equals(123, A.fieldWithInit);
   Expect.equals(123, A.fieldWithTrivialInit);
   Expect.equals(null, A.fieldWithNullInit);
-  Expect.throws(
-      () => A.fieldWithNoInit, (error) => error is LateInitializationError);
+  Expect.throws<Error>(() => A.fieldWithNoInit);
   Expect.equals(1, initCalls);
   A.fieldWithInit = 456;
   A.fieldWithTrivialInit = 456;
diff --git a/tests/language/nnbd/syntax/late_modifier_static_final_field_test.dart b/tests/language/nnbd/syntax/late_modifier_static_final_field_test.dart
index ff6e144..66fd9bb 100644
--- a/tests/language/nnbd/syntax/late_modifier_static_final_field_test.dart
+++ b/tests/language/nnbd/syntax/late_modifier_static_final_field_test.dart
@@ -29,11 +29,9 @@
   Expect.equals(null, A.fieldWithNullInit);
   Expect.equals(1, initCalls);
 
-  Expect.throws(
-      () => A.fieldWithNoInit, (error) => error is LateInitializationError);
+  Expect.throws<Error>(() => A.fieldWithNoInit);
   A.fieldWithNoInit = 123;
   Expect.equals(123, A.fieldWithNoInit);
-  Expect.throws(() => {A.fieldWithNoInit = 456},
-      (error) => error is LateInitializationError);
+  Expect.throws<Error>(() => {A.fieldWithNoInit = 456});
   Expect.equals(123, A.fieldWithNoInit);
 }
diff --git a/tests/standalone/io/regress_flutter_57125_test.dart b/tests/standalone/io/regress_flutter_57125_test.dart
index dfe54c1..1e71b83 100644
--- a/tests/standalone/io/regress_flutter_57125_test.dart
+++ b/tests/standalone/io/regress_flutter_57125_test.dart
@@ -6,7 +6,7 @@
 /// another process, is properly thrown as a SocketException. This test confirms
 /// the absence of a regression during the dart:io null safety migration where
 /// the late localAddress field wasn't initialized in an error path, raising a
-/// LateInitializationError instead.
+/// late initialization error instead.
 ///
 /// https://github.com/flutter/flutter/issues/57125
 
diff --git a/tests/standalone_2/io/regress_flutter_57125_test.dart b/tests/standalone_2/io/regress_flutter_57125_test.dart
index dfe54c1..1e71b83 100644
--- a/tests/standalone_2/io/regress_flutter_57125_test.dart
+++ b/tests/standalone_2/io/regress_flutter_57125_test.dart
@@ -6,7 +6,7 @@
 /// another process, is properly thrown as a SocketException. This test confirms
 /// the absence of a regression during the dart:io null safety migration where
 /// the late localAddress field wasn't initialized in an error path, raising a
-/// LateInitializationError instead.
+/// late initialization error instead.
 ///
 /// https://github.com/flutter/flutter/issues/57125
 
diff --git a/tools/VERSION b/tools/VERSION
index d95fb06..5f084e3 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 12
 PATCH 0
-PRERELEASE 219
+PRERELEASE 220
 PRERELEASE_PATCH 0
\ No newline at end of file