Version 2.10.0-1.0.dev

Merge commit '01c217ecc9d17f6e2d35300525605d53a750cda0' into dev
diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json
index 6cfa6ab..57c4b70 100644
--- a/.dart_tool/package_config.json
+++ b/.dart_tool/package_config.json
@@ -354,6 +354,12 @@
       "languageVersion": "2.2"
     },
     {
+      "name": "language_versioning_2.7_test",
+      "rootUri": "../pkg/language_versioning_2.7_test",
+      "packageUri": "lib/",
+      "languageVersion": "2.7"
+    },
+    {
       "name": "linter",
       "rootUri": "../third_party/pkg/linter",
       "packageUri": "lib/",
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c69d96a..465ff3e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 ## 2.10.0
 
+### Dart VM
+
+*   Introduces `Dart_FinalizableHandle`s. They do auto-delete, and the weakly
+    referred object cannot be accessed through them.
+
 ## 2.9.0
 
 ### Language
@@ -72,6 +77,11 @@
 
 [#42714]: https://github.com/dart-lang/sdk/issues/42714
 
+#### `dart:typed_data`
+
+*   Class `BytesBuilder` is moved from `dart:io` to `dart:typed_data`.
+    It's temporarily being exported from `dart:io` as well.
+
 ### Tools
 
 #### dartfmt
@@ -136,7 +146,7 @@
 * Preserve Windows line endings in `pubspec.lock` if they are already there
   ([#2489](https://github.com/dart-lang/pub/pull/2489)).
 * Better terminal color-detection. Use colors in terminals on Windows.
-* Fix git folder names in cache, allowing for ssh-style git 
+* Fix git folder names in cache, allowing for ssh-style git
   dependencies.
 * Fix: Avoid precompilation of dependencies of global packages.
 
diff --git a/DEPS b/DEPS
index 842b0bd..85f2bd0 100644
--- a/DEPS
+++ b/DEPS
@@ -39,7 +39,7 @@
 
   # Checked-in SDK version. The checked-in SDK is a Dart SDK distribution in a
   # cipd package used to run Dart scripts in the build and test infrastructure.
-  "sdk_tag": "version:2.10.0-0.2-preview",
+  "sdk_tag": "version:2.10.0-0.0.dev",
 
   # co19 is a cipd package. Use update.sh in tests/co19[_2] to update these
   # hashes. It requires access to the dart-build-access group, which EngProd
@@ -54,10 +54,10 @@
   # As Flutter does, we use Fuchsia's GN and Clang toolchain. These revision
   # should be kept up to date with the revisions pulled by the Flutter engine.
   # The list of revisions for these tools comes from Fuchsia, here:
-  # https://fuchsia.googlesource.com/buildtools/+/master/fuchsia.ensure
+  # https://fuchsia.googlesource.com/integration/+/HEAD/prebuilts
   # If there are problems with the toolchain, contact fuchsia-toolchain@.
   "clang_revision": "7e9747b50bcb1be28d4a3236571e8050835497a6",
-  "gn_revision": "239533d2d91a04b3317ca9101cf7189f4e651e4d",
+  "gn_revision": "1e3fd10c5df6b704fc764ee388149e4f32862823",
 
   # Scripts that make 'git cl format' work.
   "clang_format_scripts_rev": "c09c8deeac31f05bd801995c475e7c8070f9ecda",
@@ -539,7 +539,7 @@
     "packages": [
       {
         "package": "dart/cfe/dart2js_dills",
-        "version": "binary_version:43_2",
+        "version": "binary_version:44_2",
       }
     ],
     "dep_type": "cipd",
diff --git a/build/toolchain/mac/BUILD.gn b/build/toolchain/mac/BUILD.gn
index 2c1839f..c6f28d3 100644
--- a/build/toolchain/mac/BUILD.gn
+++ b/build/toolchain/mac/BUILD.gn
@@ -130,7 +130,7 @@
       temporary_tocname = dylib + ".tmp"
 
       does_reexport_command = "[ ! -e $dylib -o ! -e $tocname ] || otool -l $dylib | grep -q LC_REEXPORT_DYLIB"
-      link_command = "$ld -shared $sysroot_flags $toolchain_flags {{ldflags}} -o $dylib -Wl,-filelist,$rspfile {{solibs}} {{libs}}"
+      link_command = "$ld -shared $sysroot_flags $toolchain_flags {{ldflags}} -o $dylib -Wl,-filelist,$rspfile {{solibs}} {{libs}} {{frameworks}}"
       replace_command = "if ! cmp -s $temporary_tocname $tocname; then mv $temporary_tocname $tocname"
       extract_toc_command = "{ otool -l $dylib | grep LC_ID_DYLIB -A 5; nm -gP $dylib | cut -f1-2 -d' ' | grep -v U\$\$; true; }"
 
@@ -171,7 +171,7 @@
         stripped_outfile = "{{root_out_dir}}/exe.stripped/$exename"
       }
 
-      command = "$ld $sysroot_flags $toolchain_flags {{ldflags}} -Xlinker -rpath -Xlinker @executable_path/Frameworks -o $outfile -Wl,-filelist,$rspfile {{solibs}} {{libs}}"
+      command = "$ld $sysroot_flags $toolchain_flags {{ldflags}} -Xlinker -rpath -Xlinker @executable_path/Frameworks -o $outfile -Wl,-filelist,$rspfile {{solibs}} {{libs}} {{frameworks}}"
       if (defined(invoker.strip)) {
         strip = invoker.strip
         strip_command = "${strip} -x -o $stripped_outfile $outfile"
diff --git a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
index 0ebf75a..276b71e 100644
--- a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
@@ -1309,6 +1309,14 @@
 }
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Null> codeConstEvalNonNull = messageConstEvalNonNull;
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const MessageCode messageConstEvalNonNull = const MessageCode(
+    "ConstEvalNonNull",
+    message: r"""Constant expression must be non-null.""");
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Code<Null> codeConstEvalNotListOrSetInSpread =
     messageConstEvalNotListOrSetInSpread;
 
diff --git a/pkg/analysis_server/benchmark/benchmarks.dart b/pkg/analysis_server/benchmark/benchmarks.dart
index 788ab0f..f43c4e6 100644
--- a/pkg/analysis_server/benchmark/benchmarks.dart
+++ b/pkg/analysis_server/benchmark/benchmarks.dart
@@ -224,8 +224,6 @@
         benchmarks.firstWhere((b) => b.id == benchmarkId, orElse: () {
       print("Benchmark '$benchmarkId' not found.");
       exit(1);
-      // Never reached.
-      return null;
     });
 
     var actualIterations = repeatCount;
diff --git a/pkg/analysis_server/lib/src/cider/completion.dart b/pkg/analysis_server/lib/src/cider/completion.dart
index d9f2189..fac8c25 100644
--- a/pkg/analysis_server/lib/src/cider/completion.dart
+++ b/pkg/analysis_server/lib/src/cider/completion.dart
@@ -11,6 +11,7 @@
 import 'package:analysis_server/src/services/completion/dart/local_library_contributor.dart';
 import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
 import 'package:analysis_server/src/services/completion/filtering/fuzzy_matcher.dart';
+import 'package:analyzer/dart/analysis/results.dart';
 import 'package:analyzer/dart/element/element.dart' show LibraryElement;
 import 'package:analyzer/src/dart/analysis/performance_logger.dart';
 import 'package:analyzer/src/dart/micro/resolve_file.dart';
@@ -56,6 +57,7 @@
     @required String path,
     @required int line,
     @required int column,
+    @visibleForTesting void Function(ResolvedUnitResult) testResolvedUnit,
   }) async {
     return _performanceRoot.runAsync('completion', (performance) async {
       var resolvedUnit = performance.run('resolution', (performance) {
@@ -67,6 +69,10 @@
         );
       });
 
+      if (testResolvedUnit != null) {
+        testResolvedUnit(resolvedUnit);
+      }
+
       var lineInfo = resolvedUnit.lineInfo;
       var offset = lineInfo.getOffsetOfLine(line) + column;
 
@@ -97,6 +103,7 @@
             return await manager.computeSuggestions(
               performance,
               completionRequest,
+              enableOverrideContributor: false,
               enableUriContributor: false,
             );
           });
@@ -200,6 +207,8 @@
     @required LibraryElement element,
     @required OperationPerformanceImpl performance,
   }) {
+    performance.getDataInt('libraryCount').increment();
+
     var path = element.source.fullName;
     var signature = _fileResolver.getLibraryLinkedSignature(
       path: path,
@@ -208,6 +217,7 @@
 
     var cacheEntry = _cache._importedLibraries[path];
     if (cacheEntry == null || cacheEntry.signature != signature) {
+      performance.getDataInt('libraryCompute').increment();
       computedImportedLibraries.add(path);
       var suggestions = _librarySuggestions(element);
       cacheEntry = _CiderImportedLibrarySuggestions(
diff --git a/pkg/analysis_server/lib/src/domain_completion.dart b/pkg/analysis_server/lib/src/domain_completion.dart
index a9d146d..2d0f0b1 100644
--- a/pkg/analysis_server/lib/src/domain_completion.dart
+++ b/pkg/analysis_server/lib/src/domain_completion.dart
@@ -104,11 +104,7 @@
         await perf.runAsync(contributorTag, (performance) async {
           try {
             suggestions.addAll(
-              await manager.computeSuggestions(
-                performance,
-                request,
-                enableUriContributor: true,
-              ),
+              await manager.computeSuggestions(performance, request),
             );
           } on AbortCompletion {
             suggestions.clear();
diff --git a/pkg/analysis_server/lib/src/domains/execution/completion.dart b/pkg/analysis_server/lib/src/domains/execution/completion.dart
index ead5ad2..ff2796b 100644
--- a/pkg/analysis_server/lib/src/domains/execution/completion.dart
+++ b/pkg/analysis_server/lib/src/domains/execution/completion.dart
@@ -96,7 +96,6 @@
         return await contributor.computeSuggestions(
           performance,
           request,
-          enableUriContributor: true,
         );
       },
     );
diff --git a/pkg/analysis_server/lib/src/edit/edit_domain.dart b/pkg/analysis_server/lib/src/edit/edit_domain.dart
index a175b2e..8ce7662 100644
--- a/pkg/analysis_server/lib/src/edit/edit_domain.dart
+++ b/pkg/analysis_server/lib/src/edit/edit_domain.dart
@@ -21,6 +21,7 @@
 import 'package:analysis_server/src/services/completion/statement/statement_completion.dart';
 import 'package:analysis_server/src/services/correction/assist.dart';
 import 'package:analysis_server/src/services/correction/assist_internal.dart';
+import 'package:analysis_server/src/services/correction/bulk_fix_processor.dart';
 import 'package:analysis_server/src/services/correction/change_workspace.dart';
 import 'package:analysis_server/src/services/correction/fix.dart';
 import 'package:analysis_server/src/services/correction/fix/analysis_options/fix_generator.dart';
@@ -37,7 +38,6 @@
 import 'package:analyzer/dart/analysis/session.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/error/error.dart' as engine;
-import 'package:analyzer/error/error.dart';
 import 'package:analyzer/exception/exception.dart';
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/source/line_info.dart';
@@ -111,34 +111,11 @@
         resource.collectDartFilePaths(paths);
       }
 
-      var errors = await _getErrors(params.included);
-
-      var sourceChange = SourceChange('bulk_fix');
-
-      // todo (pq): push loop into a BulkFixProcessor
-      for (var error in errors) {
-        // todo (pq): filtering will happen in processor
-        List<AnalysisErrorFixes> fixes;
-        while (fixes == null) {
-          try {
-            fixes = await _computeServerErrorFixes(
-                request, error.source.fullName, error.offset);
-          } on InconsistentAnalysisException {
-            // Loop around to try again to compute the fixes.
-          }
-        }
-
-        // In the long run we'll want to support the case where the desired fix
-        // is the first one.  For now, we just assume that the first way is the
-        // only or best way.
-        var edits = fixes[0].fixes[0].edits;
-        for (var edit in edits) {
-          sourceChange.addFileEdit(edit);
-        }
-      }
-
-      var response =
-          EditBulkFixesResult(sourceChange.edits).toResponse(request.id);
+      var workspace = DartChangeWorkspace(server.currentSessions);
+      var processor = BulkFixProcessor(workspace);
+      var changeBuilder = await processor.fixErrorsInLibraries(paths);
+      var response = EditBulkFixesResult(changeBuilder.sourceChange.edits)
+          .toResponse(request.id);
       server.sendResponse(response);
     } catch (exception, stackTrace) {
       server.sendServerErrorNotification('Exception while getting bulk fixes',
@@ -859,39 +836,6 @@
     server.sendResponse(result.toResponse(request.id));
   }
 
-  /// todo (pq): (temporary) -> to be moved and redesigned in BulkFixesProcessor
-  Future<List<AnalysisError>> _getErrors(List<String> pathsToProcess) async {
-    var errors = <AnalysisError>[];
-
-    var pathsProcessed = <String>{};
-    for (var path in pathsToProcess) {
-      var driver = server.getAnalysisDriver(path);
-      switch (await driver.getSourceKind(path)) {
-        case SourceKind.PART:
-          // todo (pq): ensure parts are processed (see `edit_dartfix.dart`)
-          continue;
-          break;
-        case SourceKind.LIBRARY:
-          var result = await driver.getResolvedLibrary(path);
-          if (result != null) {
-            for (var unit in result.units) {
-              if (pathsToProcess.contains(unit.path) &&
-                  !pathsProcessed.contains(unit.path)) {
-                for (var error in unit.errors) {
-                  errors.add(error);
-                }
-                pathsProcessed.add(unit.path);
-              }
-            }
-          }
-          break;
-        default:
-          break;
-      }
-    }
-    return errors;
-  }
-
   YamlMap _getOptions(SourceFactory sourceFactory, String content) {
     var optionsProvider = AnalysisOptionsProvider(sourceFactory);
     try {
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart
index e96b54a..272057f 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart
@@ -217,7 +217,6 @@
         final serverSuggestions = await contributor.computeSuggestions(
           perf,
           completionRequest,
-          enableUriContributor: true,
         );
 
         if (token.isCancellationRequested) {
diff --git a/pkg/analysis_server/lib/src/server/driver.dart b/pkg/analysis_server/lib/src/server/driver.dart
index 78a4734..24504db 100644
--- a/pkg/analysis_server/lib/src/server/driver.dart
+++ b/pkg/analysis_server/lib/src/server/driver.dart
@@ -327,6 +327,14 @@
     analysisServerOptions.newAnalysisDriverLog =
         results[NEW_ANALYSIS_DRIVER_LOG];
     analysisServerOptions.clientId = results[CLIENT_ID];
+    analysisServerOptions.useLanguageServerProtocol = results[USE_LSP];
+    // For clients that don't supply their own identifier, use a default based on
+    // whether the server will run in LSP mode or not.
+    analysisServerOptions.clientId ??=
+        analysisServerOptions.useLanguageServerProtocol
+            ? 'unknown.client.lsp'
+            : 'unknown.client.classic';
+
     analysisServerOptions.clientVersion = results[CLIENT_VERSION];
     analysisServerOptions.cacheFolder = results[CACHE_FOLDER];
     if (results.wasParsed(ENABLE_EXPERIMENT_OPTION)) {
@@ -334,7 +342,6 @@
           (results[ENABLE_EXPERIMENT_OPTION] as List).cast<String>().toList();
     }
     analysisServerOptions.useFastaParser = results[USE_FASTA_PARSER];
-    analysisServerOptions.useLanguageServerProtocol = results[USE_LSP];
     analysisServerOptions.useNewRelevance = results[USE_NEW_RELEVANCE];
 
     // Read in any per-SDK overrides specified in <sdk>/config/settings.json.
@@ -383,8 +390,7 @@
     analysisServerOptions.analytics = analytics;
 
     // Record the client name as the application installer ID.
-    analytics.setSessionValue(
-        'aiid', analysisServerOptions.clientId ?? 'not-set');
+    analytics.setSessionValue('aiid', analysisServerOptions.clientId);
     if (analysisServerOptions.clientVersion != null) {
       analytics.setSessionValue('cd1', analysisServerOptions.clientVersion);
     }
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart b/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
index 2d677c2..e2e4478 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
@@ -51,7 +51,6 @@
 import 'package:analyzer_plugin/protocol/protocol_common.dart' as protocol;
 import 'package:analyzer_plugin/src/utilities/completion/completion_target.dart';
 import 'package:analyzer_plugin/src/utilities/completion/optype.dart';
-import 'package:meta/meta.dart';
 
 /// [DartCompletionManager] determines if a completion request is Dart specific
 /// and forwards those requests to all [DartCompletionContributor]s.
@@ -103,7 +102,8 @@
   Future<List<CompletionSuggestion>> computeSuggestions(
     OperationPerformanceImpl performance,
     CompletionRequest request, {
-    @required bool enableUriContributor,
+    bool enableOverrideContributor = true,
+    bool enableUriContributor = true,
   }) async {
     request.checkAborted();
     if (!AnalysisEngine.isDartFileName(request.result.path)) {
@@ -146,7 +146,7 @@
       LocalLibraryContributor(),
       LocalReferenceContributor(),
       NamedConstructorContributor(),
-      OverrideContributor(),
+      if (enableOverrideContributor) OverrideContributor(),
       StaticMemberContributor(),
       TypeMemberContributor(),
       if (enableUriContributor) UriContributor(),
diff --git a/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart b/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart
index 6b19e69..6c0dc57 100644
--- a/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart
+++ b/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart
@@ -975,7 +975,7 @@
       if (catchNode.onKeyword != null) {
         if (catchNode.exceptionType.length == 0 ||
             null !=
-                _findError(StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE,
+                _findError(CompileTimeErrorCode.NON_TYPE_IN_CATCH_CLAUSE,
                     partialMatch: "name 'catch")) {
           var src = utils.getNodeText(catchNode);
           if (src.startsWith(RegExp(r'on[ \t]+'))) {
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 4c83d54..ee307b7 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
@@ -8,6 +8,7 @@
 import 'package:analysis_server/plugin/edit/fix/fix_dart.dart';
 import 'package:analysis_server/src/services/correction/change_workspace.dart';
 import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
+import 'package:analysis_server/src/services/correction/dart/add_override.dart';
 import 'package:analysis_server/src/services/correction/dart/convert_documentation_into_line.dart';
 import 'package:analysis_server/src/services/correction/dart/remove_const.dart';
 import 'package:analysis_server/src/services/correction/dart/remove_unnecessary_new.dart';
@@ -27,6 +28,7 @@
   /// correction producer used to build a fix for that diagnostic. The
   /// generators used for non-lint diagnostics are in the [nonLintProducerMap].
   static const Map<String, ProducerGenerator> lintProducerMap = {
+    LintNames.annotate_overrides: AddOverride.newInstance,
     LintNames.avoid_single_cascade_in_expression_statements:
         ReplaceCascadeWithDot.newInstance,
     LintNames.prefer_equal_for_default_values:
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart
index fb8c61b..30ae5ef 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart
@@ -27,6 +27,13 @@
     if (node is! SimpleIdentifier) {
       return;
     }
+
+    var classDeclaration = node.thisOrAncestorOfType<ClassOrMixinDeclaration>();
+    if (classDeclaration == null ||
+        !flutter.isDiagnosticable(classDeclaration.declaredElement.thisType)) {
+      return;
+    }
+
     SimpleIdentifier name = node;
     final parent = node.parent;
 
@@ -98,10 +105,6 @@
       builder.writeln("$constructorName('${name.name}', ${name.name}));");
     }
 
-    final classDeclaration = parent.thisOrAncestorOfType<ClassDeclaration>();
-    if (classDeclaration == null) {
-      return;
-    }
     final debugFillProperties =
         classDeclaration.getMethod('debugFillProperties');
     if (debugFillProperties == null) {
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/create_constructor.dart b/pkg/analysis_server/lib/src/services/correction/dart/create_constructor.dart
index 3c8f0c8..af90fd1 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/create_constructor.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/create_constructor.dart
@@ -65,10 +65,10 @@
     // prepare target ClassDeclaration
     ClassElement targetElement = targetType.element;
     var targetResult = await sessionHelper.getElementDeclaration(targetElement);
-    if (targetResult.node is! ClassOrMixinDeclaration) {
+    var targetNode = targetResult.node;
+    if (targetNode is! ClassDeclaration) {
       return;
     }
-    ClassOrMixinDeclaration targetNode = targetResult.node;
 
     // prepare location
     var targetLocation = CorrectionUtils(targetResult.resolvedUnit)
@@ -108,10 +108,10 @@
     // prepare target ClassDeclaration
     var targetElement = constructorElement.enclosingElement;
     var targetResult = await sessionHelper.getElementDeclaration(targetElement);
-    if (targetResult.node is! ClassOrMixinDeclaration) {
+    var targetNode = targetResult.node;
+    if (targetNode is! ClassDeclaration) {
       return;
     }
-    ClassOrMixinDeclaration targetNode = targetResult.node;
 
     // prepare location
     var targetLocation = CorrectionUtils(targetResult.resolvedUnit)
diff --git a/pkg/analysis_server/lib/src/services/correction/fix.dart b/pkg/analysis_server/lib/src/services/correction/fix.dart
index ee5e519..b9c3497 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix.dart
@@ -14,27 +14,29 @@
 
 /// Return true if this [errorCode] is likely to have a fix associated with it.
 bool hasFix(ErrorCode errorCode) =>
-    errorCode == StaticWarningCode.UNDEFINED_CLASS_BOOLEAN ||
-    errorCode == StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER ||
-    errorCode == StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR ||
+    errorCode == CompileTimeErrorCode.UNDEFINED_CLASS_BOOLEAN ||
+    errorCode == CompileTimeErrorCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER ||
+    errorCode == CompileTimeErrorCode.NEW_WITH_UNDEFINED_CONSTRUCTOR ||
     errorCode ==
-        StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE ||
+        CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE ||
     errorCode ==
-        StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO ||
+        CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO ||
     errorCode ==
-        StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE ||
+        CompileTimeErrorCode
+            .NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE ||
     errorCode ==
-        StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR ||
+        CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR ||
     errorCode ==
-        StaticWarningCode
+        CompileTimeErrorCode
             .NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS ||
-    errorCode == StaticWarningCode.CAST_TO_NON_TYPE ||
-    errorCode == StaticWarningCode.TYPE_TEST_WITH_UNDEFINED_NAME ||
-    errorCode == StaticWarningCode.FINAL_NOT_INITIALIZED ||
-    errorCode == StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1 ||
-    errorCode == StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_2 ||
-    errorCode == StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS ||
-    errorCode == StaticWarningCode.UNDEFINED_IDENTIFIER ||
+    errorCode == CompileTimeErrorCode.CAST_TO_NON_TYPE ||
+    errorCode == CompileTimeErrorCode.TYPE_TEST_WITH_UNDEFINED_NAME ||
+    errorCode == CompileTimeErrorCode.FINAL_NOT_INITIALIZED ||
+    errorCode == CompileTimeErrorCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1 ||
+    errorCode == CompileTimeErrorCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_2 ||
+    errorCode ==
+        CompileTimeErrorCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS ||
+    errorCode == CompileTimeErrorCode.UNDEFINED_IDENTIFIER ||
     errorCode ==
         CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE ||
     errorCode == CompileTimeErrorCode.INTEGER_LITERAL_IMPRECISE_AS_DOUBLE ||
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 c7dca1e..90f10f5 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -490,6 +490,9 @@
   /// generators used for lint rules are in the [lintMultiProducerMap].
   static const Map<ErrorCode, List<MultiProducerGenerator>>
       nonLintMultiProducerMap = {
+    CompileTimeErrorCode.CAST_TO_NON_TYPE: [
+      ImportLibrary.forType,
+    ],
     CompileTimeErrorCode.CONST_WITH_NON_TYPE: [
       ImportLibrary.forType,
     ],
@@ -512,6 +515,9 @@
     CompileTimeErrorCode.MIXIN_OF_NON_CLASS: [
       ImportLibrary.forType,
     ],
+    CompileTimeErrorCode.NEW_WITH_NON_TYPE: [
+      ImportLibrary.forType,
+    ],
     CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT: [
       AddSuperConstructorInvocation.newInstance,
     ],
@@ -519,6 +525,15 @@
       AddSuperConstructorInvocation.newInstance,
       CreateConstructorSuper.newInstance,
     ],
+    CompileTimeErrorCode.NON_TYPE_IN_CATCH_CLAUSE: [
+      ImportLibrary.forType,
+    ],
+    CompileTimeErrorCode.NOT_A_TYPE: [
+      ImportLibrary.forType,
+    ],
+    CompileTimeErrorCode.TYPE_TEST_WITH_UNDEFINED_NAME: [
+      ImportLibrary.forType,
+    ],
     CompileTimeErrorCode.UNDEFINED_ANNOTATION: [
       ImportLibrary.forTopLevelVariable,
       ImportLibrary.forType,
@@ -529,6 +544,12 @@
     CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT: [
       AddSuperConstructorInvocation.newInstance,
     ],
+    CompileTimeErrorCode.UNDEFINED_IDENTIFIER: [
+      ImportLibrary.forExtension,
+      ImportLibrary.forFunction,
+      ImportLibrary.forTopLevelVariable,
+      ImportLibrary.forType,
+    ],
     CompileTimeErrorCode.UNDEFINED_NAMED_PARAMETER: [
       ChangeArgumentName.newInstance,
     ],
@@ -541,27 +562,6 @@
     HintCode.SDK_VERSION_ASYNC_EXPORTED_FROM_CORE: [
       ImportLibrary.dartAsync,
     ],
-    StaticWarningCode.CAST_TO_NON_TYPE: [
-      ImportLibrary.forType,
-    ],
-    StaticWarningCode.NEW_WITH_NON_TYPE: [
-      ImportLibrary.forType,
-    ],
-    StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE: [
-      ImportLibrary.forType,
-    ],
-    StaticWarningCode.NOT_A_TYPE: [
-      ImportLibrary.forType,
-    ],
-    StaticWarningCode.TYPE_TEST_WITH_UNDEFINED_NAME: [
-      ImportLibrary.forType,
-    ],
-    StaticWarningCode.UNDEFINED_IDENTIFIER: [
-      ImportLibrary.forExtension,
-      ImportLibrary.forFunction,
-      ImportLibrary.forTopLevelVariable,
-      ImportLibrary.forType,
-    ],
     StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT: [
       ImportLibrary.forType,
     ],
@@ -584,12 +584,31 @@
   /// correction producers used to build fixes for those diagnostics. The
   /// generators used for lint rules are in the [lintProducerMap].
   static const Map<ErrorCode, List<ProducerGenerator>> nonLintProducerMap = {
+    CompileTimeErrorCode.ASSIGNMENT_TO_FINAL: [
+      MakeFieldNotFinal.newInstance,
+    ],
+    CompileTimeErrorCode.ASSIGNMENT_TO_FINAL_LOCAL: [
+      MakeVariableNotFinal.newInstance,
+    ],
+    CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE: [
+      WrapInText.newInstance,
+    ],
     CompileTimeErrorCode.ASYNC_FOR_IN_WRONG_CONTEXT: [
       AddAsync.newInstance,
     ],
     CompileTimeErrorCode.AWAIT_IN_WRONG_CONTEXT: [
       AddAsync.newInstance,
     ],
+    CompileTimeErrorCode.CAST_TO_NON_TYPE: [
+      ChangeTo.classOrMixin,
+      CreateClass.newInstance,
+      CreateMixin.newInstance,
+    ],
+    CompileTimeErrorCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER: [
+      CreateMissingOverrides.newInstance,
+      CreateNoSuchMethod.newInstance,
+      MakeClassAbstract.newInstance,
+    ],
     CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE: [
       UseConst.newInstance,
     ],
@@ -619,6 +638,19 @@
       CreateConstructor.newInstance,
       ConvertToNamedArguments.newInstance,
     ],
+    CompileTimeErrorCode.FINAL_NOT_INITIALIZED: [
+      AddLate.newInstance,
+      CreateConstructorForFinalFields.newInstance,
+    ],
+    CompileTimeErrorCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1: [
+      AddFieldFormalParameters.newInstance,
+    ],
+    CompileTimeErrorCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_2: [
+      AddFieldFormalParameters.newInstance,
+    ],
+    CompileTimeErrorCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS: [
+      AddFieldFormalParameters.newInstance,
+    ],
     CompileTimeErrorCode.IMPLEMENTS_NON_CLASS: [
       ChangeTo.classOrMixin,
       CreateClass.newInstance,
@@ -643,6 +675,43 @@
       ChangeTo.classOrMixin,
       CreateClass.newInstance,
     ],
+    CompileTimeErrorCode.NEW_WITH_NON_TYPE: [
+      ChangeTo.classOrMixin,
+    ],
+    CompileTimeErrorCode.NEW_WITH_UNDEFINED_CONSTRUCTOR: [
+      CreateConstructor.newInstance,
+    ],
+    CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS:
+        [
+      CreateMissingOverrides.newInstance,
+      CreateNoSuchMethod.newInstance,
+      MakeClassAbstract.newInstance,
+    ],
+    CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR: [
+      CreateMissingOverrides.newInstance,
+      CreateNoSuchMethod.newInstance,
+      MakeClassAbstract.newInstance,
+    ],
+    CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE: [
+      CreateMissingOverrides.newInstance,
+      CreateNoSuchMethod.newInstance,
+      MakeClassAbstract.newInstance,
+    ],
+    CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE: [
+      CreateMissingOverrides.newInstance,
+      CreateNoSuchMethod.newInstance,
+      MakeClassAbstract.newInstance,
+    ],
+    CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO: [
+      CreateMissingOverrides.newInstance,
+      CreateNoSuchMethod.newInstance,
+      MakeClassAbstract.newInstance,
+    ],
+    CompileTimeErrorCode.NOT_A_TYPE: [
+      ChangeTo.classOrMixin,
+      CreateClass.newInstance,
+      CreateMixin.newInstance,
+    ],
     CompileTimeErrorCode.NOT_INITIALIZED_NON_NULLABLE_INSTANCE_FIELD: [
       AddLate.newInstance,
     ],
@@ -658,6 +727,11 @@
     CompileTimeErrorCode.NULLABLE_TYPE_IN_WITH_CLAUSE: [
       RemoveQuestionMark.newInstance,
     ],
+    CompileTimeErrorCode.TYPE_TEST_WITH_UNDEFINED_NAME: [
+      ChangeTo.classOrMixin,
+      CreateClass.newInstance,
+      CreateMixin.newInstance,
+    ],
     CompileTimeErrorCode.UNDEFINED_ANNOTATION: [
       ChangeTo.annotation,
       CreateClass.newInstance,
@@ -667,6 +741,9 @@
       CreateClass.newInstance,
       CreateMixin.newInstance,
     ],
+    CompileTimeErrorCode.UNDEFINED_CLASS_BOOLEAN: [
+      ReplaceBooleanWithBool.newInstance,
+    ],
     CompileTimeErrorCode.UNDEFINED_EXTENSION_GETTER: [
       ChangeTo.getterOrSetter,
       CreateGetter.newInstance,
@@ -679,6 +756,19 @@
       ChangeTo.getterOrSetter,
       CreateSetter.newInstance,
     ],
+    CompileTimeErrorCode.UNDEFINED_IDENTIFIER: [
+      ChangeTo.getterOrSetter,
+      CreateClass.newInstance,
+      CreateField.newInstance,
+      CreateGetter.newInstance,
+      CreateLocalVariable.newInstance,
+      CreateMethodOrFunction.newInstance,
+      CreateMixin.newInstance,
+      CreateSetter.newInstance,
+    ],
+    CompileTimeErrorCode.UNDEFINED_IDENTIFIER_AWAIT: [
+      AddAsync.newInstance,
+    ],
     CompileTimeErrorCode.UNDEFINED_NAMED_PARAMETER: [
       AddMissingParameterNamed.newInstance,
       ConvertFlutterChild.newInstance,
@@ -908,101 +998,12 @@
       //  updated so that only the appropriate subset is generated.
       QualifyReference.newInstance,
     ],
-    StaticWarningCode.ASSIGNMENT_TO_FINAL: [
-      MakeFieldNotFinal.newInstance,
-    ],
-    StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL: [
-      MakeVariableNotFinal.newInstance,
-    ],
-    StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE: [
-      WrapInText.newInstance,
-    ],
-    StaticWarningCode.CAST_TO_NON_TYPE: [
-      ChangeTo.classOrMixin,
-      CreateClass.newInstance,
-      CreateMixin.newInstance,
-    ],
-    StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER: [
-      CreateMissingOverrides.newInstance,
-      CreateNoSuchMethod.newInstance,
-      MakeClassAbstract.newInstance,
-    ],
     StaticWarningCode.DEAD_NULL_AWARE_EXPRESSION: [
       RemoveDeadIfNull.newInstance,
     ],
-    StaticWarningCode.FINAL_NOT_INITIALIZED: [
-      AddLate.newInstance,
-      CreateConstructorForFinalFields.newInstance,
-    ],
-    StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1: [
-      AddFieldFormalParameters.newInstance,
-    ],
-    StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_2: [
-      AddFieldFormalParameters.newInstance,
-    ],
-    StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS: [
-      AddFieldFormalParameters.newInstance,
-    ],
     StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH: [
       AddMissingEnumCaseClauses.newInstance,
     ],
-    StaticWarningCode.NEW_WITH_NON_TYPE: [
-      ChangeTo.classOrMixin,
-    ],
-    StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR: [
-      CreateConstructor.newInstance,
-    ],
-    StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS: [
-      CreateMissingOverrides.newInstance,
-      CreateNoSuchMethod.newInstance,
-      MakeClassAbstract.newInstance,
-    ],
-    StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR: [
-      CreateMissingOverrides.newInstance,
-      CreateNoSuchMethod.newInstance,
-      MakeClassAbstract.newInstance,
-    ],
-    StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE: [
-      CreateMissingOverrides.newInstance,
-      CreateNoSuchMethod.newInstance,
-      MakeClassAbstract.newInstance,
-    ],
-    StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE: [
-      CreateMissingOverrides.newInstance,
-      CreateNoSuchMethod.newInstance,
-      MakeClassAbstract.newInstance,
-    ],
-    StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO: [
-      CreateMissingOverrides.newInstance,
-      CreateNoSuchMethod.newInstance,
-      MakeClassAbstract.newInstance,
-    ],
-    StaticWarningCode.NOT_A_TYPE: [
-      ChangeTo.classOrMixin,
-      CreateClass.newInstance,
-      CreateMixin.newInstance,
-    ],
-    StaticWarningCode.TYPE_TEST_WITH_UNDEFINED_NAME: [
-      ChangeTo.classOrMixin,
-      CreateClass.newInstance,
-      CreateMixin.newInstance,
-    ],
-    StaticWarningCode.UNDEFINED_CLASS_BOOLEAN: [
-      ReplaceBooleanWithBool.newInstance,
-    ],
-    StaticWarningCode.UNDEFINED_IDENTIFIER: [
-      ChangeTo.getterOrSetter,
-      CreateClass.newInstance,
-      CreateField.newInstance,
-      CreateGetter.newInstance,
-      CreateLocalVariable.newInstance,
-      CreateMethodOrFunction.newInstance,
-      CreateMixin.newInstance,
-      CreateSetter.newInstance,
-    ],
-    StaticWarningCode.UNDEFINED_IDENTIFIER_AWAIT: [
-      AddAsync.newInstance,
-    ],
   };
 
   final DartFixContext fixContext;
diff --git a/pkg/analysis_server/lib/src/utilities/flutter.dart b/pkg/analysis_server/lib/src/utilities/flutter.dart
index d8cc17b..c7f167f 100644
--- a/pkg/analysis_server/lib/src/utilities/flutter.dart
+++ b/pkg/analysis_server/lib/src/utilities/flutter.dart
@@ -36,6 +36,9 @@
   final Uri _uriContainer = Uri.parse(
     'package:flutter/src/widgets/container.dart',
   );
+  final Uri _uriDiagnostics = Uri.parse(
+    'package:flutter/src/foundation/diagnostics.dart',
+  );
   final Uri _uriEdgeInsets = Uri.parse(
     'package:flutter/src/painting/edge_insets.dart',
   );
@@ -337,6 +340,35 @@
     return isColorElement(type.element);
   }
 
+  /// Return `true` if the given [type] is the flutter mixin `Diagnosticable`
+  /// or its subtype.
+  bool isDiagnosticable(DartType type) {
+    if (type is! InterfaceType) {
+      return false;
+    }
+
+    bool isDiagnosticableElement(ClassElement element) {
+      if (element == null) {
+        return false;
+      }
+
+      bool isExactDiagnosticable(ClassElement element) =>
+          element?.name == 'Diagnosticable' &&
+          element.source.uri == _uriDiagnostics;
+      if (isExactDiagnosticable(element)) {
+        return true;
+      }
+      for (var type in element.allSupertypes) {
+        if (isExactDiagnosticable(type.element)) {
+          return true;
+        }
+      }
+      return false;
+    }
+
+    return isDiagnosticableElement(type.element);
+  }
+
   /// Return `true` if the [element] is the Flutter class `Alignment`.
   bool isExactAlignment(ClassElement element) {
     return _isExactWidget(element, 'Alignment', _uriAlignment);
@@ -432,8 +464,8 @@
         isWidgetType(type.typeArguments[0]);
   }
 
-  /// Return `true` if the given [type] is the dart.ui class `Color`, or its
-  /// subtype.
+  /// Return `true` if the given [type] is the vector_math_64 class `Matrix4`,
+  /// or its subtype.
   bool isMatrix4(DartType type) {
     if (type is! InterfaceType) {
       return false;
diff --git a/pkg/analysis_server/test/analysis/notification_errors_test.dart b/pkg/analysis_server/test/analysis/notification_errors_test.dart
index f003fd6..07aa487e 100644
--- a/pkg/analysis_server/test/analysis/notification_errors_test.dart
+++ b/pkg/analysis_server/test/analysis/notification_errors_test.dart
@@ -426,9 +426,14 @@
   Future<void> test_StaticWarning() async {
     createProject();
     addTestFile('''
-main() {
-  final int foo;
-  print(foo);
+enum E {e1, e2}
+
+void f(E e) {
+  switch (e) {
+    case E.e1:
+      print(0);
+      break;
+  }
 }
 ''');
     await waitForTasksFinished();
@@ -436,7 +441,7 @@
     var errors = filesErrors[testFile];
     expect(errors, hasLength(1));
     var error = errors[0];
-    expect(error.severity, AnalysisErrorSeverity.ERROR);
+    expect(error.severity, AnalysisErrorSeverity.WARNING);
     expect(error.type, AnalysisErrorType.STATIC_WARNING);
   }
 }
diff --git a/pkg/analysis_server/test/analysis/notification_highlights2_test.dart b/pkg/analysis_server/test/analysis/notification_highlights2_test.dart
index 1113017..411e163 100644
--- a/pkg/analysis_server/test/analysis/notification_highlights2_test.dart
+++ b/pkg/analysis_server/test/analysis/notification_highlights2_test.dart
@@ -17,7 +17,7 @@
   defineReflectiveSuite(() {
     defineReflectiveTests(AnalysisNotificationHighlightsTest);
     defineReflectiveTests(HighlightsWithControlFlowCollectionsTest);
-    defineReflectiveTests(HighlightsWithNnbdTest);
+    defineReflectiveTests(HighlightsWithNullSafetyTest);
     defineReflectiveTests(HighlightTypeTest);
   });
 }
@@ -1297,7 +1297,7 @@
 }
 
 @reflectiveTest
-class HighlightsWithNnbdTest extends HighlightsTestSupport {
+class HighlightsWithNullSafetyTest extends HighlightsTestSupport {
   @override
   void createProject({Map<String, String> packageRoots}) {
     addAnalysisOptionsFile('''
diff --git a/pkg/analysis_server/test/analysis/notification_highlights_test.dart b/pkg/analysis_server/test/analysis/notification_highlights_test.dart
index d35cfe3..9432795 100644
--- a/pkg/analysis_server/test/analysis/notification_highlights_test.dart
+++ b/pkg/analysis_server/test/analysis/notification_highlights_test.dart
@@ -17,7 +17,7 @@
   defineReflectiveSuite(() {
     defineReflectiveTests(AnalysisNotificationHighlightsTest);
     defineReflectiveTests(HighlightsWithControlFlowCollectionsTest);
-    defineReflectiveTests(HighlightsWithNnbdTest);
+    defineReflectiveTests(HighlightsWithNullSafetyTest);
     defineReflectiveTests(HighlightTypeTest);
   });
 }
@@ -1145,7 +1145,7 @@
 }
 
 @reflectiveTest
-class HighlightsWithNnbdTest extends HighlightsTestSupport {
+class HighlightsWithNullSafetyTest extends HighlightsTestSupport {
   @override
   void createProject({Map<String, String> packageRoots}) {
     addAnalysisOptionsFile('''
diff --git a/pkg/analysis_server/test/edit/bulk_fixes_test.dart b/pkg/analysis_server/test/edit/bulk_fixes_test.dart
index 52fd967..d72f623 100644
--- a/pkg/analysis_server/test/edit/bulk_fixes_test.dart
+++ b/pkg/analysis_server/test/edit/bulk_fixes_test.dart
@@ -36,30 +36,21 @@
     handler = EditDomainHandler(server);
   }
 
-  Future<void> test_missingOverride() async {
+  Future<void> test_unnecessaryNew() async {
     createProject();
     addAnalysisOptionsFile('''
 linter:
   rules:
-    - annotate_overrides
+    - unnecessary_new
 ''');
     addTestFile('''
-class A {
-  void f() {}
-}
-class B extends A {
-  void f() { }
-}
+class A {}
+A f() => new A();
 ''');
 
     await assertEditEquals('''
-class A {
-  void f() {}
-}
-class B extends A {
-  @override
-  void f() { }
-}
+class A {}
+A f() => A();
 ''');
   }
 
diff --git a/pkg/analysis_server/test/mock_packages/flutter/lib/src/foundation/diagnostics.dart b/pkg/analysis_server/test/mock_packages/flutter/lib/src/foundation/diagnostics.dart
index 978d497..c2bae69 100644
--- a/pkg/analysis_server/test/mock_packages/flutter/lib/src/foundation/diagnostics.dart
+++ b/pkg/analysis_server/test/mock_packages/flutter/lib/src/foundation/diagnostics.dart
@@ -2,10 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-abstract class Diagnosticable with DiagnosticableMixin {}
-
+///// todo (pq): remove when linter 0.1.118 is integrated.
 mixin DiagnosticableMixin {}
 
+mixin Diagnosticable {}
+
+abstract class DiagnosticableTree with Diagnosticable {}
+
 class DiagnosticPropertiesBuilder {
   void add(DiagnosticsNode property) {}
 }
diff --git a/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/framework.dart b/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/framework.dart
index 3bc94fd7..bbe243f 100644
--- a/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/framework.dart
+++ b/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/framework.dart
@@ -47,7 +47,7 @@
   Widget build(BuildContext context) => null;
 }
 
-class Widget {
+class Widget extends DiagnosticableTree {
   final Key key;
 
   const Widget({this.key});
diff --git a/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart
index e6bab18..32b6dc8 100644
--- a/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart
@@ -16,7 +16,7 @@
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(KeywordContributorTest);
-    defineReflectiveTests(KeywordContributorWithNnbdTest);
+    defineReflectiveTests(KeywordContributorWithNullSafetyTest);
   });
 }
 
@@ -2348,7 +2348,7 @@
 }
 
 @reflectiveTest
-class KeywordContributorWithNnbdTest extends KeywordContributorTest {
+class KeywordContributorWithNullSafetyTest extends KeywordContributorTest {
   @override
   void setupResourceProvider() {
     super.setupResourceProvider();
diff --git a/pkg/analysis_server/test/services/completion/dart/relevance/named_argument_relevance_test.dart b/pkg/analysis_server/test/services/completion/dart/relevance/named_argument_relevance_test.dart
index 21fdd4d..8a51410 100644
--- a/pkg/analysis_server/test/services/completion/dart/relevance/named_argument_relevance_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/relevance/named_argument_relevance_test.dart
@@ -11,7 +11,7 @@
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(NamedArgumentRelevanceTest);
-    defineReflectiveTests(NamedArgumentRelevanceWithNnbdTest);
+    defineReflectiveTests(NamedArgumentRelevanceWithNullSafetyTest);
   });
 }
 
@@ -47,7 +47,8 @@
 }
 
 @reflectiveTest
-class NamedArgumentRelevanceWithNnbdTest extends NamedArgumentRelevanceTest {
+class NamedArgumentRelevanceWithNullSafetyTest
+    extends NamedArgumentRelevanceTest {
   @override
   List<String> get enabledExperiments => ['non-nullable'];
 
diff --git a/pkg/analysis_server/test/src/cider/completion_test.dart b/pkg/analysis_server/test/src/cider/completion_test.dart
index 4e0e47b..48875ac 100644
--- a/pkg/analysis_server/test/src/cider/completion_test.dart
+++ b/pkg/analysis_server/test/src/cider/completion_test.dart
@@ -3,7 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analysis_server/src/cider/completion.dart';
+import 'package:analyzer/dart/analysis/results.dart';
 import 'package:analyzer/source/line_info.dart';
+import 'package:analyzer/src/test_utilities/function_ast_visitor.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart'
     show CompletionSuggestion, CompletionSuggestionKind, ElementKind;
 import 'package:meta/meta.dart';
@@ -23,11 +25,11 @@
   final CiderCompletionCache _completionCache = CiderCompletionCache();
 
   CiderCompletionComputer _computer;
+  void Function(ResolvedUnitResult) _testResolvedUnit;
+
   CiderCompletionResult _completionResult;
   List<CompletionSuggestion> _suggestions;
 
-  Future<void> test_limitedResolution_;
-
   @override
   void setUp() {
     super.setUp();
@@ -295,10 +297,34 @@
     ]);
   }
 
-  Future<void> test_limitedResolution_class_method() async {
+  Future<void> test_limitedResolution_class_field_startWithType() async {
+    _configureToCheckNotResolved(
+      identifiers: {'print'},
+    );
+
+    await _compute(r'''
+class A {
+  void foo() {
+    print(0);
+  }
+
+  Str^
+}
+''');
+
+    _assertHasClass(text: 'String');
+  }
+
+  Future<void> test_limitedResolution_class_method_body() async {
+    _configureToCheckNotResolved(
+      identifiers: {'print'},
+    );
+
     await _compute(r'''
 class A<T> {
-  void foo() {}
+  void foo() {
+    print(0);
+  }
 
   void bar<U>(int a) {
     ^
@@ -323,9 +349,66 @@
     _assertHasTypeParameter(text: 'U');
   }
 
-  Future<void> test_limitedResolution_unit_function() async {
+  Future<void> test_limitedResolution_class_method_parameterType() async {
+    _configureToCheckNotResolved(
+      identifiers: {'print'},
+    );
+
     await _compute(r'''
-void foo() {}
+class A {
+  void foo() {
+    print(0);
+  }
+
+  void bar(Str^) {}
+}
+''');
+
+    _assertHasClass(text: 'String');
+  }
+
+  Future<void>
+      test_limitedResolution_class_method_returnType_hasPartial() async {
+    _configureToCheckNotResolved(
+      identifiers: {'print'},
+    );
+
+    await _compute(r'''
+class A {
+  void foo() {
+    print(0);
+  }
+
+  Str^ bar() {}
+}
+''');
+
+    _assertHasClass(text: 'String');
+  }
+
+  Future<void> test_limitedResolution_hasPart() async {
+    newFile('/workspace/dart/test/lib/a.dart', content: r'''
+class A {}
+''');
+
+    await _compute(r'''
+part 'a.dart';
+^
+''');
+
+    _assertHasClass(text: 'int');
+    _assertHasClass(text: 'A');
+  }
+
+  Future<void> test_limitedResolution_unit_function_body() async {
+    _configureToCheckNotResolved(
+      identifiers: {'print'},
+    );
+
+    await _compute(r'''
+void foo() {
+  print(0);
+}
 
 void bar(int a) {
   ^
@@ -347,20 +430,6 @@
     _assertHasGetter(text: 'isEven');
   }
 
-  Future<void> test_partialResolution_hasPart() async {
-    newFile('/workspace/dart/test/lib/a.dart', content: r'''
-class A {}
-''');
-
-    await _compute(r'''
-part 'a.dart';
-^
-''');
-
-    _assertHasClass(text: 'int');
-    _assertHasClass(text: 'A');
-  }
-
   Future<void> test_warmUp_cachesImportedLibraries() async {
     var aPath = convertPath('/workspace/dart/test/lib/a.dart');
     newFile(aPath, content: r'''
@@ -550,10 +619,28 @@
       path: convertPath(testPath),
       line: context.line,
       column: context.character,
+      testResolvedUnit: _testResolvedUnit,
     );
     _suggestions = _completionResult.suggestions;
   }
 
+  /// Configure the [CiderCompletionComputer] to check that when resolving
+  /// for completion we don't resolve unnecessary node.
+  void _configureToCheckNotResolved({Set<String> identifiers}) {
+    _testResolvedUnit = (resolvedUnitResult) {
+      var unit = resolvedUnitResult.unit;
+      unit.accept(
+        FunctionAstVisitor(
+          simpleIdentifier: (node) {
+            if (identifiers.contains(node.name) && node.staticElement != null) {
+              fail('Unexpectedly resolved node: $node');
+            }
+          },
+        ),
+      );
+    };
+  }
+
   /// TODO(scheglov) Implement incremental updating
   void _createFileResolver() {
     createFileResolver();
diff --git a/pkg/analysis_server/test/src/services/correction/assist/add_diagnostic_property_reference_test.dart b/pkg/analysis_server/test/src/services/correction/assist/add_diagnostic_property_reference_test.dart
index f4bad61..ded7a23 100644
--- a/pkg/analysis_server/test/src/services/correction/assist/add_diagnostic_property_reference_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/assist/add_diagnostic_property_reference_test.dart
@@ -21,8 +21,11 @@
 
   /// Full coverage in fix/add_diagnostic_property_reference_test.dart
   Future<void> test_boolField_debugFillProperties() async {
-    verifyNoTestUnitErrors = false;
+    addFlutterPackage();
     await resolveTestUnit('''
+import 'package:flutter/foundation.dart';
+import 'package:flutter/widgets.dart';
+
 class W extends Widget {
   bool /*caret*/property;
   @override
@@ -32,6 +35,9 @@
 }
 ''');
     await assertHasAssist('''
+import 'package:flutter/foundation.dart';
+import 'package:flutter/widgets.dart';
+
 class W extends Widget {
   bool property;
   @override
@@ -52,4 +58,14 @@
 ''');
     await assertNoAssist();
   }
+
+  Future<void> test_notAvailable_outsideDiagnosticable() async {
+    addFlutterPackage();
+    await resolveTestUnit('''
+class C {
+  String get f/*caret*/ => null;
+}
+''');
+    await assertNoAssist();
+  }
 }
diff --git a/pkg/analysis_server/test/src/services/correction/assist/shadow_field_test.dart b/pkg/analysis_server/test/src/services/correction/assist/shadow_field_test.dart
index d4c1df0..09acc3d74 100644
--- a/pkg/analysis_server/test/src/services/correction/assist/shadow_field_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/assist/shadow_field_test.dart
@@ -12,7 +12,7 @@
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ShadowFieldTest);
-    defineReflectiveTests(ShadowFieldWithNNBDTest);
+    defineReflectiveTests(ShadowFieldWithNullSafetyTest);
   });
 }
 
@@ -108,7 +108,7 @@
 }
 
 @reflectiveTest
-class ShadowFieldWithNNBDTest extends ShadowFieldTest {
+class ShadowFieldWithNullSafetyTest extends ShadowFieldTest {
   @override
   void setUp() {
     super.setUp();
diff --git a/pkg/analysis_server/test/src/services/correction/fix/add_async_test.dart b/pkg/analysis_server/test/src/services/correction/fix/add_async_test.dart
index 0c2a51a..a7e5fb1 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/add_async_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/add_async_test.dart
@@ -72,7 +72,7 @@
   return 1;
 }
 ''', errorFilter: (AnalysisError error) {
-      return error.errorCode == StaticWarningCode.UNDEFINED_IDENTIFIER_AWAIT;
+      return error.errorCode == CompileTimeErrorCode.UNDEFINED_IDENTIFIER_AWAIT;
     });
   }
 
@@ -91,7 +91,7 @@
 
 void doStuff() => takeFutureCallback(() async => await 1);
 ''', errorFilter: (AnalysisError error) {
-      return error.errorCode == StaticWarningCode.UNDEFINED_IDENTIFIER_AWAIT;
+      return error.errorCode == CompileTimeErrorCode.UNDEFINED_IDENTIFIER_AWAIT;
     });
   }
 
diff --git a/pkg/analysis_server/test/src/services/correction/fix/add_diagnostic_property_reference_test.dart b/pkg/analysis_server/test/src/services/correction/fix/add_diagnostic_property_reference_test.dart
index 5e8a9e2..b4fdc40 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/add_diagnostic_property_reference_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/add_diagnostic_property_reference_test.dart
@@ -31,6 +31,7 @@
   }
 
   Future<void> test_boolField() async {
+    // todo(pq): when linter 0.1.118 is integrated, update DiagnosticableMixin to Diagnosticable
     await resolveTestUnit('''
 import 'package:flutter/foundation.dart';
 import 'package:flutter/widgets.dart';
diff --git a/pkg/analysis_server/test/src/services/correction/fix/add_required_test.dart b/pkg/analysis_server/test/src/services/correction/fix/add_required_test.dart
index c45b6ca..9b90123 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/add_required_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/add_required_test.dart
@@ -13,7 +13,7 @@
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(AddRequiredTest);
-    defineReflectiveTests(AddRequiredWithNNBDTest);
+    defineReflectiveTests(AddRequiredWithNullSafetyTest);
   });
 }
 
@@ -40,7 +40,7 @@
 }
 
 @reflectiveTest
-class AddRequiredWithNNBDTest extends FixProcessorTest {
+class AddRequiredWithNullSafetyTest extends FixProcessorTest {
   @override
   List<String> get experiments => [EnableString.non_nullable];
 
diff --git a/pkg/analysis_server/test/src/services/correction/fix/bulk/add_override_test.dart b/pkg/analysis_server/test/src/services/correction/fix/bulk/add_override_test.dart
new file mode 100644
index 0000000..afd882d
--- /dev/null
+++ b/pkg/analysis_server/test/src/services/correction/fix/bulk/add_override_test.dart
@@ -0,0 +1,47 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+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(AddOverrideTest);
+  });
+}
+
+@reflectiveTest
+class AddOverrideTest extends BulkFixProcessorTest {
+  @override
+  String get lintCode => LintNames.annotate_overrides;
+
+  Future<void> test_singleFile() async {
+    await resolveTestUnit('''
+class A {
+  void a() {}
+  void aa() {}
+}
+
+class B extends A {
+  void a() {}
+  void aa() {}
+}
+''');
+    await assertHasFix('''
+class A {
+  void a() {}
+  void aa() {}
+}
+
+class B extends A {
+  @override
+  void a() {}
+  @override
+  void aa() {}
+}
+''');
+  }
+}
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 b344a3a..77d9e26 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
@@ -4,6 +4,7 @@
 
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
+import 'add_override_test.dart' as add_override;
 import 'convert_documentation_into_line_test.dart'
     as convert_documentation_into_line;
 import 'remove_unnecessary_const_test.dart' as remove_unnecessary_const;
@@ -12,6 +13,7 @@
 
 void main() {
   defineReflectiveSuite(() {
+    add_override.main();
     convert_documentation_into_line.main();
     remove_unnecessary_const.main();
     remove_unnecessary_new.main();
diff --git a/pkg/analysis_server/test/src/services/correction/fix/create_class_test.dart b/pkg/analysis_server/test/src/services/correction/fix/create_class_test.dart
index 82181b0..10f5a1a 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/create_class_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/create_class_test.dart
@@ -196,7 +196,7 @@
 class Test {
 }
 ''', errorFilter: (error) {
-      return error.errorCode == StaticWarningCode.UNDEFINED_IDENTIFIER;
+      return error.errorCode == CompileTimeErrorCode.UNDEFINED_IDENTIFIER;
     });
     assertLinkedGroup(change.linkedEditGroups[0], ['Test])', 'Test {']);
   }
diff --git a/pkg/analysis_server/test/src/services/correction/fix/create_constructor_test.dart b/pkg/analysis_server/test/src/services/correction/fix/create_constructor_test.dart
index 83eb64c..0512623 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/create_constructor_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/create_constructor_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analyzer/src/error/codes.dart';
 import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -104,6 +105,19 @@
 ''');
   }
 
+  Future<void> test_mixin() async {
+    verifyNoTestUnitErrors = false;
+    await resolveTestUnit('''
+mixin M {}
+void f() {
+  new M(3);
+}
+''');
+    await assertNoFix(
+        errorFilter: (error) =>
+            error.errorCode != CompileTimeErrorCode.MIXIN_INSTANTIATE);
+  }
+
   Future<void> test_named() async {
     await resolveTestUnit('''
 class A {
diff --git a/pkg/analysis_server/test/src/services/correction/fix/create_mixin_test.dart b/pkg/analysis_server/test/src/services/correction/fix/create_mixin_test.dart
index 0fd84b2..3945682 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/create_mixin_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/create_mixin_test.dart
@@ -134,7 +134,7 @@
 mixin Test {
 }
 ''', errorFilter: (error) {
-      return error.errorCode == StaticWarningCode.UNDEFINED_IDENTIFIER;
+      return error.errorCode == CompileTimeErrorCode.UNDEFINED_IDENTIFIER;
     });
     assertLinkedGroup(change.linkedEditGroups[0], ['Test])', 'Test {']);
   }
diff --git a/pkg/analysis_server/test/src/services/correction/fix/import_library_sdk_test.dart b/pkg/analysis_server/test/src/services/correction/fix/import_library_sdk_test.dart
index b64f017..600d792 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/import_library_sdk_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/import_library_sdk_test.dart
@@ -211,7 +211,7 @@
 @MyAnnotation(int, const [Completer])
 main() {}
 ''', errorFilter: (error) {
-      return error.errorCode == StaticWarningCode.UNDEFINED_IDENTIFIER;
+      return error.errorCode == CompileTimeErrorCode.UNDEFINED_IDENTIFIER;
     });
   }
 
diff --git a/pkg/analysis_server/test/src/services/correction/fix/inline_typedef_test.dart b/pkg/analysis_server/test/src/services/correction/fix/inline_typedef_test.dart
index ceefcc5..3eeb26c 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/inline_typedef_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/inline_typedef_test.dart
@@ -13,7 +13,7 @@
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(InlineTypedefTest);
-    defineReflectiveTests(InlineTypedefWithNNBDTest);
+    defineReflectiveTests(InlineTypedefWithNullSafetyTest);
   });
 }
 
@@ -137,7 +137,7 @@
 }
 
 @reflectiveTest
-class InlineTypedefWithNNBDTest extends InlineTypedefTest {
+class InlineTypedefWithNullSafetyTest extends InlineTypedefTest {
   @override
   List<String> get experiments => [EnableString.non_nullable];
 
diff --git a/pkg/analysis_server/test/src/services/correction/fix/make_final_test.dart b/pkg/analysis_server/test/src/services/correction/fix/make_final_test.dart
index 4d4dd62..7486e14 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/make_final_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/make_final_test.dart
@@ -14,7 +14,7 @@
   defineReflectiveSuite(() {
     defineReflectiveTests(PreferFinalInForEachTest);
     defineReflectiveTests(PreferFinalFieldsTest);
-    defineReflectiveTests(PreferFinalFieldsWithNNBDTest);
+    defineReflectiveTests(PreferFinalFieldsWithNullSafetyTest);
   });
 }
 
@@ -58,7 +58,7 @@
 }
 
 @reflectiveTest
-class PreferFinalFieldsWithNNBDTest extends FixProcessorLintTest {
+class PreferFinalFieldsWithNullSafetyTest extends FixProcessorLintTest {
   @override
   List<String> get experiments => [EnableString.non_nullable];
 
diff --git a/pkg/analysis_server/test/src/services/correction/fix/replace_boolean_with_bool_test.dart b/pkg/analysis_server/test/src/services/correction/fix/replace_boolean_with_bool_test.dart
index d3e3acc..a9ad68a 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/replace_boolean_with_bool_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/replace_boolean_with_bool_test.dart
@@ -27,7 +27,7 @@
   boolean w;
 }
 ''');
-    await assertHasFixAllFix(StaticWarningCode.UNDEFINED_CLASS_BOOLEAN, '''
+    await assertHasFixAllFix(CompileTimeErrorCode.UNDEFINED_CLASS_BOOLEAN, '''
 main() {
   bool v;
   bool w;
diff --git a/pkg/analysis_server/test/src/services/correction/fix/replace_cascade_with_dot_test.dart b/pkg/analysis_server/test/src/services/correction/fix/replace_cascade_with_dot_test.dart
index f69a43a..28abf56 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/replace_cascade_with_dot_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/replace_cascade_with_dot_test.dart
@@ -13,7 +13,7 @@
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ReplaceCascadeWithDotTest);
-    defineReflectiveTests(ReplaceCascadeWithDotWithNNBDTest);
+    defineReflectiveTests(ReplaceCascadeWithDotWithNullSafetyTest);
   });
 }
 
@@ -99,7 +99,8 @@
 }
 
 @reflectiveTest
-class ReplaceCascadeWithDotWithNNBDTest extends ReplaceCascadeWithDotTest {
+class ReplaceCascadeWithDotWithNullSafetyTest
+    extends ReplaceCascadeWithDotTest {
   @override
   List<String> get experiments => [EnableString.non_nullable];
 
diff --git a/pkg/analysis_server/test/stress/completion/completion_runner.dart b/pkg/analysis_server/test/stress/completion/completion_runner.dart
index 19a23db..51c2445 100644
--- a/pkg/analysis_server/test/stress/completion/completion_runner.dart
+++ b/pkg/analysis_server/test/stress/completion/completion_runner.dart
@@ -106,7 +106,6 @@
               return await contributor.computeSuggestions(
                 performance,
                 request,
-                enableUriContributor: true,
               );
             },
           );
diff --git a/pkg/analysis_server/test/stress/replay/replay.dart b/pkg/analysis_server/test/stress/replay/replay.dart
index ce02311..f453567 100644
--- a/pkg/analysis_server/test/stress/replay/replay.dart
+++ b/pkg/analysis_server/test/stress/replay/replay.dart
@@ -129,7 +129,6 @@
       server.printStatistics();
     }
     exit(0);
-    return null;
   }
 
   /// Create and return a parser that can be used to parse the command-line
diff --git a/pkg/analysis_server/tool/completion_metrics/completion_metrics.dart b/pkg/analysis_server/tool/completion_metrics/completion_metrics.dart
index 73091f0..3e57965 100644
--- a/pkg/analysis_server/tool/completion_metrics/completion_metrics.dart
+++ b/pkg/analysis_server/tool/completion_metrics/completion_metrics.dart
@@ -721,11 +721,7 @@
       suggestions = await DartCompletionManager(
         dartdocDirectiveInfo: DartdocDirectiveInfo(),
         listener: listener,
-      ).computeSuggestions(
-        performance,
-        request,
-        enableUriContributor: true,
-      );
+      ).computeSuggestions(performance, request);
     } else {
       // available suggestions == true
       var includedElementKinds = <protocol.ElementKind>{};
@@ -739,11 +735,7 @@
         includedElementNames: includedElementNames,
         includedSuggestionRelevanceTags: includedSuggestionRelevanceTagList,
         listener: listener,
-      ).computeSuggestions(
-        performance,
-        request,
-        enableUriContributor: true,
-      );
+      ).computeSuggestions(performance, request);
 
       computeIncludedSetList(declarationsTracker, request.result,
           includedSuggestionSetList, includedElementNames);
diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md
index c5d67c1..9c29e83 100644
--- a/pkg/analyzer/CHANGELOG.md
+++ b/pkg/analyzer/CHANGELOG.md
@@ -1,7 +1,10 @@
-## 0.39.15-dev
+## 0.39.15
 * Move `asInstanceOf(ClassElement)` to `DartType`, so that it is also
   supported for `TypeParameterType` when its bound implements the
   requested interface.
+* Fixed invalid implicit downcast in `InterfaceType.allSupertypes`.
+* The internal `currentVersion` of the language updated to `2.10`.
+* Bug fixes: 41065, 42797, 42770, 42668.
 
 ## 0.39.14
 * Removed `defaultSdkDirectory()` and `getSdkProperty()` from internal
diff --git a/pkg/analyzer/lib/error/error.dart b/pkg/analyzer/lib/error/error.dart
index fbd5b03..e281f0d 100644
--- a/pkg/analyzer/lib/error/error.dart
+++ b/pkg/analyzer/lib/error/error.dart
@@ -68,12 +68,19 @@
   CompileTimeErrorCode.ACCESS_PRIVATE_ENUM_FIELD,
   CompileTimeErrorCode.AMBIGUOUS_EXPORT,
   CompileTimeErrorCode.AMBIGUOUS_EXTENSION_MEMBER_ACCESS,
+  CompileTimeErrorCode.AMBIGUOUS_IMPORT,
   CompileTimeErrorCode.AMBIGUOUS_SET_OR_MAP_LITERAL_BOTH,
   CompileTimeErrorCode.AMBIGUOUS_SET_OR_MAP_LITERAL_EITHER,
   CompileTimeErrorCode.ANNOTATION_WITH_NON_CLASS,
-  // ignore: deprecated_member_use_from_same_package
-  CompileTimeErrorCode.ANNOTATION_WITH_TYPE_ARGUMENTS,
+  CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE,
   CompileTimeErrorCode.ASSERT_IN_REDIRECTING_CONSTRUCTOR,
+  CompileTimeErrorCode.ASSIGNMENT_TO_CONST,
+  CompileTimeErrorCode.ASSIGNMENT_TO_FINAL,
+  CompileTimeErrorCode.ASSIGNMENT_TO_FINAL_LOCAL,
+  CompileTimeErrorCode.ASSIGNMENT_TO_FINAL_NO_SETTER,
+  CompileTimeErrorCode.ASSIGNMENT_TO_FUNCTION,
+  CompileTimeErrorCode.ASSIGNMENT_TO_METHOD,
+  CompileTimeErrorCode.ASSIGNMENT_TO_TYPE,
   CompileTimeErrorCode.ASYNC_FOR_IN_WRONG_CONTEXT,
   CompileTimeErrorCode.AWAIT_IN_LATE_LOCAL_VARIABLE_INITIALIZER,
   CompileTimeErrorCode.AWAIT_IN_WRONG_CONTEXT,
@@ -85,8 +92,11 @@
   CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME,
   CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_PARAMETER_NAME,
   CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME,
+  CompileTimeErrorCode.CASE_BLOCK_NOT_TERMINATED,
   CompileTimeErrorCode.CASE_EXPRESSION_TYPE_IMPLEMENTS_EQUALS,
   CompileTimeErrorCode.CASE_EXPRESSION_TYPE_IS_NOT_SWITCH_EXPRESSION_SUBTYPE,
+  CompileTimeErrorCode.CAST_TO_NON_TYPE,
+  CompileTimeErrorCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER,
   CompileTimeErrorCode.CONFLICTING_CONSTRUCTOR_AND_STATIC_FIELD,
   CompileTimeErrorCode.CONFLICTING_CONSTRUCTOR_AND_STATIC_METHOD,
   CompileTimeErrorCode.CONFLICTING_FIELD_AND_METHOD,
@@ -129,6 +139,7 @@
   CompileTimeErrorCode.CONST_WITH_UNDEFINED_CONSTRUCTOR,
   CompileTimeErrorCode.CONST_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT,
   CompileTimeErrorCode.CONTINUE_LABEL_ON_SWITCH,
+  CompileTimeErrorCode.COULD_NOT_INFER,
   CompileTimeErrorCode.DEFAULT_LIST_CONSTRUCTOR,
   CompileTimeErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPED_PARAMETER,
   CompileTimeErrorCode.DEFAULT_VALUE_IN_REDIRECTING_FACTORY_CONSTRUCTOR,
@@ -160,14 +171,24 @@
   CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS,
   CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED,
   CompileTimeErrorCode.FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS,
+  CompileTimeErrorCode.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION,
   CompileTimeErrorCode.FIELD_INITIALIZED_IN_PARAMETER_AND_INITIALIZER,
   CompileTimeErrorCode.FIELD_INITIALIZER_FACTORY_CONSTRUCTOR,
+  CompileTimeErrorCode.FIELD_INITIALIZER_NOT_ASSIGNABLE,
   CompileTimeErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR,
   CompileTimeErrorCode.FIELD_INITIALIZER_REDIRECTING_CONSTRUCTOR,
+  CompileTimeErrorCode.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE,
+  CompileTimeErrorCode.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR,
   CompileTimeErrorCode.FINAL_INITIALIZED_MULTIPLE_TIMES,
+  CompileTimeErrorCode.FINAL_NOT_INITIALIZED,
+  CompileTimeErrorCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1,
+  CompileTimeErrorCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_2,
+  CompileTimeErrorCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS,
   CompileTimeErrorCode.FOR_IN_WITH_CONST_VARIABLE,
   CompileTimeErrorCode.GENERIC_FUNCTION_TYPE_CANNOT_BE_BOUND,
   CompileTimeErrorCode.GENERIC_FUNCTION_TYPE_CANNOT_BE_TYPE_ARGUMENT,
+  CompileTimeErrorCode.GETTER_NOT_ASSIGNABLE_SETTER_TYPES,
+  CompileTimeErrorCode.GETTER_NOT_SUBTYPE_SETTER_TYPES,
   CompileTimeErrorCode.IF_ELEMENT_CONDITION_FROM_DEFERRED_LIBRARY,
   CompileTimeErrorCode.ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE,
   CompileTimeErrorCode.ILLEGAL_SYNC_GENERATOR_RETURN_TYPE,
@@ -189,6 +210,7 @@
   CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_STATIC_FIELD,
   CompileTimeErrorCode.INSTANCE_MEMBER_ACCESS_FROM_FACTORY,
   CompileTimeErrorCode.INSTANCE_MEMBER_ACCESS_FROM_STATIC,
+  CompileTimeErrorCode.INSTANTIATE_ABSTRACT_CLASS,
   CompileTimeErrorCode.INSTANTIATE_ENUM,
   CompileTimeErrorCode.INTEGER_LITERAL_IMPRECISE_AS_DOUBLE,
   CompileTimeErrorCode.INTEGER_LITERAL_OUT_OF_RANGE,
@@ -212,21 +234,22 @@
   CompileTimeErrorCode.INVALID_MODIFIER_ON_SETTER,
   CompileTimeErrorCode.INVALID_OVERRIDE,
   CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS,
+  CompileTimeErrorCode.INVALID_SUPER_INVOCATION,
   CompileTimeErrorCode.INVALID_TYPE_ARGUMENT_IN_CONST_LIST,
   CompileTimeErrorCode.INVALID_TYPE_ARGUMENT_IN_CONST_MAP,
   CompileTimeErrorCode.INVALID_TYPE_ARGUMENT_IN_CONST_SET,
   CompileTimeErrorCode.INVALID_URI,
   CompileTimeErrorCode.INVALID_USE_OF_COVARIANT,
-  // ignore: deprecated_member_use_from_same_package
-  CompileTimeErrorCode.INVALID_USE_OF_COVARIANT_IN_EXTENSION,
+  CompileTimeErrorCode.INVALID_USE_OF_NULL_VALUE,
   CompileTimeErrorCode.INVOCATION_OF_EXTENSION_WITHOUT_CALL,
   CompileTimeErrorCode.LABEL_IN_OUTER_SCOPE,
   CompileTimeErrorCode.LABEL_UNDEFINED,
   CompileTimeErrorCode.LATE_FINAL_FIELD_WITH_CONST_CONSTRUCTOR,
   CompileTimeErrorCode.LATE_FINAL_LOCAL_ALREADY_ASSIGNED,
+  CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE,
   CompileTimeErrorCode.MAP_ENTRY_NOT_IN_MAP,
-  // ignore: deprecated_member_use_from_same_package
-  CompileTimeErrorCode.MEMBER_WITH_CLASS_NAME,
+  CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE,
+  CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE,
   CompileTimeErrorCode.MISSING_CONST_IN_LIST_LITERAL,
   CompileTimeErrorCode.MISSING_CONST_IN_MAP_LITERAL,
   CompileTimeErrorCode.MISSING_CONST_IN_SET_LITERAL,
@@ -253,10 +276,18 @@
   CompileTimeErrorCode.MIXINS_SUPER_CLASS,
   CompileTimeErrorCode.MULTIPLE_REDIRECTING_CONSTRUCTOR_INVOCATIONS,
   CompileTimeErrorCode.MULTIPLE_SUPER_INITIALIZERS,
+  CompileTimeErrorCode.NEW_WITH_NON_TYPE,
+  CompileTimeErrorCode.NEW_WITH_UNDEFINED_CONSTRUCTOR,
+  CompileTimeErrorCode.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT,
   CompileTimeErrorCode.NO_ANNOTATION_CONSTRUCTOR_ARGUMENTS,
   CompileTimeErrorCode.NO_COMBINED_SUPER_SIGNATURE,
   CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT,
   CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT,
+  CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS,
+  CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR,
+  CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
+  CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE,
+  CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO,
   CompileTimeErrorCode.NON_CONST_MAP_AS_EXPRESSION_STATEMENT,
   CompileTimeErrorCode.NON_CONSTANT_ANNOTATION_CONSTRUCTOR,
   CompileTimeErrorCode.NON_CONSTANT_CASE_EXPRESSION,
@@ -271,14 +302,14 @@
   CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE,
   CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY,
   CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT,
-  // ignore: deprecated_member_use_from_same_package
-  CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER,
   CompileTimeErrorCode.NON_GENERATIVE_CONSTRUCTOR,
   CompileTimeErrorCode.NON_SYNC_FACTORY,
+  CompileTimeErrorCode.NON_TYPE_IN_CATCH_CLAUSE,
+  CompileTimeErrorCode.NON_VOID_RETURN_FOR_OPERATOR,
+  CompileTimeErrorCode.NON_VOID_RETURN_FOR_SETTER,
+  CompileTimeErrorCode.NOT_A_TYPE,
   CompileTimeErrorCode.NOT_ASSIGNED_POTENTIALLY_NON_NULLABLE_LOCAL_VARIABLE,
   CompileTimeErrorCode.NOT_ENOUGH_POSITIONAL_ARGUMENTS,
-  // ignore: deprecated_member_use_from_same_package
-  CompileTimeErrorCode.NOT_ENOUGH_REQUIRED_ARGUMENTS,
   CompileTimeErrorCode.NOT_INITIALIZED_NON_NULLABLE_INSTANCE_FIELD,
   CompileTimeErrorCode.NOT_INITIALIZED_NON_NULLABLE_INSTANCE_FIELD_CONSTRUCTOR,
   CompileTimeErrorCode.NOT_INITIALIZED_NON_NULLABLE_VARIABLE,
@@ -293,6 +324,7 @@
   CompileTimeErrorCode.OBJECT_CANNOT_EXTEND_ANOTHER_CLASS,
   CompileTimeErrorCode.ON_REPEATED,
   CompileTimeErrorCode.OPTIONAL_PARAMETER_IN_OPERATOR,
+  CompileTimeErrorCode.PART_OF_DIFFERENT_LIBRARY,
   CompileTimeErrorCode.PART_OF_NON_PART,
   CompileTimeErrorCode.PART_OF_UNNAMED_LIBRARY,
   CompileTimeErrorCode.PREFIX_COLLIDES_WITH_TOP_LEVEL_MEMBER,
@@ -312,6 +344,8 @@
   CompileTimeErrorCode.REDIRECT_GENERATIVE_TO_MISSING_CONSTRUCTOR,
   CompileTimeErrorCode.REDIRECT_GENERATIVE_TO_NON_GENERATIVE_CONSTRUCTOR,
   CompileTimeErrorCode.REDIRECT_TO_ABSTRACT_CLASS_CONSTRUCTOR,
+  CompileTimeErrorCode.REDIRECT_TO_INVALID_FUNCTION_TYPE,
+  CompileTimeErrorCode.REDIRECT_TO_INVALID_RETURN_TYPE,
   CompileTimeErrorCode.REDIRECT_TO_MISSING_CONSTRUCTOR,
   CompileTimeErrorCode.REDIRECT_TO_NON_CLASS,
   CompileTimeErrorCode.REDIRECT_TO_NON_CONST_CONSTRUCTOR,
@@ -319,32 +353,44 @@
   CompileTimeErrorCode.RETHROW_OUTSIDE_CATCH,
   CompileTimeErrorCode.RETURN_IN_GENERATIVE_CONSTRUCTOR,
   CompileTimeErrorCode.RETURN_IN_GENERATOR,
+  CompileTimeErrorCode.RETURN_WITHOUT_VALUE,
   CompileTimeErrorCode.SET_ELEMENT_FROM_DEFERRED_LIBRARY,
+  CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE,
   CompileTimeErrorCode.SHARED_DEFERRED_PREFIX,
   CompileTimeErrorCode.SPREAD_EXPRESSION_FROM_DEFERRED_LIBRARY,
+  CompileTimeErrorCode.STATIC_ACCESS_TO_INSTANCE_MEMBER,
   CompileTimeErrorCode.SUPER_IN_EXTENSION,
   CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT,
   CompileTimeErrorCode.SUPER_IN_REDIRECTING_CONSTRUCTOR,
   CompileTimeErrorCode.SUPER_INITIALIZER_IN_OBJECT,
   CompileTimeErrorCode.SWITCH_CASE_COMPLETES_NORMALLY,
+  CompileTimeErrorCode.SWITCH_EXPRESSION_NOT_ASSIGNABLE,
   CompileTimeErrorCode.THROW_OF_INVALID_TYPE,
+  CompileTimeErrorCode.TOP_LEVEL_CYCLE,
   CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF,
+  CompileTimeErrorCode.TYPE_ANNOTATION_DEFERRED_CLASS,
   CompileTimeErrorCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS,
-  // ignore: deprecated_member_use_from_same_package
-  CompileTimeErrorCode.TYPE_PARAMETER_ON_CONSTRUCTOR,
+  CompileTimeErrorCode.TYPE_PARAMETER_REFERENCED_BY_STATIC,
+  CompileTimeErrorCode.TYPE_TEST_WITH_NON_TYPE,
+  CompileTimeErrorCode.TYPE_TEST_WITH_UNDEFINED_NAME,
+  CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE,
   CompileTimeErrorCode.UNDEFINED_ANNOTATION,
   CompileTimeErrorCode.UNDEFINED_CLASS,
+  CompileTimeErrorCode.UNDEFINED_CLASS_BOOLEAN,
   CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER,
   CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT,
   CompileTimeErrorCode.UNDEFINED_EXTENSION_GETTER,
   CompileTimeErrorCode.UNDEFINED_EXTENSION_METHOD,
   CompileTimeErrorCode.UNDEFINED_EXTENSION_OPERATOR,
   CompileTimeErrorCode.UNDEFINED_EXTENSION_SETTER,
+  CompileTimeErrorCode.UNDEFINED_IDENTIFIER,
+  CompileTimeErrorCode.UNDEFINED_IDENTIFIER_AWAIT,
   CompileTimeErrorCode.UNDEFINED_NAMED_PARAMETER,
   CompileTimeErrorCode.UNQUALIFIED_REFERENCE_TO_STATIC_MEMBER_OF_EXTENDED_TYPE,
   CompileTimeErrorCode.URI_DOES_NOT_EXIST,
   CompileTimeErrorCode.URI_HAS_NOT_BEEN_GENERATED,
   CompileTimeErrorCode.URI_WITH_INTERPOLATION,
+  CompileTimeErrorCode.USE_OF_VOID_RESULT,
   CompileTimeErrorCode.WRONG_EXPLICIT_TYPE_PARAMETER_VARIANCE_IN_SUPERINTERFACE,
   CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR,
   CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR_MINUS,
@@ -417,8 +463,6 @@
   HintCode.INVALID_OVERRIDE_OF_NON_VIRTUAL_MEMBER,
   HintCode.INVALID_REQUIRED_NAMED_PARAM,
   HintCode.INVALID_REQUIRED_OPTIONAL_POSITIONAL_PARAM,
-  // ignore: deprecated_member_use_from_same_package
-  HintCode.INVALID_REQUIRED_PARAM,
   HintCode.INVALID_REQUIRED_POSITIONAL_PARAM,
   HintCode.INVALID_SEALED_ANNOTATION,
   HintCode.INVALID_USE_OF_PROTECTED_MEMBER,
@@ -719,8 +763,6 @@
   StaticTypeWarningCode.NON_BOOL_NEGATION_EXPRESSION,
   StaticTypeWarningCode.NON_BOOL_OPERAND,
   StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT,
-  // ignore: deprecated_member_use_from_same_package
-  StaticTypeWarningCode.RETURN_OF_INVALID_TYPE,
   StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_CLOSURE,
   StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_CONSTRUCTOR,
   StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION,
@@ -742,91 +784,13 @@
   StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR,
   StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_METHOD,
   StaticTypeWarningCode.YIELD_OF_INVALID_TYPE,
-  StaticWarningCode.AMBIGUOUS_IMPORT,
-  StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE,
-  StaticWarningCode.ASSIGNMENT_TO_CONST,
-  StaticWarningCode.ASSIGNMENT_TO_FINAL,
-  StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL,
-  StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER,
-  StaticWarningCode.ASSIGNMENT_TO_FUNCTION,
-  StaticWarningCode.ASSIGNMENT_TO_METHOD,
-  StaticWarningCode.ASSIGNMENT_TO_TYPE,
-  StaticWarningCode.CASE_BLOCK_NOT_TERMINATED,
-  StaticWarningCode.CAST_TO_NON_TYPE,
-  StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER,
-  // ignore: deprecated_member_use_from_same_package
-  StaticWarningCode.CONST_WITH_ABSTRACT_CLASS,
   StaticWarningCode.DEAD_NULL_AWARE_EXPRESSION,
-  // ignore: deprecated_member_use_from_same_package
-  StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS,
-  // ignore: deprecated_member_use_from_same_package
-  StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED,
-  StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION,
-  StaticWarningCode.FIELD_INITIALIZER_NOT_ASSIGNABLE,
-  StaticWarningCode.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE,
-  StaticWarningCode.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR,
-  StaticWarningCode.FINAL_NOT_INITIALIZED,
-  StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1,
-  StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_2,
-  StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS,
-  StaticWarningCode.GETTER_NOT_ASSIGNABLE_SETTER_TYPES,
-  StaticWarningCode.GETTER_NOT_SUBTYPE_SETTER_TYPES,
-  // ignore: deprecated_member_use_from_same_package
-  StaticWarningCode.IMPORT_OF_NON_LIBRARY,
-  StaticWarningCode.INSTANTIATE_ABSTRACT_CLASS,
   StaticWarningCode.INVALID_NULL_AWARE_OPERATOR,
   StaticWarningCode.INVALID_NULL_AWARE_OPERATOR_AFTER_SHORT_CIRCUIT,
   StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED,
   StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL,
-  StaticWarningCode.INVALID_USE_OF_NULL_VALUE,
-  StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE,
-  StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE,
-  StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE,
   StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH,
-  // ignore: deprecated_member_use_from_same_package
-  StaticWarningCode.MIXED_RETURN_TYPES,
-  // ignore: deprecated_member_use_from_same_package
-  StaticWarningCode.NEW_WITH_ABSTRACT_CLASS,
-  StaticWarningCode.NEW_WITH_NON_TYPE,
-  StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR,
-  StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT,
-  StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS,
-  StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR,
-  StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
-  StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE,
-  StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO,
-  StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE,
-  StaticWarningCode.NON_VOID_RETURN_FOR_OPERATOR,
-  StaticWarningCode.NON_VOID_RETURN_FOR_SETTER,
-  StaticWarningCode.NOT_A_TYPE,
-  // ignore: deprecated_member_use_from_same_package
-  StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS,
-  StaticWarningCode.PART_OF_DIFFERENT_LIBRARY,
-  StaticWarningCode.REDIRECT_TO_INVALID_FUNCTION_TYPE,
-  StaticWarningCode.REDIRECT_TO_INVALID_RETURN_TYPE,
-  // ignore: deprecated_member_use_from_same_package
-  StaticWarningCode.REDIRECT_TO_MISSING_CONSTRUCTOR,
-  // ignore: deprecated_member_use_from_same_package
-  StaticWarningCode.REDIRECT_TO_NON_CLASS,
-  StaticWarningCode.RETURN_WITHOUT_VALUE,
-  StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE,
-  StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER,
-  StaticWarningCode.SWITCH_EXPRESSION_NOT_ASSIGNABLE,
-  StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS,
-  StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC,
-  StaticWarningCode.TYPE_TEST_WITH_NON_TYPE,
-  StaticWarningCode.TYPE_TEST_WITH_UNDEFINED_NAME,
-  StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE,
-  // ignore: deprecated_member_use_from_same_package
-  StaticWarningCode.UNDEFINED_CLASS,
-  StaticWarningCode.UNDEFINED_CLASS_BOOLEAN,
-  StaticWarningCode.UNDEFINED_IDENTIFIER,
-  StaticWarningCode.UNDEFINED_IDENTIFIER_AWAIT,
-  // ignore: deprecated_member_use_from_same_package
-  StaticWarningCode.UNDEFINED_NAMED_PARAMETER,
   StaticWarningCode.UNNECESSARY_NON_NULL_ASSERTION,
-  StaticWarningCode.USE_OF_VOID_RESULT,
-  StrongModeCode.COULD_NOT_INFER,
   StrongModeCode.IMPLICIT_DYNAMIC_FIELD,
   StrongModeCode.IMPLICIT_DYNAMIC_FUNCTION,
   StrongModeCode.IMPLICIT_DYNAMIC_INVOKE,
@@ -837,9 +801,6 @@
   StrongModeCode.IMPLICIT_DYNAMIC_RETURN,
   StrongModeCode.IMPLICIT_DYNAMIC_TYPE,
   StrongModeCode.IMPLICIT_DYNAMIC_VARIABLE,
-  StrongModeCode.INVALID_PARAMETER_DECLARATION,
-  StrongModeCode.INVALID_SUPER_INVOCATION,
-  StrongModeCode.TOP_LEVEL_CYCLE,
   StrongModeCode.TOP_LEVEL_FUNCTION_LITERAL_BLOCK,
   StrongModeCode.TOP_LEVEL_IDENTIFIER_NO_TYPE,
   StrongModeCode.TOP_LEVEL_INSTANCE_GETTER,
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index 30b0a74..81e5485 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -91,7 +91,7 @@
 /// TODO(scheglov) Clean up the list of implicitly analyzed files.
 class AnalysisDriver implements AnalysisDriverGeneric {
   /// The version of data format, should be incremented on every format change.
-  static const int DATA_VERSION = 106;
+  static const int DATA_VERSION = 108;
 
   /// The length of the list returned by [_computeDeclaredVariablesSignature].
   static const int _declaredVariablesSignatureLength = 4;
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
index 8e31e2a..b60196a 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
@@ -650,7 +650,7 @@
                     [name]);
               } else if (libraryNameNode.name != name) {
                 libraryErrorReporter.reportErrorForNode(
-                    StaticWarningCode.PART_OF_DIFFERENT_LIBRARY,
+                    CompileTimeErrorCode.PART_OF_DIFFERENT_LIBRARY,
                     partUri,
                     [libraryNameNode.name, name]);
               }
@@ -658,7 +658,7 @@
               Source source = nameOrSource.source;
               if (source != _library.source) {
                 libraryErrorReporter.reportErrorForNode(
-                    StaticWarningCode.PART_OF_DIFFERENT_LIBRARY,
+                    CompileTimeErrorCode.PART_OF_DIFFERENT_LIBRARY,
                     partUri,
                     [_library.uriStr, source.uri]);
               }
diff --git a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
index 881e523..db95be9 100644
--- a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
+++ b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
@@ -795,7 +795,7 @@
   bool _validateListExpression(Expression expression, DartObjectImpl value) {
     if (!verifier._evaluationEngine.runtimeTypeMatch(value, listElementType)) {
       verifier._errorReporter.reportErrorForNode(
-        StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE,
+        CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE,
         expression,
         [value.type, listElementType],
       );
@@ -872,7 +872,7 @@
 
       if (!verifier._evaluationEngine.runtimeTypeMatch(keyValue, mapKeyType)) {
         verifier._errorReporter.reportErrorForNode(
-          StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE,
+          CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE,
           keyExpression,
           [keyType, mapKeyType],
         );
@@ -902,7 +902,7 @@
       if (!verifier._evaluationEngine
           .runtimeTypeMatch(valueValue, mapValueType)) {
         verifier._errorReporter.reportErrorForNode(
-          StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE,
+          CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE,
           valueExpression,
           [valueValue.type, mapValueType],
         );
@@ -950,7 +950,7 @@
   bool _validateSetExpression(Expression expression, DartObjectImpl value) {
     if (!verifier._evaluationEngine.runtimeTypeMatch(value, setElementType)) {
       verifier._errorReporter.reportErrorForNode(
-        StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE,
+        CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE,
         expression,
         [value.type, setElementType],
       );
diff --git a/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart b/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart
index 0cd3aa6..29ca0cc 100644
--- a/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart
+++ b/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart
@@ -17,7 +17,8 @@
 import 'package:analyzer/src/dart/element/type_demotion.dart';
 import 'package:analyzer/src/dart/element/type_schema.dart';
 import 'package:analyzer/src/dart/element/type_system.dart';
-import 'package:analyzer/src/error/codes.dart' show HintCode, StrongModeCode;
+import 'package:analyzer/src/error/codes.dart'
+    show CompileTimeErrorCode, HintCode;
 import 'package:meta/meta.dart';
 
 /// Tracks upper and lower type bounds for a set of type parameters.
@@ -187,7 +188,7 @@
       if (!success) {
         if (failAtError) return null;
         errorReporter?.reportErrorForNode(
-            StrongModeCode.COULD_NOT_INFER,
+            CompileTimeErrorCode.COULD_NOT_INFER,
             errorNode,
             [typeParam.name, _formatError(typeParam, inferred, constraints)]);
 
@@ -201,8 +202,8 @@
         if (failAtError) return null;
         var typeFormals = (inferred as FunctionType).typeFormals;
         var typeFormalsStr = typeFormals.map(_elementStr).join(', ');
-        errorReporter
-            ?.reportErrorForNode(StrongModeCode.COULD_NOT_INFER, errorNode, [
+        errorReporter?.reportErrorForNode(
+            CompileTimeErrorCode.COULD_NOT_INFER, errorNode, [
           typeParam.name,
           ' Inferred candidate type ${_typeStr(inferred)} has type parameters'
               ' [$typeFormalsStr], but a function with'
@@ -248,8 +249,8 @@
         var typeParamBound = Substitution.fromPairs(typeFormals, inferredTypes)
             .substituteType(typeParam.bound ?? typeProvider.objectType);
         // TODO(jmesserly): improve this error message.
-        errorReporter
-            ?.reportErrorForNode(StrongModeCode.COULD_NOT_INFER, errorNode, [
+        errorReporter?.reportErrorForNode(
+            CompileTimeErrorCode.COULD_NOT_INFER, errorNode, [
           typeParam.name,
           "\nRecursive bound cannot be instantiated: '$typeParamBound'."
               "\nConsider passing explicit type argument(s) "
diff --git a/pkg/analyzer/lib/src/dart/element/type.dart b/pkg/analyzer/lib/src/dart/element/type.dart
index 3d6e3df..4eea090 100644
--- a/pkg/analyzer/lib/src/dart/element/type.dart
+++ b/pkg/analyzer/lib/src/dart/element/type.dart
@@ -719,7 +719,9 @@
   @override
   List<InterfaceType> get allSupertypes {
     var substitution = Substitution.fromInterfaceType(this);
-    return element.allSupertypes.map(substitution.substituteType).toList();
+    return element.allSupertypes
+        .map((t) => substitution.substituteType(t) as InterfaceType)
+        .toList();
   }
 
   @override
diff --git a/pkg/analyzer/lib/src/dart/element/type_provider.dart b/pkg/analyzer/lib/src/dart/element/type_provider.dart
index 1180bc1..04e4051 100644
--- a/pkg/analyzer/lib/src/dart/element/type_provider.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_provider.dart
@@ -96,9 +96,6 @@
 
   InterfaceTypeImpl _nullStar;
 
-  InterfaceType _iterableForSetMapDisambiguation;
-  InterfaceType _mapForSetMapDisambiguation;
-
   Set<ClassElement> _nonSubtypableClasses;
 
   /// Initialize a newly created type provider to provide the types defined in
@@ -258,25 +255,6 @@
     return _iterableElement ??= _getClassElement(_coreLibrary, 'Iterable');
   }
 
-  /// Return the type that should be used during disambiguation between `Set`
-  /// and `Map` literals. If NNBD enabled, use `Iterable<Object?, Object?>`,
-  /// otherwise use `Iterable<Object*, Object*>*`.
-  InterfaceType get iterableForSetMapDisambiguation {
-    if (_iterableForSetMapDisambiguation == null) {
-      var objectType = objectElement.instantiate(
-        typeArguments: const [],
-        nullabilitySuffix: _questionOrStarSuffix,
-      );
-      _iterableForSetMapDisambiguation = iterableElement.instantiate(
-        typeArguments: [
-          objectType,
-        ],
-        nullabilitySuffix: _questionOrStarSuffix,
-      );
-    }
-    return _iterableForSetMapDisambiguation;
-  }
-
   @override
   InterfaceType get iterableObjectType {
     _iterableObjectType ??= InterfaceTypeImpl(
@@ -309,26 +287,6 @@
     return _mapElement ??= _getClassElement(_coreLibrary, 'Map');
   }
 
-  /// Return the type that should be used during disambiguation between `Set`
-  /// and `Map` literals. If NNBD enabled, use `Map<Object?, Object?>`,
-  /// otherwise use `Map<Object*, Object*>*`.
-  InterfaceType get mapForSetMapDisambiguation {
-    if (_mapForSetMapDisambiguation == null) {
-      var objectType = objectElement.instantiate(
-        typeArguments: const [],
-        nullabilitySuffix: _questionOrStarSuffix,
-      );
-      _mapForSetMapDisambiguation = mapElement.instantiate(
-        typeArguments: [
-          objectType,
-          objectType,
-        ],
-        nullabilitySuffix: _questionOrStarSuffix,
-      );
-    }
-    return _mapForSetMapDisambiguation;
-  }
-
   @override
   InterfaceType get mapObjectObjectType {
     _mapObjectObjectType ??= InterfaceTypeImpl(
@@ -491,12 +449,6 @@
     }
   }
 
-  NullabilitySuffix get _questionOrStarSuffix {
-    return isNonNullableByDefault
-        ? NullabilitySuffix.question
-        : NullabilitySuffix.star;
-  }
-
   @override
   InterfaceType futureOrType2(DartType valueType) {
     return futureOrElement.instantiate(
diff --git a/pkg/analyzer/lib/src/dart/element/type_system.dart b/pkg/analyzer/lib/src/dart/element/type_system.dart
index e9a450b..01a252f 100644
--- a/pkg/analyzer/lib/src/dart/element/type_system.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_system.dart
@@ -90,6 +90,19 @@
     return type;
   }
 
+  DartType futureOrBase(DartType type) {
+    // If `T` is `FutureOr<S>` for some `S`,
+    // then `futureOrBase(T)` = `futureOrBase(S)`
+    if (type is InterfaceType && type.isDartAsyncFutureOr) {
+      return futureOrBase(
+        type.typeArguments[0],
+      );
+    }
+
+    // Otherwise `futureOrBase(T)` = `T`.
+    return type;
+  }
+
   List<InterfaceType> gatherMixinSupertypeConstraintsForInference(
       ClassElement mixinElement) {
     List<InterfaceType> candidates;
@@ -259,30 +272,6 @@
     return inferredTypes;
   }
 
-  /// Searches the superinterfaces of [type] for implementations of
-  /// [genericType] and returns the most specific type argument used for that
-  /// generic type.
-  ///
-  /// For a more general/robust solution, use [InterfaceTypeImpl.asInstanceOf].
-  ///
-  /// For example, given [type] `List<int>` and [genericType] `Iterable<T>`,
-  /// returns [int].
-  ///
-  /// Returns `null` if [type] does not implement [genericType].
-  DartType mostSpecificTypeArgument(DartType type, DartType genericType) {
-    if (type is! InterfaceType) return null;
-    if (genericType is! InterfaceType) return null;
-
-    var asInstanceOf =
-        type.asInstanceOf((genericType as InterfaceType).element);
-
-    if (asInstanceOf != null) {
-      return asInstanceOf.typeArguments[0];
-    }
-
-    return null;
-  }
-
   /// Returns a non-nullable version of [type].  This is equivalent to the
   /// operation `NonNull` defined in the spec.
   @override
diff --git a/pkg/analyzer/lib/src/dart/error/hint_codes.dart b/pkg/analyzer/lib/src/dart/error/hint_codes.dart
index 15b3b1e..ddd22b4 100644
--- a/pkg/analyzer/lib/src/dart/error/hint_codes.dart
+++ b/pkg/analyzer/lib/src/dart/error/hint_codes.dart
@@ -204,6 +204,13 @@
       hasPublishedDocs: true);
 
   /**
+   * `Function` should not be extended anymore.
+   */
+  static const HintCode DEPRECATED_EXTENDS_FUNCTION = HintCode(
+      'DEPRECATED_EXTENDS_FUNCTION', "Extending 'Function' is deprecated.",
+      correction: "Try removing 'Function' from the 'extends' clause.");
+
+  /**
    * Users should not create a class named `Function` anymore.
    */
   static const HintCode DEPRECATED_FUNCTION_CLASS_DECLARATION = HintCode(
@@ -212,13 +219,6 @@
       correction: "Try renaming the class.");
 
   /**
-   * `Function` should not be extended anymore.
-   */
-  static const HintCode DEPRECATED_EXTENDS_FUNCTION = HintCode(
-      'DEPRECATED_EXTENDS_FUNCTION', "Extending 'Function' is deprecated.",
-      correction: "Try removing 'Function' from the 'extends' clause.");
-
-  /**
    * Parameters:
    * 0: the name of the member
    */
@@ -323,6 +323,14 @@
       correction: "Try re-writing the expression to use the '~/' operator.");
 
   /**
+   * Duplicate hidden names.
+   */
+  static const HintCode DUPLICATE_HIDDEN_NAME =
+      HintCode('DUPLICATE_HIDDEN_NAME', "Duplicate hidden name.",
+          correction: "Try removing the repeated name from the list of hidden "
+              "members.");
+
+  /**
    * Duplicate imports.
    *
    * No parameters.
@@ -359,14 +367,6 @@
       hasPublishedDocs: true);
 
   /**
-   * Duplicate hidden names.
-   */
-  static const HintCode DUPLICATE_HIDDEN_NAME =
-      HintCode('DUPLICATE_HIDDEN_NAME', "Duplicate hidden name.",
-          correction: "Try removing the repeated name from the list of hidden "
-              "members.");
-
-  /**
    * Duplicate shown names.
    */
   static const HintCode DUPLICATE_SHOWN_NAME =
@@ -595,6 +595,157 @@
       'INVALID_IMMUTABLE_ANNOTATION',
       "Only classes can be annotated as being immutable.");
 
+  /// Invalid Dart language version comments don't follow the specification [1].
+  /// If a comment begins with "@dart" or "dart" (letters in any case),
+  /// followed by optional whitespace, followed by optional non-alphanumeric,
+  /// non-whitespace characters, followed by optional whitespace, followed by
+  /// an optional alphabetical character, followed by a digit, then the
+  /// comment is considered to be an attempt at a language version override
+  /// comment. If this attempted language version override comment is not a
+  /// valid language version override comment, it is reported.
+  ///
+  /// [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
+  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_AT_SIGN =
+      HintCodeWithUniqueName(
+          'INVALID_LANGUAGE_VERSION_OVERRIDE',
+          'HintCode.INVALID_LANGUAGE_VERSION_OVERRIDE_AT_SIGN',
+          "The Dart language version override number must begin with '@dart'",
+          correction: "Specify a Dart language version override with a comment "
+              "like '// @dart = 2.0'.");
+
+  /// Invalid Dart language version comments don't follow the specification [1].
+  /// If a comment begins with "@dart" or "dart" (letters in any case),
+  /// followed by optional whitespace, followed by optional non-alphanumeric,
+  /// non-whitespace characters, followed by optional whitespace, followed by
+  /// an optional alphabetical character, followed by a digit, then the
+  /// comment is considered to be an attempt at a language version override
+  /// comment. If this attempted language version override comment is not a
+  /// valid language version override comment, it is reported.
+  ///
+  /// [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
+  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_EQUALS =
+      HintCodeWithUniqueName(
+          'INVALID_LANGUAGE_VERSION_OVERRIDE',
+          'HintCode.INVALID_LANGUAGE_VERSION_OVERRIDE_EQUALS',
+          "The Dart language version override comment must be specified with "
+              "an '=' character",
+          correction: "Specify a Dart language version override with a comment "
+              "like '// @dart = 2.0'.");
+
+  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_GREATER =
+      HintCodeWithUniqueName(
+    'INVALID_LANGUAGE_VERSION_OVERRIDE',
+    'INVALID_LANGUAGE_VERSION_OVERRIDE_GREATER',
+    "The language version override can't specify a version greater than the "
+        "latest known language version: {0}.{1}",
+    correction: "Try removing the language version override.",
+  );
+
+  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_LOCATION =
+      HintCodeWithUniqueName(
+    'INVALID_LANGUAGE_VERSION_OVERRIDE',
+    'INVALID_LANGUAGE_VERSION_OVERRIDE_LOCATION',
+    "The language version override must be before any declaration or "
+        "directive.",
+    correction:
+        "Try moving the language version override to the top of the file.",
+  );
+
+  /// Invalid Dart language version comments don't follow the specification [1].
+  /// If a comment begins with "@dart" or "dart" (letters in any case),
+  /// followed by optional whitespace, followed by optional non-alphanumeric,
+  /// non-whitespace characters, followed by optional whitespace, followed by
+  /// an optional alphabetical character, followed by a digit, then the
+  /// comment is considered to be an attempt at a language version override
+  /// comment. If this attempted language version override comment is not a
+  /// valid language version override comment, it is reported.
+  ///
+  /// [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
+  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_LOWER_CASE =
+      HintCodeWithUniqueName(
+          'INVALID_LANGUAGE_VERSION_OVERRIDE',
+          'HintCode.INVALID_LANGUAGE_VERSION_OVERRIDE_LOWER_CASE',
+          "The Dart language version override comment must be specified with "
+              "the word 'dart' in all lower case",
+          correction: "Specify a Dart language version override with a comment "
+              "like '// @dart = 2.0'.");
+
+  /// Invalid Dart language version comments don't follow the specification [1].
+  /// If a comment begins with "@dart" or "dart" (letters in any case),
+  /// followed by optional whitespace, followed by optional non-alphanumeric,
+  /// non-whitespace characters, followed by optional whitespace, followed by
+  /// an optional alphabetical character, followed by a digit, then the
+  /// comment is considered to be an attempt at a language version override
+  /// comment. If this attempted language version override comment is not a
+  /// valid language version override comment, it is reported.
+  ///
+  /// [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
+  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_NUMBER =
+      HintCodeWithUniqueName(
+          'INVALID_LANGUAGE_VERSION_OVERRIDE',
+          'HintCode.INVALID_LANGUAGE_VERSION_OVERRIDE_NUMBER',
+          "The Dart language version override comment must be specified with a "
+              "version number, like '2.0', after the '=' character.",
+          correction: "Specify a Dart language version override with a comment "
+              "like '// @dart = 2.0'.");
+
+  /// Invalid Dart language version comments don't follow the specification [1].
+  /// If a comment begins with "@dart" or "dart" (letters in any case),
+  /// followed by optional whitespace, followed by optional non-alphanumeric,
+  /// non-whitespace characters, followed by optional whitespace, followed by
+  /// an optional alphabetical character, followed by a digit, then the
+  /// comment is considered to be an attempt at a language version override
+  /// comment. If this attempted language version override comment is not a
+  /// valid language version override comment, it is reported.
+  ///
+  /// [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
+  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_PREFIX =
+      HintCodeWithUniqueName(
+          'INVALID_LANGUAGE_VERSION_OVERRIDE',
+          'HintCode.INVALID_LANGUAGE_VERSION_OVERRIDE_PREFIX',
+          "The Dart language version override number can't be prefixed with "
+              "a letter",
+          correction: "Specify a Dart language version override with a comment "
+              "like '// @dart = 2.0'.");
+
+  /// Invalid Dart language version comments don't follow the specification [1].
+  /// If a comment begins with "@dart" or "dart" (letters in any case),
+  /// followed by optional whitespace, followed by optional non-alphanumeric,
+  /// non-whitespace characters, followed by optional whitespace, followed by
+  /// an optional alphabetical character, followed by a digit, then the
+  /// comment is considered to be an attempt at a language version override
+  /// comment. If this attempted language version override comment is not a
+  /// valid language version override comment, it is reported.
+  ///
+  /// [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
+  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_TRAILING_CHARACTERS =
+      HintCodeWithUniqueName(
+          'INVALID_LANGUAGE_VERSION_OVERRIDE',
+          'HintCode.INVALID_LANGUAGE_VERSION_OVERRIDE_TRAILING_CHARACTERS',
+          "The Dart language version override comment can't be followed by "
+              "any non-whitespace characters",
+          correction: "Specify a Dart language version override with a comment "
+              "like '// @dart = 2.0'.");
+
+  /// Invalid Dart language version comments don't follow the specification [1].
+  /// If a comment begins with "@dart" or "dart" (letters in any case),
+  /// followed by optional whitespace, followed by optional non-alphanumeric,
+  /// non-whitespace characters, followed by optional whitespace, followed by
+  /// an optional alphabetical character, followed by a digit, then the
+  /// comment is considered to be an attempt at a language version override
+  /// comment. If this attempted language version override comment is not a
+  /// valid language version override comment, it is reported.
+  ///
+  /// [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
+  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_TWO_SLASHES =
+      HintCodeWithUniqueName(
+          'INVALID_LANGUAGE_VERSION_OVERRIDE',
+          'HintCode.INVALID_LANGUAGE_VERSION_OVERRIDE_TWO_SLASHES',
+          'The Dart language version override comment must be specified with '
+              'exactly two slashes.',
+          correction: "Specify a Dart language version override with a comment "
+              "like '// @dart = 2.0'.");
+
   /**
    * No parameters.
    */
@@ -790,157 +941,6 @@
       'INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER',
       "The member '{0}' can only be used within '{1}' or a test.");
 
-  /// Invalid Dart language version comments don't follow the specification [1].
-  /// If a comment begins with "@dart" or "dart" (letters in any case),
-  /// followed by optional whitespace, followed by optional non-alphanumeric,
-  /// non-whitespace characters, followed by optional whitespace, followed by
-  /// an optional alphabetical character, followed by a digit, then the
-  /// comment is considered to be an attempt at a language version override
-  /// comment. If this attempted language version override comment is not a
-  /// valid language version override comment, it is reported.
-  ///
-  /// [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
-  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_AT_SIGN =
-      HintCodeWithUniqueName(
-          'INVALID_LANGUAGE_VERSION_OVERRIDE',
-          'HintCode.INVALID_LANGUAGE_VERSION_OVERRIDE_AT_SIGN',
-          "The Dart language version override number must begin with '@dart'",
-          correction: "Specify a Dart language version override with a comment "
-              "like '// @dart = 2.0'.");
-
-  /// Invalid Dart language version comments don't follow the specification [1].
-  /// If a comment begins with "@dart" or "dart" (letters in any case),
-  /// followed by optional whitespace, followed by optional non-alphanumeric,
-  /// non-whitespace characters, followed by optional whitespace, followed by
-  /// an optional alphabetical character, followed by a digit, then the
-  /// comment is considered to be an attempt at a language version override
-  /// comment. If this attempted language version override comment is not a
-  /// valid language version override comment, it is reported.
-  ///
-  /// [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
-  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_EQUALS =
-      HintCodeWithUniqueName(
-          'INVALID_LANGUAGE_VERSION_OVERRIDE',
-          'HintCode.INVALID_LANGUAGE_VERSION_OVERRIDE_EQUALS',
-          "The Dart language version override comment must be specified with "
-              "an '=' character",
-          correction: "Specify a Dart language version override with a comment "
-              "like '// @dart = 2.0'.");
-
-  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_GREATER =
-      HintCodeWithUniqueName(
-    'INVALID_LANGUAGE_VERSION_OVERRIDE',
-    'INVALID_LANGUAGE_VERSION_OVERRIDE_GREATER',
-    "The language version override can't specify a version greater than the "
-        "latest known language version: {0}.{1}",
-    correction: "Try removing the language version override.",
-  );
-
-  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_LOCATION =
-      HintCodeWithUniqueName(
-    'INVALID_LANGUAGE_VERSION_OVERRIDE',
-    'INVALID_LANGUAGE_VERSION_OVERRIDE_LOCATION',
-    "The language version override must be before any declaration or "
-        "directive.",
-    correction:
-        "Try moving the language version override to the top of the file.",
-  );
-
-  /// Invalid Dart language version comments don't follow the specification [1].
-  /// If a comment begins with "@dart" or "dart" (letters in any case),
-  /// followed by optional whitespace, followed by optional non-alphanumeric,
-  /// non-whitespace characters, followed by optional whitespace, followed by
-  /// an optional alphabetical character, followed by a digit, then the
-  /// comment is considered to be an attempt at a language version override
-  /// comment. If this attempted language version override comment is not a
-  /// valid language version override comment, it is reported.
-  ///
-  /// [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
-  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_LOWER_CASE =
-      HintCodeWithUniqueName(
-          'INVALID_LANGUAGE_VERSION_OVERRIDE',
-          'HintCode.INVALID_LANGUAGE_VERSION_OVERRIDE_LOWER_CASE',
-          "The Dart language version override comment must be specified with "
-              "the word 'dart' in all lower case",
-          correction: "Specify a Dart language version override with a comment "
-              "like '// @dart = 2.0'.");
-
-  /// Invalid Dart language version comments don't follow the specification [1].
-  /// If a comment begins with "@dart" or "dart" (letters in any case),
-  /// followed by optional whitespace, followed by optional non-alphanumeric,
-  /// non-whitespace characters, followed by optional whitespace, followed by
-  /// an optional alphabetical character, followed by a digit, then the
-  /// comment is considered to be an attempt at a language version override
-  /// comment. If this attempted language version override comment is not a
-  /// valid language version override comment, it is reported.
-  ///
-  /// [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
-  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_NUMBER =
-      HintCodeWithUniqueName(
-          'INVALID_LANGUAGE_VERSION_OVERRIDE',
-          'HintCode.INVALID_LANGUAGE_VERSION_OVERRIDE_NUMBER',
-          "The Dart language version override comment must be specified with a "
-              "version number, like '2.0', after the '=' character.",
-          correction: "Specify a Dart language version override with a comment "
-              "like '// @dart = 2.0'.");
-
-  /// Invalid Dart language version comments don't follow the specification [1].
-  /// If a comment begins with "@dart" or "dart" (letters in any case),
-  /// followed by optional whitespace, followed by optional non-alphanumeric,
-  /// non-whitespace characters, followed by optional whitespace, followed by
-  /// an optional alphabetical character, followed by a digit, then the
-  /// comment is considered to be an attempt at a language version override
-  /// comment. If this attempted language version override comment is not a
-  /// valid language version override comment, it is reported.
-  ///
-  /// [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
-  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_PREFIX =
-      HintCodeWithUniqueName(
-          'INVALID_LANGUAGE_VERSION_OVERRIDE',
-          'HintCode.INVALID_LANGUAGE_VERSION_OVERRIDE_PREFIX',
-          "The Dart language version override number can't be prefixed with "
-              "a letter",
-          correction: "Specify a Dart language version override with a comment "
-              "like '// @dart = 2.0'.");
-
-  /// Invalid Dart language version comments don't follow the specification [1].
-  /// If a comment begins with "@dart" or "dart" (letters in any case),
-  /// followed by optional whitespace, followed by optional non-alphanumeric,
-  /// non-whitespace characters, followed by optional whitespace, followed by
-  /// an optional alphabetical character, followed by a digit, then the
-  /// comment is considered to be an attempt at a language version override
-  /// comment. If this attempted language version override comment is not a
-  /// valid language version override comment, it is reported.
-  ///
-  /// [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
-  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_TRAILING_CHARACTERS =
-      HintCodeWithUniqueName(
-          'INVALID_LANGUAGE_VERSION_OVERRIDE',
-          'HintCode.INVALID_LANGUAGE_VERSION_OVERRIDE_TRAILING_CHARACTERS',
-          "The Dart language version override comment can't be followed by "
-              "any non-whitespace characters",
-          correction: "Specify a Dart language version override with a comment "
-              "like '// @dart = 2.0'.");
-
-  /// Invalid Dart language version comments don't follow the specification [1].
-  /// If a comment begins with "@dart" or "dart" (letters in any case),
-  /// followed by optional whitespace, followed by optional non-alphanumeric,
-  /// non-whitespace characters, followed by optional whitespace, followed by
-  /// an optional alphabetical character, followed by a digit, then the
-  /// comment is considered to be an attempt at a language version override
-  /// comment. If this attempted language version override comment is not a
-  /// valid language version override comment, it is reported.
-  ///
-  /// [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
-  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_TWO_SLASHES =
-      HintCodeWithUniqueName(
-          'INVALID_LANGUAGE_VERSION_OVERRIDE',
-          'HintCode.INVALID_LANGUAGE_VERSION_OVERRIDE_TWO_SLASHES',
-          'The Dart language version override comment must be specified with '
-              'exactly two slashes.',
-          correction: "Specify a Dart language version override with a comment "
-              "like '// @dart = 2.0'.");
-
   /**
    * This hint is generated anywhere where a private declaration is annotated
    * with `@visibleForTemplate` or `@visibleForTesting`.
@@ -1458,20 +1458,6 @@
       correction: "Try implementing 'hashCode'.");
 
   /**
-   * A getter with the override annotation does not override an existing getter.
-   *
-   * No parameters.
-   */
-  static const HintCode OVERRIDE_ON_NON_OVERRIDING_GETTER =
-      HintCodeWithUniqueName(
-          'OVERRIDE_ON_NON_OVERRIDING_MEMBER',
-          'HintCode.OVERRIDE_ON_NON_OVERRIDING_GETTER',
-          "The getter doesn't override an inherited getter.",
-          correction: "Try updating this class to match the superclass, or "
-              "removing the override annotation.",
-          hasPublishedDocs: true);
-
-  /**
    * A field with the override annotation does not override a getter or setter.
    *
    * No parameters.
@@ -1486,6 +1472,20 @@
           hasPublishedDocs: true);
 
   /**
+   * A getter with the override annotation does not override an existing getter.
+   *
+   * No parameters.
+   */
+  static const HintCode OVERRIDE_ON_NON_OVERRIDING_GETTER =
+      HintCodeWithUniqueName(
+          'OVERRIDE_ON_NON_OVERRIDING_MEMBER',
+          'HintCode.OVERRIDE_ON_NON_OVERRIDING_GETTER',
+          "The getter doesn't override an inherited getter.",
+          correction: "Try updating this class to match the superclass, or "
+              "removing the override annotation.",
+          hasPublishedDocs: true);
+
+  /**
    * A method with the override annotation does not override an existing method.
    *
    * No parameters.
@@ -1583,61 +1583,6 @@
    */
   // #### Description
   //
-  // The analyzer produces this diagnostic when either the class `Future` or
-  // `Stream` is referenced in a library that doesn't import `dart:async` in
-  // code that has an SDK constraint whose lower bound is less than 2.1.0. In
-  // earlier versions, these classes weren't defined in `dart:core`, so the
-  // import was necessary.
-  //
-  // #### Examples
-  //
-  // Here's an example of a pubspec that defines an SDK constraint with a lower
-  // bound of less than 2.1.0:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // environment:
-  //   sdk: '>=2.0.0 <2.4.0'
-  // ```
-  //
-  // In the package that has that pubspec, code like the following produces this
-  // diagnostic:
-  //
-  // ```dart
-  // void f([!Future!] f) {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you don't need to support older versions of the SDK, then you can
-  // increase the SDK constraint to allow the classes to be referenced:
-  //
-  // ```yaml
-  // environment:
-  //   sdk: '>=2.1.0 <2.4.0'
-  // ```
-  //
-  // If you need to support older versions of the SDK, then import the
-  // `dart:async` library.
-  //
-  // ```dart
-  // import 'dart:async';
-  //
-  // void f(Future f) {}
-  // ```
-  static const HintCode SDK_VERSION_ASYNC_EXPORTED_FROM_CORE = HintCode(
-      'SDK_VERSION_ASYNC_EXPORTED_FROM_CORE',
-      "The class '{0}' wasn't exported from 'dart:core' until version 2.1, "
-          "but this code is required to be able to run on earlier versions.",
-      correction:
-          "Try either importing 'dart:async' or updating the SDK constraints.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
   // The analyzer produces this diagnostic when an `as` expression inside a
   // [constant context](#constant-context) is found in code that has an SDK
   // constraint whose lower bound is less than 2.3.2. Using an `as` expression
@@ -1695,6 +1640,61 @@
    */
   // #### Description
   //
+  // The analyzer produces this diagnostic when either the class `Future` or
+  // `Stream` is referenced in a library that doesn't import `dart:async` in
+  // code that has an SDK constraint whose lower bound is less than 2.1.0. In
+  // earlier versions, these classes weren't defined in `dart:core`, so the
+  // import was necessary.
+  //
+  // #### Examples
+  //
+  // Here's an example of a pubspec that defines an SDK constraint with a lower
+  // bound of less than 2.1.0:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // environment:
+  //   sdk: '>=2.0.0 <2.4.0'
+  // ```
+  //
+  // In the package that has that pubspec, code like the following produces this
+  // diagnostic:
+  //
+  // ```dart
+  // void f([!Future!] f) {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you don't need to support older versions of the SDK, then you can
+  // increase the SDK constraint to allow the classes to be referenced:
+  //
+  // ```yaml
+  // environment:
+  //   sdk: '>=2.1.0 <2.4.0'
+  // ```
+  //
+  // If you need to support older versions of the SDK, then import the
+  // `dart:async` library.
+  //
+  // ```dart
+  // import 'dart:async';
+  //
+  // void f(Future f) {}
+  // ```
+  static const HintCode SDK_VERSION_ASYNC_EXPORTED_FROM_CORE = HintCode(
+      'SDK_VERSION_ASYNC_EXPORTED_FROM_CORE',
+      "The class '{0}' wasn't exported from 'dart:core' until version 2.1, "
+          "but this code is required to be able to run on earlier versions.",
+      correction:
+          "Try either importing 'dart:async' or updating the SDK constraints.",
+      hasPublishedDocs: true);
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
   // The analyzer produces this diagnostic when any use of the `&`, `|`, or `^`
   // operators on the class `bool` inside a
   // [constant context](#constant-context) is found in code that has an SDK
@@ -1989,57 +1989,6 @@
   /**
    * No parameters.
    */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a set literal is found in code
-  // that has an SDK constraint whose lower bound is less than 2.2.0. Set
-  // literals weren't supported in earlier versions, so this code won't be able
-  // to run against earlier versions of the SDK.
-  //
-  // #### Examples
-  //
-  // Here's an example of a pubspec that defines an SDK constraint with a lower
-  // bound of less than 2.2.0:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // environment:
-  //   sdk: '>=2.1.0 <2.4.0'
-  // ```
-  //
-  // In the package that has that pubspec, code like the following produces this
-  // diagnostic:
-  //
-  // ```dart
-  // var s = [!<int>{}!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you don't need to support older versions of the SDK, then you can
-  // increase the SDK constraint to allow the syntax to be used:
-  //
-  // ```yaml
-  // environment:
-  //   sdk: '>=2.2.0 <2.4.0'
-  // ```
-  //
-  // If you do need to support older versions of the SDK, then replace the set
-  // literal with code that creates the set without the use of a literal:
-  //
-  // ```dart
-  // var s = new Set<int>();
-  // ```
-  static const HintCode SDK_VERSION_SET_LITERAL = HintCode(
-      'SDK_VERSION_SET_LITERAL',
-      "Set literals weren't supported until version 2.2, but this code is "
-          "required to be able to run on earlier versions.",
-      correction: "Try updating the SDK constraints.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
   /* // #### Description
   //
   // The analyzer produces this diagnostic when a reference to the class `Never`
@@ -2094,6 +2043,57 @@
    */
   // #### Description
   //
+  // The analyzer produces this diagnostic when a set literal is found in code
+  // that has an SDK constraint whose lower bound is less than 2.2.0. Set
+  // literals weren't supported in earlier versions, so this code won't be able
+  // to run against earlier versions of the SDK.
+  //
+  // #### Examples
+  //
+  // Here's an example of a pubspec that defines an SDK constraint with a lower
+  // bound of less than 2.2.0:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // environment:
+  //   sdk: '>=2.1.0 <2.4.0'
+  // ```
+  //
+  // In the package that has that pubspec, code like the following produces this
+  // diagnostic:
+  //
+  // ```dart
+  // var s = [!<int>{}!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you don't need to support older versions of the SDK, then you can
+  // increase the SDK constraint to allow the syntax to be used:
+  //
+  // ```yaml
+  // environment:
+  //   sdk: '>=2.2.0 <2.4.0'
+  // ```
+  //
+  // If you do need to support older versions of the SDK, then replace the set
+  // literal with code that creates the set without the use of a literal:
+  //
+  // ```dart
+  // var s = new Set<int>();
+  // ```
+  static const HintCode SDK_VERSION_SET_LITERAL = HintCode(
+      'SDK_VERSION_SET_LITERAL',
+      "Set literals weren't supported until version 2.2, but this code is "
+          "required to be able to run on earlier versions.",
+      correction: "Try updating the SDK constraints.",
+      hasPublishedDocs: true);
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
   // The analyzer produces this diagnostic when a for, if, or spread element is
   // found in code that has an SDK constraint whose lower bound is less than
   // 2.3.0. Using a for, if, or spread element wasn't supported in earlier
diff --git a/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart b/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart
index f4297a2..790541d 100644
--- a/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart
+++ b/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart
@@ -127,12 +127,16 @@
     // Resolve URIs in directives to corresponding sources.
     FeatureSet featureSet = units[_library].featureSet;
 
-    units.forEach((file, unit) {
-      _validateFeatureSet(unit, featureSet);
-      _resolveUriBasedDirectives(file, unit);
+    performance.run('resolveUriDirectives', (performance) {
+      units.forEach((file, unit) {
+        _validateFeatureSet(unit, featureSet);
+        _resolveUriBasedDirectives(file, unit);
+      });
     });
 
-    _libraryElement = _elementFactory.libraryOfUri(_library.uriStr);
+    performance.run('libraryElement', (performance) {
+      _libraryElement = _elementFactory.libraryOfUri(_library.uriStr);
+    });
 
     performance.run('resolveDirectives', (performance) {
       _resolveDirectives(units, forCompletion);
@@ -628,7 +632,7 @@
                     [name]);
               } else if (libraryNameNode.name != name) {
                 libraryErrorReporter.reportErrorForNode(
-                    StaticWarningCode.PART_OF_DIFFERENT_LIBRARY,
+                    CompileTimeErrorCode.PART_OF_DIFFERENT_LIBRARY,
                     partUri,
                     [libraryNameNode.name, name]);
               }
@@ -636,7 +640,7 @@
               Source source = nameOrSource.source;
               if (source != _library.source) {
                 libraryErrorReporter.reportErrorForNode(
-                    StaticWarningCode.PART_OF_DIFFERENT_LIBRARY,
+                    CompileTimeErrorCode.PART_OF_DIFFERENT_LIBRARY,
                     partUri,
                     [_library.uriStr, source.uri]);
               }
@@ -712,7 +716,7 @@
         featureSet: unit.featureSet, flowAnalysisHelper: flowAnalysisHelper);
 
     if (completionOffset != null) {
-      var node = NodeLocator2(completionOffset).searchWithin(unit);
+      var node = NodeLocator(completionOffset).searchWithin(unit);
       var enclosingExecutable = node?.thisOrAncestorMatching((e) {
         return e.parent is ClassDeclaration || e.parent is CompilationUnit;
       });
diff --git a/pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart
index 5ae37cd..165da43 100644
--- a/pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart
@@ -197,7 +197,7 @@
     if (operatorType != TokenType.EQ) {
       if (staticType != null && staticType.isVoid) {
         _errorReporter.reportErrorForToken(
-          StaticWarningCode.USE_OF_VOID_RESULT,
+          CompileTimeErrorCode.USE_OF_VOID_RESULT,
           operator,
         );
         return;
diff --git a/pkg/analyzer/lib/src/dart/resolver/exit_detector.dart b/pkg/analyzer/lib/src/dart/resolver/exit_detector.dart
index f9c6f1c..4c10a69 100644
--- a/pkg/analyzer/lib/src/dart/resolver/exit_detector.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/exit_detector.dart
@@ -6,6 +6,7 @@
 import 'package:analyzer/dart/ast/token.dart';
 import 'package:analyzer/dart/ast/visitor.dart';
 import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/src/dart/element/type.dart';
 
 /// Instances of the class `ExitDetector` determine whether the visited AST node
 /// is guaranteed to terminate by executing a `return` statement, `throw`
@@ -423,7 +424,7 @@
       }
     }
     Element element = node.methodName.staticElement;
-    if (element != null && element.hasAlwaysThrows) {
+    if (_elementExits(element)) {
       return true;
     }
     return _nodeExits(node.argumentList);
@@ -660,4 +661,14 @@
   static bool exits(AstNode node) {
     return ExitDetector()._nodeExits(node);
   }
+
+  static bool _elementExits(Element element) {
+    if (element is ExecutableElement) {
+      var declaration = element.declaration;
+      return declaration.hasAlwaysThrows ||
+          identical(declaration.returnType, NeverTypeImpl.instance);
+    }
+
+    return false;
+  }
 }
diff --git a/pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart
index a8a6d9e..5285ca7 100644
--- a/pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart
@@ -160,7 +160,7 @@
 
     if (receiverType.isVoid) {
       _errorReporter.reportErrorForNode(
-          StaticWarningCode.USE_OF_VOID_RESULT, receiverExpression);
+          CompileTimeErrorCode.USE_OF_VOID_RESULT, receiverExpression);
     } else if (!_typeSystem.isAssignableTo2(receiverType, node.extendedType)) {
       _errorReporter.reportErrorForNode(
         CompileTimeErrorCode.EXTENSION_OVERRIDE_ARGUMENT_NOT_ASSIGNABLE,
diff --git a/pkg/analyzer/lib/src/dart/resolver/invocation_inference_helper.dart b/pkg/analyzer/lib/src/dart/resolver/invocation_inference_helper.dart
index 29e89fe..cc18f5e 100644
--- a/pkg/analyzer/lib/src/dart/resolver/invocation_inference_helper.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/invocation_inference_helper.dart
@@ -45,8 +45,7 @@
   /// type that is being invoked.
   DartType computeInvokeReturnType(DartType type) {
     if (type is FunctionType) {
-      // TODO(scheglov) https://github.com/dart-lang/sdk/issues/41065
-      return type.returnType ?? DynamicTypeImpl.instance;
+      return type.returnType;
     } else {
       return DynamicTypeImpl.instance;
     }
diff --git a/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
index 0118d45..ceb24d4 100644
--- a/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
@@ -228,7 +228,7 @@
       ExecutableElement element, SimpleIdentifier nameNode) {
     if (!element.isStatic) {
       _resolver.errorReporter.reportErrorForNode(
-        StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER,
+        CompileTimeErrorCode.STATIC_ACCESS_TO_INSTANCE_MEMBER,
         nameNode,
         [nameNode.name],
       );
@@ -264,7 +264,7 @@
   void _reportUseOfVoidType(MethodInvocation node, AstNode errorNode) {
     _setDynamicResolution(node);
     _resolver.errorReporter.reportErrorForNode(
-      StaticWarningCode.USE_OF_VOID_RESULT,
+      CompileTimeErrorCode.USE_OF_VOID_RESULT,
       errorNode,
     );
   }
diff --git a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
index 6ed6207..5674c42 100644
--- a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
@@ -109,7 +109,6 @@
       libraryElement.typeSystem,
       typeProvider,
       isNonNullableByDefault,
-      libraryElement,
       errorReporter,
     );
 
diff --git a/pkg/analyzer/lib/src/dart/resolver/scope.dart b/pkg/analyzer/lib/src/dart/resolver/scope.dart
index 78c625c..af28859 100644
--- a/pkg/analyzer/lib/src/dart/resolver/scope.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/scope.dart
@@ -14,13 +14,17 @@
 
 /// The scope defined by a block.
 class BlockScope {
-  /// Return the elements that are declared directly in the given [block]. This
-  /// does not include elements declared in nested blocks.
-  static Iterable<Element> elementsInBlock(Block block) sync* {
-    NodeList<Statement> statements = block.statements;
+  /// Return the elements that are declared directly in the given [statements].
+  /// This does not include elements declared in nested blocks.
+  static Iterable<Element> elementsInStatements(
+    List<Statement> statements,
+  ) sync* {
     int statementCount = statements.length;
     for (int i = 0; i < statementCount; i++) {
       Statement statement = statements[i];
+      if (statement is LabeledStatement) {
+        statement = (statement as LabeledStatement).statement;
+      }
       if (statement is VariableDeclarationStatement) {
         NodeList<VariableDeclaration> variables = statement.variables.variables;
         int variableCount = variables.length;
diff --git a/pkg/analyzer/lib/src/dart/resolver/type_name_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/type_name_resolver.dart
index 1c99b27..b6a88ef 100644
--- a/pkg/analyzer/lib/src/dart/resolver/type_name_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/type_name_resolver.dart
@@ -24,7 +24,6 @@
   final TypeSystemImpl typeSystem;
   final DartType dynamicType;
   final bool isNonNullableByDefault;
-  final LibraryElement definingLibrary; // TODO(scheglov) remove
   final ErrorReporter errorReporter;
 
   Scope nameScope;
@@ -52,7 +51,7 @@
   ConstructorName rewriteResult;
 
   TypeNameResolver(this.typeSystem, TypeProvider typeProvider,
-      this.isNonNullableByDefault, this.definingLibrary, this.errorReporter)
+      this.isNonNullableByDefault, this.errorReporter)
       : dynamicType = typeProvider.dynamicType;
 
   NullabilitySuffix get _noneOrStarSuffix {
@@ -69,55 +68,51 @@
     rewriteResult = null;
 
     var typeIdentifier = node.name;
-
-    if (typeIdentifier is SimpleIdentifier && typeIdentifier.name == 'void') {
-      node.type = VoidTypeImpl.instance;
-      return;
-    }
-
-    // TODO(scheglov) Update to use `lookup2`.
-    var element = nameScope.lookupIdentifier(typeIdentifier);
-
-    // TODO(scheglov) When fixing the previous TODO, report the prefix sooner.
     if (typeIdentifier is PrefixedIdentifier) {
       var prefix = typeIdentifier.prefix;
-      var prefixElement = prefix.staticElement;
-      if (prefixElement != null &&
-          prefixElement is! PrefixElement &&
-          prefixElement is! ClassElement) {
-        errorReporter.reportErrorForNode(
-          CompileTimeErrorCode.PREFIX_SHADOWED_BY_LOCAL_DECLARATION,
-          prefix,
-          [prefix.name],
-        );
-        node.type = dynamicType;
+      var prefixName = prefix.name;
+      var prefixElement = nameScope.lookup2(prefixName).getter;
+      prefix.staticElement = prefixElement;
+
+      if (prefixElement == null) {
+        _resolveToElement(node, null);
         return;
       }
-    }
 
-    if (element is MultiplyDefinedElement) {
-      _setElement(typeIdentifier, element);
+      if (prefixElement is ClassElement) {
+        _rewriteToConstructorName(node, typeIdentifier);
+        return;
+      }
+
+      if (prefixElement is PrefixElement) {
+        var nameNode = typeIdentifier.identifier;
+        var name = nameNode.name;
+
+        var element = prefixElement.scope.lookup2(name).getter;
+        nameNode.staticElement = element;
+        _resolveToElement(node, element);
+        return;
+      }
+
+      errorReporter.reportErrorForNode(
+        CompileTimeErrorCode.PREFIX_SHADOWED_BY_LOCAL_DECLARATION,
+        prefix,
+        [prefix.name],
+      );
       node.type = dynamicType;
-      return;
-    }
+    } else {
+      var nameNode = typeIdentifier as SimpleIdentifier;
+      var name = nameNode.name;
 
-    if (element != null) {
-      _setElement(typeIdentifier, element);
-      node.type = _instantiateElement(node, element);
-      return;
-    }
+      if (name == 'void') {
+        node.type = VoidTypeImpl.instance;
+        return;
+      }
 
-    // TODO(scheglov) Can we do rewriting better with using `lookup2`?
-    if (_rewriteToConstructorName(node)) {
-      return;
+      var element = nameScope.lookup2(name).getter;
+      nameNode.staticElement = element;
+      _resolveToElement(node, element);
     }
-
-    node.type = dynamicType;
-    if (nameScope.shouldIgnoreUndefined(typeIdentifier)) {
-      return;
-    }
-
-    _ErrorHelper(errorReporter).reportNullOrNonTypeElement(node, null);
   }
 
   /// Return type arguments, exactly [parameterCount].
@@ -306,61 +301,66 @@
     }
   }
 
-  /// We parse `foo.bar` as `prefix.Name` with the expectation that `prefix`
-  /// will be a [PrefixElement]. But we checked and found that `foo.bar` is
-  /// not in the scope, so try to see if it is `Class.constructor`.
-  ///
-  /// Return `true` if the node was rewritten as `Class.constructor`.
-  bool _rewriteToConstructorName(TypeName node) {
-    var typeIdentifier = node.name;
-    var constructorName = node.parent;
-    if (typeIdentifier is PrefixedIdentifier &&
-        constructorName is ConstructorName &&
-        constructorName.name == null) {
-      var classIdentifier = typeIdentifier.prefix;
-      var classElement = nameScope.lookupIdentifier(classIdentifier);
-      if (classElement is ClassElement) {
-        var constructorIdentifier = typeIdentifier.identifier;
-
-        var typeArguments = node.typeArguments;
-        if (typeArguments != null) {
-          errorReporter.reportErrorForNode(
-            StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR,
-            typeArguments,
-            [classIdentifier.name, constructorIdentifier.name],
-          );
-          var instanceCreation = constructorName.parent;
-          if (instanceCreation is InstanceCreationExpressionImpl) {
-            instanceCreation.typeArguments = typeArguments;
-          }
-        }
-
-        node.name = classIdentifier;
-        node.typeArguments = null;
-
-        constructorName.period = typeIdentifier.period;
-        constructorName.name = constructorIdentifier;
-
-        rewriteResult = constructorName;
-        return true;
+  void _resolveToElement(TypeName node, Element element) {
+    if (element == null) {
+      node.type = dynamicType;
+      if (!nameScope.shouldIgnoreUndefined(node.name)) {
+        _ErrorHelper(errorReporter).reportNullOrNonTypeElement(node, null);
       }
+      return;
     }
 
-    return false;
+    if (element is MultiplyDefinedElement) {
+      node.type = dynamicType;
+      return;
+    }
+
+    node.type = _instantiateElement(node, element);
   }
 
-  /// Records the new Element for a TypeName's Identifier.
-  ///
-  /// A null may be passed in to indicate that the element can't be resolved.
-  /// (During a re-run of a task, it's important to clear any previous value
-  /// of the element.)
-  void _setElement(Identifier typeName, Element element) {
-    if (typeName is SimpleIdentifier) {
-      typeName.staticElement = element;
-    } else if (typeName is PrefixedIdentifier) {
-      typeName.identifier.staticElement = element;
-      SimpleIdentifier prefix = typeName.prefix;
-      prefix.staticElement = nameScope.lookupIdentifier(prefix);
+  /// We parse `foo.bar` as `prefix.Name` with the expectation that `prefix`
+  /// will be a [PrefixElement]. But when we resolved the `prefix` it turned
+  /// out to be a [ClassElement], so it is probably a `Class.constructor`.
+  void _rewriteToConstructorName(
+    TypeName node,
+    PrefixedIdentifier typeIdentifier,
+  ) {
+    var constructorName = node.parent;
+    if (constructorName is ConstructorName && constructorName.name == null) {
+      var classIdentifier = typeIdentifier.prefix;
+      var constructorIdentifier = typeIdentifier.identifier;
+
+      var typeArguments = node.typeArguments;
+      if (typeArguments != null) {
+        errorReporter.reportErrorForNode(
+          StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR,
+          typeArguments,
+          [classIdentifier.name, constructorIdentifier.name],
+        );
+        var instanceCreation = constructorName.parent;
+        if (instanceCreation is InstanceCreationExpressionImpl) {
+          instanceCreation.typeArguments = typeArguments;
+        }
+      }
+
+      node.name = classIdentifier;
+      node.typeArguments = null;
+
+      constructorName.period = typeIdentifier.period;
+      constructorName.name = constructorIdentifier;
+
+      rewriteResult = constructorName;
+      return;
+    }
+
+    if (_isInstanceCreation(node)) {
+      _ErrorHelper(errorReporter).reportNewWithNonType(node);
+    } else {
+      errorReporter.reportErrorForNode(
+        CompileTimeErrorCode.NOT_A_TYPE,
+        typeIdentifier,
+        [typeIdentifier.name],
+      );
     }
   }
 
@@ -386,7 +386,7 @@
         errorReporter.reportErrorForNode(
           instanceCreation.isConst
               ? CompileTimeErrorCode.CONST_WITH_NON_TYPE
-              : StaticWarningCode.NEW_WITH_NON_TYPE,
+              : CompileTimeErrorCode.NEW_WITH_NON_TYPE,
           errorNode,
           [identifier.name],
         );
@@ -402,7 +402,7 @@
 
     if (errorNode.name == 'boolean') {
       errorReporter.reportErrorForNode(
-        StaticWarningCode.UNDEFINED_CLASS_BOOLEAN,
+        CompileTimeErrorCode.UNDEFINED_CLASS_BOOLEAN,
         errorNode,
       );
       return;
@@ -410,7 +410,7 @@
 
     if (_isTypeInCatchClause(node)) {
       errorReporter.reportErrorForNode(
-        StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE,
+        CompileTimeErrorCode.NON_TYPE_IN_CATCH_CLAUSE,
         identifier,
         [identifier.name],
       );
@@ -419,7 +419,7 @@
 
     if (_isTypeInAsExpression(node)) {
       errorReporter.reportErrorForNode(
-        StaticWarningCode.CAST_TO_NON_TYPE,
+        CompileTimeErrorCode.CAST_TO_NON_TYPE,
         identifier,
         [identifier.name],
       );
@@ -429,13 +429,13 @@
     if (_isTypeInIsExpression(node)) {
       if (element != null) {
         errorReporter.reportErrorForNode(
-          StaticWarningCode.TYPE_TEST_WITH_NON_TYPE,
+          CompileTimeErrorCode.TYPE_TEST_WITH_NON_TYPE,
           identifier,
           [identifier.name],
         );
       } else {
         errorReporter.reportErrorForNode(
-          StaticWarningCode.TYPE_TEST_WITH_UNDEFINED_NAME,
+          CompileTimeErrorCode.TYPE_TEST_WITH_UNDEFINED_NAME,
           identifier,
           [identifier.name],
         );
@@ -489,7 +489,7 @@
 
     if (element != null) {
       errorReporter.reportErrorForNode(
-        StaticWarningCode.NOT_A_TYPE,
+        CompileTimeErrorCode.NOT_A_TYPE,
         identifier,
         [identifier.name],
       );
@@ -498,7 +498,7 @@
 
     if (identifier is SimpleIdentifier && identifier.name == 'await') {
       errorReporter.reportErrorForNode(
-        StaticWarningCode.UNDEFINED_IDENTIFIER_AWAIT,
+        CompileTimeErrorCode.UNDEFINED_IDENTIFIER_AWAIT,
         node,
       );
       return;
diff --git a/pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart
index 84d9c7b0..b36521c 100644
--- a/pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart
@@ -12,7 +12,6 @@
 import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/dart/element/type.dart';
 import 'package:analyzer/src/dart/element/type_provider.dart';
-import 'package:analyzer/src/dart/element/type_schema.dart';
 import 'package:analyzer/src/dart/element/type_system.dart';
 import 'package:analyzer/src/error/codes.dart';
 import 'package:analyzer/src/generated/engine.dart';
@@ -176,22 +175,37 @@
       return _typeProvider.dynamicType;
     } else if (element is SpreadElement) {
       var expressionType = element.expression.staticType;
+
+      var iterableType = expressionType.asInstanceOf(
+        _typeProvider.iterableElement,
+      );
+      if (iterableType != null) {
+        return iterableType.typeArguments[0];
+      }
+
       if (expressionType.isDynamic) {
-        return expressionType;
-      } else if (expressionType is InterfaceType) {
+        return _typeProvider.dynamicType;
+      }
+
+      if (_typeSystem.isNonNullableByDefault) {
+        if (_typeSystem.isSubtypeOf2(expressionType, NeverTypeImpl.instance)) {
+          return NeverTypeImpl.instance;
+        }
+        if (_typeSystem.isSubtypeOf2(expressionType, _typeSystem.nullNone)) {
+          if (element.isNullAware) {
+            return NeverTypeImpl.instance;
+          }
+          return _typeProvider.dynamicType;
+        }
+      } else {
         if (expressionType.isDartCoreNull) {
           if (element.isNullAware) {
             return expressionType;
           }
-        } else {
-          var iterableType = expressionType.asInstanceOf(
-            _typeProvider.iterableElement,
-          );
-          if (iterableType != null) {
-            return iterableType.typeArguments[0];
-          }
+          return _typeProvider.dynamicType;
         }
       }
+
       // TODO(brianwilkerson) Report this as an error.
       return _typeProvider.dynamicType;
     }
@@ -252,39 +266,42 @@
     return _LiteralResolution(_LiteralResolutionKind.ambiguous, null);
   }
 
-  /// If [contextType] is defined and is a subtype of `Iterable<Object>` and
-  /// [contextType] is not a subtype of `Map<Object, Object>`, then *e* is a set
+  /// If [contextType] implements `Iterable`, but not `Map`, then *e* is a set
   /// literal.
   ///
-  /// If [contextType] is defined and is a subtype of `Map<Object, Object>` and
-  /// [contextType] is not a subtype of `Iterable<Object>` then *e* is a map
+  /// If [contextType] implements `Map`, but not `Iterable`, then *e* is a map
   /// literal.
   _LiteralResolution _fromContextType(DartType contextType) {
     if (contextType != null) {
-      DartType unwrap(DartType type) {
-        if (type is InterfaceType &&
-            type.isDartAsyncFutureOr &&
-            type.typeArguments.length == 1) {
-          return unwrap(type.typeArguments[0]);
-        }
-        return type;
-      }
-
-      DartType unwrappedContextType = unwrap(contextType);
+      var unwrappedContextType = _typeSystem.futureOrBase(contextType);
       // TODO(brianwilkerson) Find out what the "greatest closure" is and use that
       // where [unwrappedContextType] is used below.
-      bool isIterable = _typeSystem.isSubtypeOf2(
-          unwrappedContextType, _typeProvider.iterableForSetMapDisambiguation);
-      bool isMap = _typeSystem.isSubtypeOf2(
-          unwrappedContextType, _typeProvider.mapForSetMapDisambiguation);
+      var iterableType = unwrappedContextType.asInstanceOf(
+        _typeProvider.iterableElement,
+      );
+      var mapType = unwrappedContextType.asInstanceOf(
+        _typeProvider.mapElement,
+      );
+      var isIterable = iterableType != null;
+      var isMap = mapType != null;
+
+      // When `S` implements `Iterable` but not `Map`, `e` is a set literal.
       if (isIterable && !isMap) {
         return _LiteralResolution(
-            _LiteralResolutionKind.set, unwrappedContextType);
-      } else if (isMap && !isIterable) {
+          _LiteralResolutionKind.set,
+          unwrappedContextType,
+        );
+      }
+
+      // When `S` implements `Map` but not `Iterable`, `e` is a map literal.
+      if (isMap && !isIterable) {
         return _LiteralResolution(
-            _LiteralResolutionKind.map, unwrappedContextType);
+          _LiteralResolutionKind.map,
+          unwrappedContextType,
+        );
       }
     }
+
     return _LiteralResolution(_LiteralResolutionKind.ambiguous, null);
   }
 
@@ -332,39 +349,69 @@
           valueType: element.value.staticType);
     } else if (element is SpreadElement) {
       DartType expressionType = element.expression.staticType;
-      bool isNull = expressionType.isDartCoreNull;
-      if (!isNull && expressionType is InterfaceType) {
-        if (_typeSystem.isSubtypeOf2(
-            expressionType, _typeProvider.iterableForSetMapDisambiguation)) {
-          InterfaceType iterableType =
-              expressionType.asInstanceOf(_typeProvider.iterableElement);
-          return _InferredCollectionElementTypeInformation(
-              elementType: iterableType.typeArguments[0],
-              keyType: null,
-              valueType: null);
-        } else if (_typeSystem.isSubtypeOf2(
-            expressionType, _typeProvider.mapForSetMapDisambiguation)) {
-          InterfaceType mapType =
-              expressionType.asInstanceOf(_typeProvider.mapElement);
-          List<DartType> typeArguments = mapType.typeArguments;
-          return _InferredCollectionElementTypeInformation(
-              elementType: null,
-              keyType: typeArguments[0],
-              valueType: typeArguments[1]);
-        }
-      } else if (expressionType.isDynamic) {
+
+      var iterableType = expressionType.asInstanceOf(
+        _typeProvider.iterableElement,
+      );
+      if (iterableType != null) {
         return _InferredCollectionElementTypeInformation(
-            elementType: expressionType,
-            keyType: expressionType,
-            valueType: expressionType);
-      } else if (isNull && element.isNullAware) {
-        return _InferredCollectionElementTypeInformation(
-            elementType: expressionType,
-            keyType: expressionType,
-            valueType: expressionType);
+          elementType: iterableType.typeArguments[0],
+          keyType: null,
+          valueType: null,
+        );
       }
+
+      var mapType = expressionType.asInstanceOf(
+        _typeProvider.mapElement,
+      );
+      if (mapType != null) {
+        return _InferredCollectionElementTypeInformation(
+          elementType: null,
+          keyType: mapType.typeArguments[0],
+          valueType: mapType.typeArguments[1],
+        );
+      }
+
+      if (expressionType.isDynamic) {
+        return _InferredCollectionElementTypeInformation(
+          elementType: expressionType,
+          keyType: expressionType,
+          valueType: expressionType,
+        );
+      }
+
+      if (_typeSystem.isNonNullableByDefault) {
+        if (_typeSystem.isSubtypeOf2(expressionType, NeverTypeImpl.instance)) {
+          return _InferredCollectionElementTypeInformation(
+            elementType: NeverTypeImpl.instance,
+            keyType: NeverTypeImpl.instance,
+            valueType: NeverTypeImpl.instance,
+          );
+        }
+        if (_typeSystem.isSubtypeOf2(expressionType, _typeSystem.nullNone)) {
+          if (element.isNullAware) {
+            return _InferredCollectionElementTypeInformation(
+              elementType: NeverTypeImpl.instance,
+              keyType: NeverTypeImpl.instance,
+              valueType: NeverTypeImpl.instance,
+            );
+          }
+        }
+      } else {
+        if (expressionType.isDartCoreNull && element.isNullAware) {
+          return _InferredCollectionElementTypeInformation(
+            elementType: expressionType,
+            keyType: expressionType,
+            valueType: expressionType,
+          );
+        }
+      }
+
       return _InferredCollectionElementTypeInformation(
-          elementType: null, keyType: null, valueType: null);
+        elementType: null,
+        keyType: null,
+        valueType: null,
+      );
     } else {
       throw StateError('Unknown element type ${element.runtimeType}');
     }
@@ -468,38 +515,54 @@
     } else if (canBeAMap && mustBeAMap) {
       return _toMapType(literal, contextType, inferredTypes);
     }
+
     // Note: according to the spec, the following computations should be based
     // on the greatest closure of the context type (unless the context type is
     // `_`).  In practice, we can just use the context type directly, because
     // the only way the greatest closure of the context type could possibly have
     // a different subtype relationship to `Iterable<Object>` and
     // `Map<Object, Object>` is if the context type is `_`.
-    bool contextProvidesAmbiguityResolutionClues =
-        contextType != null && contextType is! UnknownInferredType;
-    bool contextIsIterable = contextProvidesAmbiguityResolutionClues &&
-        _typeSystem.isSubtypeOf2(
-            contextType, _typeProvider.iterableForSetMapDisambiguation);
-    bool contextIsMap = contextProvidesAmbiguityResolutionClues &&
-        _typeSystem.isSubtypeOf2(
-            contextType, _typeProvider.mapForSetMapDisambiguation);
-    if (contextIsIterable && !contextIsMap) {
-      return _toSetType(literal, contextType, inferredTypes);
-    } else if ((contextIsMap && !contextIsIterable) || elements.isEmpty) {
-      return _toMapType(literal, contextType, inferredTypes);
-    } else {
-      // Ambiguous.  We're not going to get any more information to resolve the
-      // ambiguity.  We don't want to make an arbitrary decision at this point
-      // because it will interfere with future type inference (see
-      // dartbug.com/36210), so we return a type of `dynamic`.
-      if (mustBeAMap && mustBeASet) {
-        _errorReporter.reportErrorForNode(
-            CompileTimeErrorCode.AMBIGUOUS_SET_OR_MAP_LITERAL_BOTH, literal);
-      } else {
-        _errorReporter.reportErrorForNode(
-            CompileTimeErrorCode.AMBIGUOUS_SET_OR_MAP_LITERAL_EITHER, literal);
+    if (contextType != null) {
+      var contextIterableType = contextType.asInstanceOf(
+        _typeProvider.iterableElement,
+      );
+      var contextMapType = contextType.asInstanceOf(
+        _typeProvider.mapElement,
+      );
+      var contextIsIterable = contextIterableType != null;
+      var contextIsMap = contextMapType != null;
+
+      // When `S` implements `Iterable` but not `Map`, `e` is a set literal.
+      if (contextIsIterable && !contextIsMap) {
+        return _toSetType(literal, contextType, inferredTypes);
       }
-      return _typeProvider.dynamicType;
+
+      // When `S` implements `Map` but not `Iterable`, `e` is a map literal.
+      if (contextIsMap && !contextIsIterable) {
+        return _toMapType(literal, contextType, inferredTypes);
+      }
     }
+
+    // When `e` is of the form `{}` and `S` is undefined, `e` is a map literal.
+    if (elements.isEmpty && contextType == null) {
+      return _typeProvider.mapType2(
+        DynamicTypeImpl.instance,
+        DynamicTypeImpl.instance,
+      );
+    }
+
+    // Ambiguous.  We're not going to get any more information to resolve the
+    // ambiguity.  We don't want to make an arbitrary decision at this point
+    // because it will interfere with future type inference (see
+    // dartbug.com/36210), so we return a type of `dynamic`.
+    if (mustBeAMap && mustBeASet) {
+      _errorReporter.reportErrorForNode(
+          CompileTimeErrorCode.AMBIGUOUS_SET_OR_MAP_LITERAL_BOTH, literal);
+    } else {
+      _errorReporter.reportErrorForNode(
+          CompileTimeErrorCode.AMBIGUOUS_SET_OR_MAP_LITERAL_EITHER, literal);
+    }
+    return _typeProvider.dynamicType;
   }
 
   DartType _inferSetTypeDownwards(SetOrMapLiteral node, DartType contextType) {
diff --git a/pkg/analyzer/lib/src/dart/resolver/yield_statement_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/yield_statement_resolver.dart
index 00aea98..f12a3d2 100644
--- a/pkg/analyzer/lib/src/dart/resolver/yield_statement_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/yield_statement_resolver.dart
@@ -41,7 +41,7 @@
   /// it returns 'void'. Or, in rare cases, when other types of expressions are
   /// void, such as identifiers.
   ///
-  /// See [StaticWarningCode.USE_OF_VOID_RESULT].
+  /// See [CompileTimeErrorCode.USE_OF_VOID_RESULT].
   ///
   /// TODO(scheglov) This is duplicate
   /// TODO(scheglov) Also in [BoolExpressionVerifier]
@@ -52,12 +52,12 @@
 
     if (expression is MethodInvocation) {
       _errorReporter.reportErrorForNode(
-        StaticWarningCode.USE_OF_VOID_RESULT,
+        CompileTimeErrorCode.USE_OF_VOID_RESULT,
         expression.methodName,
       );
     } else {
       _errorReporter.reportErrorForNode(
-        StaticWarningCode.USE_OF_VOID_RESULT,
+        CompileTimeErrorCode.USE_OF_VOID_RESULT,
         expression,
       );
     }
diff --git a/pkg/analyzer/lib/src/error/bool_expression_verifier.dart b/pkg/analyzer/lib/src/error/bool_expression_verifier.dart
index 3769e07..cf46b92 100644
--- a/pkg/analyzer/lib/src/error/bool_expression_verifier.dart
+++ b/pkg/analyzer/lib/src/error/bool_expression_verifier.dart
@@ -79,12 +79,12 @@
     if (expression is MethodInvocation) {
       SimpleIdentifier methodName = expression.methodName;
       _errorReporter.reportErrorForNode(
-        StaticWarningCode.USE_OF_VOID_RESULT,
+        CompileTimeErrorCode.USE_OF_VOID_RESULT,
         methodName,
       );
     } else {
       _errorReporter.reportErrorForNode(
-        StaticWarningCode.USE_OF_VOID_RESULT,
+        CompileTimeErrorCode.USE_OF_VOID_RESULT,
         expression,
       );
     }
diff --git a/pkg/analyzer/lib/src/error/codes.dart b/pkg/analyzer/lib/src/error/codes.dart
index 70e254d..bc93306 100644
--- a/pkg/analyzer/lib/src/error/codes.dart
+++ b/pkg/analyzer/lib/src/error/codes.dart
@@ -3,7 +3,6 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/error/error.dart';
-import 'package:analyzer/src/dart/error/syntactic_errors.dart';
 
 import 'analyzer_error_code.dart';
 
@@ -323,6 +322,81 @@
           hasPublishedDocs: true);
 
   /**
+   * Parameters:
+   * 0: the name of the ambiguous type
+   * 1: the name of the first library that the type is found
+   * 2: the name of the second library that the type is found
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a name is referenced that is
+  // declared in two or more imported libraries.
+  //
+  // #### Examples
+  //
+  // Given a library (`a.dart`) that defines a class (`C` in this example):
+  //
+  // ```dart
+  // %uri="lib/a.dart"
+  // class A {}
+  // class C {}
+  // ```
+  //
+  // And a library (`b.dart`) that defines a different class with the same name:
+  //
+  // ```dart
+  // %uri="lib/b.dart"
+  // class B {}
+  // class C {}
+  // ```
+  //
+  // The following code produces this diagnostic:
+  //
+  // ```dart
+  // import 'a.dart';
+  // import 'b.dart';
+  //
+  // void f([!C!] c1, [!C!] c2) {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If any of the libraries aren't needed, then remove the import directives
+  // for them:
+  //
+  // ```dart
+  // import 'a.dart';
+  //
+  // void f(C c1, C c2) {}
+  // ```
+  //
+  // If the name is still defined by more than one library, then add a `hide`
+  // clause to the import directives for all except one library:
+  //
+  // ```dart
+  // import 'a.dart' hide C;
+  // import 'b.dart';
+  //
+  // void f(C c1, C c2) {}
+  // ```
+  //
+  // If you must be able to reference more than one of these types, then add a
+  // prefix to each of the import directives, and qualify the references with
+  // the appropriate prefix:
+  //
+  // ```dart
+  // import 'a.dart' as a;
+  // import 'b.dart' as b;
+  //
+  // void f(a.C c1, b.C c2) {}
+  // ```
+  static const CompileTimeErrorCode AMBIGUOUS_IMPORT = CompileTimeErrorCode(
+      'AMBIGUOUS_IMPORT', "The name '{0}' is defined in the libraries {1}.",
+      correction: "Try using 'as prefix' for one of the import directives, or "
+          "hiding the name from all but one of the imports.",
+      hasPublishedDocs: true);
+
+  /**
    * No parameters.
    */
   // #### Description
@@ -487,15 +561,279 @@
               "correcting the name to match a defined class, or "
               "defining a class with the given name.");
 
-  @Deprecated('Use ParserErrorCode.ANNOTATION_WITH_TYPE_ARGUMENTS')
-  static const ParserErrorCode ANNOTATION_WITH_TYPE_ARGUMENTS =
-      ParserErrorCode.ANNOTATION_WITH_TYPE_ARGUMENTS;
+  /**
+   * Parameters:
+   * 0: the name of the actual argument type
+   * 1: the name of the expected type
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the static type of an argument
+  // can't be assigned to the static type of the corresponding parameter.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because a `num` can't be
+  // assigned to a `String`:
+  //
+  // ```dart
+  // String f(String x) => x;
+  // String g(num y) => f([!y!]);
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If possible, rewrite the code so that the static type is assignable. In the
+  // example above you might be able to change the type of the parameter `y`:
+  //
+  // ```dart
+  // String f(String x) => x;
+  // String g(String y) => f(y);
+  // ```
+  //
+  // If that fix isn't possible, then add code to handle the case where the
+  // argument value isn't the required type. One approach is to coerce other
+  // types to the required type:
+  //
+  // ```dart
+  // String f(String x) => x;
+  // String g(num y) => f(y.toString());
+  // ```
+  //
+  // Another approach is to add explicit type tests and fallback code:
+  //
+  // ```dart
+  // String f(String x) => x;
+  // String g(num y) => f(y is String ? y : '');
+  // ```
+  //
+  // If you believe that the runtime type of the argument will always be the
+  // same as the static type of the parameter, and you're willing to risk having
+  // an exception thrown at runtime if you're wrong, then add an explicit cast:
+  //
+  // ```dart
+  // String f(String x) => x;
+  // String g(num y) => f(y as String);
+  // ```
+  static const CompileTimeErrorCode ARGUMENT_TYPE_NOT_ASSIGNABLE =
+      CompileTimeErrorCode(
+          'ARGUMENT_TYPE_NOT_ASSIGNABLE',
+          "The argument type '{0}' can't be assigned to the parameter type "
+              "'{1}'.",
+          hasPublishedDocs: true);
 
   static const CompileTimeErrorCode ASSERT_IN_REDIRECTING_CONSTRUCTOR =
       CompileTimeErrorCode('ASSERT_IN_REDIRECTING_CONSTRUCTOR',
           "A redirecting constructor can't have an 'assert' initializer.");
 
   /**
+   * 5 Variables: Attempting to assign to a final variable elsewhere will cause
+   * a NoSuchMethodError to be thrown, because no setter is defined for it. The
+   * assignment will also give rise to a static warning for the same reason.
+   *
+   * A constant variable is always implicitly final.
+   */
+  static const CompileTimeErrorCode ASSIGNMENT_TO_CONST = CompileTimeErrorCode(
+      'ASSIGNMENT_TO_CONST', "Constant variables can't be assigned a value.",
+      correction: "Try removing the assignment, or "
+          "remove the modifier 'const' from the variable.");
+
+  /**
+   * Parameters:
+   * 0: the name of the final variable
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it finds an invocation of a
+  // setter, but there's no setter because the field with the same name was
+  // declared to be `final` or `const`.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `v` is final:
+  //
+  // ```dart
+  // class C {
+  //   final v = 0;
+  // }
+  //
+  // f(C c) {
+  //   c.[!v!] = 1;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you need to be able to set the value of the field, then remove the
+  // modifier `final` from the field:
+  //
+  // ```dart
+  // class C {
+  //   int v = 0;
+  // }
+  //
+  // f(C c) {
+  //   c.v = 1;
+  // }
+  // ```
+  static const CompileTimeErrorCode ASSIGNMENT_TO_FINAL = CompileTimeErrorCode(
+      'ASSIGNMENT_TO_FINAL',
+      "'{0}' can't be used as a setter because it's final.",
+      correction: "Try finding a different setter, or making '{0}' non-final.",
+      hasPublishedDocs: true);
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a local variable that was
+  // declared to be final is assigned after it was initialized.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `x` is final, so it
+  // can't have a value assigned to it after it was initialized:
+  //
+  // ```dart
+  // void f() {
+  //   final x = 0;
+  //   [!x!] = 3;
+  //   print(x);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the keyword `final`, and replace it with `var` if there's no type
+  // annotation:
+  //
+  // ```dart
+  // void f() {
+  //   var x = 0;
+  //   x = 3;
+  //   print(x);
+  // }
+  // ```
+  static const CompileTimeErrorCode ASSIGNMENT_TO_FINAL_LOCAL =
+      CompileTimeErrorCode('ASSIGNMENT_TO_FINAL_LOCAL',
+          "The final variable '{0}' can only be set once.",
+          correction: "Try making '{0}' non-final.", hasPublishedDocs: true);
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a reference to a setter is
+  // found; there is no setter defined for the type; but there is a getter
+  // defined with the same name.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because there is no setter
+  // named `x` in `C`, but there is a getter named `x`:
+  //
+  // ```dart
+  // class C {
+  //   int get x => 0;
+  //   set y(int p) {}
+  // }
+  //
+  // void f(C c) {
+  //   c.[!x!] = 1;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you want to invoke an existing setter, then correct the name:
+  //
+  // ```dart
+  // class C {
+  //   int get x => 0;
+  //   set y(int p) {}
+  // }
+  //
+  // void f(C c) {
+  //   c.y = 1;
+  // }
+  // ```
+  //
+  // If you want to invoke the setter but it just doesn't exist yet, then
+  // declare it:
+  //
+  // ```dart
+  // class C {
+  //   int get x => 0;
+  //   set x(int p) {}
+  //   set y(int p) {}
+  // }
+  //
+  // void f(C c) {
+  //   c.x = 1;
+  // }
+  // ```
+  static const CompileTimeErrorCode ASSIGNMENT_TO_FINAL_NO_SETTER =
+      CompileTimeErrorCode('ASSIGNMENT_TO_FINAL_NO_SETTER',
+          "There isn’t a setter named '{0}' in class '{1}'.",
+          correction:
+              "Try correcting the name to reference an existing setter, or "
+              "declare the setter.",
+          hasPublishedDocs: true);
+
+  /**
+   * 12.18 Assignment: It is as static warning if an assignment of the form
+   * <i>v = e</i> occurs inside a top level or static function (be it function,
+   * method, getter, or setter) or variable initializer and there is neither a
+   * local variable declaration with name <i>v</i> nor setter declaration with
+   * name <i>v=</i> in the lexical scope enclosing the assignment.
+   */
+  static const CompileTimeErrorCode ASSIGNMENT_TO_FUNCTION =
+      CompileTimeErrorCode(
+          'ASSIGNMENT_TO_FUNCTION', "Functions can't be assigned a value.");
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the target of an assignment is a
+  // method.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `f` can't be assigned a
+  // value because it's a method:
+  //
+  // ```dart
+  // class C {
+  //   void f() {}
+  //
+  //   void g() {
+  //     [!f!] = null;
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Rewrite the code so that there isn't an assignment to a method.
+  static const CompileTimeErrorCode ASSIGNMENT_TO_METHOD = CompileTimeErrorCode(
+      'ASSIGNMENT_TO_METHOD', "Methods can't be assigned a value.",
+      hasPublishedDocs: true);
+
+  /**
+   * 12.18 Assignment: It is as static warning if an assignment of the form
+   * <i>v = e</i> occurs inside a top level or static function (be it function,
+   * method, getter, or setter) or variable initializer and there is neither a
+   * local variable declaration with name <i>v</i> nor setter declaration with
+   * name <i>v=</i> in the lexical scope enclosing the assignment.
+   */
+  static const CompileTimeErrorCode ASSIGNMENT_TO_TYPE = CompileTimeErrorCode(
+      'ASSIGNMENT_TO_TYPE', "Types can't be assigned a value.");
+
+  /**
    * 17.6.3 Asynchronous For-in: It is a compile-time error if an asynchronous
    * for-in statement appears inside a synchronous function.
    */
@@ -713,10 +1051,12 @@
    * Parameters:
    * 0: the built-in identifier that is being used
    */
-  static const CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME =
-      CompileTimeErrorCode('BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME',
-          "The built-in identifier '{0}' can't be used as a typedef name.",
-          correction: "Try choosing a different name for the typedef.");
+  static const CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_TYPE_PARAMETER_NAME =
+      CompileTimeErrorCode(
+          'BUILT_IN_IDENTIFIER_AS_TYPE_PARAMETER_NAME',
+          "The built-in identifier '{0}' can't be used as a type parameter "
+              "name.",
+          correction: "Try choosing a different name for the type parameter.");
 
   /**
    * 16.33 Identifier Reference: It is a compile-time error if a built-in
@@ -726,12 +1066,58 @@
    * Parameters:
    * 0: the built-in identifier that is being used
    */
-  static const CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_TYPE_PARAMETER_NAME =
+  static const CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME =
+      CompileTimeErrorCode('BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME',
+          "The built-in identifier '{0}' can't be used as a typedef name.",
+          correction: "Try choosing a different name for the typedef.");
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the last statement in a `case`
+  // block isn't one of the required terminators: `break`, `continue`,
+  // `rethrow`, `return`, or `throw`.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the `case` block ends
+  // with an assignment:
+  //
+  // ```dart
+  // void f(int x) {
+  //   switch (x) {
+  //     [!case!] 0:
+  //       x += 2;
+  //     default:
+  //       x += 1;
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Add one of the required terminators:
+  //
+  // ```dart
+  // void f(int x) {
+  //   switch (x) {
+  //     case 0:
+  //       x += 2;
+  //       break;
+  //     default:
+  //       x += 1;
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode CASE_BLOCK_NOT_TERMINATED =
       CompileTimeErrorCode(
-          'BUILT_IN_IDENTIFIER_AS_TYPE_PARAMETER_NAME',
-          "The built-in identifier '{0}' can't be used as a type parameter "
-              "name.",
-          correction: "Try choosing a different name for the type parameter.");
+          'CASE_BLOCK_NOT_TERMINATED',
+          "The last statement of the 'case' should be 'break', 'continue', "
+              "'rethrow', 'return', or 'throw'.",
+          correction: "Try adding one of the required statements.",
+          hasPublishedDocs: true);
 
   /**
    * 13.9 Switch: It is a compile-time error if the class <i>C</i> implements
@@ -808,6 +1194,86 @@
           hasPublishedDocs: true);
 
   /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the name following the `as` in a
+  // cast expression is defined to be something other than a type.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `x` is a variable, not
+  // a type:
+  //
+  // ```dart
+  // num x = 0;
+  // int y = x as [!x!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Replace the name with the name of a type:
+  //
+  // ```dart
+  // num x = 0;
+  // int y = x as int;
+  // ```
+  static const CompileTimeErrorCode CAST_TO_NON_TYPE = CompileTimeErrorCode(
+      'CAST_TO_NON_TYPE',
+      "The name '{0}' isn't a type, so it can't be used in an 'as' expression.",
+      correction: "Try changing the name to the name of an existing type, or "
+          "creating a type with the name '{0}'.",
+      hasPublishedDocs: true);
+
+  /**
+   * Parameters:
+   * 0: the name of the abstract method
+   * 1: the name of the enclosing class
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a member of a concrete class is
+  // found that doesn't have a concrete implementation. Concrete classes aren't
+  // allowed to contain abstract members.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `m` is an abstract
+  // method but `C` isn't an abstract class:
+  //
+  // ```dart
+  // class C {
+  //   [!void m();!]
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If it's valid to create instances of the class, provide an implementation
+  // for the member:
+  //
+  // ```dart
+  // class C {
+  //   void m() {}
+  // }
+  // ```
+  //
+  // If it isn't valid to create instances of the class, mark the class as being
+  // abstract:
+  //
+  // ```dart
+  // abstract class C {
+  //   void m();
+  // }
+  // ```
+  static const CompileTimeErrorCode CONCRETE_CLASS_WITH_ABSTRACT_MEMBER =
+      CompileTimeErrorCode('CONCRETE_CLASS_WITH_ABSTRACT_MEMBER',
+          "'{0}' must have a method body because '{1}' isn't abstract.",
+          correction: "Try making '{1}' abstract, or adding a body to '{0}'.",
+          hasPublishedDocs: true);
+
+  /**
    * 10.11 Class Member Conflicts: Let `C` be a class. It is a compile-time
    * error if `C` declares a constructor named `C.n`, and a static member with
    * basename `n`.
@@ -856,6 +1322,14 @@
               "renaming the field to a name that doesn't conflict.");
 
   /**
+   * Parameters:
+   * 0: the name of the type parameter
+   * 1: detail text explaining why the type could not be inferred
+   */
+  static const CompileTimeErrorCode COULD_NOT_INFER = CompileTimeErrorCode(
+      'COULD_NOT_INFER', "Couldn't infer type parameter '{0}'.{1}");
+
+  /**
    * 10.10 Superinterfaces: It is a compile-time error if a class `C` has two
    * superinterfaces that are different instantiations of the same generic
    * class. For example, a class may not have both `List<int>` and `List<num>`
@@ -864,7 +1338,7 @@
    * Parameters:
    * 0: the name of the class implementing the conflicting interface
    * 1: the first conflicting type
-   * 1: the second conflicting type
+   * 2: the second conflicting type
    */
   static const CompileTimeErrorCode CONFLICTING_GENERIC_INTERFACES =
       CompileTimeErrorCode(
@@ -1121,6 +1595,24 @@
           "changing the import to not be deferred.");
 
   /**
+   * 16.12.2 Const: It is a compile-time error if evaluation of a constant
+   * object results in an uncaught exception being thrown.
+   */
+  static const CompileTimeErrorCode CONST_EVAL_THROWS_EXCEPTION =
+      CompileTimeErrorCode('CONST_EVAL_THROWS_EXCEPTION',
+          "Evaluation of this constant expression throws an exception.");
+
+  /**
+   * 16.12.2 Const: It is a compile-time error if evaluation of a constant
+   * object results in an uncaught exception being thrown.
+   */
+  static const CompileTimeErrorCode CONST_EVAL_THROWS_IDBZE =
+      CompileTimeErrorCode(
+          'CONST_EVAL_THROWS_IDBZE',
+          "Evaluation of this constant expression throws an "
+              "IntegerDivisionByZeroException.");
+
+  /**
    * 16.12.2 Const: An expression of one of the forms !e, e1 && e2 or e1 || e2,
    * where e, e1 and e2 are constant expressions that evaluate to a boolean
    * value.
@@ -1179,24 +1671,6 @@
           "'Type'.");
 
   /**
-   * 16.12.2 Const: It is a compile-time error if evaluation of a constant
-   * object results in an uncaught exception being thrown.
-   */
-  static const CompileTimeErrorCode CONST_EVAL_THROWS_EXCEPTION =
-      CompileTimeErrorCode('CONST_EVAL_THROWS_EXCEPTION',
-          "Evaluation of this constant expression throws an exception.");
-
-  /**
-   * 16.12.2 Const: It is a compile-time error if evaluation of a constant
-   * object results in an uncaught exception being thrown.
-   */
-  static const CompileTimeErrorCode CONST_EVAL_THROWS_IDBZE =
-      CompileTimeErrorCode(
-          'CONST_EVAL_THROWS_IDBZE',
-          "Evaluation of this constant expression throws an "
-              "IntegerDivisionByZeroException.");
-
-  /**
    * 6.2 Formal Parameters: It is a compile-time error if a formal parameter is
    * declared as a constant variable.
    */
@@ -2138,18 +2612,6 @@
       hasPublishedDocs: true);
 
   /**
-   * Parameters:
-   * 0: The name of the disallowed type
-   */
-  static const CompileTimeErrorCode EXTENDS_DISALLOWED_CLASS =
-      // TODO(scheglov) We might want to restore specific code with FrontEnd.
-      //  https://github.com/dart-lang/sdk/issues/31821
-      CompileTimeErrorCodeWithUniqueName('SUBTYPE_OF_DISALLOWED_TYPE',
-          'EXTENDS_DISALLOWED_CLASS', "Classes can't extend '{0}'.",
-          correction: "Try specifying a different superclass, or "
-              "removing the extends clause.");
-
-  /**
    * 7.9 Superclasses: It is a compile-time error if the extends clause of a
    * class <i>C</i> includes a deferred type expression.
    *
@@ -2166,6 +2628,18 @@
 
   /**
    * Parameters:
+   * 0: The name of the disallowed type
+   */
+  static const CompileTimeErrorCode EXTENDS_DISALLOWED_CLASS =
+      // TODO(scheglov) We might want to restore specific code with FrontEnd.
+      //  https://github.com/dart-lang/sdk/issues/31821
+      CompileTimeErrorCodeWithUniqueName('SUBTYPE_OF_DISALLOWED_TYPE',
+          'EXTENDS_DISALLOWED_CLASS', "Classes can't extend '{0}'.",
+          correction: "Try specifying a different superclass, or "
+              "removing the extends clause.");
+
+  /**
+   * Parameters:
    * 0: the name in the extends clause
    */
   // #### Description
@@ -2640,6 +3114,58 @@
           correction: "Try removing one of the initializations.");
 
   /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a final field is initialized in
+  // both the declaration of the field and in an initializer in a constructor.
+  // Final fields can only be assigned once, so it can't be initialized in both
+  // places.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `f` is :
+  //
+  // ```dart
+  // class C {
+  //   final int f = 0;
+  //   C() : [!f!] = 1;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the initialization doesn't depend on any values passed to the
+  // constructor, and if all of the constructors need to initialize the field to
+  // the same value, then remove the initializer from the constructor:
+  //
+  // ```dart
+  // class C {
+  //   final int f = 0;
+  //   C();
+  // }
+  // ```
+  //
+  // If the initialization depends on a value passed to the constructor, or if
+  // different constructors need to initialize the field differently, then
+  // remove the initializer in the field's declaration:
+  //
+  // ```dart
+  // class C {
+  //   final int f;
+  //   C() : f = 1;
+  // }
+  // ```
+  static const CompileTimeErrorCode
+      FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION = CompileTimeErrorCode(
+          'FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION',
+          "Fields can't be initialized in the constructor if they are final "
+              "and were already initialized at their declaration.",
+          correction: "Try removing one of the initializations.",
+          hasPublishedDocs: true);
+
+  /**
    * 7.6.1 Generative Constructors: Let <i>k</i> be a generative constructor. It
    * is a compile time error if <i>k</i>'s initializer list contains an
    * initializer for a variable that is initialized by means of an initializing
@@ -2665,6 +3191,60 @@
           correction: "Try using a normal parameter.");
 
   /**
+   * Parameters:
+   * 0: the name of the type of the initializer expression
+   * 1: the name of the type of the field
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the initializer list of a
+  // constructor initializes a field to a value that isn't assignable to the
+  // field.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `0` has the type `int`,
+  // and an `int` can't be assigned to a field of type `String`:
+  //
+  // ```dart
+  // class C {
+  //   String s;
+  //
+  //   C() : s = [!0!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the type of the field is correct, then change the value assigned to it
+  // so that the value has a valid type:
+  //
+  // ```dart
+  // class C {
+  //   String s;
+  //
+  //   C() : s = '0';
+  // }
+  // ```
+  //
+  // If the type of the value is correct, then change the type of the field to
+  // allow the assignment:
+  //
+  // ```dart
+  // class C {
+  //   int s;
+  //
+  //   C() : s = 0;
+  // }
+  // ```
+  static const CompileTimeErrorCode FIELD_INITIALIZER_NOT_ASSIGNABLE =
+      CompileTimeErrorCode(
+          'FIELD_INITIALIZER_NOT_ASSIGNABLE',
+          "The initializer type '{0}' can't be assigned to the field type "
+              "'{1}'.",
+          hasPublishedDocs: true);
+
+  /**
    * 7.6.1 Generative Constructors: It is a compile-time error if an
    * initializing formal is used by a function other than a non-redirecting
    * generative constructor.
@@ -2688,6 +3268,36 @@
           correction: "Try using a normal parameter.");
 
   /**
+   * 7.6.1 Generative Constructors: An initializing formal has the form
+   * <i>this.id</i>. It is a static warning if the static type of <i>id</i> is
+   * not assignable to <i>T<sub>id</sub></i>.
+   *
+   * Parameters:
+   * 0: the name of the type of the field formal parameter
+   * 1: the name of the type of the field
+   */
+  static const CompileTimeErrorCode FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE =
+      CompileTimeErrorCode('FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE',
+          "The parameter type '{0}' is incompatible with the field type '{1}'.",
+          correction: "Try changing or removing the parameter's type, or "
+              "changing the field's type.");
+
+  /**
+   * 5. Variables: It is a static warning if a final instance variable that has
+   * been initialized at its point of declaration is also initialized in a
+   * constructor.
+   *
+   * Parameters:
+   * 0: the name of the field in question
+   */
+  static const CompileTimeErrorCode
+      FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR = CompileTimeErrorCode(
+          'FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR',
+          "'{0}' is final and was given a value when it was declared, "
+              "so it can't be set to a new value.",
+          correction: "Try removing one of the initializations.");
+
+  /**
    * 5 Variables: It is a compile-time error if a final instance variable that
    * has is initialized by means of an initializing formal of a constructor is
    * also initialized elsewhere in the same constructor.
@@ -2700,6 +3310,183 @@
           "'{0}' is a final field and so can only be set once.",
           correction: "Try removing all but one of the initializations.");
 
+  /**
+   * Parameters:
+   * 0: the name of the uninitialized final variable
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a final field or variable isn't
+  // initialized.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `x` doesn't have an
+  // initializer:
+  //
+  // ```dart
+  // final [!x!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // For variables and static fields, you can add an initializer:
+  //
+  // ```dart
+  // final x = 0;
+  // ```
+  //
+  // For instance fields, you can add an initializer as shown in the previous
+  // example, or you can initialize the field in every constructor. You can
+  // initialize the field by using a field formal parameter:
+  //
+  // ```dart
+  // class C {
+  //   final int x;
+  //   C(this.x);
+  // }
+  // ```
+  //
+  // You can also initialize the field by using an initializer in the
+  // constructor:
+  //
+  // ```dart
+  // class C {
+  //   final int x;
+  //   C(int y) : x = y * 2;
+  // }
+  // ```
+  static const CompileTimeErrorCode FINAL_NOT_INITIALIZED =
+      CompileTimeErrorCode('FINAL_NOT_INITIALIZED',
+          "The final variable '{0}' must be initialized.",
+          // TODO(brianwilkerson) Split this error code so that we can suggest
+          // initializing fields in constructors (FINAL_FIELD_NOT_INITIALIZED
+          // and FINAL_VARIABLE_NOT_INITIALIZED).
+          correction: "Try initializing the variable.",
+          hasPublishedDocs: true);
+
+  /**
+   * Parameters:
+   * 0: the name of the uninitialized final variable
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a class defines one or more
+  // final instance fields without initializers and has at least one constructor
+  // that doesn't initialize those fields. All final instance fields must be
+  // initialized when the instance is created, either by the field's initializer
+  // or by the constructor.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic:
+  //
+  // ```dart
+  // class C {
+  //   final String value;
+  //
+  //   [!C!]();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the value should be passed in to the constructor directly, then use a
+  // field formal parameter to initialize the field `value`:
+  //
+  // ```dart
+  // class C {
+  //   final String value;
+  //
+  //   C(this.value);
+  // }
+  // ```
+  //
+  // If the value should be computed indirectly from a value provided by the
+  // caller, then add a parameter and include an initializer:
+  //
+  // ```dart
+  // class C {
+  //   final String value;
+  //
+  //   C(Object o) : value = o.toString();
+  // }
+  // ```
+  //
+  // If the value of the field doesn't depend on values that can be passed to
+  // the constructor, then add an initializer for the field as part of the field
+  // declaration:
+  //
+  // ```dart
+  // class C {
+  //   final String value = '';
+  //
+  //   C();
+  // }
+  // ```
+  //
+  // If the value of the field doesn't depend on values that can be passed to
+  // the constructor but different constructors need to initialize it to
+  // different values, then add an initializer for the field in the initializer
+  // list:
+  //
+  // ```dart
+  // class C {
+  //   final String value;
+  //
+  //   C() : value = '';
+  //
+  //   C.named() : value = 'c';
+  // }
+  // ```
+  //
+  // However, if the value is the same for all instances, then consider using a
+  // static field instead of an instance field:
+  //
+  // ```dart
+  // class C {
+  //   static const String value = '';
+  //
+  //   C();
+  // }
+  // ```
+  static const CompileTimeErrorCode FINAL_NOT_INITIALIZED_CONSTRUCTOR_1 =
+      CompileTimeErrorCodeWithUniqueName(
+          'FINAL_NOT_INITIALIZED_CONSTRUCTOR',
+          'CompileTimeErrorCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1',
+          "All final variables must be initialized, but '{0}' isn't.",
+          correction: "Try adding an initializer for the field.",
+          hasPublishedDocs: true);
+
+  /**
+   * Parameters:
+   * 0: the name of the uninitialized final variable
+   * 1: the name of the uninitialized final variable
+   */
+  static const CompileTimeErrorCode FINAL_NOT_INITIALIZED_CONSTRUCTOR_2 =
+      CompileTimeErrorCodeWithUniqueName(
+          'FINAL_NOT_INITIALIZED_CONSTRUCTOR',
+          'CompileTimeErrorCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_2',
+          "All final variables must be initialized, but '{0}' and '{1}' "
+              "aren't.",
+          correction: "Try adding initializers for the fields.",
+          hasPublishedDocs: true);
+
+  /**
+   * Parameters:
+   * 0: the name of the uninitialized final variable
+   * 1: the name of the uninitialized final variable
+   * 2: the number of additional not initialized variables that aren't listed
+   */
+  static const CompileTimeErrorCode FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS =
+      CompileTimeErrorCodeWithUniqueName(
+          'FINAL_NOT_INITIALIZED_CONSTRUCTOR',
+          'CompileTimeErrorCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_3',
+          "All final variables must be initialized, but '{0}', '{1}', and {2} "
+              "others aren't.",
+          correction: "Try adding initializers for the fields.",
+          hasPublishedDocs: true);
+
   static const CompileTimeErrorCode FOR_IN_WITH_CONST_VARIABLE =
       CompileTimeErrorCode('FOR_IN_WITH_CONST_VARIABLE',
           "A for-in loop-variable can't be 'const'.",
@@ -2727,6 +3514,45 @@
           correction: "Try removing type parameters from the generic function "
               "type, or using 'dynamic' as the type argument here.");
 
+  /**
+   * 10.3 Setters: It is a compile-time error if a class has a setter named
+   * `v=` with argument type `T` and a getter named `v` with return type `S`,
+   * and `S` may not be assigned to `T`.
+   *
+   * Parameters:
+   * 0: the name of the getter
+   * 1: the type of the getter
+   * 2: the type of the setter
+   * 3: the name of the setter
+   */
+  static const CompileTimeErrorCode GETTER_NOT_ASSIGNABLE_SETTER_TYPES =
+      CompileTimeErrorCode(
+          'GETTER_NOT_ASSIGNABLE_SETTER_TYPES',
+          "The return type of getter '{0}' is '{1}' which isn't assignable "
+              "to the type '{2}' of its setter '{3}'.",
+          correction: "Try changing the types so that they are compatible.");
+
+  /**
+   * nnbd/feature-specification.md
+   *
+   * It is an error if a class has a setter and a getter with the same basename
+   * where the return type of the getter is not a subtype of the argument type
+   * of the setter. Note that this error specifically requires subtyping and
+   * not assignability and hence makes no exception for `dynamic`.
+   *
+   * Parameters:
+   * 0: the name of the getter
+   * 1: the type of the getter
+   * 2: the type of the setter
+   * 3: the name of the setter
+   */
+  static const CompileTimeErrorCode GETTER_NOT_SUBTYPE_SETTER_TYPES =
+      CompileTimeErrorCode(
+          'GETTER_NOT_SUBTYPE_SETTER_TYPES',
+          "The return type of getter '{0}' is '{1}' which isn't a subtype "
+              "of the type '{2}' of its setter '{3}'.",
+          correction: "Try changing the types so that they are compatible.");
+
   static const CompileTimeErrorCode IF_ELEMENT_CONDITION_FROM_DEFERRED_LIBRARY =
       CompileTimeErrorCode(
           'IF_ELEMENT_CONDITION_FROM_DEFERRED_LIBRARY',
@@ -3344,6 +4170,37 @@
           hasPublishedDocs: true);
 
   /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it finds a constructor
+  // invocation and the constructor is declared in an abstract class. Even
+  // though you can't create an instance of an abstract class, abstract classes
+  // can declare constructors that can be invoked by subclasses.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `C` is an abstract
+  // class:
+  //
+  // ```dart
+  // abstract class C {}
+  //
+  // var c = new [!C!]();
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If there's a concrete subclass of the abstract class that can be used, then
+  // create an instance of the concrete subclass.
+  static const CompileTimeErrorCode INSTANTIATE_ABSTRACT_CLASS =
+      CompileTimeErrorCode('INSTANTIATE_ABSTRACT_CLASS',
+          "Abstract classes can't be instantiated.",
+          correction: "Try creating an instance of a concrete subtype.",
+          hasPublishedDocs: true);
+
+  /**
    * Enum proposal: It is also a compile-time error to explicitly instantiate an
    * enum via 'new' or 'const' or to access its private fields.
    */
@@ -3351,14 +4208,6 @@
       'INSTANTIATE_ENUM', "Enums can't be instantiated.",
       correction: "Try using one of the defined constants.");
 
-  static const CompileTimeErrorCode INTEGER_LITERAL_OUT_OF_RANGE =
-      CompileTimeErrorCode('INTEGER_LITERAL_OUT_OF_RANGE',
-          "The integer literal {0} can't be represented in 64 bits.",
-          correction:
-              "Try using the BigInt class if you need an integer larger than "
-              "9,223,372,036,854,775,807 or less than "
-              "-9,223,372,036,854,775,808.");
-
   /**
    * An integer literal with static type `double` and numeric value `i`
    * evaluates to an instance of the `double` class representing the value `i`.
@@ -3375,6 +4224,14 @@
               "Try using the BigInt class, or switch to the closest valid "
               "double: {1}");
 
+  static const CompileTimeErrorCode INTEGER_LITERAL_OUT_OF_RANGE =
+      CompileTimeErrorCode('INTEGER_LITERAL_OUT_OF_RANGE',
+          "The integer literal {0} can't be represented in 64 bits.",
+          correction:
+              "Try using the BigInt class if you need an integer larger than "
+              "9,223,372,036,854,775,807 or less than "
+              "-9,223,372,036,854,775,808.");
+
   /**
    * 15 Metadata: Metadata consists of a series of annotations, each of which
    * begin with the character @, followed by a constant expression that must be
@@ -3485,15 +4342,6 @@
 
   /**
    * Parameters:
-   * 0: the type of the instantiated object
-   * 1: the expected type
-   */
-  static const CompileTimeErrorCode INVALID_CAST_NEW_EXPR = CompileTimeErrorCode(
-      'INVALID_CAST_NEW_EXPR',
-      "The constructor returns type '{0}' that isn't of expected type '{1}'.");
-
-  /**
-   * Parameters:
    * 0: the type of the torn-off method
    * 1: the expected function type
    */
@@ -3504,6 +4352,15 @@
           "is expected.");
 
   /**
+   * Parameters:
+   * 0: the type of the instantiated object
+   * 1: the expected type
+   */
+  static const CompileTimeErrorCode INVALID_CAST_NEW_EXPR = CompileTimeErrorCode(
+      'INVALID_CAST_NEW_EXPR',
+      "The constructor returns type '{0}' that isn't of expected type '{1}'.");
+
+  /**
    * TODO(brianwilkerson) Remove this when we have decided on how to report
    * errors in compile-time constants. Until then, this acts as a placeholder
    * for more informative errors.
@@ -3773,6 +4630,10 @@
           "Invalid reference to 'this' expression.",
           hasPublishedDocs: true);
 
+  static const CompileTimeErrorCode INVALID_SUPER_INVOCATION =
+      CompileTimeErrorCode('INVALID_SUPER_INVOCATION',
+          "The super call must be last in an initializer list: '{0}'.");
+
   /**
    * 12.6 Lists: It is a compile time error if the type argument of a constant
    * list literal includes a type parameter.
@@ -3812,20 +4673,6 @@
               "Try replacing the type parameter with a different type.");
 
   /**
-   * The 'covariant' keyword was found in an inappropriate location.
-   */
-  static const CompileTimeErrorCode INVALID_USE_OF_COVARIANT =
-      CompileTimeErrorCode(
-          'INVALID_USE_OF_COVARIANT',
-          "The 'covariant' keyword can only be used for parameters in instance "
-              "methods or before non-final instance fields.",
-          correction: "Try removing the 'covariant' keyword.");
-
-  @Deprecated('Use ParserErrorCode.INVALID_USE_OF_COVARIANT_IN_EXTENSION')
-  static const ParserErrorCode INVALID_USE_OF_COVARIANT_IN_EXTENSION =
-      ParserErrorCode.INVALID_USE_OF_COVARIANT_IN_EXTENSION;
-
-  /**
    * Parameters:
    * 0: the URI that is invalid
    */
@@ -3851,6 +4698,53 @@
       hasPublishedDocs: true);
 
   /**
+   * The 'covariant' keyword was found in an inappropriate location.
+   */
+  static const CompileTimeErrorCode INVALID_USE_OF_COVARIANT =
+      CompileTimeErrorCode(
+          'INVALID_USE_OF_COVARIANT',
+          "The 'covariant' keyword can only be used for parameters in instance "
+              "methods or before non-final instance fields.",
+          correction: "Try removing the 'covariant' keyword.");
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an expression whose value will
+  // always be `null` is dererenced.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `x` will always be
+  // `null`:
+  //
+  // ```dart
+  // %experiments=non-nullable
+  // int f(Null x) {
+  //   return [!x!].length;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the value is allowed to be something other than `null`, then change the
+  // type of the expression:
+  //
+  // ```dart
+  // %experiments=non-nullable
+  // int f(String? x) {
+  //   return x!.length;
+  // }
+  // ```
+  static const CompileTimeErrorCode INVALID_USE_OF_NULL_VALUE =
+      CompileTimeErrorCode('INVALID_USE_OF_NULL_VALUE',
+          "An expression whose value is always 'null' can't be dereferenced.",
+          correction: "Try changing the type of the expression.",
+          hasPublishedDocs: true);
+
+  /**
    * Parameters:
    * 0: the name of the extension
    */
@@ -3956,6 +4850,51 @@
               "the value.");
 
   /**
+   * Parameters:
+   * 0: the actual type of the list element
+   * 1: the expected type of the list element
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the type of an element in a list
+  // literal isn't assignable to the element type of the list.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `2.5` is a double, and
+  // the list can hold only integers:
+  //
+  // ```dart
+  // List<int> x = [1, [!2.5!], 3];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you intended to add a different object to the list, then replace the
+  // element with an expression that computes the intended object:
+  //
+  // ```dart
+  // List<int> x = [1, 2, 3];
+  // ```
+  //
+  // If the object shouldn't be in the list, then remove the element:
+  //
+  // ```dart
+  // List<int> x = [1, 3];
+  // ```
+  //
+  // If the object being computed is correct, then widen the element type of the
+  // list to allow all of the different types of objects it needs to contain:
+  //
+  // ```dart
+  // List<num> x = [1, 2.5, 3];
+  // ```
+  static const CompileTimeErrorCode LIST_ELEMENT_TYPE_NOT_ASSIGNABLE =
+      CompileTimeErrorCode('LIST_ELEMENT_TYPE_NOT_ASSIGNABLE',
+          "The element type '{0}' can't be assigned to the list type '{1}'.",
+          hasPublishedDocs: true);
+
+  /**
    * No parameters.
    */
   // #### Description
@@ -3999,13 +4938,85 @@
       hasPublishedDocs: true);
 
   /**
-   * 7 Classes: It is a compile time error if a class <i>C</i> declares a member
-   * with the same name as <i>C</i>.
+   * Parameters:
+   * 0: the type of the expression being used as a key
+   * 1: the type of keys declared for the map
    */
-  @Deprecated('Superseded by ParserErrorCode.MEMBER_WITH_CLASS_NAME')
-  static const CompileTimeErrorCode MEMBER_WITH_CLASS_NAME =
-      CompileTimeErrorCode('MEMBER_WITH_CLASS_NAME',
-          "Class members can't have the same name as the enclosing class.");
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a key of a key-value pair in a
+  // map literal has a type that isn't assignable to the key type of the map.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `2` is an `int`, but
+  // the keys of the map are required to be `String`s:
+  //
+  // ```dart
+  // var m = <String, String>{[!2!] : 'a'};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the type of the map is correct, then change the key to have the correct
+  // type:
+  //
+  // ```dart
+  // var m = <String, String>{'2' : 'a'};
+  // ```
+  //
+  // If the type of the key is correct, then change the key type of the map:
+  //
+  // ```dart
+  // var m = <int, String>{2 : 'a'};
+  // ```
+  static const CompileTimeErrorCode MAP_KEY_TYPE_NOT_ASSIGNABLE =
+      CompileTimeErrorCode(
+          'MAP_KEY_TYPE_NOT_ASSIGNABLE',
+          "The element type '{0}' can't be assigned to the map key type "
+              "'{1}'.",
+          hasPublishedDocs: true);
+
+  /**
+   * Parameters:
+   * 0: the type of the expression being used as a value
+   * 1: the type of values declared for the map
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a value of a key-value pair in a
+  // map literal has a type that isn't assignable to the the value type of the
+  // map.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `2` is an `int`, but/
+  // the values of the map are required to be `String`s:
+  //
+  // ```dart
+  // var m = <String, String>{'a' : [!2!]};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the type of the map is correct, then change the value to have the
+  // correct type:
+  //
+  // ```dart
+  // var m = <String, String>{'a' : '2'};
+  // ```
+  //
+  // If the type of the value is correct, then change the value type of the map:
+  //
+  // ```dart
+  // var m = <String, int>{'a' : 2};
+  // ```
+  static const CompileTimeErrorCode MAP_VALUE_TYPE_NOT_ASSIGNABLE =
+      CompileTimeErrorCode(
+          'MAP_VALUE_TYPE_NOT_ASSIGNABLE',
+          "The element type '{0}' can't be assigned to the map value type "
+              "'{1}'.",
+          hasPublishedDocs: true);
 
   /**
    * 12.1 Constants: A constant expression is ... a constant list literal.
@@ -4169,6 +5180,20 @@
               "concrete member in the class has type '{2}'.");
 
   /**
+   * It's a compile-time error to apply a mixin containing super-invocations to
+   * a class that doesn't have a concrete implementation of the super-invoked
+   * members compatible with the super-constraint interface.
+   *
+   * Parameters:
+   * 0: the display name of the member without a concrete implementation
+   */
+  static const CompileTimeErrorCode
+      MIXIN_APPLICATION_NO_CONCRETE_SUPER_INVOKED_MEMBER = CompileTimeErrorCode(
+          'MIXIN_APPLICATION_NO_CONCRETE_SUPER_INVOKED_MEMBER',
+          "The class doesn't have a concrete implementation of the "
+              "super-invoked member '{0}'.");
+
+  /**
    * It's a compile-time error to apply a mixin to a class that doesn't
    * implement all the `on` type requirements of the mixin declaration.
    *
@@ -4185,20 +5210,6 @@
           correction: "Try extending the class '{0}'.");
 
   /**
-   * It's a compile-time error to apply a mixin containing super-invocations to
-   * a class that doesn't have a concrete implementation of the super-invoked
-   * members compatible with the super-constraint interface.
-   *
-   * Parameters:
-   * 0: the display name of the member without a concrete implementation
-   */
-  static const CompileTimeErrorCode
-      MIXIN_APPLICATION_NO_CONCRETE_SUPER_INVOKED_MEMBER = CompileTimeErrorCode(
-          'MIXIN_APPLICATION_NO_CONCRETE_SUPER_INVOKED_MEMBER',
-          "The class doesn't have a concrete implementation of the "
-              "super-invoked member '{0}'.");
-
-  /**
    * 9 Mixins: It is a compile-time error if a declared or derived mixin
    * explicitly declares a constructor.
    *
@@ -4408,6 +5419,91 @@
           correction: "Try removing all but one of the 'super' initializers.");
 
   /**
+   * 12.11.1 New: It is a static warning if <i>T</i> is not a class accessible
+   * in the current scope, optionally followed by type arguments.
+   *
+   * Parameters:
+   * 0: the name of the non-type element
+   */
+  static const CompileTimeErrorCode NEW_WITH_NON_TYPE =
+      CompileTimeErrorCodeWithUniqueName('CREATION_WITH_NON_TYPE',
+          'NEW_WITH_NON_TYPE', "The name '{0}' isn't a class.",
+          correction: "Try correcting the name to match an existing class.",
+          isUnresolvedIdentifier: true);
+
+  /**
+   * 12.11.1 New: If <i>T</i> is a class or parameterized type accessible in the
+   * current scope then:
+   * 1. If <i>e</i> is of the form <i>new T.id(a<sub>1</sub>, &hellip;,
+   *    a<sub>n</sub>, x<sub>n+1</sub>: a<sub>n+1</sub>, &hellip;,
+   *    x<sub>n+k</sub>: a<sub>n+k</sub>)</i> it is a static warning if
+   *    <i>T.id</i> is not the name of a constructor declared by the type
+   *    <i>T</i>.
+   * If <i>e</i> of the form <i>new T(a<sub>1</sub>, &hellip;, a<sub>n</sub>,
+   * x<sub>n+1</sub>: a<sub>n+1</sub>, &hellip;, x<sub>n+k</sub>:
+   * a<sub>n+kM/sub>)</i> it is a static warning if the type <i>T</i> does not
+   * declare a constructor with the same name as the declaration of <i>T</i>.
+   */
+  static const CompileTimeErrorCode NEW_WITH_UNDEFINED_CONSTRUCTOR =
+      CompileTimeErrorCode('NEW_WITH_UNDEFINED_CONSTRUCTOR',
+          "The class '{0}' doesn't have a constructor named '{1}'.",
+          correction: "Try invoking a different constructor, or "
+              "define a constructor named '{1}'.");
+
+  /**
+   * Parameters:
+   * 0: the name of the class being instantiated
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an unnamed constructor is
+  // invoked on a class that defines named constructors but the class doesn’t
+  // have an unnamed constructor.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `A` doesn't define an
+  // unnamed constructor:
+  //
+  // ```dart
+  // class A {
+  //   A.a();
+  // }
+  //
+  // A f() => [!A!]();
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If one of the named constructors does what you need, then use it:
+  //
+  // ```dart
+  // class A {
+  //   A.a();
+  // }
+  //
+  // A f() => A.a();
+  // ```
+  //
+  // If none of the named constructors does what you need, and you're able to
+  // add an unnamed constructor, then add the constructor:
+  //
+  // ```dart
+  // class A {
+  //   A();
+  //   A.a();
+  // }
+  //
+  // A f() => A();
+  // ```
+  static const CompileTimeErrorCode NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT =
+      CompileTimeErrorCode('NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT',
+          "The class '{0}' doesn't have a default constructor.",
+          correction:
+              "Try using one of the named constructors defined in '{0}'.",
+          hasPublishedDocs: true);
+
+  /**
    * No parameters.
    */
   // #### Description
@@ -4499,6 +5595,146 @@
               "constructor in '{0}'.");
 
   /**
+   * Parameters:
+   * 0: the name of the first member
+   * 1: the name of the second member
+   * 2: the name of the third member
+   * 3: the name of the fourth member
+   * 4: the number of additional missing members that aren't listed
+   */
+  static const CompileTimeErrorCode
+      NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS =
+      CompileTimeErrorCodeWithUniqueName(
+          'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER',
+          ' CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS',
+          "Missing concrete implementations of '{0}', '{1}', '{2}', '{3}', and "
+              "{4} more.",
+          correction: "Try implementing the missing methods, or make the class "
+              "abstract.",
+          hasPublishedDocs: true);
+
+  /**
+   * Parameters:
+   * 0: the name of the first member
+   * 1: the name of the second member
+   * 2: the name of the third member
+   * 3: the name of the fourth member
+   */
+  static const CompileTimeErrorCode
+      NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR =
+      CompileTimeErrorCodeWithUniqueName(
+          'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER',
+          ' CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR',
+          "Missing concrete implementations of '{0}', '{1}', '{2}', and '{3}'.",
+          correction: "Try implementing the missing methods, or make the class "
+              "abstract.",
+          hasPublishedDocs: true);
+
+  /**
+   * Parameters:
+   * 0: the name of the member
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a concrete class inherits one or
+  // more abstract members, and doesn't provide or inherit an implementation for
+  // at least one of those abstract members.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the class `B` doesn't
+  // have a concrete implementation of `m`:
+  //
+  // ```dart
+  // abstract class A {
+  //   void m();
+  // }
+  //
+  // class [!B!] extends A {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the subclass can provide a concrete implementation for some or all of
+  // the abstract inherited members, then add the concrete implementations:
+  //
+  // ```dart
+  // abstract class A {
+  //   void m();
+  // }
+  //
+  // class B extends A {
+  //   void m() {}
+  // }
+  // ```
+  //
+  // If there is a mixin that provides an implementation of the inherited
+  // methods, then apply the mixin to the subclass:
+  //
+  // ```dart
+  // abstract class A {
+  //   void m();
+  // }
+  //
+  // class B extends A with M {}
+  //
+  // mixin M {
+  //   void m() {}
+  // }
+  // ```
+  //
+  // If the subclass can't provide a concrete implementation for all of the
+  // abstract inherited members, then mark the subclass as being abstract:
+  //
+  // ```dart
+  // abstract class A {
+  //   void m();
+  // }
+  //
+  // abstract class B extends A {}
+  // ```
+  static const CompileTimeErrorCode
+      NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE =
+      CompileTimeErrorCodeWithUniqueName(
+          'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER',
+          ' CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE',
+          "Missing concrete implementation of '{0}'.",
+          correction: "Try implementing the missing method, or make the class "
+              "abstract.",
+          hasPublishedDocs: true);
+
+  /**
+   * Parameters:
+   * 0: the name of the first member
+   * 1: the name of the second member
+   * 2: the name of the third member
+   */
+  static const CompileTimeErrorCode
+      NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE =
+      CompileTimeErrorCodeWithUniqueName(
+          'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER',
+          'CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE',
+          "Missing concrete implementations of '{0}', '{1}', and '{2}'.",
+          correction: "Try implementing the missing methods, or make the class "
+              "abstract.",
+          hasPublishedDocs: true);
+
+  /**
+   * Parameters:
+   * 0: the name of the first member
+   * 1: the name of the second member
+   */
+  static const CompileTimeErrorCode
+      NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO =
+      CompileTimeErrorCodeWithUniqueName(
+          'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER',
+          'CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO',
+          "Missing concrete implementations of '{0}' and '{1}'.",
+          correction: "Try implementing the missing methods, or make the class "
+              "abstract.",
+          hasPublishedDocs: true);
+
+  /**
    * 13.2 Expression Statements: It is a compile-time error if a non-constant
    * map literal that has no explicit type arguments appears in a place where a
    * statement is expected.
@@ -4514,6 +5750,52 @@
    */
   // #### Description
   //
+  // The analyzer produces this diagnostic when an annotation is the invocation
+  // of an existing constructor even though the invoked constructor isn't a
+  // const constructor.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the constructor for `C`
+  // isn't a const constructor:
+  //
+  // ```dart
+  // [!@C()!]
+  // void f() {
+  // }
+  //
+  // class C {
+  //   C();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If it's valid for the class to have a const constructor, then create a
+  // const constructor that can be used for the annotation:
+  //
+  // ```dart
+  // @C()
+  // void f() {
+  // }
+  //
+  // class C {
+  //   const C();
+  // }
+  // ```
+  //
+  // If it isn't valid for the class to have a const constructor, then either
+  // remove the annotation or use a different class for the annotation.
+  static const CompileTimeErrorCode NON_CONSTANT_ANNOTATION_CONSTRUCTOR =
+      CompileTimeErrorCode('NON_CONSTANT_ANNOTATION_CONSTRUCTOR',
+          "Annotation creation can only call a const constructor.",
+          hasPublishedDocs: true);
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
   // The analyzer produces this diagnostic when the expression in a `case`
   // clause isn't a constant expression.
   //
@@ -4697,6 +5979,56 @@
    */
   // #### Description
   //
+  // The analyzer produces this diagnostic when an `if` element or a spread
+  // element in a constant map isn't a constant element.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because it's attempting to
+  // spread a non-constant map:
+  //
+  // ```dart
+  // var notConst = <int, int>{};
+  // var map = const <int, int>{...[!notConst!]};
+  // ```
+  //
+  // Similarly, the following code produces this diagnostic because the
+  // condition in the `if` element isn't a constant expression:
+  //
+  // ```dart
+  // bool notConst = true;
+  // var map = const <int, int>{if ([!notConst!]) 1 : 2};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the map needs to be a constant map, then make the elements constants.
+  // In the spread example, you might do that by making the collection being
+  // spread a constant:
+  //
+  // ```dart
+  // const notConst = <int, int>{};
+  // var map = const <int, int>{...notConst};
+  // ```
+  //
+  // If the map doesn't need to be a constant map, then remove the `const`
+  // keyword:
+  //
+  // ```dart
+  // bool notConst = true;
+  // var map = <int, int>{if (notConst) 1 : 2};
+  // ```
+  static const CompileTimeErrorCode NON_CONSTANT_MAP_ELEMENT =
+      CompileTimeErrorCode('NON_CONSTANT_MAP_ELEMENT',
+          "The elements in a const map literal must be constant.",
+          correction: "Try removing the keyword 'const' from the map literal.",
+          hasPublishedDocs: true);
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
   // The analyzer produces this diagnostic when a key in a constant map literal
   // isn't a constant value.
   //
@@ -4785,56 +6117,6 @@
           hasPublishedDocs: true);
 
   /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an `if` element or a spread
-  // element in a constant map isn't a constant element.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because it's attempting to
-  // spread a non-constant map:
-  //
-  // ```dart
-  // var notConst = <int, int>{};
-  // var map = const <int, int>{...[!notConst!]};
-  // ```
-  //
-  // Similarly, the following code produces this diagnostic because the
-  // condition in the `if` element isn't a constant expression:
-  //
-  // ```dart
-  // bool notConst = true;
-  // var map = const <int, int>{if ([!notConst!]) 1 : 2};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the map needs to be a constant map, then make the elements constants.
-  // In the spread example, you might do that by making the collection being
-  // spread a constant:
-  //
-  // ```dart
-  // const notConst = <int, int>{};
-  // var map = const <int, int>{...notConst};
-  // ```
-  //
-  // If the map doesn't need to be a constant map, then remove the `const`
-  // keyword:
-  //
-  // ```dart
-  // bool notConst = true;
-  // var map = <int, int>{if (notConst) 1 : 2};
-  // ```
-  static const CompileTimeErrorCode NON_CONSTANT_MAP_ELEMENT =
-      CompileTimeErrorCode('NON_CONSTANT_MAP_ELEMENT',
-          "The elements in a const map literal must be constant.",
-          correction: "Try removing the keyword 'const' from the map literal.",
-          hasPublishedDocs: true);
-
-  /**
    * 12.7 Maps: It is a compile time error if either a key or a value of an
    * entry in a constant map literal is not a compile-time constant.
    *
@@ -4853,52 +6135,6 @@
    */
   // #### Description
   //
-  // The analyzer produces this diagnostic when an annotation is the invocation
-  // of an existing constructor even though the invoked constructor isn't a
-  // const constructor.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the constructor for `C`
-  // isn't a const constructor:
-  //
-  // ```dart
-  // [!@C()!]
-  // void f() {
-  // }
-  //
-  // class C {
-  //   C();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If it's valid for the class to have a const constructor, then create a
-  // const constructor that can be used for the annotation:
-  //
-  // ```dart
-  // @C()
-  // void f() {
-  // }
-  //
-  // class C {
-  //   const C();
-  // }
-  // ```
-  //
-  // If it isn't valid for the class to have a const constructor, then either
-  // remove the annotation or use a different class for the annotation.
-  static const CompileTimeErrorCode NON_CONSTANT_ANNOTATION_CONSTRUCTOR =
-      CompileTimeErrorCode('NON_CONSTANT_ANNOTATION_CONSTRUCTOR',
-          "Annotation creation can only call a const constructor.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
   // The analyzer produces this diagnostic when a constant set literal contains
   // an element that isn't a compile-time constant.
   //
@@ -4936,17 +6172,6 @@
           hasPublishedDocs: true);
 
   /**
-   * This error code is no longer being generated. It should be removed when the
-   * reference to it in the linter has been removed and rolled into the SDK.
-   */
-  @deprecated
-  static const CompileTimeErrorCode NON_CONSTANT_VALUE_IN_INITIALIZER =
-      CompileTimeErrorCode(
-          'NON_CONSTANT_VALUE_IN_INITIALIZER',
-          "Initializer expressions in constant constructors must be "
-              "constants.");
-
-  /**
    * 7.6.1 Generative Constructors: Let <i>C</i> be the class in which the
    * superinitializer appears and let <i>S</i> be the superclass of <i>C</i>.
    * Let <i>k</i> be a generative constructor. It is a compile-time error if
@@ -4966,6 +6191,96 @@
 
   /**
    * Parameters:
+   * 0: the name of the non-type element
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the identifier following the
+  // `on` in a `catch` clause is defined to be something other than a type.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `f` is a function, not
+  // a type:
+  //
+  // ```dart
+  // void f() {
+  //   try {
+  //     // ...
+  //   } on [!f!] {
+  //     // ...
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Change the name to the type of object that should be caught:
+  //
+  // ```dart
+  // void f() {
+  //   try {
+  //     // ...
+  //   } on FormatException {
+  //     // ...
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode NON_TYPE_IN_CATCH_CLAUSE =
+      CompileTimeErrorCode(
+          'NON_TYPE_IN_CATCH_CLAUSE',
+          "The name '{0}' isn't a type and can't be used in an on-catch "
+              "clause.",
+          correction: "Try correcting the name to match an existing class.",
+          hasPublishedDocs: true);
+
+  /**
+   * 7.1.1 Operators: It is a static warning if the return type of the
+   * user-declared operator []= is explicitly declared and not void.
+   */
+  static const CompileTimeErrorCode NON_VOID_RETURN_FOR_OPERATOR =
+      CompileTimeErrorCode('NON_VOID_RETURN_FOR_OPERATOR',
+          "The return type of the operator []= must be 'void'.",
+          correction: "Try changing the return type to 'void'.");
+
+  /**
+   * 7.3 Setters: It is a static warning if a setter declares a return type
+   * other than void.
+   */
+  static const CompileTimeErrorCode NON_VOID_RETURN_FOR_SETTER =
+      CompileTimeErrorCode('NON_VOID_RETURN_FOR_SETTER',
+          "The return type of the setter must be 'void' or absent.",
+          correction: "Try removing the return type, or "
+              "define a method rather than a setter.");
+
+  /**
+   * Parameters:
+   * 0: the name that is not a type
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a name is used as a type but
+  // declared to be something other than a type.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `f` is a function:
+  //
+  // ```dart
+  // f() {}
+  // g([!f!] v) {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Replace the name with the name of a type.
+  static const CompileTimeErrorCode NOT_A_TYPE = CompileTimeErrorCode(
+      'NOT_A_TYPE', "{0} isn't a type.",
+      correction: "Try correcting the name to match an existing type.",
+      hasPublishedDocs: true);
+
+  /**
+   * Parameters:
    * 0: the name of the variable that is invalid
    */
   // #### Description
@@ -5135,10 +6450,6 @@
           correction: "Try adding the missing arguments.",
           hasPublishedDocs: true);
 
-  @Deprecated('Use CompileTimeErrorCode.NOT_ENOUGH_POSITIONAL_ARGUMENTS')
-  static const CompileTimeErrorCode NOT_ENOUGH_REQUIRED_ARGUMENTS =
-      NOT_ENOUGH_POSITIONAL_ARGUMENTS;
-
   /**
    * Parameters:
    * 0: the name of the field that is not initialized
@@ -5587,6 +6898,49 @@
 
   /**
    * Parameters:
+   * 0: the name of expected library name
+   * 1: the non-matching actual library name from the "part of" declaration
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a library attempts to include a
+  // file as a part of itself when the other file is a part of a different
+  // library.
+  //
+  // #### Example
+  //
+  // Given a file named `part.dart` containing
+  //
+  // ```dart
+  // %uri="package:a/part.dart"
+  // part of 'library.dart';
+  // ```
+  //
+  // The following code, in any file other than `library.dart`, produces this
+  // diagnostic because it attempts to include `part.dart` as a part of itself
+  // when `part.dart` is a part of a different library:
+  //
+  // ```dart
+  // part [!'package:a/part.dart'!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the library should be using a different file as a part, then change the
+  // URI in the part directive to be the URI of the other file.
+  //
+  // If the part file should be a part of this library, then update the URI (or
+  // library name) in the part-of directive to be the URI (or name) of the
+  // correct library.
+  static const CompileTimeErrorCode PART_OF_DIFFERENT_LIBRARY =
+      CompileTimeErrorCode('PART_OF_DIFFERENT_LIBRARY',
+          "Expected this library to be part of '{0}', not '{1}'.",
+          correction: "Try including a different part, or changing the name of "
+              "the library in the part's part-of directive.",
+          hasPublishedDocs: true);
+
+  /**
+   * Parameters:
    * 0: the uri pointing to a non-library declaration
    */
   // #### Description
@@ -5895,6 +7249,148 @@
           correction: "Try redirecting to a constructor of a different class.");
 
   /**
+   * Parameters:
+   * 0: the name of the redirected constructor
+   * 1: the name of the redirecting constructor
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a factory constructor attempts
+  // to redirect to another constructor, but the two have incompatible
+  // parameters. The parameters are compatible if all of the parameters of the
+  // redirecting constructor can be passed to the other constructor and if the
+  // other constructor doesn't require any parameters that aren't declared by
+  // the redirecting constructor.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the constructor for `A`
+  // doesn't declare a parameter that the constructor for `B` requires:
+  //
+  // ```dart
+  // abstract class A {
+  //   factory A() = [!B!];
+  // }
+  //
+  // class B implements A {
+  //   B(int x);
+  //   B.zero();
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because the constructor for `A`
+  // declares a named parameter (`y`) that the constructor for `B` doesn't
+  // allow:
+  //
+  // ```dart
+  // abstract class A {
+  //   factory A(int x, {int y}) = [!B!];
+  // }
+  //
+  // class B implements A {
+  //   B(int x);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If there's a different constructor that is compatible with the redirecting
+  // constructor, then redirect to that constructor:
+  //
+  // ```dart
+  // abstract class A {
+  //   factory A() = B.zero;
+  // }
+  //
+  // class B implements A {
+  //   B(int x);
+  //   B.zero();
+  // }
+  // ```
+  //
+  // Otherwise, update the redirecting constructor to be compatible:
+  //
+  // ```dart
+  // abstract class A {
+  //   factory A(int x) = B;
+  // }
+  //
+  // class B implements A {
+  //   B(int x);
+  // }
+  // ```
+  static const CompileTimeErrorCode REDIRECT_TO_INVALID_FUNCTION_TYPE =
+      CompileTimeErrorCode(
+          'REDIRECT_TO_INVALID_FUNCTION_TYPE',
+          "The redirected constructor '{0}' has incompatible parameters with "
+              "'{1}'.",
+          correction: "Try redirecting to a different constructor.",
+          hasPublishedDocs: true);
+
+  /**
+   * Parameters:
+   * 0: the name of the redirected constructor's return type
+   * 1: the name of the redirecting constructor's return type
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a factory constructor redirects
+  // to a constructor whose return type isn't a subtype of the type that the
+  // factory constructor is declared to produce.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `A` isn't a subclass
+  // of `C`, which means that the value returned by the constructor `A()`
+  // couldn't be returned from the constructor `C()`:
+  //
+  // ```dart
+  // class A {}
+  //
+  // class B implements C {}
+  //
+  // class C {
+  //   factory C() = [!A!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the factory constructor is redirecting to a constructor in the wrong
+  // class, then update the factory constructor to redirect to the correct
+  // constructor:
+  //
+  // ```dart
+  // class A {}
+  //
+  // class B implements C {}
+  //
+  // class C {
+  //   factory C() = B;
+  // }
+  // ```
+  //
+  // If the class defining the constructor being redirected to is the class that
+  // should be returned, then make it a subtype of the factory's return type:
+  //
+  // ```dart
+  // class A implements C {}
+  //
+  // class B implements C {}
+  //
+  // class C {
+  //   factory C() = A;
+  // }
+  // ```
+  static const CompileTimeErrorCode REDIRECT_TO_INVALID_RETURN_TYPE =
+      CompileTimeErrorCode(
+          'REDIRECT_TO_INVALID_RETURN_TYPE',
+          "The return type '{0}' of the redirected constructor isn't "
+              "a subtype of '{1}'.",
+          correction: "Try redirecting to a different constructor.",
+          hasPublishedDocs: true);
+
+  /**
    * 7.6.2 Factories: It is a compile-time error if <i>k</i> is prefixed with
    * the const modifier but <i>k'</i> is not a constant constructor.
    */
@@ -6097,6 +7593,38 @@
       correction: "Try removing the value, replacing 'return' with 'yield' or "
           "changing the method body modifier.");
 
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it finds a `return` statement
+  // without an expression in a function that declares a return type.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the function `f` is
+  // expected to return an `int`, but no value is being returned:
+  //
+  // ```dart
+  // int f() {
+  //   [!return!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Add an expression that computes the value to be returned:
+  //
+  // ```dart
+  // int f() {
+  //   return 0;
+  // }
+  // ```
+  static const CompileTimeErrorCode RETURN_WITHOUT_VALUE = CompileTimeErrorCode(
+      'RETURN_WITHOUT_VALUE', "The  return value is missing after 'return'.",
+      hasPublishedDocs: true);
+
   static const CompileTimeErrorCode SET_ELEMENT_FROM_DEFERRED_LIBRARY =
       CompileTimeErrorCode(
           'SET_ELEMENT_FROM_DEFERRED_LIBRARY',
@@ -6105,6 +7633,15 @@
           correction: "Try making the deferred import non-deferred.");
 
   /**
+   * Parameters:
+   * 0: the actual type of the set element
+   * 1: the expected type of the set element
+   */
+  static const CompileTimeErrorCode SET_ELEMENT_TYPE_NOT_ASSIGNABLE =
+      CompileTimeErrorCode('SET_ELEMENT_TYPE_NOT_ASSIGNABLE',
+          "The element type '{0}' can't be assigned to the set type '{1}'.");
+
+  /**
    * 14.1 Imports: It is a compile-time error if a prefix used in a deferred
    * import is used in another import clause.
    */
@@ -6123,6 +7660,63 @@
           correction: "Try making the deferred import non-deferred.");
 
   /**
+   * Parameters:
+   * 0: the name of the instance member
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a class name is used to access
+  // an instance field. Instance fields don't exist on a class; they exist only
+  // on an instance of the class.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `x` is an instance
+  // field:
+  //
+  // ```dart
+  // class C {
+  //   static int a;
+  //
+  //   int b;
+  // }
+  //
+  // int f() => C.[!b!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you intend to access a static field, then change the name of the field
+  // to an existing static field:
+  //
+  // ```dart
+  // class C {
+  //   static int a;
+  //
+  //   int b;
+  // }
+  //
+  // int f() => C.a;
+  // ```
+  //
+  // If you intend to access the instance field, then use an instance of the
+  // class to access the field:
+  //
+  // ```dart
+  // class C {
+  //   static int a;
+  //
+  //   int b;
+  // }
+  //
+  // int f(C c) => c.b;
+  // ```
+  static const CompileTimeErrorCode STATIC_ACCESS_TO_INSTANCE_MEMBER =
+      CompileTimeErrorCode('STATIC_ACCESS_TO_INSTANCE_MEMBER',
+          "Instance member '{0}' can't be accessed using static access.",
+          hasPublishedDocs: true);
+
+  /**
    * No parameters.
    */
   // #### Description
@@ -6215,6 +7809,63 @@
 
   /**
    * Parameters:
+   * 0: The static type of the switch expression
+   * 1: The static type of the case expressions
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the type of the expression in a
+  // `switch` statement isn't assignable to the type of the expressions in the
+  // `case` clauses.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the type of `s`
+  // (`String`) isn't assignable to the type of `0` (`int`):
+  //
+  // ```dart
+  // void f(String s) {
+  //   switch ([!s!]) {
+  //     case 0:
+  //       break;
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the type of the `case` expressions is correct, then change the
+  // expression in the `switch` statement to have the correct type:
+  //
+  // ```dart
+  // void f(String s) {
+  //   switch (int.parse(s)) {
+  //     case 0:
+  //       break;
+  //   }
+  // }
+  // ```
+  //
+  // If the type of the `switch` expression is correct, then change the `case`
+  // expressions to have the correct type:
+  //
+  // ```dart
+  // void f(String s) {
+  //   switch (s) {
+  //     case '0':
+  //       break;
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode SWITCH_EXPRESSION_NOT_ASSIGNABLE =
+      CompileTimeErrorCode(
+          'SWITCH_EXPRESSION_NOT_ASSIGNABLE',
+          "Type '{0}' of the switch expression isn't assignable to "
+              "the type '{1}' of case expressions.",
+          hasPublishedDocs: true);
+
+  /**
+   * Parameters:
    * 0: the type that can't be thrown
    */
   // #### Description
@@ -6252,6 +7903,45 @@
 
   /**
    * Parameters:
+   * 0: the element whose type could not be inferred.
+   * 1: The [TopLevelInferenceError]'s arguments that led to the cycle.
+   */
+  static const CompileTimeErrorCode TOP_LEVEL_CYCLE = CompileTimeErrorCode(
+      'TOP_LEVEL_CYCLE',
+      "The type of '{0}' can't be inferred because it depends on itself "
+          "through the cycle: {1}.",
+      correction:
+          "Try adding an explicit type to one or more of the variables in the "
+          "cycle in order to break the cycle.");
+
+  /**
+   * 15.3.1 Typedef: Any self reference, either directly, or recursively via
+   * another typedef, is a compile time error.
+   */
+  static const CompileTimeErrorCode TYPE_ALIAS_CANNOT_REFERENCE_ITSELF =
+      CompileTimeErrorCode(
+          'TYPE_ALIAS_CANNOT_REFERENCE_ITSELF',
+          "Typedefs can't reference themselves directly or recursively via "
+              "another typedef.");
+
+  /**
+   * 15.1 Static Types: It is a static warning to use a deferred type in a type
+   * annotation.
+   *
+   * Parameters:
+   * 0: the name of the type that is deferred and being used in a type
+   *    annotation
+   */
+  static const CompileTimeErrorCode TYPE_ANNOTATION_DEFERRED_CLASS =
+      CompileTimeErrorCode(
+          'TYPE_ANNOTATION_DEFERRED_CLASS',
+          "The deferred type '{0}' can't be used in a declaration, cast or "
+              "type test.",
+          correction: "Try using a different type, or "
+              "changing the import to not be deferred.");
+
+  /**
+   * Parameters:
    * 0: the name of the type used in the instance creation that should be
    *    limited by the bound as specified in the class declaration
    * 1: the name of the bounding type
@@ -6288,18 +7978,143 @@
           hasPublishedDocs: true);
 
   /**
-   * 15.3.1 Typedef: Any self reference, either directly, or recursively via
-   * another typedef, is a compile time error.
+   * 10 Generics: However, a type parameter is considered to be a malformed type
+   * when referenced by a static member.
+   *
+   * 15.1 Static Types: Any use of a malformed type gives rise to a static
+   * warning. A malformed type is then interpreted as dynamic by the static type
+   * checker and the runtime.
    */
-  static const CompileTimeErrorCode TYPE_ALIAS_CANNOT_REFERENCE_ITSELF =
-      CompileTimeErrorCode(
-          'TYPE_ALIAS_CANNOT_REFERENCE_ITSELF',
-          "Typedefs can't reference themselves directly or recursively via "
-              "another typedef.");
+  static const CompileTimeErrorCode TYPE_PARAMETER_REFERENCED_BY_STATIC =
+      CompileTimeErrorCode('TYPE_PARAMETER_REFERENCED_BY_STATIC',
+          "Static members can't reference type parameters of the class.",
+          correction: "Try removing the reference to the type parameter, or "
+              "making the member an instance member.");
 
-  @Deprecated('Use ParserErrorCode.TYPE_PARAMETER_ON_CONSTRUCTOR')
-  static const ParserErrorCode TYPE_PARAMETER_ON_CONSTRUCTOR =
-      ParserErrorCode.TYPE_PARAMETER_ON_CONSTRUCTOR;
+  /**
+   * 12.31 Type Test: It is a static warning if <i>T</i> does not denote a type
+   * available in the current lexical scope.
+   */
+  static const CompileTimeErrorCode TYPE_TEST_WITH_NON_TYPE =
+      CompileTimeErrorCode(
+          'TYPE_TEST_WITH_NON_TYPE',
+          "The name '{0}' isn't a type and can't be used in an 'is' "
+              "expression.",
+          correction: "Try correcting the name to match an existing type.");
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the name following the `is` in a
+  // type test expression isn't defined.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the name `Srting` isn't
+  // defined:
+  //
+  // ```dart
+  // void f(Object o) {
+  //   if (o is [!Srting!]) {
+  //     // ...
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Replace the name with the name of a type:
+  //
+  // ```dart
+  // void f(Object o) {
+  //   if (o is String) {
+  //     // ...
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode TYPE_TEST_WITH_UNDEFINED_NAME =
+      CompileTimeErrorCode(
+          'TYPE_TEST_WITH_UNDEFINED_NAME',
+          "The name '{0}' isn't defined, so it can't be used in an 'is' "
+              "expression.",
+          correction:
+              "Try changing the name to the name of an existing type, or "
+              "creating a type with the name '{0}'.",
+          hasPublishedDocs: true);
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an expression whose type is
+  // <a href=”#potentially-non-nullable”>potentially non-nullable</a> is
+  // dereferenced without first verifying that the value isn't `null`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `s` can be `null` at
+  // the point where it's referenced:
+  //
+  // ```dart
+  // %experiments=non-nullable
+  // void f(String? s) {
+  //   if ([!s!].length > 3) {
+  //     // ...
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the value really can be `null`, then add a test to ensure that members
+  // are only accessed when the value isn't `null`:
+  //
+  // ```dart
+  // %experiments=non-nullable
+  // void f(String? s) {
+  //   if (s != null && s.length > 3) {
+  //     // ...
+  //   }
+  // }
+  // ```
+  //
+  // If the expression is a variable and the value should never be `null`, then
+  // change the type of the variable to be non-nullable:
+  //
+  // ```dart
+  // %experiments=non-nullable
+  // void f(String s) {
+  //   if (s.length > 3) {
+  //     // ...
+  //   }
+  // }
+  // ```
+  //
+  // If you believe that the value of the expression should never be `null`, but
+  // you can't change the type of the variable, and you're willing to risk
+  // having an exception thrown at runtime if you're wrong, then you can assert
+  // that the value isn't null:
+  //
+  // ```dart
+  // %experiments=non-nullable
+  // void f(String? s) {
+  //   if (s!.length > 3) {
+  //     // ...
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode UNCHECKED_USE_OF_NULLABLE_VALUE =
+      CompileTimeErrorCode(
+          'UNCHECKED_USE_OF_NULLABLE_VALUE',
+          "An expression whose value can be 'null' must be null-checked before "
+              "it can be dereferenced.",
+          correction:
+              "Try checking that the value isn't 'null' before dereferencing "
+              "it.",
+          hasPublishedDocs: true);
 
   /**
    * No parameters.
@@ -6387,6 +8202,15 @@
       isUnresolvedIdentifier: true);
 
   /**
+   * Same as [CompileTimeErrorCode.UNDEFINED_CLASS], but to catch using
+   * "boolean" instead of "bool".
+   */
+  static const CompileTimeErrorCode UNDEFINED_CLASS_BOOLEAN =
+      CompileTimeErrorCode(
+          'UNDEFINED_CLASS_BOOLEAN', "Undefined class 'boolean'.",
+          correction: "Try using the type 'bool'.");
+
+  /**
    * Parameters:
    * 0: the name of the superclass that does not define the invoked constructor
    * 1: the name of the constructor being invoked
@@ -6786,6 +8610,79 @@
 
   /**
    * Parameters:
+   * 0: the name of the identifier
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it encounters an identifier that
+  // either isn't defined or isn't visible in the scope in which it's being
+  // referenced.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the name `rihgt` isn't
+  // defined:
+  //
+  // ```dart
+  // int min(int left, int right) => left <= [!rihgt!] ? left : right;
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the identifier isn't defined, then either define it or replace it with
+  // an identifier that is defined. The example above can be corrected by
+  // fixing the spelling of the variable:
+  //
+  // ```dart
+  // int min(int left, int right) => left <= right ? left : right;
+  // ```
+  //
+  // If the identifier is defined but isn't visible, then you probably need to
+  // add an import or re-arrange your code to make the identifier visible.
+  static const CompileTimeErrorCode UNDEFINED_IDENTIFIER =
+      CompileTimeErrorCode('UNDEFINED_IDENTIFIER', "Undefined name '{0}'.",
+          correction: "Try correcting the name to one that is defined, or "
+              "defining the name.",
+          hasPublishedDocs: true,
+          isUnresolvedIdentifier: true);
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the name `await` is used in a
+  // method or function body without being declared, and the body isn't marked
+  // with the `async` keyword. The name `await` only introduces an await
+  // expression in an asynchronous function.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the name `await` is
+  // used in the body of `f` even though the body of `f` isn't marked with the
+  // `async` keyword:
+  //
+  // ```dart
+  // void f(p) { [!await!] p; }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Add the keyword `async` to the function body:
+  //
+  // ```dart
+  // void f(p) async { await p; }
+  // ```
+  static const CompileTimeErrorCode UNDEFINED_IDENTIFIER_AWAIT =
+      CompileTimeErrorCode('UNDEFINED_IDENTIFIER_AWAIT',
+          "Undefined name 'await' in function body not marked with 'async'.",
+          correction: "Try correcting the name to one that is defined, "
+              "defining the name, or "
+              "adding 'async' to the enclosing function body.",
+          hasPublishedDocs: true);
+
+  /**
+   * Parameters:
    * 0: the name of the requested named parameter
    */
   // #### Description
@@ -7014,6 +8911,68 @@
           'URI_WITH_INTERPOLATION', "URIs can't use string interpolation.");
 
   /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it finds an expression whose
+  // type is `void`, and the expression is used in a place where a value is
+  // expected, such as before a member access or on the right-hand side of an
+  // assignment.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `f` doesn't produce an
+  // object on which `toString` can be invoked:
+  //
+  // ```dart
+  // void f() {}
+  //
+  // void g() {
+  //   [!f()!].toString();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Either rewrite the code so that the expression has a value or rewrite the
+  // code so that it doesn't depend on the value.
+  static const CompileTimeErrorCode USE_OF_VOID_RESULT = CompileTimeErrorCode(
+      'USE_OF_VOID_RESULT',
+      "This expression has a type of 'void' so its value can't be used.",
+      correction:
+          "Try checking to see if you're using the correct API; there might "
+          "be a function or call that returns void you didn't expect. Also "
+          "check type parameters and variables which might also be void.",
+      hasPublishedDocs: true);
+
+  /**
+   * Let `C` be a generic class that declares a formal type parameter `X`, and
+   * assume that `T` is a direct superinterface of `C`.
+   *
+   * It is a compile-time error if `X` is explicitly defined as a covariant or
+   * 'in' type parameter and `X` occurs in a non-covariant position in `T`.
+   * It is a compile-time error if `X` is explicitly defined as a contravariant
+   * or 'out' type parameter and `X` occurs in a non-contravariant position in
+   * `T`.
+   *
+   * Parameters:
+   * 0: the name of the type parameter
+   * 1: the variance modifier defined for {0}
+   * 2: the variance position of the type parameter {0} in the
+   *    superinterface {3}
+   * 3: the name of the superinterface
+   */
+  static const CompileTimeErrorCode
+      WRONG_EXPLICIT_TYPE_PARAMETER_VARIANCE_IN_SUPERINTERFACE =
+      CompileTimeErrorCode(
+    'WRONG_EXPLICIT_TYPE_PARAMETER_VARIANCE_IN_SUPERINTERFACE',
+    "'{0}' is an '{1}' type parameter and can't be used in an '{2}' position in '{3}'.",
+    correction: "Try using 'in' type parameters in 'in' positions and 'out' "
+        "type parameters in 'out' positions in the superinterface.",
+  );
+
+  /**
    * Parameters:
    * 0: the name of the declared operator
    * 1: the number of parameters expected
@@ -7151,32 +9110,6 @@
   );
 
   /**
-   * Let `C` be a generic class that declares a formal type parameter `X`, and
-   * assume that `T` is a direct superinterface of `C`.
-   *
-   * It is a compile-time error if `X` is explicitly defined as a covariant or
-   * 'in' type parameter and `X` occurs in a non-covariant position in `T`.
-   * It is a compile-time error if `X` is explicitly defined as a contravariant
-   * or 'out' type parameter and `X` occurs in a non-contravariant position in
-   * `T`.
-   *
-   * Parameters:
-   * 0: the name of the type parameter
-   * 1: the variance modifier defined for {0}
-   * 2: the variance position of the type parameter {0} in the
-   *    superinterface {3}
-   * 3: the name of the superinterface
-   */
-  static const CompileTimeErrorCode
-      WRONG_EXPLICIT_TYPE_PARAMETER_VARIANCE_IN_SUPERINTERFACE =
-      CompileTimeErrorCode(
-    'WRONG_EXPLICIT_TYPE_PARAMETER_VARIANCE_IN_SUPERINTERFACE',
-    "'{0}' is an '{1}' type parameter and can't be used in an '{2}' position in '{3}'.",
-    correction: "Try using 'in' type parameters in 'in' positions and 'out' "
-        "type parameters in 'out' positions in the superinterface.",
-  );
-
-  /**
    * ?? Yield: It is a compile-time error if a yield statement appears in a
    * function that is not a generator function.
    */
@@ -7284,6 +9217,61 @@
           correction: "Try adjusting the number of type arguments.");
 
   /**
+   * 17.6.2 For-in. It the iterable expression does not implement Iterable with
+   * a type argument that can be assigned to the for-in variable's type, this
+   * warning is reported.
+   *
+   * Parameters:
+   * 0: The type of the iterable expression.
+   * 1: The sequence type -- Iterable for `for` or Stream for `await for`.
+   * 2: The loop variable type.
+   */
+  static const StaticTypeWarningCode FOR_IN_OF_INVALID_ELEMENT_TYPE =
+      StaticTypeWarningCode(
+          'FOR_IN_OF_INVALID_ELEMENT_TYPE',
+          "The type '{0}' used in the 'for' loop must implement {1} with a "
+              "type argument that can be assigned to '{2}'.");
+
+  /**
+   * Parameters:
+   * 0: The type of the iterable expression.
+   * 1: The sequence type -- Iterable for `for` or Stream for `await for`.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the expression following `in` in
+  // a for-in loop has a type that isn't a subclass of `Iterable`.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `m` is a `Map`, and
+  // `Map` isn't a subclass of `Iterable`:
+  //
+  // ```dart
+  // void f(Map<String, String> m) {
+  //   for (String s in [!m!]) {
+  //     print(s);
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Replace the expression with one that produces an iterable value:
+  //
+  // ```dart
+  // void f(Map<String, String> m) {
+  //   for (String s in m.values) {
+  //     print(s);
+  //   }
+  // }
+  // ```
+  static const StaticTypeWarningCode FOR_IN_OF_INVALID_TYPE =
+      StaticTypeWarningCode('FOR_IN_OF_INVALID_TYPE',
+          "The type '{0}' used in the 'for' loop must implement {1}.",
+          hasPublishedDocs: true);
+
+  /**
    * No parameters.
    */
   // #### Description
@@ -7686,21 +9674,6 @@
    * Parameters:
    * 0: the return type as declared in the return statement
    * 1: the expected return type as defined by the method
-   * 2: the name of the method
-   */
-  @Deprecated('Use either RETURN_OF_INVALID_TYPE_FROM_FUNCTION or '
-      'RETURN_OF_INVALID_TYPE_FROM_METHOD')
-  static const StaticTypeWarningCode RETURN_OF_INVALID_TYPE =
-      StaticTypeWarningCode(
-          'RETURN_OF_INVALID_TYPE',
-          "The return type '{0}' isn't a '{1}', as defined by the method "
-              "'{2}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the return type as declared in the return statement
-   * 1: the expected return type as defined by the method
    */
   // #### Description
   //
@@ -8337,61 +10310,6 @@
               "to '{1}'.");
 
   /**
-   * Parameters:
-   * 0: The type of the iterable expression.
-   * 1: The sequence type -- Iterable for `for` or Stream for `await for`.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the expression following `in` in
-  // a for-in loop has a type that isn't a subclass of `Iterable`.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `m` is a `Map`, and
-  // `Map` isn't a subclass of `Iterable`:
-  //
-  // ```dart
-  // void f(Map<String, String> m) {
-  //   for (String s in [!m!]) {
-  //     print(s);
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Replace the expression with one that produces an iterable value:
-  //
-  // ```dart
-  // void f(Map<String, String> m) {
-  //   for (String s in m.values) {
-  //     print(s);
-  //   }
-  // }
-  // ```
-  static const StaticTypeWarningCode FOR_IN_OF_INVALID_TYPE =
-      StaticTypeWarningCode('FOR_IN_OF_INVALID_TYPE',
-          "The type '{0}' used in the 'for' loop must implement {1}.",
-          hasPublishedDocs: true);
-
-  /**
-   * 17.6.2 For-in. It the iterable expression does not implement Iterable with
-   * a type argument that can be assigned to the for-in variable's type, this
-   * warning is reported.
-   *
-   * Parameters:
-   * 0: The type of the iterable expression.
-   * 1: The sequence type -- Iterable for `for` or Stream for `await for`.
-   * 2: The loop variable type.
-   */
-  static const StaticTypeWarningCode FOR_IN_OF_INVALID_ELEMENT_TYPE =
-      StaticTypeWarningCode(
-          'FOR_IN_OF_INVALID_ELEMENT_TYPE',
-          "The type '{0}' used in the 'for' loop must implement {1} with a "
-              "type argument that can be assigned to '{2}'.");
-
-  /**
    * Initialize a newly created error code to have the given [name]. The message
    * associated with the error will be created from the given [message]
    * template. The correction associated with the error will be created from the
@@ -8432,480 +10350,6 @@
  */
 class StaticWarningCode extends AnalyzerErrorCode {
   /**
-   * Parameters:
-   * 0: the name of the ambiguous type
-   * 1: the name of the first library that the type is found
-   * 2: the name of the second library that the type is found
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a name is referenced that is
-  // declared in two or more imported libraries.
-  //
-  // #### Examples
-  //
-  // Given a library (`a.dart`) that defines a class (`C` in this example):
-  //
-  // ```dart
-  // %uri="lib/a.dart"
-  // class A {}
-  // class C {}
-  // ```
-  //
-  // And a library (`b.dart`) that defines a different class with the same name:
-  //
-  // ```dart
-  // %uri="lib/b.dart"
-  // class B {}
-  // class C {}
-  // ```
-  //
-  // The following code produces this diagnostic:
-  //
-  // ```dart
-  // import 'a.dart';
-  // import 'b.dart';
-  //
-  // void f([!C!] c1, [!C!] c2) {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If any of the libraries aren't needed, then remove the import directives
-  // for them:
-  //
-  // ```dart
-  // import 'a.dart';
-  //
-  // void f(C c1, C c2) {}
-  // ```
-  //
-  // If the name is still defined by more than one library, then add a `hide`
-  // clause to the import directives for all except one library:
-  //
-  // ```dart
-  // import 'a.dart' hide C;
-  // import 'b.dart';
-  //
-  // void f(C c1, C c2) {}
-  // ```
-  //
-  // If you must be able to reference more than one of these types, then add a
-  // prefix to each of the import directives, and qualify the references with
-  // the appropriate prefix:
-  //
-  // ```dart
-  // import 'a.dart' as a;
-  // import 'b.dart' as b;
-  //
-  // void f(a.C c1, b.C c2) {}
-  // ```
-  static const StaticWarningCode AMBIGUOUS_IMPORT = StaticWarningCode(
-      'AMBIGUOUS_IMPORT', "The name '{0}' is defined in the libraries {1}.",
-      correction: "Try using 'as prefix' for one of the import directives, or "
-          "hiding the name from all but one of the imports.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the actual argument type
-   * 1: the name of the expected type
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the static type of an argument
-  // can't be assigned to the static type of the corresponding parameter.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because a `num` can't be
-  // assigned to a `String`:
-  //
-  // ```dart
-  // String f(String x) => x;
-  // String g(num y) => f([!y!]);
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If possible, rewrite the code so that the static type is assignable. In the
-  // example above you might be able to change the type of the parameter `y`:
-  //
-  // ```dart
-  // String f(String x) => x;
-  // String g(String y) => f(y);
-  // ```
-  //
-  // If that fix isn't possible, then add code to handle the case where the
-  // argument value isn't the required type. One approach is to coerce other
-  // types to the required type:
-  //
-  // ```dart
-  // String f(String x) => x;
-  // String g(num y) => f(y.toString());
-  // ```
-  //
-  // Another approach is to add explicit type tests and fallback code:
-  //
-  // ```dart
-  // String f(String x) => x;
-  // String g(num y) => f(y is String ? y : '');
-  // ```
-  //
-  // If you believe that the runtime type of the argument will always be the
-  // same as the static type of the parameter, and you're willing to risk having
-  // an exception thrown at runtime if you're wrong, then add an explicit cast:
-  //
-  // ```dart
-  // String f(String x) => x;
-  // String g(num y) => f(y as String);
-  // ```
-  static const StaticWarningCode ARGUMENT_TYPE_NOT_ASSIGNABLE =
-      StaticWarningCode(
-          'ARGUMENT_TYPE_NOT_ASSIGNABLE',
-          "The argument type '{0}' can't be assigned to the parameter type "
-              "'{1}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * 5 Variables: Attempting to assign to a final variable elsewhere will cause
-   * a NoSuchMethodError to be thrown, because no setter is defined for it. The
-   * assignment will also give rise to a static warning for the same reason.
-   *
-   * A constant variable is always implicitly final.
-   */
-  static const StaticWarningCode ASSIGNMENT_TO_CONST = StaticWarningCode(
-      'ASSIGNMENT_TO_CONST', "Constant variables can't be assigned a value.",
-      correction: "Try removing the assignment, or "
-          "remove the modifier 'const' from the variable.");
-
-  /**
-   * Parameters:
-   * 0: the name of the final variable
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it finds an invocation of a
-  // setter, but there's no setter because the field with the same name was
-  // declared to be `final` or `const`.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `v` is final:
-  //
-  // ```dart
-  // class C {
-  //   final v = 0;
-  // }
-  //
-  // f(C c) {
-  //   c.[!v!] = 1;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you need to be able to set the value of the field, then remove the
-  // modifier `final` from the field:
-  //
-  // ```dart
-  // class C {
-  //   int v = 0;
-  // }
-  //
-  // f(C c) {
-  //   c.v = 1;
-  // }
-  // ```
-  static const StaticWarningCode ASSIGNMENT_TO_FINAL = StaticWarningCode(
-      'ASSIGNMENT_TO_FINAL',
-      "'{0}' can't be used as a setter because it's final.",
-      correction: "Try finding a different setter, or making '{0}' non-final.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a local variable that was
-  // declared to be final is assigned after it was initialized.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `x` is final, so it
-  // can't have a value assigned to it after it was initialized:
-  //
-  // ```dart
-  // void f() {
-  //   final x = 0;
-  //   [!x!] = 3;
-  //   print(x);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the keyword `final`, and replace it with `var` if there's no type
-  // annotation:
-  //
-  // ```dart
-  // void f() {
-  //   var x = 0;
-  //   x = 3;
-  //   print(x);
-  // }
-  // ```
-  static const StaticWarningCode ASSIGNMENT_TO_FINAL_LOCAL = StaticWarningCode(
-      'ASSIGNMENT_TO_FINAL_LOCAL',
-      "The final variable '{0}' can only be set once.",
-      correction: "Try making '{0}' non-final.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a reference to a setter is
-  // found; there is no setter defined for the type; but there is a getter
-  // defined with the same name.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because there is no setter
-  // named `x` in `C`, but there is a getter named `x`:
-  //
-  // ```dart
-  // class C {
-  //   int get x => 0;
-  //   set y(int p) {}
-  // }
-  //
-  // void f(C c) {
-  //   c.[!x!] = 1;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you want to invoke an existing setter, then correct the name:
-  //
-  // ```dart
-  // class C {
-  //   int get x => 0;
-  //   set y(int p) {}
-  // }
-  //
-  // void f(C c) {
-  //   c.y = 1;
-  // }
-  // ```
-  //
-  // If you want to invoke the setter but it just doesn't exist yet, then
-  // declare it:
-  //
-  // ```dart
-  // class C {
-  //   int get x => 0;
-  //   set x(int p) {}
-  //   set y(int p) {}
-  // }
-  //
-  // void f(C c) {
-  //   c.x = 1;
-  // }
-  // ```
-  static const StaticWarningCode ASSIGNMENT_TO_FINAL_NO_SETTER =
-      StaticWarningCode('ASSIGNMENT_TO_FINAL_NO_SETTER',
-          "There isn’t a setter named '{0}' in class '{1}'.",
-          correction:
-              "Try correcting the name to reference an existing setter, or "
-              "declare the setter.",
-          hasPublishedDocs: true);
-
-  /**
-   * 12.18 Assignment: It is as static warning if an assignment of the form
-   * <i>v = e</i> occurs inside a top level or static function (be it function,
-   * method, getter, or setter) or variable initializer and there is neither a
-   * local variable declaration with name <i>v</i> nor setter declaration with
-   * name <i>v=</i> in the lexical scope enclosing the assignment.
-   */
-  static const StaticWarningCode ASSIGNMENT_TO_FUNCTION = StaticWarningCode(
-      'ASSIGNMENT_TO_FUNCTION', "Functions can't be assigned a value.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the target of an assignment is a
-  // method.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `f` can't be assigned a
-  // value because it's a method:
-  //
-  // ```dart
-  // class C {
-  //   void f() {}
-  //
-  //   void g() {
-  //     [!f!] = null;
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Rewrite the code so that there isn't an assignment to a method.
-  static const StaticWarningCode ASSIGNMENT_TO_METHOD = StaticWarningCode(
-      'ASSIGNMENT_TO_METHOD', "Methods can't be assigned a value.",
-      hasPublishedDocs: true);
-
-  /**
-   * 12.18 Assignment: It is as static warning if an assignment of the form
-   * <i>v = e</i> occurs inside a top level or static function (be it function,
-   * method, getter, or setter) or variable initializer and there is neither a
-   * local variable declaration with name <i>v</i> nor setter declaration with
-   * name <i>v=</i> in the lexical scope enclosing the assignment.
-   */
-  static const StaticWarningCode ASSIGNMENT_TO_TYPE = StaticWarningCode(
-      'ASSIGNMENT_TO_TYPE', "Types can't be assigned a value.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the last statement in a `case`
-  // block isn't one of the required terminators: `break`, `continue`,
-  // `rethrow`, `return`, or `throw`.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the `case` block ends
-  // with an assignment:
-  //
-  // ```dart
-  // void f(int x) {
-  //   switch (x) {
-  //     [!case!] 0:
-  //       x += 2;
-  //     default:
-  //       x += 1;
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Add one of the required terminators:
-  //
-  // ```dart
-  // void f(int x) {
-  //   switch (x) {
-  //     case 0:
-  //       x += 2;
-  //       break;
-  //     default:
-  //       x += 1;
-  //   }
-  // }
-  // ```
-  static const StaticWarningCode CASE_BLOCK_NOT_TERMINATED = StaticWarningCode(
-      'CASE_BLOCK_NOT_TERMINATED',
-      "The last statement of the 'case' should be 'break', 'continue', "
-          "'rethrow', 'return', or 'throw'.",
-      correction: "Try adding one of the required statements.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the name following the `as` in a
-  // cast expression is defined to be something other than a type.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `x` is a variable, not
-  // a type:
-  //
-  // ```dart
-  // num x = 0;
-  // int y = x as [!x!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Replace the name with the name of a type:
-  //
-  // ```dart
-  // num x = 0;
-  // int y = x as int;
-  // ```
-  static const StaticWarningCode CAST_TO_NON_TYPE = StaticWarningCode(
-      'CAST_TO_NON_TYPE',
-      "The name '{0}' isn't a type, so it can't be used in an 'as' expression.",
-      correction: "Try changing the name to the name of an existing type, or "
-          "creating a type with the name '{0}'.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the abstract method
-   * 1: the name of the enclosing class
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a member of a concrete class is
-  // found that doesn't have a concrete implementation. Concrete classes aren't
-  // allowed to contain abstract members.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `m` is an abstract
-  // method but `C` isn't an abstract class:
-  //
-  // ```dart
-  // class C {
-  //   [!void m();!]
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If it's valid to create instances of the class, provide an implementation
-  // for the member:
-  //
-  // ```dart
-  // class C {
-  //   void m() {}
-  // }
-  // ```
-  //
-  // If it isn't valid to create instances of the class, mark the class as being
-  // abstract:
-  //
-  // ```dart
-  // abstract class C {
-  //   void m();
-  // }
-  // ```
-  static const StaticWarningCode CONCRETE_CLASS_WITH_ABSTRACT_MEMBER =
-      StaticWarningCode('CONCRETE_CLASS_WITH_ABSTRACT_MEMBER',
-          "'{0}' must have a method body because '{1}' isn't abstract.",
-          correction: "Try making '{1}' abstract, or adding a body to '{0}'.",
-          hasPublishedDocs: true);
-
-  @Deprecated('Use StaticWarningCode.INSTANTIATE_ABSTRACT_CLASS')
-  static const StaticWarningCode CONST_WITH_ABSTRACT_CLASS =
-      INSTANTIATE_ABSTRACT_CLASS;
-
-  /**
    * No parameters.
    */
   // #### Description
@@ -8990,401 +10434,6 @@
       'DEAD_NULL_AWARE_EXPRESSION',
       "The left operand can't be null, so the right operand is never executed.",
       correction: "Try removing the operator and the right operand.",
-      errorSeverity: ErrorSeverity.WARNING,
-      hasPublishedDocs: true);
-
-  @Deprecated('Use CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS')
-  static const CompileTimeErrorCode EXTRA_POSITIONAL_ARGUMENTS =
-      CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS;
-
-  @Deprecated(
-      'Use CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED')
-  static const CompileTimeErrorCode EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED =
-      CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED;
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a final field is initialized in
-  // both the declaration of the field and in an initializer in a constructor.
-  // Final fields can only be assigned once, so it can't be initialized in both
-  // places.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `f` is :
-  //
-  // ```dart
-  // class C {
-  //   final int f = 0;
-  //   C() : [!f!] = 1;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the initialization doesn't depend on any values passed to the
-  // constructor, and if all of the constructors need to initialize the field to
-  // the same value, then remove the initializer from the constructor:
-  //
-  // ```dart
-  // class C {
-  //   final int f = 0;
-  //   C();
-  // }
-  // ```
-  //
-  // If the initialization depends on a value passed to the constructor, or if
-  // different constructors need to initialize the field differently, then
-  // remove the initializer in the field's declaration:
-  //
-  // ```dart
-  // class C {
-  //   final int f;
-  //   C() : f = 1;
-  // }
-  // ```
-  static const StaticWarningCode
-      FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION = StaticWarningCode(
-          'FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION',
-          "Fields can't be initialized in the constructor if they are final "
-              "and were already initialized at their declaration.",
-          correction: "Try removing one of the initializations.",
-          hasPublishedDocs: true);
-
-  /**
-   * 5. Variables: It is a static warning if a final instance variable that has
-   * been initialized at its point of declaration is also initialized in a
-   * constructor.
-   *
-   * Parameters:
-   * 0: the name of the field in question
-   */
-  static const StaticWarningCode
-      FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR = StaticWarningCode(
-          'FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR',
-          "'{0}' is final and was given a value when it was declared, "
-              "so it can't be set to a new value.",
-          correction: "Try removing one of the initializations.");
-
-  /**
-   * Parameters:
-   * 0: the name of the type of the initializer expression
-   * 1: the name of the type of the field
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the initializer list of a
-  // constructor initializes a field to a value that isn't assignable to the
-  // field.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `0` has the type `int`,
-  // and an `int` can't be assigned to a field of type `String`:
-  //
-  // ```dart
-  // class C {
-  //   String s;
-  //
-  //   C() : s = [!0!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the type of the field is correct, then change the value assigned to it
-  // so that the value has a valid type:
-  //
-  // ```dart
-  // class C {
-  //   String s;
-  //
-  //   C() : s = '0';
-  // }
-  // ```
-  //
-  // If the type of the value is correct, then change the type of the field to
-  // allow the assignment:
-  //
-  // ```dart
-  // class C {
-  //   int s;
-  //
-  //   C() : s = 0;
-  // }
-  // ```
-  static const StaticWarningCode FIELD_INITIALIZER_NOT_ASSIGNABLE =
-      StaticWarningCode(
-          'FIELD_INITIALIZER_NOT_ASSIGNABLE',
-          "The initializer type '{0}' can't be assigned to the field type "
-              "'{1}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * 7.6.1 Generative Constructors: An initializing formal has the form
-   * <i>this.id</i>. It is a static warning if the static type of <i>id</i> is
-   * not assignable to <i>T<sub>id</sub></i>.
-   *
-   * Parameters:
-   * 0: the name of the type of the field formal parameter
-   * 1: the name of the type of the field
-   */
-  static const StaticWarningCode FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE =
-      StaticWarningCode('FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE',
-          "The parameter type '{0}' is incompatible with the field type '{1}'.",
-          correction: "Try changing or removing the parameter's type, or "
-              "changing the field's type.");
-
-  /**
-   * Parameters:
-   * 0: the name of the uninitialized final variable
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a final field or variable isn't
-  // initialized.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `x` doesn't have an
-  // initializer:
-  //
-  // ```dart
-  // final [!x!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // For variables and static fields, you can add an initializer:
-  //
-  // ```dart
-  // final x = 0;
-  // ```
-  //
-  // For instance fields, you can add an initializer as shown in the previous
-  // example, or you can initialize the field in every constructor. You can
-  // initialize the field by using a field formal parameter:
-  //
-  // ```dart
-  // class C {
-  //   final int x;
-  //   C(this.x);
-  // }
-  // ```
-  //
-  // You can also initialize the field by using an initializer in the
-  // constructor:
-  //
-  // ```dart
-  // class C {
-  //   final int x;
-  //   C(int y) : x = y * 2;
-  // }
-  // ```
-  static const StaticWarningCode FINAL_NOT_INITIALIZED = StaticWarningCode(
-      'FINAL_NOT_INITIALIZED', "The final variable '{0}' must be initialized.",
-      // TODO(brianwilkerson) Split this error code so that we can suggest
-      // initializing fields in constructors (FINAL_FIELD_NOT_INITIALIZED
-      // and FINAL_VARIABLE_NOT_INITIALIZED).
-      correction: "Try initializing the variable.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the uninitialized final variable
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a class defines one or more
-  // final instance fields without initializers and has at least one constructor
-  // that doesn't initialize those fields. All final instance fields must be
-  // initialized when the instance is created, either by the field's initializer
-  // or by the constructor.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic:
-  //
-  // ```dart
-  // class C {
-  //   final String value;
-  //
-  //   [!C!]();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the value should be passed in to the constructor directly, then use a
-  // field formal parameter to initialize the field `value`:
-  //
-  // ```dart
-  // class C {
-  //   final String value;
-  //
-  //   C(this.value);
-  // }
-  // ```
-  //
-  // If the value should be computed indirectly from a value provided by the
-  // caller, then add a parameter and include an initializer:
-  //
-  // ```dart
-  // class C {
-  //   final String value;
-  //
-  //   C(Object o) : value = o.toString();
-  // }
-  // ```
-  //
-  // If the value of the field doesn't depend on values that can be passed to
-  // the constructor, then add an initializer for the field as part of the field
-  // declaration:
-  //
-  // ```dart
-  // class C {
-  //   final String value = '';
-  //
-  //   C();
-  // }
-  // ```
-  //
-  // If the value of the field doesn't depend on values that can be passed to
-  // the constructor but different constructors need to initialize it to
-  // different values, then add an initializer for the field in the initializer
-  // list:
-  //
-  // ```dart
-  // class C {
-  //   final String value;
-  //
-  //   C() : value = '';
-  //
-  //   C.named() : value = 'c';
-  // }
-  // ```
-  //
-  // However, if the value is the same for all instances, then consider using a
-  // static field instead of an instance field:
-  //
-  // ```dart
-  // class C {
-  //   static const String value = '';
-  //
-  //   C();
-  // }
-  // ```
-  static const StaticWarningCode FINAL_NOT_INITIALIZED_CONSTRUCTOR_1 =
-      StaticWarningCodeWithUniqueName(
-          'FINAL_NOT_INITIALIZED_CONSTRUCTOR',
-          'StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1',
-          "All final variables must be initialized, but '{0}' isn't.",
-          correction: "Try adding an initializer for the field.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the uninitialized final variable
-   * 1: the name of the uninitialized final variable
-   */
-  static const StaticWarningCode FINAL_NOT_INITIALIZED_CONSTRUCTOR_2 =
-      StaticWarningCodeWithUniqueName(
-          'FINAL_NOT_INITIALIZED_CONSTRUCTOR',
-          'StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_2',
-          "All final variables must be initialized, but '{0}' and '{1}' "
-              "aren't.",
-          correction: "Try adding initializers for the fields.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the uninitialized final variable
-   * 1: the name of the uninitialized final variable
-   * 2: the number of additional not initialized variables that aren't listed
-   */
-  static const StaticWarningCode FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS =
-      StaticWarningCodeWithUniqueName(
-          'FINAL_NOT_INITIALIZED_CONSTRUCTOR',
-          'StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_3',
-          "All final variables must be initialized, but '{0}', '{1}', and {2} "
-              "others aren't.",
-          correction: "Try adding initializers for the fields.",
-          hasPublishedDocs: true);
-
-  /**
-   * 10.3 Setters: It is a compile-time error if a class has a setter named
-   * `v=` with argument type `T` and a getter named `v` with return type `S`,
-   * and `S` may not be assigned to `T`.
-   *
-   * Parameters:
-   * 0: the name of the getter
-   * 1: the type of the getter
-   * 2: the type of the setter
-   * 3: the name of the setter
-   */
-  static const StaticWarningCode GETTER_NOT_ASSIGNABLE_SETTER_TYPES =
-      StaticWarningCode(
-          'GETTER_NOT_ASSIGNABLE_SETTER_TYPES',
-          "The return type of getter '{0}' is '{1}' which isn't assignable "
-              "to the type '{2}' of its setter '{3}'.",
-          correction: "Try changing the types so that they are compatible.");
-
-  /**
-   * nnbd/feature-specification.md
-   *
-   * It is an error if a class has a setter and a getter with the same basename
-   * where the return type of the getter is not a subtype of the argument type
-   * of the setter. Note that this error specifically requires subtyping and
-   * not assignability and hence makes no exception for `dynamic`.
-   *
-   * Parameters:
-   * 0: the name of the getter
-   * 1: the type of the getter
-   * 2: the type of the setter
-   * 3: the name of the setter
-   */
-  static const StaticWarningCode GETTER_NOT_SUBTYPE_SETTER_TYPES =
-      StaticWarningCode(
-          'GETTER_NOT_SUBTYPE_SETTER_TYPES',
-          "The return type of getter '{0}' is '{1}' which isn't a subtype "
-              "of the type '{2}' of its setter '{3}'.",
-          correction: "Try changing the types so that they are compatible.");
-
-  @Deprecated('Use CompileTimeErrorCode.IMPORT_OF_NON_LIBRARY')
-  static const CompileTimeErrorCode IMPORT_OF_NON_LIBRARY =
-      CompileTimeErrorCode.IMPORT_OF_NON_LIBRARY;
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it finds a constructor
-  // invocation and the constructor is declared in an abstract class. Even
-  // though you can't create an instance of an abstract class, abstract classes
-  // can declare constructors that can be invoked by subclasses.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `C` is an abstract
-  // class:
-  //
-  // ```dart
-  // abstract class C {}
-  //
-  // var c = new [!C!]();
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If there's a concrete subclass of the abstract class that can be used, then
-  // create an instance of the concrete subclass.
-  static const StaticWarningCode INSTANTIATE_ABSTRACT_CLASS = StaticWarningCode(
-      'INSTANTIATE_ABSTRACT_CLASS', "Abstract classes can't be instantiated.",
-      correction: "Try creating an instance of a concrete subtype.",
       hasPublishedDocs: true);
 
   /**
@@ -9437,7 +10486,6 @@
           "The target expression can't be null, so the null-aware operator "
               "'{0}' can't be used.",
           correction: "Try replace the operator '{0}' with '{1}'.",
-          errorSeverity: ErrorSeverity.WARNING,
           hasPublishedDocs: true);
 
   /**
@@ -9453,7 +10501,6 @@
           "The target expression can't be null because of short-circuiting, so "
               "the null-aware operator '{0}' can't be used.",
           correction: "Try replace the operator '{0}' with '{1}'.",
-          errorSeverity: ErrorSeverity.WARNING,
           hasPublishedDocs: true);
 
   /**
@@ -9468,8 +10515,7 @@
           'INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED',
           "Parameters can't override default values, this method overrides "
               "'{0}.{1}' where '{2}' has a different value.",
-          correction: "Try using the same default value in both methods.",
-          errorSeverity: ErrorSeverity.WARNING);
+          correction: "Try using the same default value in both methods.");
 
   /**
    * 7.1 Instance Methods: It is a static warning if an instance method
@@ -9484,171 +10530,7 @@
           "Parameters can't override default values, this method overrides "
               "'{0}.{1}' where this positional parameter has a different "
               "value.",
-          correction: "Try using the same default value in both methods.",
-          errorSeverity: ErrorSeverity.WARNING);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an expression whose value will
-  // always be `null` is dererenced.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `x` will always be
-  // `null`:
-  //
-  // ```dart
-  // %experiments=non-nullable
-  // int f(Null x) {
-  //   return [!x!].length;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the value is allowed to be something other than `null`, then change the
-  // type of the expression:
-  //
-  // ```dart
-  // %experiments=non-nullable
-  // int f(String? x) {
-  //   return x!.length;
-  // }
-  // ```
-  static const StaticWarningCode INVALID_USE_OF_NULL_VALUE = StaticWarningCode(
-      'INVALID_USE_OF_NULL_VALUE',
-      "An expression whose value is always 'null' can't be dereferenced.",
-      correction: "Try changing the type of the expression.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the actual type of the list element
-   * 1: the expected type of the list element
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the type of an element in a list
-  // literal isn't assignable to the element type of the list.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `2.5` is a double, and
-  // the list can hold only integers:
-  //
-  // ```dart
-  // List<int> x = [1, [!2.5!], 3];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you intended to add a different object to the list, then replace the
-  // element with an expression that computes the intended object:
-  //
-  // ```dart
-  // List<int> x = [1, 2, 3];
-  // ```
-  //
-  // If the object shouldn't be in the list, then remove the element:
-  //
-  // ```dart
-  // List<int> x = [1, 3];
-  // ```
-  //
-  // If the object being computed is correct, then widen the element type of the
-  // list to allow all of the different types of objects it needs to contain:
-  //
-  // ```dart
-  // List<num> x = [1, 2.5, 3];
-  // ```
-  static const StaticWarningCode LIST_ELEMENT_TYPE_NOT_ASSIGNABLE =
-      StaticWarningCode('LIST_ELEMENT_TYPE_NOT_ASSIGNABLE',
-          "The element type '{0}' can't be assigned to the list type '{1}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the type of the expression being used as a key
-   * 1: the type of keys declared for the map
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a key of a key-value pair in a
-  // map literal has a type that isn't assignable to the key type of the map.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `2` is an `int`, but
-  // the keys of the map are required to be `String`s:
-  //
-  // ```dart
-  // var m = <String, String>{[!2!] : 'a'};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the type of the map is correct, then change the key to have the correct
-  // type:
-  //
-  // ```dart
-  // var m = <String, String>{'2' : 'a'};
-  // ```
-  //
-  // If the type of the key is correct, then change the key type of the map:
-  //
-  // ```dart
-  // var m = <int, String>{2 : 'a'};
-  // ```
-  static const StaticWarningCode MAP_KEY_TYPE_NOT_ASSIGNABLE =
-      StaticWarningCode(
-          'MAP_KEY_TYPE_NOT_ASSIGNABLE',
-          "The element type '{0}' can't be assigned to the map key type "
-              "'{1}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the type of the expression being used as a value
-   * 1: the type of values declared for the map
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a value of a key-value pair in a
-  // map literal has a type that isn't assignable to the the value type of the
-  // map.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `2` is an `int`, but/
-  // the values of the map are required to be `String`s:
-  //
-  // ```dart
-  // var m = <String, String>{'a' : [!2!]};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the type of the map is correct, then change the value to have the
-  // correct type:
-  //
-  // ```dart
-  // var m = <String, String>{'a' : '2'};
-  // ```
-  //
-  // If the type of the value is correct, then change the value type of the map:
-  //
-  // ```dart
-  // var m = <String, int>{'a' : 2};
-  // ```
-  static const StaticWarningCode MAP_VALUE_TYPE_NOT_ASSIGNABLE =
-      StaticWarningCode(
-          'MAP_VALUE_TYPE_NOT_ASSIGNABLE',
-          "The element type '{0}' can't be assigned to the map value type "
-              "'{1}'.",
-          hasPublishedDocs: true);
+          correction: "Try using the same default value in both methods.");
 
   /**
    * Parameters:
@@ -9718,927 +10600,6 @@
           'MISSING_ENUM_CONSTANT_IN_SWITCH', "Missing case clause for '{0}'.",
           correction: "Try adding a case clause for the missing constant, or "
               "adding a default clause.",
-          errorSeverity: ErrorSeverity.WARNING,
-          hasPublishedDocs: true);
-
-  @Deprecated('No longer an error in the spec and no longer generated')
-  static const StaticWarningCode MIXED_RETURN_TYPES = StaticWarningCode(
-      'MIXED_RETURN_TYPES',
-      "Functions can't include return statements both with and without values.",
-      correction: "Try making all the return statements consistent "
-          "(either include a value or not).");
-
-  @Deprecated('Use StaticWarningCode.INSTANTIATE_ABSTRACT_CLASS')
-  static const StaticWarningCode NEW_WITH_ABSTRACT_CLASS =
-      INSTANTIATE_ABSTRACT_CLASS;
-
-  /**
-   * 12.11.1 New: It is a static warning if <i>T</i> is not a class accessible
-   * in the current scope, optionally followed by type arguments.
-   *
-   * Parameters:
-   * 0: the name of the non-type element
-   */
-  static const StaticWarningCode NEW_WITH_NON_TYPE =
-      StaticWarningCodeWithUniqueName('CREATION_WITH_NON_TYPE',
-          'NEW_WITH_NON_TYPE', "The name '{0}' isn't a class.",
-          correction: "Try correcting the name to match an existing class.",
-          isUnresolvedIdentifier: true);
-
-  /**
-   * 12.11.1 New: If <i>T</i> is a class or parameterized type accessible in the
-   * current scope then:
-   * 1. If <i>e</i> is of the form <i>new T.id(a<sub>1</sub>, &hellip;,
-   *    a<sub>n</sub>, x<sub>n+1</sub>: a<sub>n+1</sub>, &hellip;,
-   *    x<sub>n+k</sub>: a<sub>n+k</sub>)</i> it is a static warning if
-   *    <i>T.id</i> is not the name of a constructor declared by the type
-   *    <i>T</i>.
-   * If <i>e</i> of the form <i>new T(a<sub>1</sub>, &hellip;, a<sub>n</sub>,
-   * x<sub>n+1</sub>: a<sub>n+1</sub>, &hellip;, x<sub>n+k</sub>:
-   * a<sub>n+kM/sub>)</i> it is a static warning if the type <i>T</i> does not
-   * declare a constructor with the same name as the declaration of <i>T</i>.
-   */
-  static const StaticWarningCode NEW_WITH_UNDEFINED_CONSTRUCTOR =
-      StaticWarningCode('NEW_WITH_UNDEFINED_CONSTRUCTOR',
-          "The class '{0}' doesn't have a constructor named '{1}'.",
-          correction: "Try invoking a different constructor, or "
-              "define a constructor named '{1}'.");
-
-  /**
-   * Parameters:
-   * 0: the name of the class being instantiated
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an unnamed constructor is
-  // invoked on a class that defines named constructors but the class doesn’t
-  // have an unnamed constructor.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `A` doesn't define an
-  // unnamed constructor:
-  //
-  // ```dart
-  // class A {
-  //   A.a();
-  // }
-  //
-  // A f() => [!A!]();
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If one of the named constructors does what you need, then use it:
-  //
-  // ```dart
-  // class A {
-  //   A.a();
-  // }
-  //
-  // A f() => A.a();
-  // ```
-  //
-  // If none of the named constructors does what you need, and you're able to
-  // add an unnamed constructor, then add the constructor:
-  //
-  // ```dart
-  // class A {
-  //   A();
-  //   A.a();
-  // }
-  //
-  // A f() => A();
-  // ```
-  static const StaticWarningCode NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT =
-      StaticWarningCode('NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT',
-          "The class '{0}' doesn't have a default constructor.",
-          correction:
-              "Try using one of the named constructors defined in '{0}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the first member
-   * 1: the name of the second member
-   * 2: the name of the third member
-   * 3: the name of the fourth member
-   * 4: the number of additional missing members that aren't listed
-   */
-  static const StaticWarningCode
-      NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS =
-      StaticWarningCodeWithUniqueName(
-          'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER',
-          'StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS',
-          "Missing concrete implementations of '{0}', '{1}', '{2}', '{3}', and "
-              "{4} more.",
-          correction: "Try implementing the missing methods, or make the class "
-              "abstract.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the first member
-   * 1: the name of the second member
-   * 2: the name of the third member
-   * 3: the name of the fourth member
-   */
-  static const StaticWarningCode
-      NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR =
-      StaticWarningCodeWithUniqueName(
-          'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER',
-          'StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR',
-          "Missing concrete implementations of '{0}', '{1}', '{2}', and '{3}'.",
-          correction: "Try implementing the missing methods, or make the class "
-              "abstract.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the member
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a concrete class inherits one or
-  // more abstract members, and doesn't provide or inherit an implementation for
-  // at least one of those abstract members.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the class `B` doesn't
-  // have a concrete implementation of `m`:
-  //
-  // ```dart
-  // abstract class A {
-  //   void m();
-  // }
-  //
-  // class [!B!] extends A {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the subclass can provide a concrete implementation for some or all of
-  // the abstract inherited members, then add the concrete implementations:
-  //
-  // ```dart
-  // abstract class A {
-  //   void m();
-  // }
-  //
-  // class B extends A {
-  //   void m() {}
-  // }
-  // ```
-  //
-  // If there is a mixin that provides an implementation of the inherited
-  // methods, then apply the mixin to the subclass:
-  //
-  // ```dart
-  // abstract class A {
-  //   void m();
-  // }
-  //
-  // class B extends A with M {}
-  //
-  // mixin M {
-  //   void m() {}
-  // }
-  // ```
-  //
-  // If the subclass can't provide a concrete implementation for all of the
-  // abstract inherited members, then mark the subclass as being abstract:
-  //
-  // ```dart
-  // abstract class A {
-  //   void m();
-  // }
-  //
-  // abstract class B extends A {}
-  // ```
-  static const StaticWarningCode
-      NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE =
-      StaticWarningCodeWithUniqueName(
-          'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER',
-          'StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE',
-          "Missing concrete implementation of '{0}'.",
-          correction: "Try implementing the missing method, or make the class "
-              "abstract.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the first member
-   * 1: the name of the second member
-   * 2: the name of the third member
-   */
-  static const StaticWarningCode
-      NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE =
-      StaticWarningCodeWithUniqueName(
-          'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER',
-          'StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE',
-          "Missing concrete implementations of '{0}', '{1}', and '{2}'.",
-          correction: "Try implementing the missing methods, or make the class "
-              "abstract.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the first member
-   * 1: the name of the second member
-   */
-  static const StaticWarningCode
-      NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO =
-      StaticWarningCodeWithUniqueName(
-          'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER',
-          'StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO',
-          "Missing concrete implementations of '{0}' and '{1}'.",
-          correction: "Try implementing the missing methods, or make the class "
-              "abstract.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the non-type element
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the identifier following the
-  // `on` in a `catch` clause is defined to be something other than a type.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `f` is a function, not
-  // a type:
-  //
-  // ```dart
-  // void f() {
-  //   try {
-  //     // ...
-  //   } on [!f!] {
-  //     // ...
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Change the name to the type of object that should be caught:
-  //
-  // ```dart
-  // void f() {
-  //   try {
-  //     // ...
-  //   } on FormatException {
-  //     // ...
-  //   }
-  // }
-  // ```
-  static const StaticWarningCode NON_TYPE_IN_CATCH_CLAUSE = StaticWarningCode(
-      'NON_TYPE_IN_CATCH_CLAUSE',
-      "The name '{0}' isn't a type and can't be used in an on-catch "
-          "clause.",
-      correction: "Try correcting the name to match an existing class.",
-      hasPublishedDocs: true);
-
-  /**
-   * 7.1.1 Operators: It is a static warning if the return type of the
-   * user-declared operator []= is explicitly declared and not void.
-   */
-  static const StaticWarningCode NON_VOID_RETURN_FOR_OPERATOR =
-      StaticWarningCode('NON_VOID_RETURN_FOR_OPERATOR',
-          "The return type of the operator []= must be 'void'.",
-          correction: "Try changing the return type to 'void'.");
-
-  /**
-   * 7.3 Setters: It is a static warning if a setter declares a return type
-   * other than void.
-   */
-  static const StaticWarningCode NON_VOID_RETURN_FOR_SETTER = StaticWarningCode(
-      'NON_VOID_RETURN_FOR_SETTER',
-      "The return type of the setter must be 'void' or absent.",
-      correction: "Try removing the return type, or "
-          "define a method rather than a setter.");
-
-  /**
-   * Parameters:
-   * 0: the name that is not a type
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a name is used as a type but
-  // declared to be something other than a type.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `f` is a function:
-  //
-  // ```dart
-  // f() {}
-  // g([!f!] v) {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Replace the name with the name of a type.
-  static const StaticWarningCode NOT_A_TYPE = StaticWarningCode(
-      'NOT_A_TYPE', "{0} isn't a type.",
-      correction: "Try correcting the name to match an existing type.",
-      hasPublishedDocs: true);
-
-  @Deprecated('Use CompileTimeErrorCode.NOT_ENOUGH_POSITIONAL_ARGUMENTS')
-  static const CompileTimeErrorCode NOT_ENOUGH_REQUIRED_ARGUMENTS =
-      CompileTimeErrorCode.NOT_ENOUGH_POSITIONAL_ARGUMENTS;
-
-  /**
-   * Parameters:
-   * 0: the name of expected library name
-   * 1: the non-matching actual library name from the "part of" declaration
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a library attempts to include a
-  // file as a part of itself when the other file is a part of a different
-  // library.
-  //
-  // #### Example
-  //
-  // Given a file named `part.dart` containing
-  //
-  // ```dart
-  // %uri="package:a/part.dart"
-  // part of 'library.dart';
-  // ```
-  //
-  // The following code, in any file other than `library.dart`, produces this
-  // diagnostic because it attempts to include `part.dart` as a part of itself
-  // when `part.dart` is a part of a different library:
-  //
-  // ```dart
-  // part [!'package:a/part.dart'!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the library should be using a different file as a part, then change the
-  // URI in the part directive to be the URI of the other file.
-  //
-  // If the part file should be a part of this library, then update the URI (or
-  // library name) in the part-of directive to be the URI (or name) of the
-  // correct library.
-  static const StaticWarningCode PART_OF_DIFFERENT_LIBRARY = StaticWarningCode(
-      'PART_OF_DIFFERENT_LIBRARY',
-      "Expected this library to be part of '{0}', not '{1}'.",
-      correction: "Try including a different part, or changing the name of "
-          "the library in the part's part-of directive.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the redirected constructor
-   * 1: the name of the redirecting constructor
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a factory constructor attempts
-  // to redirect to another constructor, but the two have incompatible
-  // parameters. The parameters are compatible if all of the parameters of the
-  // redirecting constructor can be passed to the other constructor and if the
-  // other constructor doesn't require any parameters that aren't declared by
-  // the redirecting constructor.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the constructor for `A`
-  // doesn't declare a parameter that the constructor for `B` requires:
-  //
-  // ```dart
-  // abstract class A {
-  //   factory A() = [!B!];
-  // }
-  //
-  // class B implements A {
-  //   B(int x);
-  //   B.zero();
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because the constructor for `A`
-  // declares a named parameter (`y`) that the constructor for `B` doesn't
-  // allow:
-  //
-  // ```dart
-  // abstract class A {
-  //   factory A(int x, {int y}) = [!B!];
-  // }
-  //
-  // class B implements A {
-  //   B(int x);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If there's a different constructor that is compatible with the redirecting
-  // constructor, then redirect to that constructor:
-  //
-  // ```dart
-  // abstract class A {
-  //   factory A() = B.zero;
-  // }
-  //
-  // class B implements A {
-  //   B(int x);
-  //   B.zero();
-  // }
-  // ```
-  //
-  // Otherwise, update the redirecting constructor to be compatible:
-  //
-  // ```dart
-  // abstract class A {
-  //   factory A(int x) = B;
-  // }
-  //
-  // class B implements A {
-  //   B(int x);
-  // }
-  // ```
-  static const StaticWarningCode REDIRECT_TO_INVALID_FUNCTION_TYPE =
-      StaticWarningCode(
-          'REDIRECT_TO_INVALID_FUNCTION_TYPE',
-          "The redirected constructor '{0}' has incompatible parameters with "
-              "'{1}'.",
-          correction: "Try redirecting to a different constructor.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the redirected constructor's return type
-   * 1: the name of the redirecting constructor's return type
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a factory constructor redirects
-  // to a constructor whose return type isn't a subtype of the type that the
-  // factory constructor is declared to produce.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `A` isn't a subclass
-  // of `C`, which means that the value returned by the constructor `A()`
-  // couldn't be returned from the constructor `C()`:
-  //
-  // ```dart
-  // class A {}
-  //
-  // class B implements C {}
-  //
-  // class C {
-  //   factory C() = [!A!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the factory constructor is redirecting to a constructor in the wrong
-  // class, then update the factory constructor to redirect to the correct
-  // constructor:
-  //
-  // ```dart
-  // class A {}
-  //
-  // class B implements C {}
-  //
-  // class C {
-  //   factory C() = B;
-  // }
-  // ```
-  //
-  // If the class defining the constructor being redirected to is the class that
-  // should be returned, then make it a subtype of the factory's return type:
-  //
-  // ```dart
-  // class A implements C {}
-  //
-  // class B implements C {}
-  //
-  // class C {
-  //   factory C() = A;
-  // }
-  // ```
-  static const StaticWarningCode REDIRECT_TO_INVALID_RETURN_TYPE =
-      StaticWarningCode(
-          'REDIRECT_TO_INVALID_RETURN_TYPE',
-          "The return type '{0}' of the redirected constructor isn't "
-              "a subtype of '{1}'.",
-          correction: "Try redirecting to a different constructor.",
-          hasPublishedDocs: true);
-
-  @Deprecated('Use CompileTimeErrorCode.REDIRECT_TO_MISSING_CONSTRUCTOR')
-  static const CompileTimeErrorCode REDIRECT_TO_MISSING_CONSTRUCTOR =
-      CompileTimeErrorCode.REDIRECT_TO_MISSING_CONSTRUCTOR;
-
-  @Deprecated('Use CompileTimeErrorCode.REDIRECT_TO_NON_CLASS')
-  static const CompileTimeErrorCode REDIRECT_TO_NON_CLASS =
-      CompileTimeErrorCode.REDIRECT_TO_NON_CLASS;
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it finds a `return` statement
-  // without an expression in a function that declares a return type.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the function `f` is
-  // expected to return an `int`, but no value is being returned:
-  //
-  // ```dart
-  // int f() {
-  //   [!return!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Add an expression that computes the value to be returned:
-  //
-  // ```dart
-  // int f() {
-  //   return 0;
-  // }
-  // ```
-  static const StaticWarningCode RETURN_WITHOUT_VALUE = StaticWarningCode(
-      'RETURN_WITHOUT_VALUE', "The  return value is missing after 'return'.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the actual type of the set element
-   * 1: the expected type of the set element
-   */
-  static const StaticWarningCode SET_ELEMENT_TYPE_NOT_ASSIGNABLE =
-      StaticWarningCode('SET_ELEMENT_TYPE_NOT_ASSIGNABLE',
-          "The element type '{0}' can't be assigned to the set type '{1}'.");
-
-  /**
-   * Parameters:
-   * 0: the name of the instance member
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a class name is used to access
-  // an instance field. Instance fields don't exist on a class; they exist only
-  // on an instance of the class.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `x` is an instance
-  // field:
-  //
-  // ```dart
-  // class C {
-  //   static int a;
-  //
-  //   int b;
-  // }
-  //
-  // int f() => C.[!b!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you intend to access a static field, then change the name of the field
-  // to an existing static field:
-  //
-  // ```dart
-  // class C {
-  //   static int a;
-  //
-  //   int b;
-  // }
-  //
-  // int f() => C.a;
-  // ```
-  //
-  // If you intend to access the instance field, then use an instance of the
-  // class to access the field:
-  //
-  // ```dart
-  // class C {
-  //   static int a;
-  //
-  //   int b;
-  // }
-  //
-  // int f(C c) => c.b;
-  // ```
-  static const StaticWarningCode STATIC_ACCESS_TO_INSTANCE_MEMBER =
-      StaticWarningCode('STATIC_ACCESS_TO_INSTANCE_MEMBER',
-          "Instance member '{0}' can't be accessed using static access.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: The static type of the switch expression
-   * 1: The static type of the case expressions
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the type of the expression in a
-  // `switch` statement isn't assignable to the type of the expressions in the
-  // `case` clauses.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the type of `s`
-  // (`String`) isn't assignable to the type of `0` (`int`):
-  //
-  // ```dart
-  // void f(String s) {
-  //   switch ([!s!]) {
-  //     case 0:
-  //       break;
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the type of the `case` expressions is correct, then change the
-  // expression in the `switch` statement to have the correct type:
-  //
-  // ```dart
-  // void f(String s) {
-  //   switch (int.parse(s)) {
-  //     case 0:
-  //       break;
-  //   }
-  // }
-  // ```
-  //
-  // If the type of the `switch` expression is correct, then change the `case`
-  // expressions to have the correct type:
-  //
-  // ```dart
-  // void f(String s) {
-  //   switch (s) {
-  //     case '0':
-  //       break;
-  //   }
-  // }
-  // ```
-  static const StaticWarningCode SWITCH_EXPRESSION_NOT_ASSIGNABLE =
-      StaticWarningCode(
-          'SWITCH_EXPRESSION_NOT_ASSIGNABLE',
-          "Type '{0}' of the switch expression isn't assignable to "
-              "the type '{1}' of case expressions.",
-          hasPublishedDocs: true);
-
-  /**
-   * 15.1 Static Types: It is a static warning to use a deferred type in a type
-   * annotation.
-   *
-   * Parameters:
-   * 0: the name of the type that is deferred and being used in a type
-   *    annotation
-   */
-  static const StaticWarningCode TYPE_ANNOTATION_DEFERRED_CLASS =
-      StaticWarningCode(
-          'TYPE_ANNOTATION_DEFERRED_CLASS',
-          "The deferred type '{0}' can't be used in a declaration, cast or "
-              "type test.",
-          correction: "Try using a different type, or "
-              "changing the import to not be deferred.");
-
-  /**
-   * 12.31 Type Test: It is a static warning if <i>T</i> does not denote a type
-   * available in the current lexical scope.
-   */
-  static const StaticWarningCode TYPE_TEST_WITH_NON_TYPE = StaticWarningCode(
-      'TYPE_TEST_WITH_NON_TYPE',
-      "The name '{0}' isn't a type and can't be used in an 'is' "
-          "expression.",
-      correction: "Try correcting the name to match an existing type.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the name following the `is` in a
-  // type test expression isn't defined.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the name `Srting` isn't
-  // defined:
-  //
-  // ```dart
-  // void f(Object o) {
-  //   if (o is [!Srting!]) {
-  //     // ...
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Replace the name with the name of a type:
-  //
-  // ```dart
-  // void f(Object o) {
-  //   if (o is String) {
-  //     // ...
-  //   }
-  // }
-  // ```
-  static const StaticWarningCode TYPE_TEST_WITH_UNDEFINED_NAME =
-      StaticWarningCode(
-          'TYPE_TEST_WITH_UNDEFINED_NAME',
-          "The name '{0}' isn't defined, so it can't be used in an 'is' "
-              "expression.",
-          correction:
-              "Try changing the name to the name of an existing type, or "
-              "creating a type with the name '{0}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * 10 Generics: However, a type parameter is considered to be a malformed type
-   * when referenced by a static member.
-   *
-   * 15.1 Static Types: Any use of a malformed type gives rise to a static
-   * warning. A malformed type is then interpreted as dynamic by the static type
-   * checker and the runtime.
-   */
-  static const StaticWarningCode TYPE_PARAMETER_REFERENCED_BY_STATIC =
-      StaticWarningCode('TYPE_PARAMETER_REFERENCED_BY_STATIC',
-          "Static members can't reference type parameters of the class.",
-          correction: "Try removing the reference to the type parameter, or "
-              "making the member an instance member.");
-
-  @Deprecated('Use CompileTimeErrorCode.UNDEFINED_CLASS')
-  static const CompileTimeErrorCode UNDEFINED_CLASS =
-      CompileTimeErrorCode.UNDEFINED_CLASS;
-
-  /**
-   * Same as [CompileTimeErrorCode.UNDEFINED_CLASS], but to catch using
-   * "boolean" instead of "bool".
-   */
-  static const StaticWarningCode UNDEFINED_CLASS_BOOLEAN = StaticWarningCode(
-      'UNDEFINED_CLASS_BOOLEAN', "Undefined class 'boolean'.",
-      correction: "Try using the type 'bool'.");
-
-  /**
-   * Parameters:
-   * 0: the name of the identifier
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it encounters an identifier that
-  // either isn't defined or isn't visible in the scope in which it's being
-  // referenced.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the name `rihgt` isn't
-  // defined:
-  //
-  // ```dart
-  // int min(int left, int right) => left <= [!rihgt!] ? left : right;
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the identifier isn't defined, then either define it or replace it with
-  // an identifier that is defined. The example above can be corrected by
-  // fixing the spelling of the variable:
-  //
-  // ```dart
-  // int min(int left, int right) => left <= right ? left : right;
-  // ```
-  //
-  // If the identifier is defined but isn't visible, then you probably need to
-  // add an import or re-arrange your code to make the identifier visible.
-  static const StaticWarningCode UNDEFINED_IDENTIFIER =
-      StaticWarningCode('UNDEFINED_IDENTIFIER', "Undefined name '{0}'.",
-          correction: "Try correcting the name to one that is defined, or "
-              "defining the name.",
-          hasPublishedDocs: true,
-          isUnresolvedIdentifier: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the name `await` is used in a
-  // method or function body without being declared, and the body isn't marked
-  // with the `async` keyword. The name `await` only introduces an await
-  // expression in an asynchronous function.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the name `await` is
-  // used in the body of `f` even though the body of `f` isn't marked with the
-  // `async` keyword:
-  //
-  // ```dart
-  // void f(p) { [!await!] p; }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Add the keyword `async` to the function body:
-  //
-  // ```dart
-  // void f(p) async { await p; }
-  // ```
-  static const StaticWarningCode UNDEFINED_IDENTIFIER_AWAIT = StaticWarningCode(
-      'UNDEFINED_IDENTIFIER_AWAIT',
-      "Undefined name 'await' in function body not marked with 'async'.",
-      correction: "Try correcting the name to one that is defined, "
-          "defining the name, or "
-          "adding 'async' to the enclosing function body.",
-      hasPublishedDocs: true);
-
-  @Deprecated('Use CompileTimeErrorCode.UNDEFINED_NAMED_PARAMETER')
-  static const CompileTimeErrorCode UNDEFINED_NAMED_PARAMETER =
-      CompileTimeErrorCode.UNDEFINED_NAMED_PARAMETER;
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an expression whose type is
-  // <a href=”#potentially-non-nullable”>potentially non-nullable</a> is
-  // dereferenced without first verifying that the value isn't `null`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `s` can be `null` at
-  // the point where it's referenced:
-  //
-  // ```dart
-  // %experiments=non-nullable
-  // void f(String? s) {
-  //   if ([!s!].length > 3) {
-  //     // ...
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the value really can be `null`, then add a test to ensure that members
-  // are only accessed when the value isn't `null`:
-  //
-  // ```dart
-  // %experiments=non-nullable
-  // void f(String? s) {
-  //   if (s != null && s.length > 3) {
-  //     // ...
-  //   }
-  // }
-  // ```
-  //
-  // If the expression is a variable and the value should never be `null`, then
-  // change the type of the variable to be non-nullable:
-  //
-  // ```dart
-  // %experiments=non-nullable
-  // void f(String s) {
-  //   if (s.length > 3) {
-  //     // ...
-  //   }
-  // }
-  // ```
-  //
-  // If you believe that the value of the expression should never be `null`, but
-  // you can't change the type of the variable, and you're willing to risk
-  // having an exception thrown at runtime if you're wrong, then you can assert
-  // that the value isn't null:
-  //
-  // ```dart
-  // %experiments=non-nullable
-  // void f(String? s) {
-  //   if (s!.length > 3) {
-  //     // ...
-  //   }
-  // }
-  // ```
-  static const StaticWarningCode UNCHECKED_USE_OF_NULLABLE_VALUE =
-      StaticWarningCode(
-          'UNCHECKED_USE_OF_NULLABLE_VALUE',
-          "An expression whose value can be 'null' must be null-checked before "
-              "it can be dereferenced.",
-          correction:
-              "Try checking that the value isn't 'null' before dereferencing "
-              "it.",
           hasPublishedDocs: true);
 
   /**
@@ -10676,49 +10637,9 @@
           "The '!' will have no effect because the target expression can't be"
               " null.",
           correction: "Try removing the '!' operator.",
-          errorSeverity: ErrorSeverity.WARNING,
           hasPublishedDocs: true);
 
   /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it finds an expression whose
-  // type is `void`, and the expression is used in a place where a value is
-  // expected, such as before a member access or on the right-hand side of an
-  // assignment.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `f` doesn't produce an
-  // object on which `toString` can be invoked:
-  //
-  // ```dart
-  // void f() {}
-  //
-  // void g() {
-  //   [!f()!].toString();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Either rewrite the code so that the expression has a value or rewrite the
-  // code so that it doesn't depend on the value.
-  static const StaticWarningCode USE_OF_VOID_RESULT = StaticWarningCode(
-      'USE_OF_VOID_RESULT',
-      "This expression has a type of 'void' so its value can't be used.",
-      correction:
-          "Try checking to see if you're using the correct API; there might "
-          "be a function or call that returns void you didn't expect. Also "
-          "check type parameters and variables which might also be void.",
-      hasPublishedDocs: true);
-
-  @override
-  final ErrorSeverity errorSeverity;
-
-  /**
    * Initialize a newly created error code to have the given [name]. The message
    * associated with the error will be created from the given [message]
    * template. The correction associated with the error will be created from the
@@ -10726,7 +10647,6 @@
    */
   const StaticWarningCode(String name, String message,
       {String correction,
-      this.errorSeverity = ErrorSeverity.ERROR,
       bool hasPublishedDocs,
       bool isUnresolvedIdentifier = false})
       : super.temporary(name, message,
@@ -10735,6 +10655,9 @@
             isUnresolvedIdentifier: isUnresolvedIdentifier);
 
   @override
+  ErrorSeverity get errorSeverity => ErrorSeverity.WARNING;
+
+  @override
   ErrorType get type => ErrorType.STATIC_WARNING;
 }
 
@@ -10745,12 +10668,10 @@
   const StaticWarningCodeWithUniqueName(
       String name, this.uniqueName, String message,
       {String correction,
-      ErrorSeverity errorSeverity = ErrorSeverity.ERROR,
       bool hasPublishedDocs,
       bool isUnresolvedIdentifier = false})
       : super(name, message,
             correction: correction,
-            errorSeverity: errorSeverity,
             hasPublishedDocs: hasPublishedDocs,
             isUnresolvedIdentifier: isUnresolvedIdentifier);
 }
@@ -10777,50 +10698,22 @@
       "Try adding an explicit type like 'dynamic', or "
       "enable implicit-dynamic in your analysis options file.";
 
-  static const StrongModeCode INVALID_PARAMETER_DECLARATION = StrongModeCode(
-      ErrorType.COMPILE_TIME_ERROR,
-      'INVALID_PARAMETER_DECLARATION',
-      "Type check failed: '{0}' isn't of type '{1}'.");
-
-  static const StrongModeCode COULD_NOT_INFER = StrongModeCode(
-      ErrorType.COMPILE_TIME_ERROR,
-      'COULD_NOT_INFER',
-      "Couldn't infer type parameter '{0}'.{1}");
-
-  static const StrongModeCode INVALID_SUPER_INVOCATION = StrongModeCode(
-      ErrorType.COMPILE_TIME_ERROR,
-      'INVALID_SUPER_INVOCATION',
-      "The super call must be last in an initializer "
-          "list (see https://goo.gl/EY6hDP): '{0}'.");
-
-  static const StrongModeCode IMPLICIT_DYNAMIC_PARAMETER = StrongModeCode(
-      ErrorType.COMPILE_TIME_ERROR,
-      'IMPLICIT_DYNAMIC_PARAMETER',
-      "Missing parameter type for '{0}'.",
-      correction: _implicitDynamicCorrection);
-
-  static const StrongModeCode IMPLICIT_DYNAMIC_RETURN = StrongModeCode(
-      ErrorType.COMPILE_TIME_ERROR,
-      'IMPLICIT_DYNAMIC_RETURN',
-      "Missing return type for '{0}'.",
-      correction: _implicitDynamicCorrection);
-
-  static const StrongModeCode IMPLICIT_DYNAMIC_VARIABLE = StrongModeCode(
-      ErrorType.COMPILE_TIME_ERROR,
-      'IMPLICIT_DYNAMIC_VARIABLE',
-      "Missing variable type for '{0}'.",
-      correction: _implicitDynamicCorrection);
-
   static const StrongModeCode IMPLICIT_DYNAMIC_FIELD = StrongModeCode(
       ErrorType.COMPILE_TIME_ERROR,
       'IMPLICIT_DYNAMIC_FIELD',
       "Missing field type for '{0}'.",
       correction: _implicitDynamicCorrection);
 
-  static const StrongModeCode IMPLICIT_DYNAMIC_TYPE = StrongModeCode(
+  static const StrongModeCode IMPLICIT_DYNAMIC_FUNCTION = StrongModeCode(
       ErrorType.COMPILE_TIME_ERROR,
-      'IMPLICIT_DYNAMIC_TYPE',
-      "Missing type arguments for generic type '{0}'.",
+      'IMPLICIT_DYNAMIC_FUNCTION',
+      "Missing type arguments for generic function '{0}<{1}>'.",
+      correction: _implicitDynamicCorrection);
+
+  static const StrongModeCode IMPLICIT_DYNAMIC_INVOKE = StrongModeCode(
+      ErrorType.COMPILE_TIME_ERROR,
+      'IMPLICIT_DYNAMIC_INVOKE',
+      "Missing type arguments for calling generic function type '{0}'.",
       correction: _implicitDynamicCorrection);
 
   static const StrongModeCode IMPLICIT_DYNAMIC_LIST_LITERAL = StrongModeCode(
@@ -10835,22 +10728,34 @@
       "Missing type arguments for map literal.",
       correction: _implicitDynamicCorrection);
 
-  static const StrongModeCode IMPLICIT_DYNAMIC_FUNCTION = StrongModeCode(
-      ErrorType.COMPILE_TIME_ERROR,
-      'IMPLICIT_DYNAMIC_FUNCTION',
-      "Missing type arguments for generic function '{0}<{1}>'.",
-      correction: _implicitDynamicCorrection);
-
   static const StrongModeCode IMPLICIT_DYNAMIC_METHOD = StrongModeCode(
       ErrorType.COMPILE_TIME_ERROR,
       'IMPLICIT_DYNAMIC_METHOD',
       "Missing type arguments for generic method '{0}<{1}>'.",
       correction: _implicitDynamicCorrection);
 
-  static const StrongModeCode IMPLICIT_DYNAMIC_INVOKE = StrongModeCode(
+  static const StrongModeCode IMPLICIT_DYNAMIC_PARAMETER = StrongModeCode(
       ErrorType.COMPILE_TIME_ERROR,
-      'IMPLICIT_DYNAMIC_INVOKE',
-      "Missing type arguments for calling generic function type '{0}'.",
+      'IMPLICIT_DYNAMIC_PARAMETER',
+      "Missing parameter type for '{0}'.",
+      correction: _implicitDynamicCorrection);
+
+  static const StrongModeCode IMPLICIT_DYNAMIC_RETURN = StrongModeCode(
+      ErrorType.COMPILE_TIME_ERROR,
+      'IMPLICIT_DYNAMIC_RETURN',
+      "Missing return type for '{0}'.",
+      correction: _implicitDynamicCorrection);
+
+  static const StrongModeCode IMPLICIT_DYNAMIC_TYPE = StrongModeCode(
+      ErrorType.COMPILE_TIME_ERROR,
+      'IMPLICIT_DYNAMIC_TYPE',
+      "Missing type arguments for generic type '{0}'.",
+      correction: _implicitDynamicCorrection);
+
+  static const StrongModeCode IMPLICIT_DYNAMIC_VARIABLE = StrongModeCode(
+      ErrorType.COMPILE_TIME_ERROR,
+      'IMPLICIT_DYNAMIC_VARIABLE',
+      "Missing variable type for '{0}'.",
       correction: _implicitDynamicCorrection);
 
   /*
@@ -10860,14 +10765,6 @@
    */
   /* TODO(leafp) Delete most of these.
    */
-  static const StrongModeCode TOP_LEVEL_CYCLE = StrongModeCode(
-      ErrorType.COMPILE_TIME_ERROR,
-      'TOP_LEVEL_CYCLE',
-      "The type of '{0}' can't be inferred because it depends on itself "
-          "through the cycle: {1}.",
-      correction:
-          "Try adding an explicit type to one or more of the variables in the "
-          "cycle in order to break the cycle.");
 
   static const StrongModeCode TOP_LEVEL_FUNCTION_LITERAL_BLOCK = StrongModeCode(
       ErrorType.HINT,
diff --git a/pkg/analyzer/lib/src/error/constructor_fields_verifier.dart b/pkg/analyzer/lib/src/error/constructor_fields_verifier.dart
index d2ee46a..d500cff 100644
--- a/pkg/analyzer/lib/src/error/constructor_fields_verifier.dart
+++ b/pkg/analyzer/lib/src/error/constructor_fields_verifier.dart
@@ -117,19 +117,19 @@
 
     if (names.length == 1) {
       _errorReporter.reportErrorForNode(
-        StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1,
+        CompileTimeErrorCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1,
         node.returnType,
         names,
       );
     } else if (names.length == 2) {
       _errorReporter.reportErrorForNode(
-        StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_2,
+        CompileTimeErrorCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_2,
         node.returnType,
         names,
       );
     } else {
       _errorReporter.reportErrorForNode(
-        StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS,
+        CompileTimeErrorCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS,
         node.returnType,
         [names[0], names[1], names.length - 2],
       );
@@ -172,7 +172,7 @@
           } else if (state == _InitState.initInDeclaration) {
             if (element.isFinal || element.isConst) {
               _errorReporter.reportErrorForNode(
-                StaticWarningCode
+                CompileTimeErrorCode
                     .FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION,
                 fieldName,
               );
@@ -209,7 +209,7 @@
         } else if (state == _InitState.initInDeclaration) {
           if (fieldElement.isFinal || fieldElement.isConst) {
             _errorReporter.reportErrorForNode(
-              StaticWarningCode
+              CompileTimeErrorCode
                   .FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR,
               parameter.identifier,
               [fieldElement.displayName],
diff --git a/pkg/analyzer/lib/src/error/getter_setter_types_verifier.dart b/pkg/analyzer/lib/src/error/getter_setter_types_verifier.dart
index 3866ef9..97a02ce 100644
--- a/pkg/analyzer/lib/src/error/getter_setter_types_verifier.dart
+++ b/pkg/analyzer/lib/src/error/getter_setter_types_verifier.dart
@@ -27,8 +27,8 @@
 
   ErrorCode get _errorCode {
     return _isNonNullableByDefault
-        ? StaticWarningCode.GETTER_NOT_SUBTYPE_SETTER_TYPES
-        : StaticWarningCode.GETTER_NOT_ASSIGNABLE_SETTER_TYPES;
+        ? CompileTimeErrorCode.GETTER_NOT_SUBTYPE_SETTER_TYPES
+        : CompileTimeErrorCode.GETTER_NOT_ASSIGNABLE_SETTER_TYPES;
   }
 
   bool get _isNonNullableByDefault => _typeSystem.isNonNullableByDefault;
diff --git a/pkg/analyzer/lib/src/error/inheritance_override.dart b/pkg/analyzer/lib/src/error/inheritance_override.dart
index 8786791..4adca2d 100644
--- a/pkg/analyzer/lib/src/error/inheritance_override.dart
+++ b/pkg/analyzer/lib/src/error/inheritance_override.dart
@@ -589,7 +589,7 @@
         }
         if (name2 == name) {
           reporter.reportErrorForNode(
-              StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER,
+              CompileTimeErrorCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER,
               member,
               [name, classElement.name]);
           return true;
@@ -668,31 +668,32 @@
 
     if (descriptions.length == 1) {
       reporter.reportErrorForNode(
-        StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
+        CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
         classNameNode,
         [descriptions[0]],
       );
     } else if (descriptions.length == 2) {
       reporter.reportErrorForNode(
-        StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO,
+        CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO,
         classNameNode,
         [descriptions[0], descriptions[1]],
       );
     } else if (descriptions.length == 3) {
       reporter.reportErrorForNode(
-        StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE,
+        CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE,
         classNameNode,
         [descriptions[0], descriptions[1], descriptions[2]],
       );
     } else if (descriptions.length == 4) {
       reporter.reportErrorForNode(
-        StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR,
+        CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR,
         classNameNode,
         [descriptions[0], descriptions[1], descriptions[2], descriptions[3]],
       );
     } else {
       reporter.reportErrorForNode(
-        StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS,
+        CompileTimeErrorCode
+            .NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS,
         classNameNode,
         [
           descriptions[0],
diff --git a/pkg/analyzer/lib/src/error/literal_element_verifier.dart b/pkg/analyzer/lib/src/error/literal_element_verifier.dart
index 2d455a8..995b3e6 100644
--- a/pkg/analyzer/lib/src/error/literal_element_verifier.dart
+++ b/pkg/analyzer/lib/src/error/literal_element_verifier.dart
@@ -7,6 +7,7 @@
 import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/dart/element/type_provider.dart';
 import 'package:analyzer/error/listener.dart';
+import 'package:analyzer/src/dart/element/type.dart';
 import 'package:analyzer/src/dart/element/type_system.dart';
 import 'package:analyzer/src/error/codes.dart';
 
@@ -49,8 +50,8 @@
   void _checkAssignableToElementType(DartType type, AstNode errorNode) {
     if (!typeSystem.isAssignableTo2(type, elementType)) {
       var errorCode = forList
-          ? StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
-          : StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE;
+          ? CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+          : CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE;
       errorReporter.reportErrorForNode(
         errorCode,
         errorNode,
@@ -109,7 +110,7 @@
     var keyType = entry.key.staticType;
     if (!typeSystem.isAssignableTo2(keyType, mapKeyType)) {
       errorReporter.reportErrorForNode(
-        StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE,
+        CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE,
         entry.key,
         [keyType, mapKeyType],
       );
@@ -118,7 +119,7 @@
     var valueType = entry.value.staticType;
     if (!typeSystem.isAssignableTo2(valueType, mapValueType)) {
       errorReporter.reportErrorForNode(
-        StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE,
+        CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE,
         entry.value,
         [valueType, mapValueType],
       );
@@ -131,18 +132,33 @@
     var expressionType = expression.staticType;
     if (expressionType.isDynamic) return;
 
-    if (expressionType.isDartCoreNull) {
-      if (!isNullAware) {
+    if (typeSystem.isNonNullableByDefault) {
+      if (typeSystem.isSubtypeOf2(expressionType, NeverTypeImpl.instance)) {
+        return;
+      }
+      if (typeSystem.isSubtypeOf2(expressionType, typeSystem.nullNone)) {
+        if (isNullAware) {
+          return;
+        }
         errorReporter.reportErrorForNode(
           CompileTimeErrorCode.NOT_NULL_AWARE_NULL_SPREAD,
           expression,
         );
+        return;
       }
-      return;
+    } else {
+      if (expressionType.isDartCoreNull) {
+        if (isNullAware) {
+          return;
+        }
+        errorReporter.reportErrorForNode(
+          CompileTimeErrorCode.NOT_NULL_AWARE_NULL_SPREAD,
+          expression,
+        );
+        return;
+      }
     }
 
-    expressionType = typeSystem.resolveToBound(expressionType);
-
     var iterableType = expressionType.asInstanceOf(
       typeProvider.iterableElement,
     );
@@ -157,8 +173,8 @@
     var iterableElementType = iterableType.typeArguments[0];
     if (!typeSystem.isAssignableTo2(iterableElementType, elementType)) {
       var errorCode = forList
-          ? StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
-          : StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE;
+          ? CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+          : CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE;
       errorReporter.reportErrorForNode(
         errorCode,
         expression,
@@ -173,18 +189,33 @@
     var expressionType = expression.staticType;
     if (expressionType.isDynamic) return;
 
-    if (expressionType.isDartCoreNull) {
-      if (!isNullAware) {
+    if (typeSystem.isNonNullableByDefault) {
+      if (typeSystem.isSubtypeOf2(expressionType, NeverTypeImpl.instance)) {
+        return;
+      }
+      if (typeSystem.isSubtypeOf2(expressionType, typeSystem.nullNone)) {
+        if (isNullAware) {
+          return;
+        }
         errorReporter.reportErrorForNode(
           CompileTimeErrorCode.NOT_NULL_AWARE_NULL_SPREAD,
           expression,
         );
+        return;
       }
-      return;
+    } else {
+      if (expressionType.isDartCoreNull) {
+        if (isNullAware) {
+          return;
+        }
+        errorReporter.reportErrorForNode(
+          CompileTimeErrorCode.NOT_NULL_AWARE_NULL_SPREAD,
+          expression,
+        );
+        return;
+      }
     }
 
-    expressionType = typeSystem.resolveToBound(expressionType);
-
     var mapType = expressionType.asInstanceOf(
       typeProvider.mapElement,
     );
@@ -199,7 +230,7 @@
     var keyType = mapType.typeArguments[0];
     if (!typeSystem.isAssignableTo2(keyType, mapKeyType)) {
       errorReporter.reportErrorForNode(
-        StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE,
+        CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE,
         expression,
         [keyType, mapKeyType],
       );
@@ -208,7 +239,7 @@
     var valueType = mapType.typeArguments[1];
     if (!typeSystem.isAssignableTo2(valueType, mapValueType)) {
       errorReporter.reportErrorForNode(
-        StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE,
+        CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE,
         expression,
         [valueType, mapValueType],
       );
diff --git a/pkg/analyzer/lib/src/error/nullable_dereference_verifier.dart b/pkg/analyzer/lib/src/error/nullable_dereference_verifier.dart
index cf0a8ae6..26dae7d 100644
--- a/pkg/analyzer/lib/src/error/nullable_dereference_verifier.dart
+++ b/pkg/analyzer/lib/src/error/nullable_dereference_verifier.dart
@@ -32,8 +32,8 @@
 
   void report(AstNode errorNode, DartType receiverType) {
     var errorCode = receiverType == _typeSystem.typeProvider.nullType
-        ? StaticWarningCode.INVALID_USE_OF_NULL_VALUE
-        : StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE;
+        ? CompileTimeErrorCode.INVALID_USE_OF_NULL_VALUE
+        : CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE;
     _errorReporter.reportErrorForNode(errorCode, errorNode);
   }
 
diff --git a/pkg/analyzer/lib/src/error/return_type_verifier.dart b/pkg/analyzer/lib/src/error/return_type_verifier.dart
index ab59f54..5e0ee73 100644
--- a/pkg/analyzer/lib/src/error/return_type_verifier.dart
+++ b/pkg/analyzer/lib/src/error/return_type_verifier.dart
@@ -366,7 +366,7 @@
     }
 
     _errorReporter.reportErrorForToken(
-      StaticWarningCode.RETURN_WITHOUT_VALUE,
+      CompileTimeErrorCode.RETURN_WITHOUT_VALUE,
       statement.returnKeyword,
     );
   }
diff --git a/pkg/analyzer/lib/src/fasta/error_converter.dart b/pkg/analyzer/lib/src/fasta/error_converter.dart
index 7dc779c4..16646b8 100644
--- a/pkg/analyzer/lib/src/fasta/error_converter.dart
+++ b/pkg/analyzer/lib/src/fasta/error_converter.dart
@@ -47,7 +47,7 @@
         return;
       case "CONCRETE_CLASS_WITH_ABSTRACT_MEMBER":
         errorReporter?.reportErrorForOffset(
-            StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER,
+            CompileTimeErrorCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER,
             offset,
             length);
         return;
@@ -104,12 +104,12 @@
       case "FINAL_NOT_INITIALIZED":
         String name = arguments['name'];
         errorReporter?.reportErrorForOffset(
-            StaticWarningCode.FINAL_NOT_INITIALIZED, offset, length, [name]);
+            CompileTimeErrorCode.FINAL_NOT_INITIALIZED, offset, length, [name]);
         return;
       case "FINAL_NOT_INITIALIZED_CONSTRUCTOR_1":
         String name = arguments['name'];
         errorReporter?.reportErrorForOffset(
-            StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1,
+            CompileTimeErrorCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1,
             offset,
             length,
             [name]);
@@ -197,7 +197,7 @@
         return;
       case "INVALID_SUPER_INVOCATION":
         errorReporter?.reportErrorForOffset(
-            StrongModeCode.INVALID_SUPER_INVOCATION, offset, length);
+            CompileTimeErrorCode.INVALID_SUPER_INVOCATION, offset, length);
         return;
       case "MISSING_DIGIT":
         errorReporter?.reportErrorForOffset(
diff --git a/pkg/analyzer/lib/src/generated/element_resolver.dart b/pkg/analyzer/lib/src/generated/element_resolver.dart
index 1b0cb36..7b6a003 100644
--- a/pkg/analyzer/lib/src/generated/element_resolver.dart
+++ b/pkg/analyzer/lib/src/generated/element_resolver.dart
@@ -167,7 +167,7 @@
       if (element == null) {
         // TODO(brianwilkerson) Report this error?
         //        resolver.reportError(
-        //            StaticWarningCode.UNDEFINED_IDENTIFIER,
+        //            CompileTimeErrorCode.UNDEFINED_IDENTIFIER,
         //            simpleIdentifier,
         //            simpleIdentifier.getName());
       } else {
@@ -193,7 +193,7 @@
       SimpleIdentifier name = identifier.identifier;
       Element element = _resolveSimpleIdentifier(prefix);
       if (element == null) {
-//        resolver.reportError(StaticWarningCode.UNDEFINED_IDENTIFIER, prefix, prefix.getName());
+//        resolver.reportError(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, prefix, prefix.getName());
       } else {
         prefix.staticElement = element;
         if (element is PrefixElement) {
@@ -293,7 +293,7 @@
 //        if (((InstanceCreationExpression) parent).isConst()) {
 //          // CompileTimeErrorCode.CONST_WITH_NON_TYPE
 //        } else {
-//          // StaticWarningCode.NEW_WITH_NON_TYPE
+//          // CompileTimeErrorCode.NEW_WITH_NON_TYPE
 //        }
 //      } else {
 //        // This is part of a redirecting factory constructor; not sure which error code to use
@@ -721,12 +721,12 @@
             [element.name]);
       } else if (node.name == "await" && _resolver.enclosingFunction != null) {
         _errorReporter.reportErrorForNode(
-          StaticWarningCode.UNDEFINED_IDENTIFIER_AWAIT,
+          CompileTimeErrorCode.UNDEFINED_IDENTIFIER_AWAIT,
           node,
         );
       } else if (!_resolver.nameScope.shouldIgnoreUndefined(node)) {
         _errorReporter.reportErrorForNode(
-          StaticWarningCode.UNDEFINED_IDENTIFIER,
+          CompileTimeErrorCode.UNDEFINED_IDENTIFIER,
           node,
           [node.name],
         );
@@ -844,7 +844,7 @@
     if (element.isStatic) return;
 
     _errorReporter.reportErrorForNode(
-      StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER,
+      CompileTimeErrorCode.STATIC_ACCESS_TO_INSTANCE_MEMBER,
       identifier,
       [identifier.name],
     );
@@ -893,7 +893,7 @@
       );
     } else if (staticType.isVoid) {
       _errorReporter.reportErrorForOffset(
-        StaticWarningCode.USE_OF_VOID_RESULT,
+        CompileTimeErrorCode.USE_OF_VOID_RESULT,
         offset,
         length,
       );
@@ -1455,7 +1455,7 @@
 
     if (staticType.isVoid) {
       _errorReporter.reportErrorForNode(
-        StaticWarningCode.USE_OF_VOID_RESULT,
+        CompileTimeErrorCode.USE_OF_VOID_RESULT,
         propertyName,
       );
       return;
diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart
index 40b26f2..5821ce0 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -359,13 +359,10 @@
 
   @override
   void visitBlock(Block node) {
-    _hiddenElements = HiddenElements(_hiddenElements, node);
-    try {
+    _withHiddenElements(node.statements, () {
       _duplicateDefinitionVerifier.checkStatements(node.statements);
       super.visitBlock(node);
-    } finally {
-      _hiddenElements = _hiddenElements.outerElements;
-    }
+    });
   }
 
   @override
@@ -1111,14 +1108,18 @@
 
   @override
   void visitSwitchCase(SwitchCase node) {
-    _duplicateDefinitionVerifier.checkStatements(node.statements);
-    super.visitSwitchCase(node);
+    _withHiddenElements(node.statements, () {
+      _duplicateDefinitionVerifier.checkStatements(node.statements);
+      super.visitSwitchCase(node);
+    });
   }
 
   @override
   void visitSwitchDefault(SwitchDefault node) {
-    _duplicateDefinitionVerifier.checkStatements(node.statements);
-    super.visitSwitchDefault(node);
+    _withHiddenElements(node.statements, () {
+      _duplicateDefinitionVerifier.checkStatements(node.statements);
+      super.visitSwitchDefault(node);
+    });
   }
 
   @override
@@ -1368,14 +1369,14 @@
     if (!_typeSystem.isAssignableTo2(
         redirectedReturnType, constructorReturnType)) {
       _errorReporter.reportErrorForNode(
-          StaticWarningCode.REDIRECT_TO_INVALID_RETURN_TYPE,
+          CompileTimeErrorCode.REDIRECT_TO_INVALID_RETURN_TYPE,
           redirectedConstructor,
           [redirectedReturnType, constructorReturnType]);
       return;
     } else if (!_typeSystem.isSubtypeOf2(redirectedType, constructorType)) {
       // Check parameters.
       _errorReporter.reportErrorForNode(
-          StaticWarningCode.REDIRECT_TO_INVALID_FUNCTION_TYPE,
+          CompileTimeErrorCode.REDIRECT_TO_INVALID_FUNCTION_TYPE,
           redirectedConstructor,
           [redirectedType, constructorType]);
     }
@@ -1427,7 +1428,7 @@
         libraryNames[i] = _getLibraryName(conflictingMembers[i]);
       }
       libraryNames.sort();
-      _errorReporter.reportErrorForNode(StaticWarningCode.AMBIGUOUS_IMPORT,
+      _errorReporter.reportErrorForNode(CompileTimeErrorCode.AMBIGUOUS_IMPORT,
           node, [name, StringUtilities.printListOfQuotedNames(libraryNames)]);
     }
   }
@@ -1483,7 +1484,7 @@
       staticParameterType = _typeSystem.makeNullable(staticParameterType);
     }
     _checkForArgumentTypeNotAssignableWithExpectedTypes(argument,
-        staticParameterType, StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE);
+        staticParameterType, CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE);
   }
 
   /// Verify that the given [expression] can be assigned to its corresponding
@@ -1570,38 +1571,38 @@
     if (element is VariableElement) {
       if (element.isConst) {
         _errorReporter.reportErrorForNode(
-            StaticWarningCode.ASSIGNMENT_TO_CONST, expression);
+            CompileTimeErrorCode.ASSIGNMENT_TO_CONST, expression);
       } else if (element.isFinal && !element.isLate) {
         if (element is FieldElementImpl) {
           if (element.setter == null && element.isSynthetic) {
             _errorReporter.reportErrorForNode(
-                StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER,
+                CompileTimeErrorCode.ASSIGNMENT_TO_FINAL_NO_SETTER,
                 highlightedNode,
                 [element.name, element.enclosingElement.displayName]);
           } else {
             _errorReporter.reportErrorForNode(
-                StaticWarningCode.ASSIGNMENT_TO_FINAL,
+                CompileTimeErrorCode.ASSIGNMENT_TO_FINAL,
                 highlightedNode,
                 [element.name]);
           }
           return;
         }
         _errorReporter.reportErrorForNode(
-            StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL,
+            CompileTimeErrorCode.ASSIGNMENT_TO_FINAL_LOCAL,
             highlightedNode,
             [element.name]);
       }
     } else if (element is FunctionElement) {
       _errorReporter.reportErrorForNode(
-          StaticWarningCode.ASSIGNMENT_TO_FUNCTION, expression);
+          CompileTimeErrorCode.ASSIGNMENT_TO_FUNCTION, expression);
     } else if (element is MethodElement) {
       _errorReporter.reportErrorForNode(
-          StaticWarningCode.ASSIGNMENT_TO_METHOD, expression);
+          CompileTimeErrorCode.ASSIGNMENT_TO_METHOD, expression);
     } else if (element is ClassElement ||
         element is FunctionTypeAliasElement ||
         element is TypeParameterElement) {
       _errorReporter.reportErrorForNode(
-          StaticWarningCode.ASSIGNMENT_TO_TYPE, expression);
+          CompileTimeErrorCode.ASSIGNMENT_TO_TYPE, expression);
     }
   }
 
@@ -1699,7 +1700,7 @@
     }
 
     _errorReporter.reportErrorForToken(
-        StaticWarningCode.CASE_BLOCK_NOT_TERMINATED, switchCase.keyword);
+        CompileTimeErrorCode.CASE_BLOCK_NOT_TERMINATED, switchCase.keyword);
   }
 
   /// Verify that the switch cases in the given switch [statement] are
@@ -2014,10 +2015,10 @@
             (expression as InstanceCreationExpressionImpl).isImplicit;
         if (!isImplicit) {
           _errorReporter.reportErrorForNode(
-              StaticWarningCode.INSTANTIATE_ABSTRACT_CLASS, typeName);
+              CompileTimeErrorCode.INSTANTIATE_ABSTRACT_CLASS, typeName);
         } else {
           _errorReporter.reportErrorForNode(
-              StaticWarningCode.INSTANTIATE_ABSTRACT_CLASS, typeName);
+              CompileTimeErrorCode.INSTANTIATE_ABSTRACT_CLASS, typeName);
         }
       }
     }
@@ -2452,7 +2453,7 @@
           [staticType, fieldType]);
     }
     _errorReporter.reportErrorForNode(
-        StaticWarningCode.FIELD_INITIALIZER_NOT_ASSIGNABLE,
+        CompileTimeErrorCode.FIELD_INITIALIZER_NOT_ASSIGNABLE,
         expression,
         [staticType, fieldType]);
     // TODO(brianwilkerson) Define a hint corresponding to these errors and
@@ -2539,7 +2540,7 @@
               [variable.name.name]);
         } else if (!_isNonNullableByDefault || !variable.isLate) {
           _errorReporter.reportErrorForNode(
-              StaticWarningCode.FINAL_NOT_INITIALIZED,
+              CompileTimeErrorCode.FINAL_NOT_INITIALIZED,
               variable.name,
               [variable.name.name]);
         }
@@ -2819,7 +2820,7 @@
     ParameterElement staticParameterElement = argument.staticParameterElement;
     DartType staticParameterType = staticParameterElement?.type;
     _checkForArgumentTypeNotAssignable(argument, staticParameterType, _intType,
-        StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE);
+        CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE);
   }
 
   /// Verify that the given [annotation] isn't defined in a deferred library.
@@ -3352,12 +3353,12 @@
     SimpleIdentifier name = constructorName.name;
     if (name != null) {
       _errorReporter.reportErrorForNode(
-          StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR,
+          CompileTimeErrorCode.NEW_WITH_UNDEFINED_CONSTRUCTOR,
           name,
           [className, name]);
     } else {
       _errorReporter.reportErrorForNode(
-          StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT,
+          CompileTimeErrorCode.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT,
           constructorName,
           [className]);
     }
@@ -3452,7 +3453,7 @@
       DartType type = annotation.type;
       if (type != null && !type.isVoid) {
         _errorReporter.reportErrorForNode(
-            StaticWarningCode.NON_VOID_RETURN_FOR_OPERATOR, annotation);
+            CompileTimeErrorCode.NON_VOID_RETURN_FOR_OPERATOR, annotation);
       }
     }
   }
@@ -3466,7 +3467,7 @@
       DartType type = typeName.type;
       if (type != null && !type.isVoid) {
         _errorReporter.reportErrorForNode(
-            StaticWarningCode.NON_VOID_RETURN_FOR_SETTER, typeName);
+            CompileTimeErrorCode.NON_VOID_RETURN_FOR_SETTER, typeName);
       }
     }
   }
@@ -3959,7 +3960,7 @@
         return;
       }
       _errorReporter.reportErrorForNode(
-          StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER,
+          CompileTimeErrorCode.STATIC_ACCESS_TO_INSTANCE_MEMBER,
           name,
           [name.name]);
     }
@@ -3999,7 +4000,7 @@
     // check types
     if (!_typeSystem.isAssignableTo2(expressionType, caseType)) {
       _errorReporter.reportErrorForNode(
-          StaticWarningCode.SWITCH_EXPRESSION_NOT_ASSIGNABLE,
+          CompileTimeErrorCode.SWITCH_EXPRESSION_NOT_ASSIGNABLE,
           expression,
           [expressionType, caseType]);
     }
@@ -4042,7 +4043,9 @@
   void _checkForTypeAnnotationDeferredClass(TypeAnnotation type) {
     if (type is TypeName && type.isDeferred) {
       _errorReporter.reportErrorForNode(
-          StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS, type, [type.name]);
+          CompileTimeErrorCode.TYPE_ANNOTATION_DEFERRED_CLASS,
+          type,
+          [type.name]);
     }
   }
 
@@ -4091,7 +4094,8 @@
         // However all other type parameters are legal (e.g. the static method's
         // type parameters, or a local function's type parameters).
         _errorReporter.reportErrorForNode(
-            StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, identifier);
+            CompileTimeErrorCode.TYPE_PARAMETER_REFERENCED_BY_STATIC,
+            identifier);
       }
     }
   }
@@ -4325,10 +4329,10 @@
     if (expression is MethodInvocation) {
       SimpleIdentifier methodName = expression.methodName;
       _errorReporter.reportErrorForNode(
-          StaticWarningCode.USE_OF_VOID_RESULT, methodName, []);
+          CompileTimeErrorCode.USE_OF_VOID_RESULT, methodName, []);
     } else {
       _errorReporter.reportErrorForNode(
-          StaticWarningCode.USE_OF_VOID_RESULT, expression, []);
+          CompileTimeErrorCode.USE_OF_VOID_RESULT, expression, []);
     }
 
     return true;
@@ -4363,11 +4367,9 @@
                 CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_STATIC_FIELD,
                 parameter,
                 [parameter.identifier.name]);
-          } else if (declaredType != null &&
-              fieldType != null &&
-              !_typeSystem.isAssignableTo2(declaredType, fieldType)) {
+          } else if (!_typeSystem.isSubtypeOf(declaredType, fieldType)) {
             _errorReporter.reportErrorForNode(
-                StaticWarningCode.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE,
+                CompileTimeErrorCode.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE,
                 parameter,
                 [declaredType, fieldType]);
           }
@@ -5124,6 +5126,15 @@
     }
   }
 
+  void _withHiddenElements(List<Statement> statements, void Function() f) {
+    _hiddenElements = HiddenElements(_hiddenElements, statements);
+    try {
+      f();
+    } finally {
+      _hiddenElements = _hiddenElements.outerElements;
+    }
+  }
+
   /// Return [FieldElement]s that are declared in the [ClassDeclaration] with
   /// the given [constructor], but are not initialized.
   static List<FieldElement> computeNotInitializedFields(
@@ -5212,9 +5223,9 @@
 
   /// Initialize a newly created set of hidden elements to include all of the
   /// elements defined in the set of [outerElements] and all of the elements
-  /// declared in the given [block].
-  HiddenElements(this.outerElements, Block block) {
-    _initializeElements(block);
+  /// declared in the given [statements].
+  HiddenElements(this.outerElements, List<Statement> statements) {
+    _initializeElements(statements);
   }
 
   /// Return `true` if this set of elements contains the given [element].
@@ -5234,9 +5245,9 @@
   }
 
   /// Initialize the list of elements that are not yet declared to be all of the
-  /// elements declared somewhere in the given [block].
-  void _initializeElements(Block block) {
-    _elements.addAll(BlockScope.elementsInBlock(block));
+  /// elements declared somewhere in the given [statements].
+  void _initializeElements(List<Statement> statements) {
+    _elements.addAll(BlockScope.elementsInStatements(statements));
   }
 }
 
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index 9070ccd..b57f4fe 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -2154,16 +2154,9 @@
 
   @override
   void visitBlock(Block node) {
-    Scope outerScope = nameScope;
-    try {
-      var enclosedScope = LocalScope(nameScope);
-      BlockScope.elementsInBlock(node).forEach(enclosedScope.add);
-      nameScope = enclosedScope;
-      _setNodeNameScope(node, nameScope);
+    _withDeclaredLocals(node, node.statements, () {
       super.visitBlock(node);
-    } finally {
-      nameScope = outerScope;
-    }
+    });
   }
 
   @override
@@ -2296,11 +2289,7 @@
 
   @override
   void visitDeclaredIdentifier(DeclaredIdentifier node) {
-    VariableElement element = node.declaredElement;
-    // TODO(scheglov) Do we need this?
-    if (element != null) {
-      _define(element);
-    }
+    _define(node.declaredElement);
     super.visitDeclaredIdentifier(node);
   }
 
@@ -2467,15 +2456,9 @@
 
   @override
   void visitFunctionDeclaration(FunctionDeclaration node) {
-    ExecutableElement element = node.declaredElement;
-    // TODO(scheglov) Do we need this?
-    if (element != null &&
-        element.enclosingElement is! CompilationUnitElement) {
-      _define(element);
-    }
-
     Scope outerScope = nameScope;
     try {
+      var element = node.declaredElement;
       nameScope = TypeParameterScope(
         nameScope,
         element.typeParameters,
@@ -2678,26 +2661,17 @@
   @override
   void visitSwitchCase(SwitchCase node) {
     node.expression.accept(this);
-    Scope outerNameScope = nameScope;
-    try {
-      nameScope = LocalScope(nameScope);
-      _setNodeNameScope(node, nameScope);
+
+    _withDeclaredLocals(node, node.statements, () {
       node.statements.accept(this);
-    } finally {
-      nameScope = outerNameScope;
-    }
+    });
   }
 
   @override
   void visitSwitchDefault(SwitchDefault node) {
-    Scope outerNameScope = nameScope;
-    try {
-      nameScope = LocalScope(nameScope);
-      _setNodeNameScope(node, nameScope);
+    _withDeclaredLocals(node, node.statements, () {
       node.statements.accept(this);
-    } finally {
-      nameScope = outerNameScope;
-    }
+    });
   }
 
   @override
@@ -2728,13 +2702,9 @@
   @override
   void visitVariableDeclaration(VariableDeclaration node) {
     super.visitVariableDeclaration(node);
-    if (node.parent.parent is! TopLevelVariableDeclaration &&
-        node.parent.parent is! FieldDeclaration) {
-      // TODO(scheglov) Do we need this?
-      VariableElement element = node.declaredElement;
-      if (element != null) {
-        _define(element);
-      }
+
+    if (node.parent.parent is ForParts) {
+      _define(node.declaredElement);
     }
   }
 
@@ -2769,6 +2739,25 @@
     (nameScope as LocalScope).add(element);
   }
 
+  void _withDeclaredLocals(
+    AstNode node,
+    List<Statement> statements,
+    void Function() f,
+  ) {
+    var outerScope = nameScope;
+    try {
+      var enclosedScope = LocalScope(nameScope);
+      BlockScope.elementsInStatements(statements).forEach(enclosedScope.add);
+
+      nameScope = enclosedScope;
+      _setNodeNameScope(node, nameScope);
+
+      f();
+    } finally {
+      nameScope = outerScope;
+    }
+  }
+
   /// Return the [Scope] to use while resolving inside the [node].
   ///
   /// Not every node has the scope set, for example we set the scopes for
diff --git a/pkg/analyzer/lib/src/summary2/reference_resolver.dart b/pkg/analyzer/lib/src/summary2/reference_resolver.dart
index 0ebc307..013ec70 100644
--- a/pkg/analyzer/lib/src/summary2/reference_resolver.dart
+++ b/pkg/analyzer/lib/src/summary2/reference_resolver.dart
@@ -13,7 +13,6 @@
 import 'package:analyzer/src/dart/element/scope.dart';
 import 'package:analyzer/src/dart/element/type.dart';
 import 'package:analyzer/src/dart/element/type_system.dart';
-import 'package:analyzer/src/dart/resolver/scope.dart';
 import 'package:analyzer/src/summary/idl.dart';
 import 'package:analyzer/src/summary2/function_type_builder.dart';
 import 'package:analyzer/src/summary2/lazy_ast.dart';
@@ -492,19 +491,33 @@
 
   @override
   void visitTypeName(TypeName node) {
-    var typeName = node.name;
-    if (typeName is SimpleIdentifier && typeName.name == 'void') {
-      node.type = VoidTypeImpl.instance;
-      return;
-    }
+    var typeIdentifier = node.name;
 
-    var element = scope.lookupIdentifier(typeName);
-    if (typeName is SimpleIdentifier) {
-      typeName.staticElement = element;
-    } else if (typeName is PrefixedIdentifier) {
-      typeName.identifier.staticElement = element;
-      SimpleIdentifier prefix = typeName.prefix;
-      prefix.staticElement = scope.lookupIdentifier(prefix);
+    Element element;
+    if (typeIdentifier is PrefixedIdentifier) {
+      var prefix = typeIdentifier.prefix;
+      var prefixName = prefix.name;
+      var prefixElement = scope.lookup2(prefixName).getter;
+      prefix.staticElement = prefixElement;
+
+      if (prefixElement is PrefixElement) {
+        var nameNode = typeIdentifier.identifier;
+        var name = nameNode.name;
+
+        element = prefixElement.scope.lookup2(name).getter;
+        nameNode.staticElement = element;
+      }
+    } else {
+      var nameNode = typeIdentifier as SimpleIdentifier;
+      var name = nameNode.name;
+
+      if (name == 'void') {
+        node.type = VoidTypeImpl.instance;
+        return;
+      }
+
+      element = scope.lookup2(name).getter;
+      nameNode.staticElement = element;
     }
 
     node.typeArguments?.accept(this);
diff --git a/pkg/analyzer/lib/src/task/strong/checker.dart b/pkg/analyzer/lib/src/task/strong/checker.dart
index 00cc152..33db715 100644
--- a/pkg/analyzer/lib/src/task/strong/checker.dart
+++ b/pkg/analyzer/lib/src/task/strong/checker.dart
@@ -307,7 +307,12 @@
     for (int i = 0, last = init.length - 1; i < last; i++) {
       final node = init[i];
       if (node is SuperConstructorInvocation) {
-        _recordMessage(node, StrongModeCode.INVALID_SUPER_INVOCATION, [node]);
+        // TODO(srawlins): Don't report this when
+        //  [CompileTimeErrorCode.SUPER_IN_REDIRECTING_CONSTRUCTOR] or
+        //  [CompileTimeErrorCode.MULTIPLE_SUPER_INITIALIZERS] is reported for
+        //  this constructor.
+        _recordMessage(
+            node, CompileTimeErrorCode.INVALID_SUPER_INVOCATION, [node]);
       }
     }
   }
@@ -348,23 +353,6 @@
   }
 
   @override
-  void visitFieldFormalParameter(FieldFormalParameter node) {
-    var element = node.declaredElement;
-    var typeName = node.type;
-    if (typeName != null) {
-      var type = _elementType(element);
-      var fieldElement =
-          node.identifier.staticElement as FieldFormalParameterElement;
-      var fieldType = _elementType(fieldElement.field);
-      if (!rules.isSubtypeOf2(type, fieldType)) {
-        _recordMessage(node, StrongModeCode.INVALID_PARAMETER_DECLARATION,
-            [node, fieldType]);
-      }
-    }
-    node.visitChildren(this);
-  }
-
-  @override
   void visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) {
     _visitForEachParts(node, node.loopVariable?.identifier);
     node.visitChildren(this);
@@ -1071,8 +1059,12 @@
       TopLevelInferenceError error = variable.typeInferenceError;
       if (error != null) {
         if (error.kind == TopLevelInferenceErrorKind.dependencyCycle) {
-          _codeChecker._recordMessage(
-              n, StrongModeCode.TOP_LEVEL_CYCLE, [_name, error.arguments]);
+          // Errors on const should have been reported with
+          // [CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT].
+          if (!variable.isConst) {
+            _codeChecker._recordMessage(n, CompileTimeErrorCode.TOP_LEVEL_CYCLE,
+                [_name, error.arguments]);
+          }
         } else {
           _codeChecker._recordMessage(
               n, StrongModeCode.TOP_LEVEL_IDENTIFIER_NO_TYPE, [_name, e.name]);
diff --git a/pkg/analyzer/pubspec.yaml b/pkg/analyzer/pubspec.yaml
index be7867b..d8d71f9 100644
--- a/pkg/analyzer/pubspec.yaml
+++ b/pkg/analyzer/pubspec.yaml
@@ -1,5 +1,5 @@
 name: analyzer
-version: 0.39.15-dev
+version: 0.39.15
 description: This package provides a library that performs static analysis of Dart code.
 homepage: https://github.com/dart-lang/sdk/tree/master/pkg/analyzer
 
diff --git a/pkg/analyzer/test/error/error_reporter_test.dart b/pkg/analyzer/test/error/error_reporter_test.dart
index 7f1ea6f..9eaa852 100644
--- a/pkg/analyzer/test/error/error_reporter_test.dart
+++ b/pkg/analyzer/test/error/error_reporter_test.dart
@@ -41,7 +41,7 @@
       isNonNullableByDefault: false,
     );
     reporter.reportErrorForElement(
-      StaticWarningCode.CAST_TO_NON_TYPE,
+      CompileTimeErrorCode.CAST_TO_NON_TYPE,
       element,
       ['A'],
     );
@@ -63,7 +63,7 @@
       isNonNullableByDefault: false,
     );
     reporter.reportErrorForElement(
-      StaticWarningCode.CAST_TO_NON_TYPE,
+      CompileTimeErrorCode.CAST_TO_NON_TYPE,
       element,
       ['A'],
     );
@@ -102,7 +102,7 @@
     );
 
     reporter.reportErrorForNode(
-      StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE,
+      CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE,
       findNode.simple('x'),
       [firstType, secondType],
     );
@@ -140,7 +140,7 @@
       isNonNullableByDefault: false,
     );
     reporter.reportErrorForNode(
-      StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE,
+      CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE,
       findNode.simple('x'),
       [firstType, secondType],
     );
@@ -173,7 +173,7 @@
       isNonNullableByDefault: false,
     );
     reporter.reportErrorForNode(
-      StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE,
+      CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE,
       findNode.simple('x'),
       [fa.variables.type.type, fb.variables.type.type],
     );
@@ -208,7 +208,7 @@
       isNonNullableByDefault: false,
     );
     reporter.reportErrorForNode(
-      StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE,
+      CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE,
       findNode.simple('x'),
       [ba.variables.type.type, bb.variables.type.type],
     );
diff --git a/pkg/analyzer/test/generated/checked_mode_compile_time_error_code_test.dart b/pkg/analyzer/test/generated/checked_mode_compile_time_error_code_test.dart
index 3912bc6..0d43ce3 100644
--- a/pkg/analyzer/test/generated/checked_mode_compile_time_error_code_test.dart
+++ b/pkg/analyzer/test/generated/checked_mode_compile_time_error_code_test.dart
@@ -164,7 +164,7 @@
 foo(x) => 1;
 var v = const A(foo);
 ''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 116, 3),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 116, 3),
       error(
           CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
           116,
@@ -196,7 +196,7 @@
           CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
           62,
           5),
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 62, 5),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 62, 5),
     ]);
   }
 
@@ -237,7 +237,7 @@
           CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
           62,
           5),
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 62, 5),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 62, 5),
     ]);
   }
 
@@ -354,7 +354,7 @@
 int foo(String x) => 1;
 var v = const A(foo);
 ''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 127, 3),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 127, 3),
       error(
           CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
           127,
@@ -369,7 +369,7 @@
   const A() : x = '';
 }
 ''', [
-      error(StaticWarningCode.FIELD_INITIALIZER_NOT_ASSIGNABLE, 43, 2),
+      error(CompileTimeErrorCode.FIELD_INITIALIZER_NOT_ASSIGNABLE, 43, 2),
       error(
           CheckedModeCompileTimeErrorCode
               .CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE,
@@ -470,7 +470,7 @@
     await assertErrorsInCode('''
 var v = const <String> [42];
 ''', [
-      error(StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 24, 2),
+      error(CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 24, 2),
     ]);
   }
 
@@ -542,7 +542,7 @@
           CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
           46,
           5),
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 46, 5),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 46, 5),
     ]);
   }
 
@@ -553,7 +553,7 @@
 }
 var v = const A<int>('foo');
 ''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 52, 5),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 52, 5),
       error(
           CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
           52,
diff --git a/pkg/analyzer/test/generated/compile_time_error_code.dart b/pkg/analyzer/test/generated/compile_time_error_code.dart
index 761b1fb..8afcd5b 100644
--- a/pkg/analyzer/test/generated/compile_time_error_code.dart
+++ b/pkg/analyzer/test/generated/compile_time_error_code.dart
@@ -53,8 +53,8 @@
 }
 ''', [
       error(ParserErrorCode.EXPECTED_TOKEN, 8, 7),
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 8, 7),
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 16, 1),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 8, 7),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 16, 1),
     ]);
   }
 
@@ -163,7 +163,7 @@
 }
 ''', [
       error(CompileTimeErrorCode.CONST_WITH_NON_CONSTANT_ARGUMENT, 94, 3),
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 94, 3),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 94, 3),
     ]);
   }
 
@@ -178,143 +178,15 @@
     ]);
   }
 
-  test_constWithNonType() async {
-    await assertErrorsInCode(r'''
-int A;
-f() {
-  return const A();
-}
-''', [
-      error(CompileTimeErrorCode.CONST_WITH_NON_TYPE, 28, 1),
-    ]);
-  }
-
-  test_constWithNonType_fromLibrary() async {
-    newFile('/test/lib/lib1.dart');
-    await assertErrorsInCode('''
-import 'lib1.dart' as lib;
-void f() {
-  const lib.A();
-}
-''', [
-      error(CompileTimeErrorCode.CONST_WITH_NON_TYPE, 50, 1),
-    ]);
-  }
-
-  test_constWithTypeParameters_direct() async {
-    await assertErrorsInCode(r'''
-class A<T> {
-  static const V = const A<T>();
-  const A();
-}
-''', [
-      error(StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, 40, 1),
-      error(CompileTimeErrorCode.CONST_WITH_TYPE_PARAMETERS, 40, 1),
-    ]);
-  }
-
-  test_constWithTypeParameters_indirect() async {
-    await assertErrorsInCode(r'''
-class A<T> {
-  static const V = const A<List<T>>();
-  const A();
-}
-''', [
-      error(CompileTimeErrorCode.CONST_WITH_TYPE_PARAMETERS, 45, 1),
-      error(StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, 45, 1),
-    ]);
-  }
-
-  test_constWithUndefinedConstructor() async {
-    await assertErrorsInCode(r'''
-class A {
-  const A();
-}
-f() {
-  return const A.noSuchConstructor();
-}
-''', [
-      error(CompileTimeErrorCode.CONST_WITH_UNDEFINED_CONSTRUCTOR, 48, 17),
-    ]);
-  }
-
-  test_constWithUndefinedConstructorDefault() async {
-    await assertErrorsInCode(r'''
-class A {
-  const A.name();
-}
-f() {
-  return const A();
-}
-''', [
-      error(
-          CompileTimeErrorCode.CONST_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT, 51, 1),
-    ]);
-  }
-
-  test_extraPositionalArguments_const() async {
-    await assertErrorsInCode(r'''
-class A {
-  const A();
-}
-main() {
-  const A(0);
-}
-''', [
-      error(CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS, 43, 3),
-    ]);
-  }
-
-  test_extraPositionalArguments_const_super() async {
-    await assertErrorsInCode(r'''
-class A {
-  const A();
-}
-class B extends A {
-  const B() : super(0);
-}
-''', [
-      error(CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS, 64, 3),
-    ]);
-  }
-
-  test_extraPositionalArgumentsCouldBeNamed_const() async {
-    await assertErrorsInCode(r'''
-class A {
-  const A({int x});
-}
-main() {
-  const A(0);
-}
-''', [
-      error(CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED, 50,
-          3),
-    ]);
-  }
-
-  test_extraPositionalArgumentsCouldBeNamed_const_super() async {
-    await assertErrorsInCode(r'''
-class A {
-  const A({int x});
-}
-class B extends A {
-  const B() : super(0);
-}
-''', [
-      error(CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED, 71,
-          3),
-    ]);
-  }
-
   test_fromEnvironment_bool_badArgs() async {
     await assertErrorsInCode(r'''
 var b1 = const bool.fromEnvironment(1);
 var b2 = const bool.fromEnvironment('x', defaultValue: 1);
 ''', [
       error(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, 9, 29),
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 36, 1),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 36, 1),
       error(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, 49, 48),
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 81, 15),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 81, 15),
     ]);
   }
 
@@ -326,7 +198,7 @@
 var b = const bool.fromEnvironment('x', defaultValue: 1);
 ''', [
       error(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, 8, 48),
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 40, 15),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 40, 15),
     ]);
   }
 
@@ -335,7 +207,7 @@
 T f<T>(T t) => null;
 main() { f(<S>(S s) => s); }
 ''', [
-      error(StrongModeCode.COULD_NOT_INFER, 30, 1),
+      error(CompileTimeErrorCode.COULD_NOT_INFER, 30, 1),
     ]);
   }
 
@@ -344,7 +216,7 @@
 T Function<T>(T) f;
 main() { f(<S>(S s) => s); }
 ''', [
-      error(StrongModeCode.COULD_NOT_INFER, 29, 1),
+      error(CompileTimeErrorCode.COULD_NOT_INFER, 29, 1),
     ]);
   }
 
@@ -355,46 +227,7 @@
 }
 main() { new C().f(<S>(S s) => s); }
 ''', [
-      error(StrongModeCode.COULD_NOT_INFER, 52, 1),
-    ]);
-  }
-
-  test_genericFunctionTypeAsBound_class() async {
-    await assertErrorsInCode(r'''
-class C<T extends S Function<S>(S)> {
-}
-''', [
-      error(CompileTimeErrorCode.GENERIC_FUNCTION_TYPE_CANNOT_BE_BOUND, 18, 16),
-    ]);
-  }
-
-  test_genericFunctionTypeAsBound_genericFunction() async {
-    await assertErrorsInCode(r'''
-T Function<T extends S Function<S>(S)>(T) fun;
-''', [
-      error(CompileTimeErrorCode.GENERIC_FUNCTION_TYPE_CANNOT_BE_BOUND, 21, 16),
-    ]);
-  }
-
-  test_genericFunctionTypeAsBound_genericFunctionTypedef() async {
-    await assertErrorsInCode(r'''
-typedef foo = T Function<T extends S Function<S>(S)>(T t);
-''', [
-      error(CompileTimeErrorCode.GENERIC_FUNCTION_TYPE_CANNOT_BE_BOUND, 35, 16),
-    ]);
-  }
-
-  test_genericFunctionTypeAsBound_parameterOfFunction() async {
-    await assertNoErrorsInCode(r'''
-class C<T extends void Function(S Function<S>(S))> {}
-''');
-  }
-
-  test_genericFunctionTypeAsBound_typedef() async {
-    await assertErrorsInCode(r'''
-typedef T foo<T extends S Function<S>(S)>(T t);
-''', [
-      error(CompileTimeErrorCode.GENERIC_FUNCTION_TYPE_CANNOT_BE_BOUND, 24, 16),
+      error(CompileTimeErrorCode.COULD_NOT_INFER, 52, 1),
     ]);
   }
 
@@ -405,34 +238,6 @@
     await assertNoErrorsInCode(code);
   }
 
-  test_importInternalLibrary() async {
-    // Note, in these error cases we may generate an UNUSED_IMPORT hint, while
-    // we could prevent the hint from being generated by testing the import
-    // directive for the error, this is such a minor corner case that we don't
-    // think we should add the additional computation time to figure out such
-    // cases.
-    await assertErrorsInCode('''
-import 'dart:_interceptors';
-''', [
-      error(CompileTimeErrorCode.IMPORT_INTERNAL_LIBRARY, 7, 20),
-      error(HintCode.UNUSED_IMPORT, 7, 20),
-    ]);
-  }
-
-  test_importOfNonLibrary() async {
-    newFile("/test/lib/part.dart", content: r'''
-part of lib;
-class A{}
-''');
-    await assertErrorsInCode(r'''
-library lib;
-import 'part.dart';
-A a;
-''', [
-      error(CompileTimeErrorCode.IMPORT_OF_NON_LIBRARY, 20, 11),
-    ]);
-  }
-
   test_length_of_erroneous_constant() async {
     // Attempting to compute the length of constant that couldn't be evaluated
     // (due to an error) should not crash the analyzer (see dartbug.com/23383)
@@ -503,7 +308,7 @@
   const MyClass([p = foo]);
 }
 ''', [
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 37, 3),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 37, 3),
       error(CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, 37, 3),
     ]);
   }
@@ -518,7 +323,7 @@
 ''', [
       error(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, 9, 17),
       error(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, 37, 15),
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 50, 1),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 50, 1),
       error(CompileTimeErrorCode.NOT_ENOUGH_POSITIONAL_ARGUMENTS, 75, 2),
       error(CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS, 100, 10),
       error(CompileTimeErrorCode.UNDEFINED_NAMED_PARAMETER, 139, 3),
@@ -532,7 +337,7 @@
 ''', [
       error(HintCode.UNUSED_ELEMENT, 23, 1),
       error(CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL_INT, 27, 6),
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 31, 2),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 31, 2),
     ]);
   }
 
@@ -543,7 +348,7 @@
 ''', [
       error(HintCode.UNUSED_ELEMENT, 23, 1),
       error(CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL_INT, 27, 6),
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 31, 2),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 31, 2),
     ]);
   }
 
@@ -554,7 +359,7 @@
 ''', [
       error(HintCode.UNUSED_ELEMENT, 23, 1),
       error(CompileTimeErrorCode.CONST_EVAL_TYPE_NUM, 27, 6),
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 31, 2),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 31, 2),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/generated/compile_time_error_code_test.dart b/pkg/analyzer/test/generated/compile_time_error_code_test.dart
index 86d4e60..b77cbfd 100644
--- a/pkg/analyzer/test/generated/compile_time_error_code_test.dart
+++ b/pkg/analyzer/test/generated/compile_time_error_code_test.dart
@@ -31,7 +31,7 @@
     await assertErrorsInCode('''
 var v = const <String>[42];
 ''', [
-      error(StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 23, 2),
+      error(CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 23, 2),
     ]);
   }
 
@@ -39,7 +39,7 @@
     await assertErrorsInCode('''
 var v = const <String, String>{'a' : 2};
 ''', [
-      error(StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 37, 1),
+      error(CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 37, 1),
     ]);
   }
 
@@ -122,7 +122,7 @@
     await assertErrorsInCode('''
 var v = const <String>{42};
 ''', [
-      error(StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 23, 2),
+      error(CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 23, 2),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/generated/non_error_resolver_test.dart b/pkg/analyzer/test/generated/non_error_resolver_test.dart
index 2b9fc1f..4527bd6 100644
--- a/pkg/analyzer/test/generated/non_error_resolver_test.dart
+++ b/pkg/analyzer/test/generated/non_error_resolver_test.dart
@@ -1324,27 +1324,6 @@
 ''');
   }
 
-  test_for_in_scope() async {
-    await assertNoErrorsInCode('''
-main() {
-  List<List<int>> x = [[1]];
-  for (int x in x.first) {
-    print(x.isEven);
-  }
-}
-''');
-  }
-
-  test_forEach_genericFunctionType() async {
-    await assertNoErrorsInCode(r'''
-main() {
-  for (Null Function<T>(T, Null) e in <dynamic>[]) {
-    e;
-  }
-}
-''');
-  }
-
   test_functionDeclaration_scope_returnType() async {
     await assertNoErrorsInCode('''
 int f(int) { return 0; }
diff --git a/pkg/analyzer/test/generated/resolver_test.dart b/pkg/analyzer/test/generated/resolver_test.dart
index 9b6101f..16902a4 100644
--- a/pkg/analyzer/test/generated/resolver_test.dart
+++ b/pkg/analyzer/test/generated/resolver_test.dart
@@ -350,7 +350,6 @@
     ]);
   }
 
-//  @failingTest
   test_for() async {
     await assertErrorsInCode(r'''
 int f(List<int> list) {
diff --git a/pkg/analyzer/test/generated/strong_mode_test.dart b/pkg/analyzer/test/generated/strong_mode_test.dart
index fd8a5af..6504efa 100644
--- a/pkg/analyzer/test/generated/strong_mode_test.dart
+++ b/pkg/analyzer/test/generated/strong_mode_test.dart
@@ -335,9 +335,9 @@
 
   test_constrainedByBounds5() async {
     // Test that upwards inference with two type variables does not
-    // propogate from the constrained variable to the unconstrained
+    // propagate from the constrained variable to the unconstrained
     // variable if they are ordered right to left, when the variable
-    // appears co and contra variantly, and that an error is issued
+    // appears co- and contra-variantly, and that an error is issued
     // for the non-matching bound.
     String code = r'''
     typedef To Func1<From, To>(From x);
@@ -346,7 +346,7 @@
    ''';
     Source source = addSource(code);
     TestAnalysisResult analysisResult = await computeAnalysisResult(source);
-    assertErrors(source, [StrongModeCode.COULD_NOT_INFER]);
+    assertErrors(source, [CompileTimeErrorCode.COULD_NOT_INFER]);
     verify([source]);
     CompilationUnit unit = analysisResult.unit;
     List<Statement> statements =
@@ -981,7 +981,7 @@
     MethodInvocation invoke = await _testFutureOr(r'''
     Future<T> mk<T extends Future<Object>>(FutureOr<T> x) => null;
     dynamic test() => mk(new Future<int>.value(42));
-    ''', errors: [StrongModeCode.COULD_NOT_INFER]);
+    ''', errors: [CompileTimeErrorCode.COULD_NOT_INFER]);
     _isFutureOfInt(invoke.staticType);
   }
 
@@ -1093,8 +1093,8 @@
  ''');
     await computeAnalysisResult(source);
     _expectInferenceError(source, [
-      StrongModeCode.COULD_NOT_INFER,
-      StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE
+      CompileTimeErrorCode.COULD_NOT_INFER,
+      CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE
     ], r'''
 Couldn't infer type parameter 'T'.
 
@@ -1119,9 +1119,9 @@
  ''');
     await computeAnalysisResult(source);
     _expectInferenceError(source, [
-      StrongModeCode.COULD_NOT_INFER,
-      StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE,
-      StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE
+      CompileTimeErrorCode.COULD_NOT_INFER,
+      CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE,
+      CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE
     ], r'''
 Couldn't infer type parameter 'T'.
 
@@ -1170,7 +1170,7 @@
  ''');
     await computeAnalysisResult(source);
     _expectInferenceError(source, [
-      StrongModeCode.COULD_NOT_INFER,
+      CompileTimeErrorCode.COULD_NOT_INFER,
     ], r'''
 Couldn't infer type parameter 'T'.
 
@@ -1198,8 +1198,8 @@
  ''');
     await computeAnalysisResult(source);
     _expectInferenceError(source, [
-      StrongModeCode.COULD_NOT_INFER,
-      StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE
+      CompileTimeErrorCode.COULD_NOT_INFER,
+      CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE
     ], r'''
 Couldn't infer type parameter 'T'.
 
@@ -1223,7 +1223,7 @@
 }
  ''');
     await computeAnalysisResult(source);
-    _expectInferenceError(source, [StrongModeCode.COULD_NOT_INFER], r'''
+    _expectInferenceError(source, [CompileTimeErrorCode.COULD_NOT_INFER], r'''
 Couldn't infer type parameter 'T'.
 
 Tried to infer 'num' for 'T' which doesn't work:
@@ -1364,8 +1364,8 @@
     ''');
     var analysisResult = await computeAnalysisResult(source);
     assertErrors(source, [
-      StrongModeCode.COULD_NOT_INFER,
-      StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE
+      CompileTimeErrorCode.COULD_NOT_INFER,
+      CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE
     ]);
     verify([source]);
     var unit = analysisResult.unit;
@@ -2375,7 +2375,7 @@
     assertErrors(source, errorCodes);
     var errors = analysisResults[source]
         .errors
-        .where((e) => e.errorCode == StrongModeCode.COULD_NOT_INFER)
+        .where((e) => e.errorCode == CompileTimeErrorCode.COULD_NOT_INFER)
         .map((e) => e.message)
         .toList();
     expect(errors.length, 1);
@@ -3262,10 +3262,10 @@
 }
 ''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 61, 3),
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 106, 1),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 106, 1),
     ]);
     // Note: this correctly reports the error
-    // StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE when run with the driver;
+    // CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE when run with the driver;
     // when run without the driver, it reports no errors.  So we don't bother
     // checking whether the correct errors were reported.
     expectInitializerType('foo', 'Future<String>');
@@ -3341,7 +3341,7 @@
 ''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 73, 1),
       error(CompileTimeErrorCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, 81, 1),
-      error(StrongModeCode.COULD_NOT_INFER, 81, 1),
+      error(CompileTimeErrorCode.COULD_NOT_INFER, 81, 1),
     ]);
     _assertLocalVarType('c', 'C<List<dynamic>, List<List<dynamic>>>');
   }
@@ -3456,7 +3456,7 @@
 ''', [
       error(HintCode.MISSING_RETURN, 3, 1),
       error(HintCode.UNUSED_LOCAL_VARIABLE, 69, 1),
-      error(StrongModeCode.COULD_NOT_INFER, 73, 1),
+      error(CompileTimeErrorCode.COULD_NOT_INFER, 73, 1),
     ]);
     _assertLocalVarType('c', 'List<dynamic>');
   }
@@ -3678,8 +3678,8 @@
 }
 dynamic set g(int x) => null;
 ''', [
-      error(StaticWarningCode.NON_VOID_RETURN_FOR_SETTER, 12, 7),
-      error(StaticWarningCode.NON_VOID_RETURN_FOR_SETTER, 47, 7),
+      error(CompileTimeErrorCode.NON_VOID_RETURN_FOR_SETTER, 12, 7),
+      error(CompileTimeErrorCode.NON_VOID_RETURN_FOR_SETTER, 47, 7),
     ]);
   }
 
@@ -3723,8 +3723,8 @@
 }
 Object set g(x) => null;
 ''', [
-      error(StaticWarningCode.NON_VOID_RETURN_FOR_SETTER, 12, 6),
-      error(StaticWarningCode.NON_VOID_RETURN_FOR_SETTER, 46, 6),
+      error(CompileTimeErrorCode.NON_VOID_RETURN_FOR_SETTER, 12, 6),
+      error(CompileTimeErrorCode.NON_VOID_RETURN_FOR_SETTER, 46, 6),
     ]);
   }
 
diff --git a/pkg/analyzer/test/source/error_processor_test.dart b/pkg/analyzer/test/source/error_processor_test.dart
index e9f2284..f3e548d 100644
--- a/pkg/analyzer/test/source/error_processor_test.dart
+++ b/pkg/analyzer/test/source/error_processor_test.dart
@@ -34,8 +34,8 @@
     ['x']
   ]);
 
-  AnalysisError use_of_void_result =
-      AnalysisError(TestSource(), 0, 1, StaticWarningCode.USE_OF_VOID_RESULT, [
+  AnalysisError use_of_void_result = AnalysisError(
+      TestSource(), 0, 1, CompileTimeErrorCode.USE_OF_VOID_RESULT, [
     ['x']
   ]);
 
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
index 4e30908..031f9e3 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
@@ -513,7 +513,7 @@
     ResolvedUnitResult libResult = await driver.getResult(lib);
     List<AnalysisError> errors = libResult.errors;
     expect(errors, hasLength(1));
-    expect(errors[0].errorCode, StaticWarningCode.PART_OF_DIFFERENT_LIBRARY);
+    expect(errors[0].errorCode, CompileTimeErrorCode.PART_OF_DIFFERENT_LIBRARY);
   }
 
   test_analyze_resolveDirectives_error_partOfDifferentLibrary_byUri() async {
@@ -532,7 +532,7 @@
     ResolvedUnitResult libResult = await driver.getResult(lib);
     List<AnalysisError> errors = libResult.errors;
     expect(errors, hasLength(1));
-    expect(errors[0].errorCode, StaticWarningCode.PART_OF_DIFFERENT_LIBRARY);
+    expect(errors[0].errorCode, CompileTimeErrorCode.PART_OF_DIFFERENT_LIBRARY);
   }
 
   test_analyze_resolveDirectives_error_partOfNonPart() async {
diff --git a/pkg/analyzer/test/src/dart/analysis/search_test.dart b/pkg/analyzer/test/src/dart/analysis/search_test.dart
index 7885e20..718e234 100644
--- a/pkg/analyzer/test/src/dart/analysis/search_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/search_test.dart
@@ -21,7 +21,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(SearchTest);
-    defineReflectiveTests(SearchWithNnbdTest);
+    defineReflectiveTests(SearchWithNullSafetyTest);
   });
 }
 
@@ -1817,7 +1817,7 @@
 }
 
 @reflectiveTest
-class SearchWithNnbdTest extends SearchTest {
+class SearchWithNullSafetyTest extends SearchTest {
   @override
   AnalysisOptionsImpl createAnalysisOptions() => AnalysisOptionsImpl()
     ..contextFeatures = FeatureSet.forTesting(
diff --git a/pkg/analyzer/test/src/dart/element/element_test.dart b/pkg/analyzer/test/src/dart/element/element_test.dart
index 4be0fa5..8e625ec 100644
--- a/pkg/analyzer/test/src/dart/element/element_test.dart
+++ b/pkg/analyzer/test/src/dart/element/element_test.dart
@@ -1282,6 +1282,23 @@
 
 @reflectiveTest
 class InterfaceTypeImplTest extends AbstractTypeTest {
+  void test_allSupertypes() {
+    void check(InterfaceType type, List<String> expected) {
+      var actual = type.allSupertypes.map((e) {
+        return e.getDisplayString(
+          withNullability: true,
+        );
+      }).toList()
+        ..sort();
+      expect(actual, expected);
+    }
+
+    check(objectNone, []);
+    check(numNone, ['Comparable<num>', 'Object']);
+    check(intNone, ['Comparable<num>', 'Object', 'num']);
+    check(listNone(intQuestion), ['Iterable<int?>', 'Object']);
+  }
+
   test_asInstanceOf_explicitGeneric() {
     // class A<E> {}
     // class B implements A<C> {}
diff --git a/pkg/analyzer/test/src/dart/element/future_or_base_test.dart b/pkg/analyzer/test/src/dart/element/future_or_base_test.dart
new file mode 100644
index 0000000..c70b702
--- /dev/null
+++ b/pkg/analyzer/test/src/dart/element/future_or_base_test.dart
@@ -0,0 +1,66 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:analyzer/dart/element/type.dart';
+import 'package:test/test.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../../../generated/type_system_test.dart';
+
+main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(FutureOrBaseTest);
+  });
+}
+
+@reflectiveTest
+class FutureOrBaseTest extends AbstractTypeSystemNullSafetyTest {
+  test_dynamic() {
+    _check(dynamicNone, 'dynamic');
+  }
+
+  test_futureOr() {
+    void check(DartType S, String expected) {
+      _check(futureOrNone(S), expected);
+    }
+
+    check(intNone, 'int');
+    check(intQuestion, 'int?');
+    check(intStar, 'int*');
+
+    check(dynamicNone, 'dynamic');
+    check(voidNone, 'void');
+
+    check(neverNone, 'Never');
+    check(neverQuestion, 'Never?');
+    check(neverStar, 'Never*');
+
+    check(objectNone, 'Object');
+    check(objectQuestion, 'Object?');
+    check(objectStar, 'Object*');
+  }
+
+  test_other() {
+    _check(intNone, 'int');
+    _check(intQuestion, 'int?');
+    _check(intStar, 'int*');
+
+    _check(objectNone, 'Object');
+    _check(objectQuestion, 'Object?');
+    _check(objectStar, 'Object*');
+  }
+
+  /// futureValueType(`void`) = `void`.
+  test_void() {
+    _check(voidNone, 'void');
+  }
+
+  void _check(DartType T, String expected) {
+    var result = typeSystem.futureOrBase(T);
+    expect(
+      result.getDisplayString(withNullability: true),
+      expected,
+    );
+  }
+}
diff --git a/pkg/analyzer/test/src/dart/element/generic_inferrer_test.dart b/pkg/analyzer/test/src/dart/element/generic_inferrer_test.dart
index 8427087..bc84dbd 100644
--- a/pkg/analyzer/test/src/dart/element/generic_inferrer_test.dart
+++ b/pkg/analyzer/test/src/dart/element/generic_inferrer_test.dart
@@ -616,7 +616,7 @@
 
     if (expectError) {
       expect(listener.errors.map((e) => e.errorCode).toList(),
-          [StrongModeCode.COULD_NOT_INFER],
+          [CompileTimeErrorCode.COULD_NOT_INFER],
           reason: 'expected exactly 1 could not infer error.');
     } else {
       expect(listener.errors, isEmpty, reason: 'did not expect any errors.');
diff --git a/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart b/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
index 2abef15..4b3d2b9 100644
--- a/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
+++ b/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
@@ -15,7 +15,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(InheritanceManager3Test);
-    defineReflectiveTests(InheritanceManager3WithNnbdTest);
+    defineReflectiveTests(InheritanceManager3WithNullSafetyTest);
   });
 }
 
@@ -1042,7 +1042,7 @@
 }
 
 @reflectiveTest
-class InheritanceManager3WithNnbdTest extends _InheritanceManager3Base
+class InheritanceManager3WithNullSafetyTest extends _InheritanceManager3Base
     with WithNullSafetyMixin {
   test_getInheritedMap_topMerge_method() async {
     newFile('/test/lib/a.dart', content: r'''
diff --git a/pkg/analyzer/test/src/dart/element/test_all.dart b/pkg/analyzer/test/src/dart/element/test_all.dart
index e08cff7..0d31f54 100644
--- a/pkg/analyzer/test/src/dart/element/test_all.dart
+++ b/pkg/analyzer/test/src/dart/element/test_all.dart
@@ -9,6 +9,7 @@
 import 'factor_type_test.dart' as factor_type;
 import 'flatten_type_test.dart' as flatten_type;
 import 'function_type_test.dart' as function_type;
+import 'future_or_base_test.dart' as future_or_base;
 import 'future_value_type_test.dart' as future_value_type;
 import 'generic_inferrer_test.dart' as generic_inferrer;
 import 'inheritance_manager3_test.dart' as inheritance_manager3;
@@ -33,6 +34,7 @@
     factor_type.main();
     flatten_type.main();
     function_type.main();
+    future_or_base.main();
     future_value_type.main();
     generic_inferrer.main();
     inheritance_manager3.main();
diff --git a/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart b/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
index e431824..0053393 100644
--- a/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
+++ b/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
@@ -235,7 +235,7 @@
     expect(result.path, convertPath('/workspace/dart/test/lib/test.dart'));
     expect(result.uri.toString(), 'package:dart.test/test.dart');
     assertErrorsInList(result.errors, [
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 8, 1),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 8, 1),
     ]);
     expect(result.lineInfo.lineStarts, [0, 11, 24]);
   }
diff --git a/pkg/analyzer/test/src/dart/resolution/binary_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/binary_expression_test.dart
index 8fd3389..e9cb047 100644
--- a/pkg/analyzer/test/src/dart/resolution/binary_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/binary_expression_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(BinaryExpressionResolutionTest);
-    defineReflectiveTests(BinaryExpressionResolutionWithNnbdTest);
+    defineReflectiveTests(BinaryExpressionResolutionWithNullSafetyTest);
   });
 }
 
@@ -230,7 +230,7 @@
 }
 
 @reflectiveTest
-class BinaryExpressionResolutionWithNnbdTest extends DriverResolutionTest
+class BinaryExpressionResolutionWithNullSafetyTest extends DriverResolutionTest
     with WithNullSafetyMixin {
   test_ifNull_left_nullableContext() async {
     await assertNoErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/dart/resolution/class_test.dart b/pkg/analyzer/test/src/dart/resolution/class_test.dart
index b988020..891e684 100644
--- a/pkg/analyzer/test/src/dart/resolution/class_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/class_test.dart
@@ -530,7 +530,7 @@
       error(CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE, 6, 1),
       error(CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE, 33, 1),
       error(
-          StaticWarningCode
+          CompileTimeErrorCode
               .NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS,
           60,
           1),
diff --git a/pkg/analyzer/test/src/dart/resolution/constant_test.dart b/pkg/analyzer/test/src/dart/resolution/constant_test.dart
index 4a9651e..1c07958 100644
--- a/pkg/analyzer/test/src/dart/resolution/constant_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/constant_test.dart
@@ -17,7 +17,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ConstantResolutionTest);
-    defineReflectiveTests(ConstantResolutionWithNnbdTest);
+    defineReflectiveTests(ConstantResolutionWithNullSafetyTest);
   });
 }
 
@@ -236,7 +236,7 @@
 }
 
 @reflectiveTest
-class ConstantResolutionWithNnbdTest extends DriverResolutionTest
+class ConstantResolutionWithNullSafetyTest extends DriverResolutionTest
     with WithNullSafetyMixin {
   test_context_eliminateTypeVariables() async {
     await assertNoErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/dart/resolution/extension_method_test.dart b/pkg/analyzer/test/src/dart/resolution/extension_method_test.dart
index 96eb57a..191d6c2 100644
--- a/pkg/analyzer/test/src/dart/resolution/extension_method_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/extension_method_test.dart
@@ -15,13 +15,13 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ExtensionMethodsDeclarationTest);
-    defineReflectiveTests(ExtensionMethodsDeclarationWithNnbdTest);
+    defineReflectiveTests(ExtensionMethodsDeclarationWithNullSafetyTest);
     defineReflectiveTests(ExtensionMethodsExtendedTypeTest);
-    defineReflectiveTests(ExtensionMethodsExtendedTypeWithNnbdTest);
+    defineReflectiveTests(ExtensionMethodsExtendedTypeWithNullSafetyTest);
     defineReflectiveTests(ExtensionMethodsExternalReferenceTest);
-    defineReflectiveTests(ExtensionMethodsExternalReferenceWithNnbdTest);
+    defineReflectiveTests(ExtensionMethodsExternalReferenceWithNullSafetyTest);
     defineReflectiveTests(ExtensionMethodsInternalReferenceTest);
-    defineReflectiveTests(ExtensionMethodsInternalReferenceWithNnbdTest);
+    defineReflectiveTests(ExtensionMethodsInternalReferenceWithNullSafetyTest);
   });
 }
 
@@ -315,7 +315,7 @@
 /// Tests that show that extension declarations and the members inside them are
 /// resolved correctly.
 @reflectiveTest
-class ExtensionMethodsDeclarationWithNnbdTest extends DriverResolutionTest
+class ExtensionMethodsDeclarationWithNullSafetyTest extends DriverResolutionTest
     with WithNullSafetyMixin {
   test_this_type_interface() async {
     await assertNoErrorsInCode('''
@@ -475,7 +475,7 @@
 }
 
 @reflectiveTest
-class ExtensionMethodsExtendedTypeWithNnbdTest
+class ExtensionMethodsExtendedTypeWithNullSafetyTest
     extends ExtensionMethodsExtendedTypeTest with WithNullSafetyMixin {}
 
 /// Tests that extension members can be correctly resolved when referenced
@@ -948,8 +948,8 @@
 extension on Object {}
 var a = b + c;
 ''', [
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 31, 1),
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 35, 1),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 31, 1),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 35, 1),
     ]);
   }
 
@@ -1420,7 +1420,7 @@
 }
 
 @reflectiveTest
-class ExtensionMethodsExternalReferenceWithNnbdTest
+class ExtensionMethodsExternalReferenceWithNullSafetyTest
     extends ExtensionMethodsExternalReferenceTest with WithNullSafetyMixin {
   test_instance_getter_fromInstance_Never() async {
     await assertNoErrorsInCode('''
@@ -2218,5 +2218,5 @@
 }
 
 @reflectiveTest
-class ExtensionMethodsInternalReferenceWithNnbdTest
+class ExtensionMethodsInternalReferenceWithNullSafetyTest
     extends ExtensionMethodsInternalReferenceTest with WithNullSafetyMixin {}
diff --git a/pkg/analyzer/test/src/dart/resolution/for_element_test.dart b/pkg/analyzer/test/src/dart/resolution/for_element_test.dart
index 11f1fd0e..bccb3ad 100644
--- a/pkg/analyzer/test/src/dart/resolution/for_element_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/for_element_test.dart
@@ -10,7 +10,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ForEachElementTest);
-    defineReflectiveTests(ForEachElementWithNnbdTest);
+    defineReflectiveTests(ForEachElementWithNullSafetyTest);
     defineReflectiveTests(ForLoopElementTest);
   });
 }
@@ -50,7 +50,7 @@
 }
 
 @reflectiveTest
-class ForEachElementWithNnbdTest extends ForEachElementTest
+class ForEachElementWithNullSafetyTest extends ForEachElementTest
     with WithNullSafetyMixin {
   test_optIn_fromOptOut() async {
     newFile('/test/lib/a.dart', content: r'''
diff --git a/pkg/analyzer/test/src/dart/resolution/for_statement_test.dart b/pkg/analyzer/test/src/dart/resolution/for_statement_test.dart
index 8e874b8..74e9323 100644
--- a/pkg/analyzer/test/src/dart/resolution/for_statement_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/for_statement_test.dart
@@ -2,8 +2,7 @@
 // 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:analyzer/src/error/codes.dart';
-import 'package:test/test.dart';
+import 'package:analyzer/src/dart/error/syntactic_errors.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'driver_resolution.dart';
@@ -15,28 +14,67 @@
   });
 }
 
+/// TODO(scheglov) Move other for-in tests here.
 @reflectiveTest
 class ForEachStatementResolutionTest extends DriverResolutionTest {
-  test_importPrefix_asIterable() async {
-    // TODO(scheglov) Remove this test (already tested as import prefix).
-    // TODO(scheglov) Move other for-in tests here.
+  test_iterable_missing() async {
     await assertErrorsInCode(r'''
-import 'dart:async' as p;
-
-main() {
-  for (var x in p) {}
+void f() {
+  for (var v in) {
+    v;
+  }
 }
 ''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 47, 1),
-      error(CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT, 52, 1),
+      error(ParserErrorCode.MISSING_IDENTIFIER, 26, 1),
     ]);
 
-    var xRef = findNode.simple('x in');
-    expect(xRef.staticElement, isNotNull);
+    assertType(findElement.localVar('v').type, 'dynamic');
+    assertType(findNode.simple('v;'), 'dynamic');
+  }
 
-    var pRef = findNode.simple('p) {}');
-    assertElement(pRef, findElement.prefix('p'));
-    assertTypeDynamic(pRef);
+  /// Test that the parameter `x` is in the scope of the iterable.
+  /// But the declared identifier `x` is in the scope of the body.
+  test_scope() async {
+    await assertNoErrorsInCode('''
+void f(List<List<int>> x) {
+  for (int x in x.first) {
+    x.isEven;
+  }
+}
+''');
+
+    assertElement(
+      findNode.simple('x) {'),
+      findElement.parameter('x'),
+    );
+
+    assertElement(
+      findNode.simple('x.isEven'),
+      findElement.localVar('x'),
+    );
+  }
+
+  test_type_genericFunctionType() async {
+    await assertNoErrorsInCode(r'''
+void f() {
+  for (Null Function<T>(T, Null) e in <dynamic>[]) {
+    e;
+  }
+}
+''');
+  }
+
+  test_type_inferred() async {
+    await assertNoErrorsInCode(r'''
+void f(List<int> a) {
+  for (var v in a) {
+    v;
+  }
+}
+''');
+
+    assertType(findElement.localVar('v').type, 'int');
+    assertType(findNode.simple('v;'), 'int');
   }
 }
 
diff --git a/pkg/analyzer/test/src/dart/resolution/function_expression_invocation_test.dart b/pkg/analyzer/test/src/dart/resolution/function_expression_invocation_test.dart
index 1bb0387..114f145 100644
--- a/pkg/analyzer/test/src/dart/resolution/function_expression_invocation_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/function_expression_invocation_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(FunctionExpressionInvocationTest);
-    defineReflectiveTests(FunctionExpressionInvocationWithNnbdTest);
+    defineReflectiveTests(FunctionExpressionInvocationWithNullSafetyTest);
   });
 }
 
@@ -51,8 +51,8 @@
 }
 
 @reflectiveTest
-class FunctionExpressionInvocationWithNnbdTest extends DriverResolutionTest
-    with WithNullSafetyMixin {
+class FunctionExpressionInvocationWithNullSafetyTest
+    extends DriverResolutionTest with WithNullSafetyMixin {
   test_call_infer_fromArguments() async {
     await assertNoErrorsInCode(r'''
 class A {
@@ -165,7 +165,7 @@
   x<int>(1 + 2);
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 19, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 19, 1),
     ]);
 
     assertFunctionExpressionInvocation(
diff --git a/pkg/analyzer/test/src/dart/resolution/if_element_test.dart b/pkg/analyzer/test/src/dart/resolution/if_element_test.dart
index 2b32f17..027eb34 100644
--- a/pkg/analyzer/test/src/dart/resolution/if_element_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/if_element_test.dart
@@ -10,7 +10,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(IfElementTest);
-    defineReflectiveTests(IfElementWithNnbdTest);
+    defineReflectiveTests(IfElementWithNullSafetyTest);
   });
 }
 
@@ -34,4 +34,5 @@
 }
 
 @reflectiveTest
-class IfElementWithNnbdTest extends IfElementTest with WithNullSafetyMixin {}
+class IfElementWithNullSafetyTest extends IfElementTest
+    with WithNullSafetyMixin {}
diff --git a/pkg/analyzer/test/src/dart/resolution/index_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/index_expression_test.dart
index a4df0ce..7f0da6c 100644
--- a/pkg/analyzer/test/src/dart/resolution/index_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/index_expression_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(IndexExpressionTest);
-    defineReflectiveTests(IndexExpressionWithNnbdTest);
+    defineReflectiveTests(IndexExpressionWithNullSafetyTest);
   });
 }
 
@@ -237,7 +237,7 @@
 }
 
 @reflectiveTest
-class IndexExpressionWithNnbdTest extends IndexExpressionTest
+class IndexExpressionWithNullSafetyTest extends IndexExpressionTest
     with WithNullSafetyMixin {
   test_read_cascade_nullShorting() async {
     await assertNoErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/dart/resolution/metadata_test.dart b/pkg/analyzer/test/src/dart/resolution/metadata_test.dart
index eb2d918..578f9b3 100644
--- a/pkg/analyzer/test/src/dart/resolution/metadata_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/metadata_test.dart
@@ -17,7 +17,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(MetadataResolutionTest);
-    defineReflectiveTests(MetadataResolutionWithNnbdTest);
+    defineReflectiveTests(MetadataResolutionWithNullSafetyTest);
   });
 }
 
@@ -182,7 +182,7 @@
 }
 
 @reflectiveTest
-class MetadataResolutionWithNnbdTest extends DriverResolutionTest
+class MetadataResolutionWithNullSafetyTest extends DriverResolutionTest
     with WithNullSafetyMixin {
   ImportFindElement get import_a {
     return findElement.importFind('package:test/a.dart');
diff --git a/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart b/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
index c9a42b04..35c029e 100644
--- a/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
@@ -14,7 +14,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(MethodInvocationResolutionTest);
-    defineReflectiveTests(MethodInvocationResolutionWithNnbdTest);
+    defineReflectiveTests(MethodInvocationResolutionWithNullSafetyTest);
   });
 }
 
@@ -36,7 +36,7 @@
   foo(0);
 }
 ''', [
-      error(StaticWarningCode.AMBIGUOUS_IMPORT, 46, 3),
+      error(CompileTimeErrorCode.AMBIGUOUS_IMPORT, 46, 3),
     ]);
 
     var invocation = findNode.methodInvocation('foo(0)');
@@ -60,7 +60,7 @@
   p.foo(0);
 }
 ''', [
-      error(StaticWarningCode.AMBIGUOUS_IMPORT, 58, 3),
+      error(CompileTimeErrorCode.AMBIGUOUS_IMPORT, 58, 3),
     ]);
 
     var invocation = findNode.methodInvocation('foo(0)');
@@ -425,7 +425,7 @@
   bar.foo(0);
 }
 ''', [
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 11, 3),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 11, 3),
     ]);
     _assertUnresolvedMethodInvocation('foo(0);');
   }
@@ -699,7 +699,7 @@
   c.foo();
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 44, 5),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 44, 5),
     ]);
 
     var invocation = findNode.functionExpressionInvocation('foo();');
@@ -720,7 +720,7 @@
   foo();
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 23, 3),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 23, 3),
     ]);
 
     var invocation = findNode.functionExpressionInvocation('foo();');
@@ -741,7 +741,7 @@
   foo()();
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 26, 3),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 26, 3),
     ]);
     assertMethodInvocation(
       findNode.methodInvocation('foo()()'),
@@ -758,7 +758,7 @@
   foo();
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 22, 3),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 22, 3),
     ]);
 
     var invocation = findNode.functionExpressionInvocation('foo();');
@@ -778,7 +778,7 @@
   foo.toString();
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 23, 3),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 23, 3),
     ]);
     // TODO(scheglov) Resolve fully, or don't resolve at all.
     assertMethodInvocation(
@@ -795,7 +795,7 @@
   foo..toString();
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 23, 3),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 23, 3),
     ]);
     // TODO(scheglov) Resolve fully, or don't resolve at all.
     assertMethodInvocation(
@@ -812,7 +812,7 @@
   foo?.toString();
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 23, 3),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 23, 3),
     ]);
     // TODO(scheglov) Resolve fully, or don't resolve at all.
     assertMethodInvocation(
@@ -1719,7 +1719,7 @@
 }
 
 @reflectiveTest
-class MethodInvocationResolutionWithNnbdTest extends DriverResolutionTest
+class MethodInvocationResolutionWithNullSafetyTest extends DriverResolutionTest
     with WithNullSafetyMixin {
   test_hasReceiver_deferredImportPrefix_loadLibrary_optIn_fromOptOut() async {
     newFile('/test/lib/a.dart', content: r'''
@@ -1769,7 +1769,7 @@
   foo.call();
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 29, 3),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 29, 3),
     ]);
 
     assertMethodInvocation2(
@@ -1820,7 +1820,7 @@
   a.foo();
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 44, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 44, 1),
     ]);
 
     assertMethodInvocation2(
@@ -1846,7 +1846,7 @@
   a.foo();
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 82, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 82, 1),
     ]);
 
     assertMethodInvocation2(
@@ -1913,7 +1913,7 @@
   a.foo();
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 27, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 27, 1),
       error(StaticTypeWarningCode.UNDEFINED_METHOD, 29, 3),
     ]);
 
@@ -1938,7 +1938,7 @@
   a.foo();
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 65, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 65, 1),
       error(StaticTypeWarningCode.UNDEFINED_METHOD, 67, 3),
     ]);
 
diff --git a/pkg/analyzer/test/src/dart/resolution/mixin_test.dart b/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
index e1ad947..3732016 100644
--- a/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
@@ -300,7 +300,7 @@
   final int f;
 }
 ''', [
-      error(StaticWarningCode.FINAL_NOT_INITIALIZED, 22, 1),
+      error(CompileTimeErrorCode.FINAL_NOT_INITIALIZED, 22, 1),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/dart/resolution/namespace_test.dart b/pkg/analyzer/test/src/dart/resolution/namespace_test.dart
index e3dff26..96694a8 100644
--- a/pkg/analyzer/test/src/dart/resolution/namespace_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/namespace_test.dart
@@ -10,7 +10,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ImportResolutionTest);
-    defineReflectiveTests(ImportResolutionWithNnbdTest);
+    defineReflectiveTests(ImportResolutionWithNullSafetyTest);
   });
 }
 
@@ -29,5 +29,5 @@
 }
 
 @reflectiveTest
-class ImportResolutionWithNnbdTest extends ImportResolutionTest
+class ImportResolutionWithNullSafetyTest extends ImportResolutionTest
     with WithNullSafetyMixin {}
diff --git a/pkg/analyzer/test/src/dart/resolution/postfix_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/postfix_expression_test.dart
index aac113d..0dd01f6 100644
--- a/pkg/analyzer/test/src/dart/resolution/postfix_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/postfix_expression_test.dart
@@ -12,7 +12,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(PostfixExpressionResolutionTest);
-    defineReflectiveTests(PostfixExpressionResolutionWithNnbdTest);
+    defineReflectiveTests(PostfixExpressionResolutionWithNullSafetyTest);
   });
 }
 
@@ -81,7 +81,7 @@
 }
 
 @reflectiveTest
-class PostfixExpressionResolutionWithNnbdTest
+class PostfixExpressionResolutionWithNullSafetyTest
     extends PostfixExpressionResolutionTest with WithNullSafetyMixin {
   test_inc_localVariable_depromote() async {
     await assertNoErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/dart/resolution/prefix_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/prefix_expression_test.dart
index a22daf3..14dd4c2 100644
--- a/pkg/analyzer/test/src/dart/resolution/prefix_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/prefix_expression_test.dart
@@ -12,7 +12,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(PrefixExpressionResolutionTest);
-    defineReflectiveTests(PrefixExpressionResolutionWithNnbdTest);
+    defineReflectiveTests(PrefixExpressionResolutionWithNullSafetyTest);
   });
 }
 
@@ -172,7 +172,7 @@
 }
 
 @reflectiveTest
-class PrefixExpressionResolutionWithNnbdTest
+class PrefixExpressionResolutionWithNullSafetyTest
     extends PrefixExpressionResolutionTest with WithNullSafetyMixin {
   test_plusPlus_depromote() async {
     await assertNoErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/dart/resolution/prefixed_identifier_test.dart b/pkg/analyzer/test/src/dart/resolution/prefixed_identifier_test.dart
index 8d0dcac..4288df4 100644
--- a/pkg/analyzer/test/src/dart/resolution/prefixed_identifier_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/prefixed_identifier_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(PrefixedIdentifierResolutionTest);
-    defineReflectiveTests(PrefixedIdentifierResolutionWithNnbdTest);
+    defineReflectiveTests(PrefixedIdentifierResolutionWithNullSafetyTest);
   });
 }
 
@@ -59,7 +59,7 @@
 }
 
 @reflectiveTest
-class PrefixedIdentifierResolutionWithNnbdTest
+class PrefixedIdentifierResolutionWithNullSafetyTest
     extends PrefixedIdentifierResolutionTest with WithNullSafetyMixin {
   test_deferredImportPrefix_loadLibrary_optIn_fromOptOut() async {
     newFile('/test/lib/a.dart', content: r'''
diff --git a/pkg/analyzer/test/src/dart/resolution/property_access_test.dart b/pkg/analyzer/test/src/dart/resolution/property_access_test.dart
index 7930914..1c626bd 100644
--- a/pkg/analyzer/test/src/dart/resolution/property_access_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/property_access_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(PropertyAccessResolutionTest);
-    defineReflectiveTests(PropertyAccessResolutionWithNnbdTest);
+    defineReflectiveTests(PropertyAccessResolutionWithNullSafetyTest);
   });
 }
 
@@ -35,8 +35,8 @@
 }
 
 @reflectiveTest
-class PropertyAccessResolutionWithNnbdTest extends PropertyAccessResolutionTest
-    with WithNullSafetyMixin {
+class PropertyAccessResolutionWithNullSafetyTest
+    extends PropertyAccessResolutionTest with WithNullSafetyMixin {
   test_implicitCall_tearOff_nullable() async {
     await assertErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/dart/resolution/simple_identifier_test.dart b/pkg/analyzer/test/src/dart/resolution/simple_identifier_test.dart
index 3723684..c62baeb 100644
--- a/pkg/analyzer/test/src/dart/resolution/simple_identifier_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/simple_identifier_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(SimpleIdentifierResolutionTest);
-    defineReflectiveTests(SimpleIdentifierResolutionWithNnbdTest);
+    defineReflectiveTests(SimpleIdentifierResolutionWithNullSafetyTest);
   });
 }
 
@@ -41,7 +41,7 @@
   dynamic;
 }
 ''', [
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 42, 7),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 42, 7),
     ]);
 
     assertSimpleIdentifier(
@@ -113,7 +113,7 @@
 }
 
 @reflectiveTest
-class SimpleIdentifierResolutionWithNnbdTest
+class SimpleIdentifierResolutionWithNullSafetyTest
     extends SimpleIdentifierResolutionTest with WithNullSafetyMixin {
   test_functionReference() async {
     await assertErrorsInCode('''
@@ -127,7 +127,7 @@
 @A([min])
 main() {}
 ''', [
-      error(StrongModeCode.COULD_NOT_INFER, 66, 5),
+      error(CompileTimeErrorCode.COULD_NOT_INFER, 66, 5),
     ]);
 
     var identifier = findNode.simple('min]');
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/collection_elements_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/collection_elements_test.dart
index d099eeb..09430fa 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/collection_elements_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/collection_elements_test.dart
@@ -9,14 +9,14 @@
 
 main() {
   defineReflectiveSuite(() {
-    defineReflectiveTests(ForElementWithNnbdTest);
-    defineReflectiveTests(IfElementWithNnbdTest);
-    defineReflectiveTests(SpreadElementWithNnbdTest);
+    defineReflectiveTests(ForElementWithNullSafetyTest);
+    defineReflectiveTests(IfElementWithNullSafetyTest);
+    defineReflectiveTests(SpreadElementWithNullSafetyTest);
   });
 }
 
 @reflectiveTest
-class ForElementWithNnbdTest extends DriverResolutionTest
+class ForElementWithNullSafetyTest extends DriverResolutionTest
     with WithNullSafetyMixin {
   test_list_awaitForIn_dynamic_downward() async {
     await resolveTestCode('''
@@ -194,7 +194,7 @@
 }
 
 @reflectiveTest
-class IfElementWithNnbdTest extends DriverResolutionTest
+class IfElementWithNullSafetyTest extends DriverResolutionTest
     with WithNullSafetyMixin {
   test_list_downward() async {
     await resolveTestCode('''
@@ -231,7 +231,7 @@
 }
 
 @reflectiveTest
-class SpreadElementWithNnbdTest extends DriverResolutionTest
+class SpreadElementWithNullSafetyTest extends DriverResolutionTest
     with WithNullSafetyMixin {
   test_list_downward() async {
     await resolveTestCode('''
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/conditional_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/conditional_expression_test.dart
index 5064cc4..e0b45c8 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/conditional_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/conditional_expression_test.dart
@@ -10,7 +10,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ConditionalExpressionTest);
-    defineReflectiveTests(ConditionalExpressionWithNnbdTest);
+    defineReflectiveTests(ConditionalExpressionWithNullSafetyTest);
   });
 }
 
@@ -28,7 +28,7 @@
 }
 
 @reflectiveTest
-class ConditionalExpressionWithNnbdTest extends ConditionalExpressionTest
+class ConditionalExpressionWithNullSafetyTest extends ConditionalExpressionTest
     with WithNullSafetyMixin {
   @failingTest
   test_downward() async {
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/equality_expressions_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/equality_expressions_test.dart
index 000757f..9ce664c 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/equality_expressions_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/equality_expressions_test.dart
@@ -10,9 +10,9 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(EqualTest);
-    defineReflectiveTests(EqualWithNnbdTest);
+    defineReflectiveTests(EqualWithNullSafetyTest);
     defineReflectiveTests(NotEqualTest);
-    defineReflectiveTests(NotEqualWithNnbdTest);
+    defineReflectiveTests(NotEqualWithNullSafetyTest);
   });
 }
 
@@ -30,7 +30,7 @@
 }
 
 @reflectiveTest
-class EqualWithNnbdTest extends EqualTest with WithNullSafetyMixin {}
+class EqualWithNullSafetyTest extends EqualTest with WithNullSafetyMixin {}
 
 @reflectiveTest
 class NotEqualTest extends DriverResolutionTest {
@@ -46,4 +46,5 @@
 }
 
 @reflectiveTest
-class NotEqualWithNnbdTest extends NotEqualTest with WithNullSafetyMixin {}
+class NotEqualWithNullSafetyTest extends NotEqualTest with WithNullSafetyMixin {
+}
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/extension_methods_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/extension_methods_test.dart
index e27cd4e..c3444e6 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/extension_methods_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/extension_methods_test.dart
@@ -306,7 +306,7 @@
   E(s).foo();
 }
 ''', [
-      error(StrongModeCode.COULD_NOT_INFER, 69, 1),
+      error(CompileTimeErrorCode.COULD_NOT_INFER, 69, 1),
     ]);
     var override = findNode.extensionOverride('E(s)');
     assertElementTypeStrings(override.typeArgumentTypes, ['String']);
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/function_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/function_expression_test.dart
index ab68f20..031d921 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/function_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/function_expression_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(FunctionExpressionTest);
-    defineReflectiveTests(FunctionExpressionWithNnbdTest);
+    defineReflectiveTests(FunctionExpressionWithNullSafetyTest);
   });
 }
 
@@ -460,7 +460,7 @@
 }
 
 @reflectiveTest
-class FunctionExpressionWithNnbdTest extends FunctionExpressionTest
+class FunctionExpressionWithNullSafetyTest extends FunctionExpressionTest
     with WithNullSafetyMixin {
   test_contextFunctionType_nonNullify() async {
     newFile('/test/lib/a.dart', content: r'''
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/list_literal_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/list_literal_test.dart
index 05da0da..32c358a 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/list_literal_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/list_literal_test.dart
@@ -2,6 +2,7 @@
 // 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:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../driver_resolution.dart';
@@ -10,62 +11,84 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ListLiteralTest);
-    defineReflectiveTests(ListLiteralWithNnbdTest);
+    defineReflectiveTests(ListLiteralWithNullSafetyTest);
   });
 }
 
 @reflectiveTest
 class ListLiteralTest extends DriverResolutionTest {
   test_context_noTypeArgs_expression_conflict() async {
-    await resolveTestCode('''
+    await assertErrorsInCode('''
 List<int> a = ['a'];
-''');
+''', [
+      error(CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 15, 3),
+    ]);
     assertType(findNode.listLiteral('['), 'List<int>');
   }
 
   test_context_noTypeArgs_expression_noConflict() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 List<int> a = [1];
 ''');
     assertType(findNode.listLiteral('['), 'List<int>');
   }
 
   test_context_noTypeArgs_noElements() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 List<String> a = [];
 ''');
     assertType(findNode.listLiteral('['), 'List<String>');
   }
 
   test_context_noTypeArgs_noElements_typeParameter() async {
-    await resolveTestCode('''
+    var expectedErrors = expectedErrorsByNullability(
+      nullable: [
+        error(StaticTypeWarningCode.INVALID_ASSIGNMENT, 39, 2),
+      ],
+      legacy: [
+        error(CompileTimeErrorCode.INVALID_CAST_LITERAL_LIST, 39, 2),
+      ],
+    );
+    await assertErrorsInCode('''
 class A<E extends List<int>> {
   E a = [];
 }
-''');
+''', expectedErrors);
     assertType(findNode.listLiteral('['), 'List<dynamic>');
   }
 
   test_context_noTypeArgs_noElements_typeParameter_dynamic() async {
-    await resolveTestCode('''
+    var expectedErrors = expectedErrorsByNullability(
+      nullable: [
+        error(StaticTypeWarningCode.INVALID_ASSIGNMENT, 43, 2),
+      ],
+      legacy: [
+        error(CompileTimeErrorCode.INVALID_CAST_LITERAL_LIST, 43, 2),
+      ],
+    );
+    await assertErrorsInCode('''
 class A<E extends List<dynamic>> {
   E a = [];
 }
-''');
+''', expectedErrors);
     assertType(findNode.listLiteral('['), 'List<dynamic>');
   }
 
   test_context_typeArgs_expression_conflictingContext() async {
-    await resolveTestCode('''
+    await assertErrorsInCode('''
 List<String> a = <int>[0];
-''');
+''', [
+      error(StaticTypeWarningCode.INVALID_ASSIGNMENT, 17, 8),
+    ]);
     assertType(findNode.listLiteral('['), 'List<int>');
   }
 
   test_context_typeArgs_expression_conflictingExpression() async {
-    await resolveTestCode('''
+    await assertErrorsInCode('''
 List<String> a = <String>[0];
-''');
+''', [
+      error(CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 26, 1),
+    ]);
     assertType(findNode.listLiteral('['), 'List<String>');
   }
 
@@ -73,102 +96,108 @@
   test_context_typeArgs_expression_conflictingTypeArgs() async {
     // Context type and element types both suggest `String`, so this should
     // override the explicit type argument.
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 List<String> a = <int>['a'];
 ''');
     assertType(findNode.listLiteral('['), 'List<String>');
   }
 
   test_context_typeArgs_expression_noConflict() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 List<String> a = <String>['a'];
 ''');
     assertType(findNode.listLiteral('['), 'List<String>');
   }
 
   test_context_typeArgs_noElements_conflict() async {
-    await resolveTestCode('''
+    await assertErrorsInCode('''
 List<String> a = <int>[];
-''');
+''', [
+      error(StaticTypeWarningCode.INVALID_ASSIGNMENT, 17, 7),
+    ]);
     assertType(findNode.listLiteral('['), 'List<int>');
   }
 
   test_context_typeArgs_noElements_noConflict() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 List<String> a = <String>[];
 ''');
     assertType(findNode.listLiteral('['), 'List<String>');
   }
 
   test_noContext_noTypeArgs_expressions_lubOfInt() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = [1, 2, 3];
 ''');
     assertType(findNode.listLiteral('['), 'List<int>');
   }
 
   test_noContext_noTypeArgs_expressions_lubOfNum() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = [1, 2.3, 4];
 ''');
     assertType(findNode.listLiteral('['), 'List<num>');
   }
 
   test_noContext_noTypeArgs_expressions_lubOfObject() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = [1, '2', 3];
 ''');
     assertType(findNode.listLiteral('['), 'List<Object>');
   }
 
   test_noContext_noTypeArgs_expressions_unresolved() async {
-    await resolveTestCode('''
+    await assertErrorsInCode('''
 var a = [x];
-''');
+''', [
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 9, 1),
+    ]);
     assertType(findNode.listLiteral('['), 'List<dynamic>');
   }
 
   test_noContext_noTypeArgs_expressions_unresolved_multiple() async {
-    await resolveTestCode('''
+    await assertErrorsInCode('''
 var a = [0, x, 2];
-''');
+''', [
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 12, 1),
+    ]);
     assertType(findNode.listLiteral('['), 'List<dynamic>');
   }
 
   test_noContext_noTypeArgs_forEachWithDeclaration() async {
-    await resolveTestCode('''
-List<int> c;
+    await assertNoErrorsInCode('''
+List<int> c = [];
 var a = [for (int e in c) e * 2];
 ''');
     assertType(findNode.listLiteral('[for'), 'List<int>');
   }
 
   test_noContext_noTypeArgs_forEachWithIdentifier() async {
-    await resolveTestCode('''
-List<int> c;
-int b;
+    await assertNoErrorsInCode('''
+List<int> c = [];
+int b = 0;
 var a = [for (b in c) b * 2];
 ''');
     assertType(findNode.listLiteral('[for'), 'List<int>');
   }
 
   test_noContext_noTypeArgs_forWithDeclaration() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = [for (var i = 0; i < 2; i++) i * 2];
 ''');
     assertType(findNode.listLiteral('[for'), 'List<int>');
   }
 
   test_noContext_noTypeArgs_forWithExpression() async {
-    await resolveTestCode('''
-int i;
+    await assertNoErrorsInCode('''
+int i = 0;
 var a = [for (i = 0; i < 2; i++) i * 2];
 ''');
     assertType(findNode.listLiteral('[for'), 'List<int>');
   }
 
   test_noContext_noTypeArgs_if() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 bool c = true;
 var a = [if (c) 1];
 ''');
@@ -176,7 +205,7 @@
   }
 
   test_noContext_noTypeArgs_ifElse_lubOfInt() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 bool c = true;
 var a = [if (c) 1 else 2];
 ''');
@@ -184,7 +213,7 @@
   }
 
   test_noContext_noTypeArgs_ifElse_lubOfNum() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 bool c = true;
 var a = [if (c) 1 else 2.3];
 ''');
@@ -192,7 +221,7 @@
   }
 
   test_noContext_noTypeArgs_ifElse_lubOfObject() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 bool c = true;
 var a = [if (c) 1 else '2'];
 ''');
@@ -200,52 +229,53 @@
   }
 
   test_noContext_noTypeArgs_noElements() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = [];
 ''');
     assertType(findNode.listLiteral('['), 'List<dynamic>');
   }
 
   test_noContext_noTypeArgs_spread() async {
-    await resolveTestCode('''
-List<int> c;
+    await assertNoErrorsInCode('''
+List<int> c = [];
 var a = [...c];
 ''');
     assertType(findNode.listLiteral('[...'), 'List<int>');
   }
 
   test_noContext_noTypeArgs_spread_lubOfInt() async {
-    await resolveTestCode('''
-List<int> c;
-List<int> b;
+    await assertNoErrorsInCode('''
+List<int> c = [];
+List<int> b = [];
 var a = [...b, ...c];
 ''');
     assertType(findNode.listLiteral('[...'), 'List<int>');
   }
 
   test_noContext_noTypeArgs_spread_lubOfNum() async {
-    await resolveTestCode('''
-List<int> c;
-List<double> b;
+    await assertNoErrorsInCode('''
+List<int> c = [];
+List<double> b = [];
 var a = [...b, ...c];
 ''');
     assertType(findNode.listLiteral('[...'), 'List<num>');
   }
 
   test_noContext_noTypeArgs_spread_lubOfObject() async {
-    await resolveTestCode('''
-List<int> c;
-List<String> b;
+    await assertNoErrorsInCode('''
+List<int> c = [];
+List<String> b = [];
 var a = [...b, ...c];
 ''');
     assertType(findNode.listLiteral('[...'), 'List<Object>');
   }
 
   test_noContext_noTypeArgs_spread_mixin() async {
-    await resolveTestCode(r'''
+    await assertNoErrorsInCode(r'''
 mixin L on List<int> {}
-main() {
-  L l1;
+
+main(L l1) {
+  // ignore:unused_local_variable
   var l2 = [...l1];
 }
 ''');
@@ -253,49 +283,107 @@
   }
 
   test_noContext_noTypeArgs_spread_nestedInIf_oneAmbiguous() async {
-    await resolveTestCode('''
-List<int> c;
+    await assertNoErrorsInCode('''
+List<int> c = [];
 dynamic d;
 var a = [if (0 < 1) ...c else ...d];
 ''');
-    assertType(findNode.listLiteral('['), 'List<dynamic>');
+    assertType(findNode.listLiteral('[if'), 'List<dynamic>');
   }
 
-  test_noContext_noTypeArgs_spread_nullAware_nullAndNotNull() async {
-    await resolveTestCode('''
-f() async {
-  var futureNull = Future.value(null);
-  var a = [1, ...?await futureNull, 2];
+  test_noContext_noTypeArgs_spread_nullAware_null() async {
+    await assertNoErrorsInCode('''
+void f(Null a) {
+  // ignore:unused_local_variable
+  var v = [...?a];
 }
 ''');
     assertType(
       findNode.listLiteral('['),
       typeStringByNullability(
-        nullable: 'List<int?>',
-        legacy: 'List<int>',
+        nullable: 'List<Never>',
+        legacy: 'List<Null>',
       ),
     );
   }
 
-  test_noContext_noTypeArgs_spread_nullAware_onlyNull() async {
-    await resolveTestCode('''
-f() async {
-  var futureNull = Future.value(null);
-  var a = [...?await futureNull];
+  test_noContext_noTypeArgs_spread_nullAware_null2() async {
+    await assertNoErrorsInCode('''
+void f(Null a) {
+  // ignore:unused_local_variable
+  var v = [1, ...?a, 2];
 }
 ''');
-    assertType(findNode.listLiteral('['), 'List<Null>');
+    assertType(findNode.listLiteral('['), 'List<int>');
+  }
+
+  test_noContext_noTypeArgs_spread_nullAware_typeParameter_implementsNull() async {
+    var expectedErrors = expectedErrorsByNullability(
+      nullable: [],
+      legacy: [
+        error(CompileTimeErrorCode.NOT_ITERABLE_SPREAD, 85, 1),
+      ],
+    );
+    await assertErrorsInCode('''
+void f<T extends Null>(T a) async {
+  // ignore:unused_local_variable
+  var v = [...?a];
+}
+''', expectedErrors);
+    assertType(
+      findNode.listLiteral('['),
+      typeStringByNullability(
+        nullable: 'List<Never>',
+        legacy: 'List<dynamic>',
+      ),
+    );
+  }
+
+  test_noContext_noTypeArgs_spread_typeParameter_implementsIterable() async {
+    await assertNoErrorsInCode('''
+void f<T extends List<int>>(T a) {
+  // ignore:unused_local_variable
+  var v = [...a];
+}
+''');
+    assertType(findNode.listLiteral('[...'), 'List<int>');
+  }
+
+  test_noContext_noTypeArgs_spread_typeParameter_notImplementsIterable() async {
+    await assertErrorsInCode('''
+void f<T extends num>(T a) {
+  // ignore:unused_local_variable
+  var v = [...a];
+}
+''', [
+      error(CompileTimeErrorCode.NOT_ITERABLE_SPREAD, 77, 1),
+    ]);
+    assertType(findNode.listLiteral('[...'), 'List<dynamic>');
+  }
+
+  test_noContext_noTypeArgs_spread_typeParameter_notImplementsIterable2() async {
+    await assertErrorsInCode('''
+void f<T extends num>(T a) {
+  // ignore:unused_local_variable
+  var v = [...a, 0];
+}
+''', [
+      error(CompileTimeErrorCode.NOT_ITERABLE_SPREAD, 77, 1),
+    ]);
+    assertType(findNode.listLiteral('[...'), 'List<dynamic>');
   }
 
   test_noContext_typeArgs_expression_conflict() async {
-    await resolveTestCode('''
+    await assertErrorsInCode('''
 var a = <String>[1];
-''');
+''', [
+      error(CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 17, 1),
+    ]);
     assertType(findNode.listLiteral('['), 'List<String>');
   }
 
   test_noContext_typeArgs_expression_noConflict() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = <int>[1];
 ''');
     assertType(findNode.listLiteral('['), 'List<int>');
@@ -303,14 +391,14 @@
 
   @failingTest
   test_noContext_typeArgs_expressions_conflict() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = <int, String>[1, 2];
 ''');
     assertType(findNode.listLiteral('['), 'List<int>');
   }
 
   test_noContext_typeArgs_noElements() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = <num>[];
 ''');
     assertType(findNode.listLiteral('['), 'List<num>');
@@ -318,7 +406,8 @@
 }
 
 @reflectiveTest
-class ListLiteralWithNnbdTest extends ListLiteralTest with WithNullSafetyMixin {
+class ListLiteralWithNullSafetyTest extends ListLiteralTest
+    with WithNullSafetyMixin {
   test_context_spread_nullAware() async {
     await assertNoErrorsInCode('''
 T f<T>(T t) => t;
@@ -357,4 +446,48 @@
     assertType(findNode.listLiteral('[1,'), 'List<int?>');
     assertType(findNode.listLiteral('[[0'), 'List<List<int?>>');
   }
+
+  test_noContext_noTypeArgs_spread_never() async {
+    await assertNoErrorsInCode('''
+void f(Never a) async {
+  // ignore:unused_local_variable
+  var v = [...a];
+}
+''');
+    assertType(findNode.listLiteral('['), 'List<Never>');
+  }
+
+  test_noContext_noTypeArgs_spread_nullAware_never() async {
+    await assertErrorsInCode('''
+void f(Never a) async {
+  // ignore:unused_local_variable
+  var v = [...?a];
+}
+''', [
+      error(StaticWarningCode.INVALID_NULL_AWARE_OPERATOR, 69, 4),
+    ]);
+    assertType(findNode.listLiteral('['), 'List<Never>');
+  }
+
+  test_noContext_noTypeArgs_spread_nullAware_typeParameter_implementsNever() async {
+    await assertErrorsInCode('''
+void f<T extends Never>(T a) async {
+  // ignore:unused_local_variable
+  var v = [...?a];
+}
+''', [
+      error(StaticWarningCode.INVALID_NULL_AWARE_OPERATOR, 82, 4),
+    ]);
+    assertType(findNode.listLiteral('['), 'List<Never>');
+  }
+
+  test_noContext_noTypeArgs_spread_typeParameter_implementsNever() async {
+    await assertNoErrorsInCode('''
+void f<T extends Never>(T a) async {
+  // ignore:unused_local_variable
+  var v = [...a];
+}
+''');
+    assertType(findNode.listLiteral('['), 'List<Never>');
+  }
 }
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/logical_boolean_expressions_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/logical_boolean_expressions_test.dart
index e291cd3..712ae83 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/logical_boolean_expressions_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/logical_boolean_expressions_test.dart
@@ -10,9 +10,9 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(LogicalAndTest);
-    defineReflectiveTests(LogicalAndWithNnbdTest);
+    defineReflectiveTests(LogicalAndWithNullSafetyTest);
     defineReflectiveTests(LogicalOrTest);
-    defineReflectiveTests(LogicalOrWithNnbdTest);
+    defineReflectiveTests(LogicalOrWithNullSafetyTest);
   });
 }
 
@@ -30,7 +30,8 @@
 }
 
 @reflectiveTest
-class LogicalAndWithNnbdTest extends LogicalAndTest with WithNullSafetyMixin {
+class LogicalAndWithNullSafetyTest extends LogicalAndTest
+    with WithNullSafetyMixin {
   @failingTest
   test_downward() async {
     await resolveTestCode('''
@@ -60,7 +61,8 @@
 }
 
 @reflectiveTest
-class LogicalOrWithNnbdTest extends LogicalOrTest with WithNullSafetyMixin {
+class LogicalOrWithNullSafetyTest extends LogicalOrTest
+    with WithNullSafetyMixin {
   @failingTest
   test_downward() async {
     await resolveTestCode('''
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/map_literal_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/map_literal_test.dart
index d76fc15..c387ddf 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/map_literal_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/map_literal_test.dart
@@ -12,7 +12,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(MapLiteralTest);
-    defineReflectiveTests(MapLiteralWithNnbdTest);
+    defineReflectiveTests(MapLiteralWithNullSafetyTest);
   });
 }
 
@@ -21,88 +21,125 @@
   AstNode setOrMapLiteral(String search) => findNode.setOrMapLiteral(search);
 
   test_context_noTypeArgs_entry_conflictingKey() async {
-    await resolveTestCode('''
+    await assertErrorsInCode('''
 Map<int, int> a = {'a' : 1};
-''');
+''', [
+      error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 19, 3),
+    ]);
     assertType(setOrMapLiteral('{'), 'Map<int, int>');
   }
 
   test_context_noTypeArgs_entry_conflictingValue() async {
-    await resolveTestCode('''
+    await assertErrorsInCode('''
 Map<int, int> a = {1 : 'a'};
-''');
+''', [
+      error(CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 23, 3),
+    ]);
     assertType(setOrMapLiteral('{'), 'Map<int, int>');
   }
 
   test_context_noTypeArgs_entry_noConflict() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 Map<int, int> a = {1 : 2};
 ''');
     assertType(setOrMapLiteral('{'), 'Map<int, int>');
   }
 
-  test_context_noTypeArgs_noEntries() async {
+  test_context_noTypeArgs_noElements_futureOr() async {
     await resolveTestCode('''
+import 'dart:async';
+
+FutureOr<Map<int, String>> f() {
+  return {};
+}
+''');
+    assertType(setOrMapLiteral('{};'), 'Map<int, String>');
+  }
+
+  test_context_noTypeArgs_noEntries() async {
+    await assertNoErrorsInCode('''
 Map<String, String> a = {};
 ''');
     assertType(setOrMapLiteral('{'), 'Map<String, String>');
   }
 
   test_context_noTypeArgs_noEntries_typeParameters() async {
-    await resolveTestCode('''
+    var expectedErrors = expectedErrorsByNullability(
+      nullable: [
+        error(StaticTypeWarningCode.INVALID_ASSIGNMENT, 46, 2),
+      ],
+      legacy: [
+        error(CompileTimeErrorCode.INVALID_CAST_LITERAL_MAP, 46, 2),
+      ],
+    );
+    await assertErrorsInCode('''
 class A<E extends Map<int, String>> {
   E a = {};
 }
-''');
+''', expectedErrors);
     assertType(setOrMapLiteral('{}'), 'Map<dynamic, dynamic>');
   }
 
   test_context_noTypeArgs_noEntries_typeParameters_dynamic() async {
-    await resolveTestCode('''
+    var expectedErrors = expectedErrorsByNullability(
+      nullable: [
+        error(StaticTypeWarningCode.INVALID_ASSIGNMENT, 51, 2),
+      ],
+      legacy: [
+        error(CompileTimeErrorCode.INVALID_CAST_LITERAL_MAP, 51, 2),
+      ],
+    );
+    await assertErrorsInCode('''
 class A<E extends Map<dynamic, dynamic>> {
   E a = {};
 }
-''');
+''', expectedErrors);
     assertType(setOrMapLiteral('{}'), 'Map<dynamic, dynamic>');
   }
 
   test_context_typeArgs_entry_conflictingKey() async {
-    await resolveTestCode('''
+    await assertErrorsInCode('''
 Map<String, String> a = <String, String>{0 : 'a'};
-''');
+''', [
+      error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 41, 1),
+    ]);
     assertType(setOrMapLiteral('{'), 'Map<String, String>');
   }
 
   test_context_typeArgs_entry_conflictingValue() async {
-    await resolveTestCode('''
+    await assertErrorsInCode('''
 Map<String, String> a = <String, String>{'a' : 1};
-''');
+''', [
+      error(CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 47, 1),
+    ]);
     assertType(setOrMapLiteral('{'), 'Map<String, String>');
   }
 
   test_context_typeArgs_entry_noConflict() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 Map<String, String> a = <String, String>{'a' : 'b'};
 ''');
     assertType(setOrMapLiteral('{'), 'Map<String, String>');
   }
 
   test_context_typeArgs_noEntries_conflict() async {
-    await resolveTestCode('''
+    await assertErrorsInCode('''
 Map<String, String> a = <int, int>{};
-''');
+''', [
+      error(StaticTypeWarningCode.INVALID_ASSIGNMENT, 24, 12),
+    ]);
     assertType(setOrMapLiteral('{'), 'Map<int, int>');
   }
 
   test_context_typeArgs_noEntries_noConflict() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 Map<String, String> a = <String, String>{};
 ''');
     assertType(setOrMapLiteral('{'), 'Map<String, String>');
   }
 
   test_default_constructor_param_typed() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 class C {
   const C({x = const <String, int>{}});
 }
@@ -110,7 +147,7 @@
   }
 
   test_default_constructor_param_untyped() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 class C {
   const C({x = const {}});
 }
@@ -118,60 +155,60 @@
   }
 
   test_noContext_noTypeArgs_expressions_lubOfIntAndString() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = {1 : 'a', 2 : 'b', 3 : 'c'};
 ''');
     assertType(setOrMapLiteral('{'), 'Map<int, String>');
   }
 
   test_noContext_noTypeArgs_expressions_lubOfNumAndNum() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = {1 : 2, 3.0 : 4, 5 : 6.0};
 ''');
     assertType(setOrMapLiteral('{'), 'Map<num, num>');
   }
 
   test_noContext_noTypeArgs_expressions_lubOfObjectAndObject() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = {1 : '1', '2' : 2, 3 : '3'};
 ''');
     assertType(setOrMapLiteral('{'), 'Map<Object, Object>');
   }
 
   test_noContext_noTypeArgs_forEachWithDeclaration() async {
-    await resolveTestCode('''
-List<int> c;
+    await assertNoErrorsInCode('''
+List<int> c = [];
 var a = {for (int e in c) e : e * 2};
 ''');
     assertType(setOrMapLiteral('{for'), 'Map<int, int>');
   }
 
   test_noContext_noTypeArgs_forEachWithIdentifier() async {
-    await resolveTestCode('''
-List<int> c;
-int b;
+    await assertNoErrorsInCode('''
+List<int> c = [];
+int b = 0;
 var a = {for (b in c) b * 2 : b};
 ''');
     assertType(setOrMapLiteral('{for'), 'Map<int, int>');
   }
 
   test_noContext_noTypeArgs_forWithDeclaration() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = {for (var i = 0; i < 2; i++) i : i * 2};
 ''');
     assertType(setOrMapLiteral('{for'), 'Map<int, int>');
   }
 
   test_noContext_noTypeArgs_forWithExpression() async {
-    await resolveTestCode('''
-int i;
+    await assertNoErrorsInCode('''
+int i = 0;
 var a = {for (i = 0; i < 2; i++) i * 2 : i};
 ''');
     assertType(setOrMapLiteral('{for'), 'Map<int, int>');
   }
 
   test_noContext_noTypeArgs_if() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 bool c = true;
 var a = {if (c) 1 : 2};
 ''');
@@ -179,7 +216,7 @@
   }
 
   test_noContext_noTypeArgs_ifElse_lubOfIntAndInt() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 bool c = true;
 var a = {if (c) 1 : 3 else 2 : 4};
 ''');
@@ -187,7 +224,7 @@
   }
 
   test_noContext_noTypeArgs_ifElse_lubOfNumAndNum() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 bool c = true;
 var a = {if (c) 1.0 : 3 else 2 : 4.0};
 ''');
@@ -195,7 +232,7 @@
   }
 
   test_noContext_noTypeArgs_ifElse_lubOfObjectAndObject() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 bool c = true;
 var a = {if (c) 1 : '1' else '2': 2 };
 ''');
@@ -203,22 +240,22 @@
   }
 
   test_noContext_noTypeArgs_noEntries() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = {};
 ''');
     assertType(setOrMapLiteral('{'), 'Map<dynamic, dynamic>');
   }
 
   test_noContext_noTypeArgs_spread() async {
-    await resolveTestCode('''
-Map<int, int> c;
+    await assertNoErrorsInCode('''
+Map<int, int> c = {};
 var a = {...c};
 ''');
     assertType(setOrMapLiteral('{...'), 'Map<int, int>');
   }
 
   test_noContext_noTypeArgs_spread_dynamic() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var c = {};
 var a = {...c};
 ''');
@@ -226,37 +263,38 @@
   }
 
   test_noContext_noTypeArgs_spread_lubOfIntAndInt() async {
-    await resolveTestCode('''
-Map<int, int> c;
-Map<int, int> b;
+    await assertNoErrorsInCode('''
+Map<int, int> c = {};
+Map<int, int> b = {};
 var a = {...b, ...c};
 ''');
     assertType(setOrMapLiteral('{...'), 'Map<int, int>');
   }
 
   test_noContext_noTypeArgs_spread_lubOfNumAndNum() async {
-    await resolveTestCode('''
-Map<int, double> c;
-Map<double, int> b;
+    await assertNoErrorsInCode('''
+Map<int, double> c = {};
+Map<double, int> b = {};
 var a = {...b, ...c};
 ''');
     assertType(setOrMapLiteral('{...'), 'Map<num, num>');
   }
 
   test_noContext_noTypeArgs_spread_lubOfObjectObject() async {
-    await resolveTestCode('''
-Map<int, int> c;
-Map<String, String> b;
+    await assertNoErrorsInCode('''
+Map<int, int> c = {};
+Map<String, String> b = {};
 var a = {...b, ...c};
 ''');
     assertType(setOrMapLiteral('{...'), 'Map<Object, Object>');
   }
 
   test_noContext_noTypeArgs_spread_mixin() async {
-    await resolveTestCode(r'''
+    await assertNoErrorsInCode(r'''
 mixin M on Map<String, int> {}
-main() {
-  M m1;
+
+main(M m1) {
+  // ignore:unused_local_variable
   var m2 = {...m1};
 }
 ''');
@@ -264,99 +302,126 @@
   }
 
   test_noContext_noTypeArgs_spread_nestedInIf_oneAmbiguous() async {
-    await resolveTestCode('''
-Map<String, int> c;
+    await assertNoErrorsInCode('''
+Map<String, int> c = {};
 dynamic d;
 var a = {if (0 < 1) ...c else ...d};
 ''');
-    assertType(setOrMapLiteral('{'), 'Map<dynamic, dynamic>');
+    assertType(setOrMapLiteral('{if'), 'Map<dynamic, dynamic>');
   }
 
   test_noContext_noTypeArgs_spread_nullAware_nullAndNotNull_map() async {
     await assertNoErrorsInCode('''
-f() async {
-  var futureNull = Future.value(null);
-  var a = {1 : 'a', ...?await futureNull, 2 : 'b'};
-  a;
+void f(Null a) {
+  // ignore:unused_local_variable
+  var v = {1 : 'a', ...?a, 2 : 'b'};
 }
 ''');
-    assertType(
-      setOrMapLiteral('{1'),
-      typeStringByNullability(
-        nullable: 'Map<int?, String?>',
-        legacy: 'Map<int, String>',
-      ),
-    );
+    assertType(setOrMapLiteral('{1'), 'Map<int, String>');
   }
 
   test_noContext_noTypeArgs_spread_nullAware_nullAndNotNull_set() async {
     await assertNoErrorsInCode('''
-f() async {
-  var futureNull = Future.value(null);
-  var a = {1, ...?await futureNull, 2};
-  a;
+void f(Null a) {
+  // ignore:unused_local_variable
+  var v = {1, ...?a, 2};
 }
 ''');
-    assertType(
-      setOrMapLiteral('{1'),
-      typeStringByNullability(
-        nullable: 'Set<int?>',
-        legacy: 'Set<int>',
-      ),
-    );
+    assertType(setOrMapLiteral('{1'), 'Set<int>');
   }
 
   test_noContext_noTypeArgs_spread_nullAware_onlyNull() async {
     await assertErrorsInCode('''
-f() async {
-  var futureNull = Future.value(null);
-  var a = {...?await futureNull};
-  a;
+void f(Null a) {
+  // ignore:unused_local_variable
+  var v = {...?a};
 }
 ''', [
-      error(CompileTimeErrorCode.AMBIGUOUS_SET_OR_MAP_LITERAL_EITHER, 61, 22),
+      error(CompileTimeErrorCode.AMBIGUOUS_SET_OR_MAP_LITERAL_EITHER, 61, 7),
+    ]);
+    assertType(setOrMapLiteral('{...'), 'dynamic');
+  }
+
+  test_noContext_noTypeArgs_spread_typeParameter_implementsMap() async {
+    await assertNoErrorsInCode('''
+void f<T extends Map<int, String>>(T a) {
+  // ignore:unused_local_variable
+  var v = {...a};
+}
+''');
+    assertType(setOrMapLiteral('{...'), 'Map<int, String>');
+  }
+
+  /// TODO(scheglov) Should report [CompileTimeErrorCode.NOT_ITERABLE_SPREAD].
+  test_noContext_noTypeArgs_spread_typeParameter_notImplementsMap() async {
+    await assertErrorsInCode('''
+void f<T extends num>(T a) {
+  // ignore:unused_local_variable
+  var v = {...a};
+}
+''', [
+      error(CompileTimeErrorCode.AMBIGUOUS_SET_OR_MAP_LITERAL_EITHER, 73, 6),
+    ]);
+    assertType(setOrMapLiteral('{...'), 'dynamic');
+  }
+
+  /// TODO(scheglov) Should report [CompileTimeErrorCode.NOT_ITERABLE_SPREAD].
+  test_noContext_noTypeArgs_spread_typeParameter_notImplementsMap2() async {
+    await assertErrorsInCode('''
+void f<T extends num>(T a) {
+  // ignore:unused_local_variable
+  var v = {...a, 0: 1};
+}
+''', [
+      error(CompileTimeErrorCode.AMBIGUOUS_SET_OR_MAP_LITERAL_EITHER, 73, 12),
     ]);
     assertType(setOrMapLiteral('{...'), 'dynamic');
   }
 
   test_noContext_typeArgs_entry_conflictingKey() async {
-    await resolveTestCode('''
+    await assertErrorsInCode('''
 var a = <String, int>{1 : 2};
-''');
+''', [
+      error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 22, 1),
+    ]);
     assertType(setOrMapLiteral('{'), 'Map<String, int>');
   }
 
   test_noContext_typeArgs_entry_conflictingValue() async {
-    await resolveTestCode('''
+    await assertErrorsInCode('''
 var a = <String, int>{'a' : 'b'};
-''');
+''', [
+      error(CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 28, 3),
+    ]);
     assertType(setOrMapLiteral('{'), 'Map<String, int>');
   }
 
   test_noContext_typeArgs_entry_noConflict() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = <int, int>{1 : 2};
 ''');
     assertType(setOrMapLiteral('{'), 'Map<int, int>');
   }
 
   test_noContext_typeArgs_expression_conflictingElement() async {
-    await resolveTestCode('''
+    await assertErrorsInCode('''
 var a = <int, String>{1};
-''');
+''', [
+      error(CompileTimeErrorCode.EXPRESSION_IN_MAP, 22, 1),
+    ]);
     assertType(setOrMapLiteral('{'), 'Map<int, String>');
   }
 
   @failingTest
   test_noContext_typeArgs_expressions_conflictingTypeArgs() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = <int>{1 : 2, 3 : 4};
 ''');
     assertType(setOrMapLiteral('{'), 'Map<int, int>');
   }
 
   test_noContext_typeArgs_noEntries() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = <num, String>{};
 ''');
     assertType(setOrMapLiteral('{'), 'Map<num, String>');
@@ -364,9 +429,10 @@
 }
 
 @reflectiveTest
-class MapLiteralWithNnbdTest extends MapLiteralTest with WithNullSafetyMixin {
+class MapLiteralWithNullSafetyTest extends MapLiteralTest
+    with WithNullSafetyMixin {
   test_context_noTypeArgs_noEntries_typeParameterNullable() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 class C<T extends Object?> {
   Map<String, T> a = {}; // 1
   Map<String, T>? b = {}; // 2
@@ -397,4 +463,78 @@
       type: 'Map<int, double>?',
     );
   }
+
+  test_noContext_noTypeArgs_spread_never() async {
+    await assertErrorsInCode('''
+void f(Never a, bool b) async {
+  // ignore:unused_local_variable
+  var v = {...a, if (b) throw 0: throw 0};
+}
+''', [
+      error(HintCode.DEAD_CODE, 87, 21),
+    ]);
+    assertType(setOrMapLiteral('{...'), 'Map<Never, Never>');
+  }
+
+  test_noContext_noTypeArgs_spread_nullAware_never() async {
+    await assertErrorsInCode('''
+void f(Never a, bool b) async {
+  // ignore:unused_local_variable
+  var v = {...?a, if (b) throw 0: throw 0};
+}
+''', [
+      error(StaticWarningCode.INVALID_NULL_AWARE_OPERATOR, 77, 4),
+      error(HintCode.DEAD_CODE, 88, 21),
+    ]);
+    assertType(setOrMapLiteral('{...'), 'Map<Never, Never>');
+  }
+
+  test_noContext_noTypeArgs_spread_nullAware_null() async {
+    await assertErrorsInCode('''
+void f(Null a, bool b) async {
+  // ignore:unused_local_variable
+  var v = {...?a, if (b) throw 0: throw 0};
+}
+''', [
+      error(HintCode.DEAD_CODE, 99, 9),
+    ]);
+    assertType(setOrMapLiteral('{...'), 'Map<Never, Never>');
+  }
+
+  test_noContext_noTypeArgs_spread_nullAware_typeParameter_never() async {
+    await assertErrorsInCode('''
+void f<T extends Never>(T a, bool b) async {
+  // ignore:unused_local_variable
+  var v = {...?a, if (b) throw 0: throw 0};
+}
+''', [
+      error(StaticWarningCode.INVALID_NULL_AWARE_OPERATOR, 90, 4),
+      error(HintCode.DEAD_CODE, 101, 21),
+    ]);
+    assertType(setOrMapLiteral('{...'), 'Map<Never, Never>');
+  }
+
+  test_noContext_noTypeArgs_spread_nullAware_typeParameter_null() async {
+    await assertErrorsInCode('''
+void f<T extends Null>(T a, bool b) async {
+  // ignore:unused_local_variable
+  var v = {...?a, if (b) throw 0: throw 0};
+}
+''', [
+      error(HintCode.DEAD_CODE, 112, 9),
+    ]);
+    assertType(setOrMapLiteral('{...'), 'Map<Never, Never>');
+  }
+
+  test_noContext_noTypeArgs_spread_typeParameter_never() async {
+    await assertErrorsInCode('''
+void f<T extends Never>(T a, bool b) async {
+  // ignore:unused_local_variable
+  var v = {...a, if (b) throw 0: throw 0};
+}
+''', [
+      error(HintCode.DEAD_CODE, 100, 21),
+    ]);
+    assertType(setOrMapLiteral('{...'), 'Map<Never, Never>');
+  }
 }
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/set_literal_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/set_literal_test.dart
index 3a6ef21..9a25ca0 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/set_literal_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/set_literal_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../driver_resolution.dart';
@@ -11,7 +12,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(SetLiteralTest);
-    defineReflectiveTests(SetLiteralWithNnbdTest);
+    defineReflectiveTests(SetLiteralWithNullSafetyTest);
   });
 }
 
@@ -20,135 +21,168 @@
   AstNode setLiteral(String search) => findNode.setOrMapLiteral(search);
 
   test_context_noTypeArgs_expression_conflict() async {
-    await resolveTestCode('''
+    await assertErrorsInCode('''
 Set<int> a = {'a'};
-''');
+''', [
+      error(CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 14, 3),
+    ]);
     assertType(setLiteral('{'), 'Set<int>');
   }
 
   test_context_noTypeArgs_expression_noConflict() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 Set<int> a = {1};
 ''');
     assertType(setLiteral('{'), 'Set<int>');
   }
 
   test_context_noTypeArgs_noElements() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 Set<String> a = {};
 ''');
     assertType(setLiteral('{'), 'Set<String>');
   }
 
-  test_context_noTypeArgs_noElements_typeParameter() async {
+  test_context_noTypeArgs_noElements_futureOr() async {
     await resolveTestCode('''
+import 'dart:async';
+
+FutureOr<Set<int>> f() {
+  return {};
+}
+''');
+    assertType(setLiteral('{};'), 'Set<int>');
+  }
+
+  test_context_noTypeArgs_noElements_typeParameter() async {
+    var expectedErrors = expectedErrorsByNullability(
+      nullable: [
+        error(StaticTypeWarningCode.INVALID_ASSIGNMENT, 38, 2),
+      ],
+      legacy: [
+        error(CompileTimeErrorCode.INVALID_CAST_LITERAL_SET, 38, 2),
+      ],
+    );
+    await assertErrorsInCode('''
 class A<E extends Set<int>> {
   E a = {};
 }
-''');
+''', expectedErrors);
     assertType(setLiteral('{}'), 'Set<dynamic>');
   }
 
   test_context_noTypeArgs_noElements_typeParameter_dynamic() async {
-    await resolveTestCode('''
+    var expectedErrors = expectedErrorsByNullability(
+      nullable: [
+        error(StaticTypeWarningCode.INVALID_ASSIGNMENT, 42, 2),
+      ],
+      legacy: [
+        error(CompileTimeErrorCode.INVALID_CAST_LITERAL_SET, 42, 2),
+      ],
+    );
+    await assertErrorsInCode('''
 class A<E extends Set<dynamic>> {
   E a = {};
 }
-''');
+''', expectedErrors);
     assertType(setLiteral('{}'), 'Set<dynamic>');
   }
 
   test_context_typeArgs_expression_conflictingExpression() async {
-    await resolveTestCode('''
+    await assertErrorsInCode('''
 Set<String> a = <String>{0};
-''');
+''', [
+      error(CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 25, 1),
+    ]);
     assertType(setLiteral('{'), 'Set<String>');
   }
 
   @failingTest
   test_context_typeArgs_expression_conflictingTypeArgs() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 Set<String> a = <int>{'a'};
 ''');
     assertType(setLiteral('{'), 'Set<String>');
   }
 
   test_context_typeArgs_expression_noConflict() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 Set<String> a = <String>{'a'};
 ''');
     assertType(setLiteral('{'), 'Set<String>');
   }
 
   test_context_typeArgs_noElements_conflict() async {
-    await resolveTestCode('''
+    await assertErrorsInCode('''
 Set<String> a = <int>{};
-''');
+''', [
+      error(StaticTypeWarningCode.INVALID_ASSIGNMENT, 16, 7),
+    ]);
     assertType(setLiteral('{'), 'Set<int>');
   }
 
   test_context_typeArgs_noElements_noConflict() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 Set<String> a = <String>{};
 ''');
     assertType(setLiteral('{'), 'Set<String>');
   }
 
   test_noContext_noTypeArgs_expressions_lubOfInt() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = {1, 2, 3};
 ''');
     assertType(setLiteral('{'), 'Set<int>');
   }
 
   test_noContext_noTypeArgs_expressions_lubOfNum() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = {1, 2.3, 4};
 ''');
     assertType(setLiteral('{'), 'Set<num>');
   }
 
   test_noContext_noTypeArgs_expressions_lubOfObject() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = {1, '2', 3};
 ''');
     assertType(setLiteral('{'), 'Set<Object>');
   }
 
   test_noContext_noTypeArgs_forEachWithDeclaration() async {
-    await resolveTestCode('''
-List<int> c;
+    await assertNoErrorsInCode('''
+List<int> c = [];
 var a = {for (int e in c) e * 2};
 ''');
     assertType(setLiteral('{for'), 'Set<int>');
   }
 
   test_noContext_noTypeArgs_forEachWithIdentifier() async {
-    await resolveTestCode('''
-List<int> c;
-int b;
+    await assertNoErrorsInCode('''
+List<int> c = [];
+int b = 0;
 var a = {for (b in c) b * 2};
 ''');
     assertType(setLiteral('{for'), 'Set<int>');
   }
 
   test_noContext_noTypeArgs_forWithDeclaration() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = {for (var i = 0; i < 2; i++) i * 2};
 ''');
     assertType(setLiteral('{for'), 'Set<int>');
   }
 
   test_noContext_noTypeArgs_forWithExpression() async {
-    await resolveTestCode('''
-int i;
+    await assertNoErrorsInCode('''
+int i = 0;
 var a = {for (i = 0; i < 2; i++) i * 2};
 ''');
     assertType(setLiteral('{for'), 'Set<int>');
   }
 
   test_noContext_noTypeArgs_if() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 bool c = true;
 var a = {if (c) 1};
 ''');
@@ -156,7 +190,7 @@
   }
 
   test_noContext_noTypeArgs_ifElse_lubOfInt() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 bool c = true;
 var a = {if (c) 1 else 2};
 ''');
@@ -164,7 +198,7 @@
   }
 
   test_noContext_noTypeArgs_ifElse_lubOfNum() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 bool c = true;
 var a = {if (c) 1 else 2.3};
 ''');
@@ -172,7 +206,7 @@
   }
 
   test_noContext_noTypeArgs_ifElse_lubOfObject() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 bool c = true;
 var a = {if (c) 1 else '2'};
 ''');
@@ -180,45 +214,46 @@
   }
 
   test_noContext_noTypeArgs_spread() async {
-    await resolveTestCode('''
-List<int> c;
+    await assertNoErrorsInCode('''
+List<int> c = [];
 var a = {...c};
 ''');
     assertType(setLiteral('{...'), 'Set<int>');
   }
 
   test_noContext_noTypeArgs_spread_lubOfInt() async {
-    await resolveTestCode('''
-List<int> c;
-List<int> b;
+    await assertNoErrorsInCode('''
+List<int> c = [];
+List<int> b = [];
 var a = {...b, ...c};
 ''');
     assertType(setLiteral('{...'), 'Set<int>');
   }
 
   test_noContext_noTypeArgs_spread_lubOfNum() async {
-    await resolveTestCode('''
-List<int> c;
-List<double> b;
+    await assertNoErrorsInCode('''
+List<int> c = [];
+List<double> b = [];
 var a = {...b, ...c};
 ''');
     assertType(setLiteral('{...'), 'Set<num>');
   }
 
   test_noContext_noTypeArgs_spread_lubOfObject() async {
-    await resolveTestCode('''
-List<int> c;
-List<String> b;
+    await assertNoErrorsInCode('''
+List<int> c = [];
+List<String> b = [];
 var a = {...b, ...c};
 ''');
     assertType(setLiteral('{...'), 'Set<Object>');
   }
 
   test_noContext_noTypeArgs_spread_mixin() async {
-    await resolveTestCode(r'''
+    await assertNoErrorsInCode(r'''
 mixin S on Set<int> {}
-main() {
-  S s1;
+
+void f(S s1) {
+  // ignore:unused_local_variable
   var s2 = {...s1};
 }
 ''');
@@ -226,34 +261,69 @@
   }
 
   test_noContext_noTypeArgs_spread_nestedInIf_oneAmbiguous() async {
-    await resolveTestCode('''
-List<int> c;
+    await assertNoErrorsInCode('''
+List<int> c = [];
 dynamic d;
 var a = {if (0 < 1) ...c else ...d};
 ''');
-    assertType(setLiteral('{'), 'Set<dynamic>');
+    assertType(setLiteral('{if'), 'Set<dynamic>');
   }
 
-  @failingTest
   test_noContext_noTypeArgs_spread_nullAware_nullAndNotNull() async {
-    await resolveTestCode('''
-f() {
-  var futureNull = Future.value(null);
-  var a = {1, ...?await futureNull, 2};
+    await assertNoErrorsInCode('''
+void f(Null a) {
+  // ignore:unused_local_variable
+  var v = {1, ...?a, 2};
 }
 ''');
     assertType(setLiteral('{1'), 'Set<int>');
   }
 
-  test_noContext_typeArgs_expression_conflict() async {
-    await resolveTestCode('''
-var a = <String>{1};
+  test_noContext_noTypeArgs_spread_typeParameter_implementsIterable() async {
+    await assertNoErrorsInCode('''
+void f<T extends List<int>>(T a) {
+  // ignore:unused_local_variable
+  var v = {...a};
+}
 ''');
+    assertType(setLiteral('{...'), 'Set<int>');
+  }
+
+  test_noContext_noTypeArgs_spread_typeParameter_notImplementsIterable() async {
+    await assertErrorsInCode('''
+void f<T extends num>(T a) {
+  // ignore:unused_local_variable
+  var v = {...a};
+}
+''', [
+      error(CompileTimeErrorCode.AMBIGUOUS_SET_OR_MAP_LITERAL_EITHER, 73, 6),
+    ]);
+    assertType(setLiteral('{...'), 'dynamic');
+  }
+
+  test_noContext_noTypeArgs_spread_typeParameter_notImplementsIterable2() async {
+    await assertErrorsInCode('''
+void f<T extends num>(T a) {
+  // ignore:unused_local_variable
+  var v = {...a, 0};
+}
+''', [
+      error(CompileTimeErrorCode.AMBIGUOUS_SET_OR_MAP_LITERAL_EITHER, 73, 9),
+    ]);
+    assertType(setLiteral('{...'), 'dynamic');
+  }
+
+  test_noContext_typeArgs_expression_conflict() async {
+    await assertErrorsInCode('''
+var a = <String>{1};
+''', [
+      error(CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 17, 1),
+    ]);
     assertType(setLiteral('{'), 'Set<String>');
   }
 
   test_noContext_typeArgs_expression_noConflict() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = <int>{1};
 ''');
     assertType(setLiteral('{'), 'Set<int>');
@@ -261,14 +331,14 @@
 
   @failingTest
   test_noContext_typeArgs_expressions_conflict() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = <int, String>{1, 2};
 ''');
     assertType(setLiteral('{'), 'Set<int>');
   }
 
   test_noContext_typeArgs_noElements() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 var a = <num>{};
 ''');
     assertType(setLiteral('{'), 'Set<num>');
@@ -276,18 +346,19 @@
 }
 
 @reflectiveTest
-class SetLiteralWithNnbdTest extends SetLiteralTest with WithNullSafetyMixin {
+class SetLiteralWithNullSafetyTest extends SetLiteralTest
+    with WithNullSafetyMixin {
   AstNode setOrMapLiteral(String search) => findNode.setOrMapLiteral(search);
 
   test_context_noTypeArgs_noEntries() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 Set<String> a = {};
 ''');
     assertType(setOrMapLiteral('{'), 'Set<String>');
   }
 
   test_context_noTypeArgs_noEntries_typeParameterNullable() async {
-    await resolveTestCode('''
+    await assertNoErrorsInCode('''
 class C<T extends Object?> {
   Set<T> a = {}; // 1
   Set<T>? b = {}; // 2
@@ -300,4 +371,74 @@
     assertType(setOrMapLiteral('{}; // 3'), 'Set<T?>');
     assertType(setOrMapLiteral('{}; // 4'), 'Set<T?>');
   }
+
+  test_noContext_noTypeArgs_spread_never() async {
+    await assertErrorsInCode('''
+void f(Never a, bool b) async {
+  // ignore:unused_local_variable
+  var v = {...a, if (b) throw 0};
+}
+''', [
+      error(HintCode.DEAD_CODE, 87, 12),
+    ]);
+    assertType(setLiteral('{...'), 'Set<Never>');
+  }
+
+  test_noContext_noTypeArgs_spread_nullAware_never() async {
+    await assertErrorsInCode('''
+void f(Never a, bool b) async {
+  // ignore:unused_local_variable
+  var v = {...?a, if (b) throw 0};
+}
+''', [
+      error(StaticWarningCode.INVALID_NULL_AWARE_OPERATOR, 77, 4),
+      error(HintCode.DEAD_CODE, 88, 12),
+    ]);
+    assertType(setLiteral('{...'), 'Set<Never>');
+  }
+
+  test_noContext_noTypeArgs_spread_nullAware_null() async {
+    await assertNoErrorsInCode('''
+void f(Null a, bool b) async {
+  // ignore:unused_local_variable
+  var v = {...?a, if (b) throw 0};
+}
+''');
+    assertType(setLiteral('{...'), 'Set<Never>');
+  }
+
+  test_noContext_noTypeArgs_spread_nullAware_typeParameter_never() async {
+    await assertErrorsInCode('''
+void f<T extends Never>(T a, bool b) async {
+  // ignore:unused_local_variable
+  var v = {...?a, if (b) throw 0};
+}
+''', [
+      error(StaticWarningCode.INVALID_NULL_AWARE_OPERATOR, 90, 4),
+      error(HintCode.DEAD_CODE, 101, 12),
+    ]);
+    assertType(setLiteral('{...'), 'Set<Never>');
+  }
+
+  test_noContext_noTypeArgs_spread_nullAware_typeParameter_null() async {
+    await assertNoErrorsInCode('''
+void f<T extends Null>(T a, bool b) async {
+  // ignore:unused_local_variable
+  var v = {...?a, if (b) throw 0};
+}
+''');
+    assertType(setLiteral('{...'), 'Set<Never>');
+  }
+
+  test_noContext_noTypeArgs_spread_typeParameter_never() async {
+    await assertErrorsInCode('''
+void f<T extends Never>(T a, bool b) async {
+  // ignore:unused_local_variable
+  var v = {...a, if (b) throw 0};
+}
+''', [
+      error(HintCode.DEAD_CODE, 100, 12),
+    ]);
+    assertType(setLiteral('{...'), 'Set<Never>');
+  }
 }
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/statements_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/statements_test.dart
index 8c83c92..aa8934f 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/statements_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/statements_test.dart
@@ -9,16 +9,17 @@
 
 main() {
   defineReflectiveSuite(() {
-    defineReflectiveTests(AssertWithNnbdTest);
-    defineReflectiveTests(DoWithNnbdTest);
-    defineReflectiveTests(ForWithNnbdTest);
-    defineReflectiveTests(IfWithNnbdTest);
-    defineReflectiveTests(WhileWithNnbdTest);
+    defineReflectiveTests(AssertWithNullSafetyTest);
+    defineReflectiveTests(DoWithNullSafetyTest);
+    defineReflectiveTests(ForWithNullSafetyTest);
+    defineReflectiveTests(IfWithNullSafetyTest);
+    defineReflectiveTests(WhileWithNullSafetyTest);
   });
 }
 
 @reflectiveTest
-class AssertWithNnbdTest extends DriverResolutionTest with WithNullSafetyMixin {
+class AssertWithNullSafetyTest extends DriverResolutionTest
+    with WithNullSafetyMixin {
   test_downward() async {
     await resolveTestCode('''
 void f() {
@@ -31,7 +32,8 @@
 }
 
 @reflectiveTest
-class DoWithNnbdTest extends DriverResolutionTest with WithNullSafetyMixin {
+class DoWithNullSafetyTest extends DriverResolutionTest
+    with WithNullSafetyMixin {
   test_downward() async {
     await resolveTestCode('''
 void f() {
@@ -44,7 +46,8 @@
 }
 
 @reflectiveTest
-class ForWithNnbdTest extends DriverResolutionTest with WithNullSafetyMixin {
+class ForWithNullSafetyTest extends DriverResolutionTest
+    with WithNullSafetyMixin {
   test_awaitForIn_dynamic_downward() async {
     await resolveTestCode('''
 void f() async {
@@ -100,7 +103,8 @@
 }
 
 @reflectiveTest
-class IfWithNnbdTest extends DriverResolutionTest with WithNullSafetyMixin {
+class IfWithNullSafetyTest extends DriverResolutionTest
+    with WithNullSafetyMixin {
   test_downward() async {
     await resolveTestCode('''
 void f() {
@@ -113,7 +117,8 @@
 }
 
 @reflectiveTest
-class WhileWithNnbdTest extends DriverResolutionTest with WithNullSafetyMixin {
+class WhileWithNullSafetyTest extends DriverResolutionTest
+    with WithNullSafetyMixin {
   test_downward() async {
     await resolveTestCode('''
 void f() {
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/throw_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/throw_test.dart
index e0e5e47..ad8c22fa 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/throw_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/throw_test.dart
@@ -9,12 +9,13 @@
 
 main() {
   defineReflectiveSuite(() {
-    defineReflectiveTests(ThrowWithNnbdTest);
+    defineReflectiveTests(ThrowWithNullSafetyTest);
   });
 }
 
 @reflectiveTest
-class ThrowWithNnbdTest extends DriverResolutionTest with WithNullSafetyMixin {
+class ThrowWithNullSafetyTest extends DriverResolutionTest
+    with WithNullSafetyMixin {
   test_downward() async {
     await resolveTestCode('''
 void f() {
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/type_test_expressions_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/type_test_expressions_test.dart
index 35a0efc..649f577 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/type_test_expressions_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/type_test_expressions_test.dart
@@ -10,9 +10,9 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(IsNotTest);
-    defineReflectiveTests(IsNotWithNnbdTest);
+    defineReflectiveTests(IsNotWithNullSafetyTest);
     defineReflectiveTests(IsTest);
-    defineReflectiveTests(IsWithNnbdTest);
+    defineReflectiveTests(IsWithNullSafetyTest);
   });
 }
 
@@ -30,7 +30,7 @@
 }
 
 @reflectiveTest
-class IsNotWithNnbdTest extends IsNotTest with WithNullSafetyMixin {}
+class IsNotWithNullSafetyTest extends IsNotTest with WithNullSafetyMixin {}
 
 @reflectiveTest
 class IsTest extends DriverResolutionTest {
@@ -46,4 +46,4 @@
 }
 
 @reflectiveTest
-class IsWithNnbdTest extends IsTest with WithNullSafetyMixin {}
+class IsWithNullSafetyTest extends IsTest with WithNullSafetyMixin {}
diff --git a/pkg/analyzer/test/src/dart/resolution/type_name_test.dart b/pkg/analyzer/test/src/dart/resolution/type_name_test.dart
index e907e3c..ccce771 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_name_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_name_test.dart
@@ -12,7 +12,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(TypeNameResolutionTest);
-    defineReflectiveTests(TypeNameResolutionWithNnbdTest);
+    defineReflectiveTests(TypeNameResolutionWithNullSafetyTest);
   });
 }
 
@@ -198,7 +198,7 @@
   new math.A();
 }
 ''', [
-      error(StaticWarningCode.NEW_WITH_NON_TYPE, 49, 1),
+      error(CompileTimeErrorCode.NEW_WITH_NON_TYPE, 49, 1),
     ]);
 
     assertTypeName(
@@ -231,7 +231,7 @@
   new A();
 }
 ''', [
-      error(StaticWarningCode.NEW_WITH_NON_TYPE, 15, 1),
+      error(CompileTimeErrorCode.NEW_WITH_NON_TYPE, 15, 1),
     ]);
 
     assertTypeName(
@@ -255,7 +255,7 @@
 }
 
 @reflectiveTest
-class TypeNameResolutionWithNnbdTest extends TypeNameResolutionTest
+class TypeNameResolutionWithNullSafetyTest extends TypeNameResolutionTest
     with WithNullSafetyMixin {
   ImportFindElement get import_a {
     return findElement.importFind('package:test/a.dart');
diff --git a/pkg/analyzer/test/src/diagnostics/abstract_class_member_test.dart b/pkg/analyzer/test/src/diagnostics/abstract_class_member_test.dart
index 482f4f7..dd78820 100644
--- a/pkg/analyzer/test/src/diagnostics/abstract_class_member_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/abstract_class_member_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(AbstractClassMemberTest);
-    defineReflectiveTests(AbstractClassMemberTest_NNBD);
+    defineReflectiveTests(AbstractClassMemberWithNullSafetyTest);
   });
 }
 
@@ -55,5 +55,5 @@
 }
 
 @reflectiveTest
-class AbstractClassMemberTest_NNBD extends AbstractClassMemberTest
+class AbstractClassMemberWithNullSafetyTest extends AbstractClassMemberTest
     with WithNullSafetyMixin {}
diff --git a/pkg/analyzer/test/src/diagnostics/ambiguous_import_test.dart b/pkg/analyzer/test/src/diagnostics/ambiguous_import_test.dart
index 9a7fff4..888dabe 100644
--- a/pkg/analyzer/test/src/diagnostics/ambiguous_import_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/ambiguous_import_test.dart
@@ -31,7 +31,7 @@
 import 'lib1.dart';
 import 'lib2.dart';
 f(p) {p as N;}''', [
-      error(StaticWarningCode.AMBIGUOUS_IMPORT, 51, 1),
+      error(CompileTimeErrorCode.AMBIGUOUS_IMPORT, 51, 1),
     ]);
   }
 
@@ -42,7 +42,7 @@
 
 Future v;
 ''', [
-      error(StaticWarningCode.AMBIGUOUS_IMPORT, 44, 6),
+      error(CompileTimeErrorCode.AMBIGUOUS_IMPORT, 44, 6),
     ]);
   }
 
@@ -57,7 +57,7 @@
 import 'lib1.dart';
 import 'lib2.dart';
 class A extends N {}''', [
-      error(StaticWarningCode.AMBIGUOUS_IMPORT, 56, 1),
+      error(CompileTimeErrorCode.AMBIGUOUS_IMPORT, 56, 1),
       error(CompileTimeErrorCode.EXTENDS_NON_CLASS, 56, 1),
     ]);
   }
@@ -74,7 +74,7 @@
 import 'lib2.dart';
 class A implements N {}''', [
       error(CompileTimeErrorCode.IMPLEMENTS_NON_CLASS, 59, 1),
-      error(StaticWarningCode.AMBIGUOUS_IMPORT, 59, 1),
+      error(CompileTimeErrorCode.AMBIGUOUS_IMPORT, 59, 1),
     ]);
   }
 
@@ -105,7 +105,7 @@
     GatheringErrorListener()
       ..addAll(partResult.errors)
       ..assertErrors([
-        error(StaticWarningCode.AMBIGUOUS_IMPORT, 29, 1),
+        error(CompileTimeErrorCode.AMBIGUOUS_IMPORT, 29, 1),
         error(CompileTimeErrorCode.EXTENDS_NON_CLASS, 29, 1),
       ]);
   }
@@ -122,7 +122,7 @@
 import 'lib1.dart';
 import 'lib2.dart';
 f() {new N();}''', [
-      error(StaticWarningCode.AMBIGUOUS_IMPORT, 60, 1),
+      error(CompileTimeErrorCode.AMBIGUOUS_IMPORT, 60, 1),
     ]);
   }
 
@@ -137,7 +137,7 @@
 import 'lib1.dart';
 import 'lib2.dart';
 f(p) {p is N;}''', [
-      error(StaticWarningCode.AMBIGUOUS_IMPORT, 51, 1),
+      error(CompileTimeErrorCode.AMBIGUOUS_IMPORT, 51, 1),
     ]);
   }
 
@@ -152,7 +152,7 @@
 import 'lib1.dart';
 import 'lib2.dart';
 g() { N.FOO; }''', [
-      error(StaticWarningCode.AMBIGUOUS_IMPORT, 46, 1),
+      error(CompileTimeErrorCode.AMBIGUOUS_IMPORT, 46, 1),
     ]);
   }
 
@@ -175,14 +175,14 @@
   N m() { return null; }
 }
 class B<T extends N> {}''', [
-      error(StaticWarningCode.AMBIGUOUS_IMPORT, 48, 1),
-      error(StaticWarningCode.AMBIGUOUS_IMPORT, 53, 1),
-      error(StaticWarningCode.AMBIGUOUS_IMPORT, 59, 1),
-      error(StaticWarningCode.AMBIGUOUS_IMPORT, 63, 1),
-      error(StaticWarningCode.AMBIGUOUS_IMPORT, 72, 1),
+      error(CompileTimeErrorCode.AMBIGUOUS_IMPORT, 48, 1),
+      error(CompileTimeErrorCode.AMBIGUOUS_IMPORT, 53, 1),
+      error(CompileTimeErrorCode.AMBIGUOUS_IMPORT, 59, 1),
+      error(CompileTimeErrorCode.AMBIGUOUS_IMPORT, 63, 1),
+      error(CompileTimeErrorCode.AMBIGUOUS_IMPORT, 72, 1),
       error(HintCode.UNUSED_LOCAL_VARIABLE, 74, 1),
-      error(StaticWarningCode.AMBIGUOUS_IMPORT, 106, 1),
-      error(StaticWarningCode.AMBIGUOUS_IMPORT, 149, 1),
+      error(CompileTimeErrorCode.AMBIGUOUS_IMPORT, 106, 1),
+      error(CompileTimeErrorCode.AMBIGUOUS_IMPORT, 149, 1),
     ]);
   }
 
@@ -198,7 +198,7 @@
 import 'lib2.dart';
 class A<T> {}
 A<N> f() { return null; }''', [
-      error(StaticWarningCode.AMBIGUOUS_IMPORT, 56, 1),
+      error(CompileTimeErrorCode.AMBIGUOUS_IMPORT, 56, 1),
     ]);
   }
 
@@ -214,7 +214,7 @@
 import 'lib2.dart';
 class A<T> {}
 f() {new A<N>();}''', [
-      error(StaticWarningCode.AMBIGUOUS_IMPORT, 65, 1),
+      error(CompileTimeErrorCode.AMBIGUOUS_IMPORT, 65, 1),
     ]);
   }
 
@@ -230,7 +230,7 @@
 import 'lib2.dart';
 f() { g(v); }
 g(p) {}''', [
-      error(StaticWarningCode.AMBIGUOUS_IMPORT, 48, 1),
+      error(CompileTimeErrorCode.AMBIGUOUS_IMPORT, 48, 1),
     ]);
   }
 
@@ -245,7 +245,7 @@
 import 'lib1.dart';
 import 'lib2.dart';
 f() { v = 0; }''', [
-      error(StaticWarningCode.AMBIGUOUS_IMPORT, 46, 1),
+      error(CompileTimeErrorCode.AMBIGUOUS_IMPORT, 46, 1),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/ambiguous_set_or_map_literal_test.dart b/pkg/analyzer/test/src/diagnostics/ambiguous_set_or_map_literal_test.dart
index 9c0e858..faf2c9e 100644
--- a/pkg/analyzer/test/src/diagnostics/ambiguous_set_or_map_literal_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/ambiguous_set_or_map_literal_test.dart
@@ -11,9 +11,9 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(AmbiguousSetOrMapLiteralBothTest);
-    defineReflectiveTests(AmbiguousSetOrMapLiteralBothWithNnbdTest);
+    defineReflectiveTests(AmbiguousSetOrMapLiteralBothWithNullSafetyTest);
     defineReflectiveTests(AmbiguousSetOrMapLiteralEitherTest);
-    defineReflectiveTests(AmbiguousSetOrMapLiteralEitherWithNnbdTest);
+    defineReflectiveTests(AmbiguousSetOrMapLiteralEitherWithNullSafetyTest);
   });
 }
 
@@ -63,7 +63,7 @@
 }
 
 @reflectiveTest
-class AmbiguousSetOrMapLiteralBothWithNnbdTest
+class AmbiguousSetOrMapLiteralBothWithNullSafetyTest
     extends AmbiguousSetOrMapLiteralBothTest with WithNullSafetyMixin {
   test_map_keyNonNullable_valueNullable() async {
     await assertNoErrorsInCode('''
@@ -131,5 +131,5 @@
 }
 
 @reflectiveTest
-class AmbiguousSetOrMapLiteralEitherWithNnbdTest
+class AmbiguousSetOrMapLiteralEitherWithNullSafetyTest
     extends AmbiguousSetOrMapLiteralEitherTest with WithNullSafetyMixin {}
diff --git a/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_test.dart b/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_test.dart
index f8c9440..373f343 100644
--- a/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_test.dart
@@ -12,7 +12,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ArgumentTypeNotAssignableTest);
-    defineReflectiveTests(ArgumentTypeNotAssignableTest_NNBD);
+    defineReflectiveTests(ArgumentTypeNotAssignableWithNullSafetyTest);
   });
 }
 
@@ -29,7 +29,7 @@
 f() {
   g((_A a) {});
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 42, 9),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 42, 9),
     ]);
     // The name _A is private to the library it's defined in, so this is a type
     // mismatch. Furthermore, the error message should mention both _A and the
@@ -46,7 +46,7 @@
 @A.fromInt('0')
 main() {
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 49, 3),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 49, 3),
     ]);
   }
 
@@ -58,7 +58,7 @@
 @A('0')
 main() {
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 33, 3),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 33, 3),
     ]);
   }
 
@@ -70,7 +70,7 @@
 f(A a) {
   a + '0';
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 50, 3),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 50, 3),
     ]);
   }
 
@@ -83,7 +83,7 @@
 void main() {
   f().call(3);
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 110, 1),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 110, 1),
     ]);
   }
 
@@ -101,7 +101,7 @@
   A a = new A();
   a..  ma().mb(0);
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 186, 1),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 186, 1),
     ]);
   }
 
@@ -117,7 +117,7 @@
           CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
           52,
           2),
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 52, 2),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 52, 2),
     ]);
   }
 
@@ -129,7 +129,7 @@
 class B extends A {
   const B() : super(42);
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 73, 2),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 73, 2),
     ]);
   }
 
@@ -160,7 +160,7 @@
 main() {
   (int x) {} ('');
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 23, 2),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 23, 2),
     ]);
   }
 
@@ -174,7 +174,7 @@
   n(void f(int i)) {}
 }
 ''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 31, 7),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 31, 7),
     ]);
   }
 
@@ -186,7 +186,7 @@
 f(A a) {
   a['0'];
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 60, 3),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 60, 3),
     ]);
   }
 
@@ -199,7 +199,7 @@
 f(A a) {
   a['0'] += 0;
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 103, 3),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 103, 3),
     ]);
   }
 
@@ -211,7 +211,7 @@
 f(A a) {
   a['0'] = 0;
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 65, 3),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 65, 3),
     ]);
   }
 
@@ -224,7 +224,7 @@
 f(A a) {
   a['0'] += 0;
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 103, 3),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 103, 3),
     ]);
   }
 
@@ -236,7 +236,7 @@
 }
 n(int i) {}
 ''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 24, 1),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 24, 1),
     ]);
   }
 
@@ -248,7 +248,7 @@
 f(A a) {
   a('0');
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 42, 3),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 42, 3),
     ]);
   }
 
@@ -261,7 +261,7 @@
   A a = new A();
   a('0');
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 59, 3),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 59, 3),
     ]);
   }
 
@@ -270,7 +270,7 @@
 a(b(int p)) {
   b('0');
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 18, 3),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 18, 3),
     ]);
   }
 
@@ -281,7 +281,7 @@
     f(v);
   }
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 41, 1),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 41, 1),
     ]);
   }
 
@@ -317,7 +317,7 @@
 f(A<String> a) {
   a.m(1);
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 50, 1),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 50, 1),
     ]);
   }
 
@@ -327,7 +327,7 @@
 main() {
   f(p: 42);
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 35, 5),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 35, 5),
     ]);
   }
 
@@ -337,7 +337,7 @@
 main() {
   f(42);
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 35, 2),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 35, 2),
     ]);
   }
 
@@ -347,7 +347,7 @@
 main() {
   f(42);
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 28, 2),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 28, 2),
     ]);
   }
 
@@ -357,7 +357,7 @@
 f(A<int> a) {
   a('1');
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 37, 3),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 37, 3),
     ]);
   }
 
@@ -369,7 +369,7 @@
   A a = getA();
   a('1');
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 69, 3),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 69, 3),
     ]);
   }
 
@@ -379,7 +379,7 @@
 f(A a) {
   a('1');
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 31, 3),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 31, 3),
     ]);
   }
 
@@ -391,7 +391,7 @@
 main() {
   new A<String>(42);
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 52, 2),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 52, 2),
     ]);
   }
 
@@ -403,7 +403,7 @@
 main() {
   new A(42);
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 53, 2),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 53, 2),
     ]);
   }
 
@@ -415,7 +415,7 @@
 main() {
   new A(42);
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 46, 2),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 46, 2),
     ]);
   }
 
@@ -430,14 +430,14 @@
   print(h('s'));
 }
 ''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 99, 1),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 99, 1),
     ]);
   }
 }
 
 @reflectiveTest
-class ArgumentTypeNotAssignableTest_NNBD extends ArgumentTypeNotAssignableTest
-    with WithNullSafetyMixin {
+class ArgumentTypeNotAssignableWithNullSafetyTest
+    extends ArgumentTypeNotAssignableTest with WithNullSafetyMixin {
   test_binary_eqEq_covariantParameterType() async {
     await assertErrorsInCode(r'''
 class A {
@@ -451,8 +451,8 @@
   aq == null;
 }
 ''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 86, 1),
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 97, 1),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 86, 1),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 97, 1),
     ]);
   }
 
@@ -464,7 +464,7 @@
 }
 n(int x) {}
 ''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 23, 1),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 23, 1),
     ]);
   }
 
@@ -477,7 +477,7 @@
 }
 n(int x) {}
 ''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 24, 1),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 24, 1),
     ]);
   }
 
@@ -508,7 +508,7 @@
 main() {
   acceptFunOptBool(C.funBool);
 }''', [
-      error(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 125, 9),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 125, 9),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/assignment_to_const_test.dart b/pkg/analyzer/test/src/diagnostics/assignment_to_const_test.dart
index 7187511..99c27ce34 100644
--- a/pkg/analyzer/test/src/diagnostics/assignment_to_const_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/assignment_to_const_test.dart
@@ -24,7 +24,7 @@
 f() {
   A.v = 1;
 }''', [
-      error(StaticWarningCode.ASSIGNMENT_TO_CONST, 42, 3),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_CONST, 42, 3),
     ]);
   }
 
@@ -36,7 +36,7 @@
 f() {
   A.v += 1;
 }''', [
-      error(StaticWarningCode.ASSIGNMENT_TO_CONST, 42, 3),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_CONST, 42, 3),
     ]);
   }
 
@@ -47,7 +47,7 @@
   x = 1;
 }''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 14, 1),
-      error(StaticWarningCode.ASSIGNMENT_TO_CONST, 23, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_CONST, 23, 1),
     ]);
   }
 
@@ -59,7 +59,7 @@
     print(x);
   }
 }''', [
-      error(StaticWarningCode.ASSIGNMENT_TO_CONST, 28, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_CONST, 28, 1),
     ]);
   }
 
@@ -70,7 +70,7 @@
   x += 1;
 }''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 14, 1),
-      error(StaticWarningCode.ASSIGNMENT_TO_CONST, 23, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_CONST, 23, 1),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/assignment_to_final_local_test.dart b/pkg/analyzer/test/src/diagnostics/assignment_to_final_local_test.dart
index 9186e08..fb8178d 100644
--- a/pkg/analyzer/test/src/diagnostics/assignment_to_final_local_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/assignment_to_final_local_test.dart
@@ -12,7 +12,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(AssignmentToFinalLocalTest);
-    defineReflectiveTests(AssignmentToFinalLocalWithNnbdTest);
+    defineReflectiveTests(AssignmentToFinalLocalWithNullSafetyTest);
   });
 }
 
@@ -25,7 +25,7 @@
   x = 1;
 }''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 14, 1),
-      error(StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL, 23, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_FINAL_LOCAL, 23, 1),
     ]);
   }
 
@@ -37,7 +37,7 @@
     print(x);
   }
 }''', [
-      error(StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL, 28, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_FINAL_LOCAL, 28, 1),
     ]);
   }
 
@@ -48,7 +48,7 @@
   x += 1;
 }''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 14, 1),
-      error(StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL, 23, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_FINAL_LOCAL, 23, 1),
     ]);
   }
 
@@ -57,7 +57,7 @@
 f(final x) {
   x = 1;
 }''', [
-      error(StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL, 15, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_FINAL_LOCAL, 15, 1),
     ]);
   }
 
@@ -68,7 +68,7 @@
   x--;
 }''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 14, 1),
-      error(StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL, 23, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_FINAL_LOCAL, 23, 1),
     ]);
   }
 
@@ -79,7 +79,7 @@
   x++;
 }''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 14, 1),
-      error(StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL, 23, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_FINAL_LOCAL, 23, 1),
     ]);
   }
 
@@ -90,7 +90,7 @@
   --x;
 }''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 14, 1),
-      error(StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL, 25, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_FINAL_LOCAL, 25, 1),
     ]);
   }
 
@@ -101,7 +101,7 @@
   ++x;
 }''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 14, 1),
-      error(StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL, 25, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_FINAL_LOCAL, 25, 1),
     ]);
   }
 
@@ -112,7 +112,7 @@
   x--;
 }''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 14, 1),
-      error(StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL, 23, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_FINAL_LOCAL, 23, 1),
     ]);
   }
 
@@ -123,7 +123,7 @@
   x++;
 }''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 14, 1),
-      error(StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL, 23, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_FINAL_LOCAL, 23, 1),
     ]);
   }
 
@@ -131,13 +131,13 @@
     await assertErrorsInCode('''
 final x = 0;
 f() { x = 1; }''', [
-      error(StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL, 19, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_FINAL_LOCAL, 19, 1),
     ]);
   }
 }
 
 @reflectiveTest
-class AssignmentToFinalLocalWithNnbdTest extends DriverResolutionTest
+class AssignmentToFinalLocalWithNullSafetyTest extends DriverResolutionTest
     with WithNullSafetyMixin {
   test_localVariable_late() async {
     await assertNoErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/assignment_to_final_no_setter_test.dart b/pkg/analyzer/test/src/diagnostics/assignment_to_final_no_setter_test.dart
index 89f5f56..4067b17 100644
--- a/pkg/analyzer/test/src/diagnostics/assignment_to_final_no_setter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/assignment_to_final_no_setter_test.dart
@@ -24,7 +24,7 @@
   0.foo = 1;
 }
 ''', [
-      error(StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER, 53, 3),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_FINAL_NO_SETTER, 53, 3),
     ]);
   }
 
@@ -37,7 +37,7 @@
   A a = new A();
   a.x = 0;
 }''', [
-      error(StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER, 60, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_FINAL_NO_SETTER, 60, 1),
     ]);
   }
 
@@ -52,7 +52,7 @@
 main() {
   B.a.x = 0;
 }''', [
-      error(StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER, 71, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_FINAL_NO_SETTER, 71, 1),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/assignment_to_final_test.dart b/pkg/analyzer/test/src/diagnostics/assignment_to_final_test.dart
index b566feb..194e750 100644
--- a/pkg/analyzer/test/src/diagnostics/assignment_to_final_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/assignment_to_final_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(AssignmentToFinalTest);
-    defineReflectiveTests(AssignmentToFinalWithNnbdTest);
+    defineReflectiveTests(AssignmentToFinalWithNullSafetyTest);
   });
 }
 
@@ -26,7 +26,7 @@
   A a = new A();
   a.v = 1;
 }''', [
-      error(StaticWarningCode.ASSIGNMENT_TO_FINAL, 54, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_FINAL, 54, 1),
     ]);
   }
 
@@ -39,13 +39,13 @@
   A a = new A();
   a.v += 1;
 }''', [
-      error(StaticWarningCode.ASSIGNMENT_TO_FINAL, 54, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_FINAL, 54, 1),
     ]);
   }
 }
 
 @reflectiveTest
-class AssignmentToFinalWithNnbdTest extends AssignmentToFinalTest
+class AssignmentToFinalWithNullSafetyTest extends AssignmentToFinalTest
     with WithNullSafetyMixin {
   test_field_late() async {
     await assertNoErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/assignment_to_function_test.dart b/pkg/analyzer/test/src/diagnostics/assignment_to_function_test.dart
index d24ec7e..850cc71 100644
--- a/pkg/analyzer/test/src/diagnostics/assignment_to_function_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/assignment_to_function_test.dart
@@ -21,7 +21,7 @@
 main() {
   f = null;
 }''', [
-      error(StaticWarningCode.ASSIGNMENT_TO_FUNCTION, 18, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_FUNCTION, 18, 1),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/assignment_to_method_test.dart b/pkg/analyzer/test/src/diagnostics/assignment_to_method_test.dart
index 768c9b4..3361f23 100644
--- a/pkg/analyzer/test/src/diagnostics/assignment_to_method_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/assignment_to_method_test.dart
@@ -29,7 +29,7 @@
   c.foo = 0;
 }
 ''', [
-      error(StaticWarningCode.ASSIGNMENT_TO_METHOD, 87, 5),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_METHOD, 87, 5),
       error(StaticTypeWarningCode.INVALID_ASSIGNMENT, 95, 1),
     ]);
   }
@@ -42,7 +42,7 @@
 f(A a) {
   a.m = () {};
 }''', [
-      error(StaticWarningCode.ASSIGNMENT_TO_METHOD, 32, 3),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_METHOD, 32, 3),
     ]);
   }
 
@@ -60,7 +60,7 @@
   }
 }
 ''', [
-      error(StaticWarningCode.ASSIGNMENT_TO_METHOD, 86, 8),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_METHOD, 86, 8),
       error(StaticTypeWarningCode.INVALID_ASSIGNMENT, 97, 1),
     ]);
   }
diff --git a/pkg/analyzer/test/src/diagnostics/assignment_to_type_test.dart b/pkg/analyzer/test/src/diagnostics/assignment_to_type_test.dart
index f0b8b6a..a8bd819 100644
--- a/pkg/analyzer/test/src/diagnostics/assignment_to_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/assignment_to_type_test.dart
@@ -22,7 +22,7 @@
   C = null;
 }
 ''', [
-      error(StaticWarningCode.ASSIGNMENT_TO_TYPE, 22, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_TYPE, 22, 1),
     ]);
   }
 
@@ -33,7 +33,7 @@
   E = null;
 }
 ''', [
-      error(StaticWarningCode.ASSIGNMENT_TO_TYPE, 24, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_TYPE, 24, 1),
     ]);
   }
 
@@ -44,7 +44,7 @@
   F = null;
 }
 ''', [
-      error(StaticWarningCode.ASSIGNMENT_TO_TYPE, 29, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_TYPE, 29, 1),
     ]);
   }
 
@@ -56,7 +56,7 @@
   }
 }
 ''', [
-      error(StaticWarningCode.ASSIGNMENT_TO_TYPE, 25, 1),
+      error(CompileTimeErrorCode.ASSIGNMENT_TO_TYPE, 25, 1),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/case_block_not_terminated_test.dart b/pkg/analyzer/test/src/diagnostics/case_block_not_terminated_test.dart
index 3c52f06..e8268d5 100644
--- a/pkg/analyzer/test/src/diagnostics/case_block_not_terminated_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/case_block_not_terminated_test.dart
@@ -36,7 +36,7 @@
       return;
   }
 }''', [
-      error(StaticWarningCode.CASE_BLOCK_NOT_TERMINATED, 35, 4),
+      error(CompileTimeErrorCode.CASE_BLOCK_NOT_TERMINATED, 35, 4),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/case_expression_type_implements_equals_test.dart b/pkg/analyzer/test/src/diagnostics/case_expression_type_implements_equals_test.dart
index a44e629..78e713c 100644
--- a/pkg/analyzer/test/src/diagnostics/case_expression_type_implements_equals_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/case_expression_type_implements_equals_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(CaseExpressionTypeImplementsEqualsTest);
-    defineReflectiveTests(CaseExpressionTypeImplementsEqualsWithNnbdTest);
+    defineReflectiveTests(CaseExpressionTypeImplementsEqualsWithNullSafetyTest);
   });
 }
 
@@ -106,7 +106,7 @@
 }
 
 @reflectiveTest
-class CaseExpressionTypeImplementsEqualsWithNnbdTest
+class CaseExpressionTypeImplementsEqualsWithNullSafetyTest
     extends DriverResolutionTest with WithNullSafetyMixin {
   test_declares() async {
     await assertNoErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/cast_to_non_type_test.dart b/pkg/analyzer/test/src/diagnostics/cast_to_non_type_test.dart
index 08b4de7..e7496be 100644
--- a/pkg/analyzer/test/src/diagnostics/cast_to_non_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/cast_to_non_type_test.dart
@@ -21,7 +21,7 @@
 var A = 0;
 f(String s) { var x = s as A; }''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 29, 1),
-      error(StaticWarningCode.CAST_TO_NON_TYPE, 38, 1),
+      error(CompileTimeErrorCode.CAST_TO_NON_TYPE, 38, 1),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/concrete_class_with_abstract_member_test.dart b/pkg/analyzer/test/src/diagnostics/concrete_class_with_abstract_member_test.dart
index 473325b..d781279 100644
--- a/pkg/analyzer/test/src/diagnostics/concrete_class_with_abstract_member_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/concrete_class_with_abstract_member_test.dart
@@ -20,7 +20,7 @@
 class A {
   m();
 }''', [
-      error(StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER, 12, 4),
+      error(CompileTimeErrorCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER, 12, 4),
     ]);
   }
 
@@ -32,7 +32,7 @@
 class A implements I {
   m();
 }''', [
-      error(StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER, 62, 4),
+      error(CompileTimeErrorCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER, 62, 4),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart b/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart
index 9bd6ec2..d6aa6e4 100644
--- a/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ConflictingGenericInterfacesTest);
-    defineReflectiveTests(ConflictingGenericInterfacesWithNnbdTest);
+    defineReflectiveTests(ConflictingGenericInterfacesWithNullSafetyTest);
   });
 }
 
@@ -72,7 +72,7 @@
 }
 
 @reflectiveTest
-class ConflictingGenericInterfacesWithNnbdTest
+class ConflictingGenericInterfacesWithNullSafetyTest
     extends ConflictingGenericInterfacesTest with WithNullSafetyMixin {
   test_class_extends_implements_never() async {
     await assertNoErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/const_eval_throws_exception_test.dart b/pkg/analyzer/test/src/diagnostics/const_eval_throws_exception_test.dart
index 9a1dbd5..bb4c910 100644
--- a/pkg/analyzer/test/src/diagnostics/const_eval_throws_exception_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_eval_throws_exception_test.dart
@@ -126,8 +126,10 @@
 }
 var x = const C();
 ''', [
-      error(StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION,
-          39, 1),
+      error(
+          CompileTimeErrorCode.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION,
+          39,
+          1),
       error(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, 56, 9),
     ]);
   }
@@ -145,8 +147,10 @@
 }
 var x = const C(2);
 ''', [
-      error(StaticWarningCode.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR,
-          40, 1),
+      error(
+          CompileTimeErrorCode.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR,
+          40,
+          1),
       error(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, 54, 10),
     ]);
   }
diff --git a/pkg/analyzer/test/src/diagnostics/const_not_initialized_test.dart b/pkg/analyzer/test/src/diagnostics/const_not_initialized_test.dart
index 2ee2f94..5c1d235 100644
--- a/pkg/analyzer/test/src/diagnostics/const_not_initialized_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_not_initialized_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ConstNotInitializedTest);
-    defineReflectiveTests(ConstNotInitializedWithNnbdTest);
+    defineReflectiveTests(ConstNotInitializedWithNullSafetyTest);
   });
 }
 
@@ -57,5 +57,5 @@
 }
 
 @reflectiveTest
-class ConstNotInitializedWithNnbdTest extends ConstNotInitializedTest
+class ConstNotInitializedWithNullSafetyTest extends ConstNotInitializedTest
     with WithNullSafetyMixin {}
diff --git a/pkg/analyzer/test/src/diagnostics/const_with_non_type_test.dart b/pkg/analyzer/test/src/diagnostics/const_with_non_type_test.dart
new file mode 100644
index 0000000..1bd6571
--- /dev/null
+++ b/pkg/analyzer/test/src/diagnostics/const_with_non_type_test.dart
@@ -0,0 +1,40 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:analyzer/src/error/codes.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../dart/resolution/driver_resolution.dart';
+
+main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(ConstWithNonTypeTest);
+  });
+}
+
+@reflectiveTest
+class ConstWithNonTypeTest extends DriverResolutionTest {
+  test_fromLibrary() async {
+    newFile('/test/lib/lib1.dart');
+    await assertErrorsInCode('''
+import 'lib1.dart' as lib;
+void f() {
+  const lib.A();
+}
+''', [
+      error(CompileTimeErrorCode.CONST_WITH_NON_TYPE, 50, 1),
+    ]);
+  }
+
+  test_variable() async {
+    await assertErrorsInCode(r'''
+int A;
+f() {
+  return const A();
+}
+''', [
+      error(CompileTimeErrorCode.CONST_WITH_NON_TYPE, 28, 1),
+    ]);
+  }
+}
diff --git a/pkg/analyzer/test/src/diagnostics/const_with_type_parameters_test.dart b/pkg/analyzer/test/src/diagnostics/const_with_type_parameters_test.dart
new file mode 100644
index 0000000..5aed8fe
--- /dev/null
+++ b/pkg/analyzer/test/src/diagnostics/const_with_type_parameters_test.dart
@@ -0,0 +1,41 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:analyzer/src/error/codes.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../dart/resolution/driver_resolution.dart';
+
+main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(ConstWithTypeParametersTest);
+  });
+}
+
+@reflectiveTest
+class ConstWithTypeParametersTest extends DriverResolutionTest {
+  test_direct() async {
+    await assertErrorsInCode(r'''
+class A<T> {
+  static const V = const A<T>();
+  const A();
+}
+''', [
+      error(CompileTimeErrorCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, 40, 1),
+      error(CompileTimeErrorCode.CONST_WITH_TYPE_PARAMETERS, 40, 1),
+    ]);
+  }
+
+  test_indirect() async {
+    await assertErrorsInCode(r'''
+class A<T> {
+  static const V = const A<List<T>>();
+  const A();
+}
+''', [
+      error(CompileTimeErrorCode.CONST_WITH_TYPE_PARAMETERS, 45, 1),
+      error(CompileTimeErrorCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, 45, 1),
+    ]);
+  }
+}
diff --git a/pkg/analyzer/test/src/diagnostics/const_with_undefined_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/const_with_undefined_constructor_test.dart
new file mode 100644
index 0000000..f60efa0
--- /dev/null
+++ b/pkg/analyzer/test/src/diagnostics/const_with_undefined_constructor_test.dart
@@ -0,0 +1,44 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:analyzer/src/error/codes.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../dart/resolution/driver_resolution.dart';
+
+main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(ConstWithUndefinedConstructorTest);
+  });
+}
+
+@reflectiveTest
+class ConstWithUndefinedConstructorTest extends DriverResolutionTest {
+  test_named() async {
+    await assertErrorsInCode(r'''
+class A {
+  const A();
+}
+f() {
+  return const A.noSuchConstructor();
+}
+''', [
+      error(CompileTimeErrorCode.CONST_WITH_UNDEFINED_CONSTRUCTOR, 48, 17),
+    ]);
+  }
+
+  test_unnamed() async {
+    await assertErrorsInCode(r'''
+class A {
+  const A.name();
+}
+f() {
+  return const A();
+}
+''', [
+      error(
+          CompileTimeErrorCode.CONST_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT, 51, 1),
+    ]);
+  }
+}
diff --git a/pkg/analyzer/test/src/diagnostics/extends_non_class_test.dart b/pkg/analyzer/test/src/diagnostics/extends_non_class_test.dart
index 9569e82..d449861 100644
--- a/pkg/analyzer/test/src/diagnostics/extends_non_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extends_non_class_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ExtendsNonClassTest);
-    defineReflectiveTests(ExtendsNonClassWithNnbdTest);
+    defineReflectiveTests(ExtendsNonClassWithNullSafetyTest);
   });
 }
 
@@ -19,7 +19,7 @@
 class ExtendsNonClassTest extends DriverResolutionTest {}
 
 @reflectiveTest
-class ExtendsNonClassWithNnbdTest extends ExtendsNonClassTest
+class ExtendsNonClassWithNullSafetyTest extends ExtendsNonClassTest
     with WithNullSafetyMixin {
   test_Never() async {
     await assertErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/extension_override_argument_not_assignable_test.dart b/pkg/analyzer/test/src/diagnostics/extension_override_argument_not_assignable_test.dart
index a872eea..e553247 100644
--- a/pkg/analyzer/test/src/diagnostics/extension_override_argument_not_assignable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extension_override_argument_not_assignable_test.dart
@@ -11,7 +11,8 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ExtensionOverrideArgumentNotAssignableTest);
-    defineReflectiveTests(ExtensionOverrideArgumentNotAssignableWithNNBDTest);
+    defineReflectiveTests(
+        ExtensionOverrideArgumentNotAssignableWithNullSafetyTest);
   });
 }
 
@@ -62,7 +63,7 @@
 }
 
 @reflectiveTest
-class ExtensionOverrideArgumentNotAssignableWithNNBDTest
+class ExtensionOverrideArgumentNotAssignableWithNullSafetyTest
     extends DriverResolutionTest with WithNullSafetyMixin {
   test_override_onNonNullable() async {
     await assertErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/extra_positional_arguments_test.dart b/pkg/analyzer/test/src/diagnostics/extra_positional_arguments_test.dart
index 1a18b4a..991bdd9 100644
--- a/pkg/analyzer/test/src/diagnostics/extra_positional_arguments_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extra_positional_arguments_test.dart
@@ -16,6 +16,34 @@
 
 @reflectiveTest
 class ExtraPositionalArgumentsCouldBeNamedTest extends DriverResolutionTest {
+  test_constConstructor() async {
+    await assertErrorsInCode(r'''
+class A {
+  const A({int x});
+}
+main() {
+  const A(0);
+}
+''', [
+      error(CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED, 50,
+          3),
+    ]);
+  }
+
+  test_constConstructor_super() async {
+    await assertErrorsInCode(r'''
+class A {
+  const A({int x});
+}
+class B extends A {
+  const B() : super(0);
+}
+''', [
+      error(CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED, 71,
+          3),
+    ]);
+  }
+
   test_functionExpressionInvocation() async {
     await assertErrorsInCode('''
 main() {
@@ -42,6 +70,32 @@
 
 @reflectiveTest
 class ExtraPositionalArgumentsTest extends DriverResolutionTest {
+  test_constConstructor() async {
+    await assertErrorsInCode(r'''
+class A {
+  const A();
+}
+main() {
+  const A(0);
+}
+''', [
+      error(CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS, 43, 3),
+    ]);
+  }
+
+  test_constConstructor_super() async {
+    await assertErrorsInCode(r'''
+class A {
+  const A();
+}
+class B extends A {
+  const B() : super(0);
+}
+''', [
+      error(CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS, 64, 3),
+    ]);
+  }
+
   test_functionExpressionInvocation() async {
     await assertErrorsInCode('''
 main() {
diff --git a/pkg/analyzer/test/src/diagnostics/field_initialized_in_initializer_and_declaration_test.dart b/pkg/analyzer/test/src/diagnostics/field_initialized_in_initializer_and_declaration_test.dart
index 46395a1..45842d2 100644
--- a/pkg/analyzer/test/src/diagnostics/field_initialized_in_initializer_and_declaration_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/field_initialized_in_initializer_and_declaration_test.dart
@@ -23,8 +23,10 @@
   A() : x = 1;
 }
 ''', [
-      error(StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION,
-          37, 1),
+      error(
+          CompileTimeErrorCode.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION,
+          37,
+          1),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/field_initializer_not_assignable_test.dart b/pkg/analyzer/test/src/diagnostics/field_initializer_not_assignable_test.dart
index 55e94cb..f71ba45 100644
--- a/pkg/analyzer/test/src/diagnostics/field_initializer_not_assignable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/field_initializer_not_assignable_test.dart
@@ -22,7 +22,7 @@
   A() : x = '';
 }
 ''', [
-      error(StaticWarningCode.FIELD_INITIALIZER_NOT_ASSIGNABLE, 31, 2),
+      error(CompileTimeErrorCode.FIELD_INITIALIZER_NOT_ASSIGNABLE, 31, 2),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/field_initializing_formal_not_assignable_test.dart b/pkg/analyzer/test/src/diagnostics/field_initializing_formal_not_assignable_test.dart
index 65b451e..392dca0 100644
--- a/pkg/analyzer/test/src/diagnostics/field_initializing_formal_not_assignable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/field_initializing_formal_not_assignable_test.dart
@@ -15,6 +15,18 @@
 
 @reflectiveTest
 class FieldInitializingFormalNotAssignableTest extends DriverResolutionTest {
+  test_dynamic() async {
+    await assertErrorsInCode('''
+class A {
+  int x;
+  A(dynamic this.x) {}
+}
+''', [
+      error(CompileTimeErrorCode.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE, 23,
+          14),
+    ]);
+  }
+
   test_unrelated() async {
     await assertErrorsInCode('''
 class A {
@@ -22,8 +34,8 @@
   A(String this.x) {}
 }
 ''', [
-      error(StrongModeCode.INVALID_PARAMETER_DECLARATION, 23, 13),
-      error(StaticWarningCode.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE, 23, 13),
+      error(CompileTimeErrorCode.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE, 23,
+          13),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/final_initialized_in_delcaration_and_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/final_initialized_in_delcaration_and_constructor_test.dart
index 0779878..58cfca6 100644
--- a/pkg/analyzer/test/src/diagnostics/final_initialized_in_delcaration_and_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/final_initialized_in_delcaration_and_constructor_test.dart
@@ -23,8 +23,10 @@
   A(this.x) {}
 }
 ''', [
-      error(StaticWarningCode.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR,
-          34, 1),
+      error(
+          CompileTimeErrorCode.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR,
+          34,
+          1),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/final_not_initialized_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/final_not_initialized_constructor_test.dart
index 000bccc..b7ea044 100644
--- a/pkg/analyzer/test/src/diagnostics/final_not_initialized_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/final_not_initialized_constructor_test.dart
@@ -22,7 +22,7 @@
   A() {}
 }
 ''', [
-      error(StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1, 27, 1),
+      error(CompileTimeErrorCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1, 27, 1),
     ]);
   }
 
@@ -34,7 +34,7 @@
   A() {}
 }
 ''', [
-      error(StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_2, 42, 1),
+      error(CompileTimeErrorCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_2, 42, 1),
     ]);
   }
 
@@ -47,7 +47,8 @@
   A() {}
 }
 ''', [
-      error(StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS, 57, 1),
+      error(
+          CompileTimeErrorCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS, 57, 1),
     ]);
   }
 
@@ -59,7 +60,7 @@
   A._();
 }
 ''', [
-      error(StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1, 45, 1),
+      error(CompileTimeErrorCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1, 45, 1),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/final_not_initialized_test.dart b/pkg/analyzer/test/src/diagnostics/final_not_initialized_test.dart
index 02074c4..b9e9b36 100644
--- a/pkg/analyzer/test/src/diagnostics/final_not_initialized_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/final_not_initialized_test.dart
@@ -12,7 +12,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(FinalNotInitializedTest);
-    defineReflectiveTests(FinalNotInitializedWithNnbdTest);
+    defineReflectiveTests(FinalNotInitializedWithNullSafetyTest);
   });
 }
 
@@ -32,7 +32,7 @@
 extension E on String {
   static final F;
 }''', [
-      error(StaticWarningCode.FINAL_NOT_INITIALIZED, 39, 1),
+      error(CompileTimeErrorCode.FINAL_NOT_INITIALIZED, 39, 1),
     ]);
   }
 
@@ -41,7 +41,7 @@
 class A {
   final F;
 }''', [
-      error(StaticWarningCode.FINAL_NOT_INITIALIZED, 18, 1),
+      error(CompileTimeErrorCode.FINAL_NOT_INITIALIZED, 18, 1),
     ]);
   }
 
@@ -50,7 +50,7 @@
 class A {
   static final F;
 }''', [
-      error(StaticWarningCode.FINAL_NOT_INITIALIZED, 25, 1),
+      error(CompileTimeErrorCode.FINAL_NOT_INITIALIZED, 25, 1),
     ]);
   }
 
@@ -58,7 +58,7 @@
     await assertErrorsInCode('''
 final F;
 ''', [
-      error(StaticWarningCode.FINAL_NOT_INITIALIZED, 6, 1),
+      error(CompileTimeErrorCode.FINAL_NOT_INITIALIZED, 6, 1),
     ]);
   }
 
@@ -68,7 +68,7 @@
   final int x;
 }''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 18, 1),
-      error(StaticWarningCode.FINAL_NOT_INITIALIZED, 18, 1),
+      error(CompileTimeErrorCode.FINAL_NOT_INITIALIZED, 18, 1),
     ]);
   }
 
@@ -78,13 +78,13 @@
   final int x;
 }
 ''', [
-      error(StaticWarningCode.FINAL_NOT_INITIALIZED, 22, 1),
+      error(CompileTimeErrorCode.FINAL_NOT_INITIALIZED, 22, 1),
     ]);
   }
 }
 
 @reflectiveTest
-class FinalNotInitializedWithNnbdTest extends DriverResolutionTest
+class FinalNotInitializedWithNullSafetyTest extends DriverResolutionTest
     with WithNullSafetyMixin {
   test_field_noConstructor_initializer() async {
     await assertNoErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/for_in_of_invalid_type_test.dart b/pkg/analyzer/test/src/diagnostics/for_in_of_invalid_type_test.dart
index 4e25160..a07d16bc 100644
--- a/pkg/analyzer/test/src/diagnostics/for_in_of_invalid_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/for_in_of_invalid_type_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ForInOfInvalidTypeTest);
-    defineReflectiveTests(ForInOfInvalidTypeWithNnbdTest);
+    defineReflectiveTests(ForInOfInvalidTypeWithNullSafetyTest);
   });
 }
 
@@ -63,7 +63,7 @@
 }
 
 @reflectiveTest
-class ForInOfInvalidTypeWithNnbdTest extends ForInOfInvalidTypeTest
+class ForInOfInvalidTypeWithNullSafetyTest extends ForInOfInvalidTypeTest
     with WithNullSafetyMixin {
   test_awaitForIn_never() async {
     await assertErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/generic_function_type_cannot_be_bound_test.dart b/pkg/analyzer/test/src/diagnostics/generic_function_type_cannot_be_bound_test.dart
new file mode 100644
index 0000000..a07471e
--- /dev/null
+++ b/pkg/analyzer/test/src/diagnostics/generic_function_type_cannot_be_bound_test.dart
@@ -0,0 +1,56 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:analyzer/src/error/codes.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../dart/resolution/driver_resolution.dart';
+
+main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(GenericFunctionTypeCannotBeBoundTest);
+  });
+}
+
+@reflectiveTest
+class GenericFunctionTypeCannotBeBoundTest extends DriverResolutionTest {
+  test_class() async {
+    await assertErrorsInCode(r'''
+class C<T extends S Function<S>(S)> {
+}
+''', [
+      error(CompileTimeErrorCode.GENERIC_FUNCTION_TYPE_CANNOT_BE_BOUND, 18, 16),
+    ]);
+  }
+
+  test_genericFunction() async {
+    await assertErrorsInCode(r'''
+T Function<T extends S Function<S>(S)>(T) fun;
+''', [
+      error(CompileTimeErrorCode.GENERIC_FUNCTION_TYPE_CANNOT_BE_BOUND, 21, 16),
+    ]);
+  }
+
+  test_genericFunctionTypedef() async {
+    await assertErrorsInCode(r'''
+typedef foo = T Function<T extends S Function<S>(S)>(T t);
+''', [
+      error(CompileTimeErrorCode.GENERIC_FUNCTION_TYPE_CANNOT_BE_BOUND, 35, 16),
+    ]);
+  }
+
+  test_parameterOfFunction() async {
+    await assertNoErrorsInCode(r'''
+class C<T extends void Function(S Function<S>(S))> {}
+''');
+  }
+
+  test_typedef() async {
+    await assertErrorsInCode(r'''
+typedef T foo<T extends S Function<S>(S)>(T t);
+''', [
+      error(CompileTimeErrorCode.GENERIC_FUNCTION_TYPE_CANNOT_BE_BOUND, 24, 16),
+    ]);
+  }
+}
diff --git a/pkg/analyzer/test/src/diagnostics/getter_not_assignable_setter_types_test.dart b/pkg/analyzer/test/src/diagnostics/getter_not_assignable_setter_types_test.dart
index 6bb253e..e2b4cb8 100644
--- a/pkg/analyzer/test/src/diagnostics/getter_not_assignable_setter_types_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/getter_not_assignable_setter_types_test.dart
@@ -45,7 +45,7 @@
 
 abstract class X implements A, B {}
 ''', [
-      error(StaticWarningCode.GETTER_NOT_ASSIGNABLE_SETTER_TYPES, 84, 1),
+      error(CompileTimeErrorCode.GETTER_NOT_ASSIGNABLE_SETTER_TYPES, 84, 1),
     ]);
   }
 
@@ -126,7 +126,7 @@
   set foo(String _) {}
 }
 ''', [
-      error(StaticWarningCode.GETTER_NOT_ASSIGNABLE_SETTER_TYPES, 20, 3),
+      error(CompileTimeErrorCode.GETTER_NOT_ASSIGNABLE_SETTER_TYPES, 20, 3),
     ]);
   }
 
@@ -171,7 +171,7 @@
   set foo(String _) {}
 }
 ''', [
-      error(StaticWarningCode.GETTER_NOT_ASSIGNABLE_SETTER_TYPES, 59, 3),
+      error(CompileTimeErrorCode.GETTER_NOT_ASSIGNABLE_SETTER_TYPES, 59, 3),
     ]);
   }
 
@@ -185,7 +185,7 @@
   int get foo => 0;
 }
 ''', [
-      error(StaticWarningCode.GETTER_NOT_ASSIGNABLE_SETTER_TYPES, 66, 3),
+      error(CompileTimeErrorCode.GETTER_NOT_ASSIGNABLE_SETTER_TYPES, 66, 3),
     ]);
   }
 
@@ -196,7 +196,7 @@
   static set foo(String _) {}
 }
 ''', [
-      error(StaticWarningCode.GETTER_NOT_ASSIGNABLE_SETTER_TYPES, 27, 3),
+      error(CompileTimeErrorCode.GETTER_NOT_ASSIGNABLE_SETTER_TYPES, 27, 3),
     ]);
   }
 
@@ -207,7 +207,7 @@
   set foo(String v) {}
 }
 ''', [
-      error(StaticWarningCode.GETTER_NOT_ASSIGNABLE_SETTER_TYPES, 34, 3),
+      error(CompileTimeErrorCode.GETTER_NOT_ASSIGNABLE_SETTER_TYPES, 34, 3),
     ]);
   }
 
@@ -218,7 +218,7 @@
   static set foo(String v) {}
 }
 ''', [
-      error(StaticWarningCode.GETTER_NOT_ASSIGNABLE_SETTER_TYPES, 41, 3),
+      error(CompileTimeErrorCode.GETTER_NOT_ASSIGNABLE_SETTER_TYPES, 41, 3),
     ]);
   }
 
@@ -227,7 +227,7 @@
 int get foo { return 0; }
 set foo(String v) {}
 ''', [
-      error(StaticWarningCode.GETTER_NOT_ASSIGNABLE_SETTER_TYPES, 8, 3),
+      error(CompileTimeErrorCode.GETTER_NOT_ASSIGNABLE_SETTER_TYPES, 8, 3),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/getter_not_subtype_setter_types_test.dart b/pkg/analyzer/test/src/diagnostics/getter_not_subtype_setter_types_test.dart
index db070e3..3429d34 100644
--- a/pkg/analyzer/test/src/diagnostics/getter_not_subtype_setter_types_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/getter_not_subtype_setter_types_test.dart
@@ -24,7 +24,7 @@
   set foo(int v) {}
 }
 ''', [
-      error(StaticWarningCode.GETTER_NOT_SUBTYPE_SETTER_TYPES, 20, 3),
+      error(CompileTimeErrorCode.GETTER_NOT_SUBTYPE_SETTER_TYPES, 20, 3),
     ]);
   }
 
@@ -35,7 +35,7 @@
   set foo(String v) {}
 }
 ''', [
-      error(StaticWarningCode.GETTER_NOT_SUBTYPE_SETTER_TYPES, 16, 3),
+      error(CompileTimeErrorCode.GETTER_NOT_SUBTYPE_SETTER_TYPES, 16, 3),
     ]);
   }
 
@@ -60,7 +60,7 @@
 
 abstract class X implements A, B {}
 ''', [
-      error(StaticWarningCode.GETTER_NOT_SUBTYPE_SETTER_TYPES, 84, 1),
+      error(CompileTimeErrorCode.GETTER_NOT_SUBTYPE_SETTER_TYPES, 84, 1),
     ]);
   }
 
@@ -141,7 +141,7 @@
   set foo(String _) {}
 }
 ''', [
-      error(StaticWarningCode.GETTER_NOT_SUBTYPE_SETTER_TYPES, 20, 3),
+      error(CompileTimeErrorCode.GETTER_NOT_SUBTYPE_SETTER_TYPES, 20, 3),
     ]);
   }
 
@@ -186,7 +186,7 @@
   set foo(String _) {}
 }
 ''', [
-      error(StaticWarningCode.GETTER_NOT_SUBTYPE_SETTER_TYPES, 59, 3),
+      error(CompileTimeErrorCode.GETTER_NOT_SUBTYPE_SETTER_TYPES, 59, 3),
     ]);
   }
 
@@ -200,7 +200,7 @@
   int get foo => 0;
 }
 ''', [
-      error(StaticWarningCode.GETTER_NOT_SUBTYPE_SETTER_TYPES, 66, 3),
+      error(CompileTimeErrorCode.GETTER_NOT_SUBTYPE_SETTER_TYPES, 66, 3),
     ]);
   }
 
@@ -211,7 +211,7 @@
   static set foo(int v) {}
 }
 ''', [
-      error(StaticWarningCode.GETTER_NOT_SUBTYPE_SETTER_TYPES, 27, 3),
+      error(CompileTimeErrorCode.GETTER_NOT_SUBTYPE_SETTER_TYPES, 27, 3),
     ]);
   }
 
@@ -222,7 +222,7 @@
   set foo(String v) {}
 }
 ''', [
-      error(StaticWarningCode.GETTER_NOT_SUBTYPE_SETTER_TYPES, 34, 3),
+      error(CompileTimeErrorCode.GETTER_NOT_SUBTYPE_SETTER_TYPES, 34, 3),
     ]);
   }
 
@@ -233,7 +233,7 @@
   static set foo(String v) {}
 }
 ''', [
-      error(StaticWarningCode.GETTER_NOT_SUBTYPE_SETTER_TYPES, 41, 3),
+      error(CompileTimeErrorCode.GETTER_NOT_SUBTYPE_SETTER_TYPES, 41, 3),
     ]);
   }
 
@@ -242,7 +242,7 @@
 int get foo => 0;
 set foo(String v) {}
 ''', [
-      error(StaticWarningCode.GETTER_NOT_SUBTYPE_SETTER_TYPES, 8, 3),
+      error(CompileTimeErrorCode.GETTER_NOT_SUBTYPE_SETTER_TYPES, 8, 3),
     ]);
   }
 
@@ -251,7 +251,7 @@
 get foo => 0;
 set foo(int v) {}
 ''', [
-      error(StaticWarningCode.GETTER_NOT_SUBTYPE_SETTER_TYPES, 4, 3),
+      error(CompileTimeErrorCode.GETTER_NOT_SUBTYPE_SETTER_TYPES, 4, 3),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/implements_non_class_test.dart b/pkg/analyzer/test/src/diagnostics/implements_non_class_test.dart
index 23f2aea..803aa67 100644
--- a/pkg/analyzer/test/src/diagnostics/implements_non_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/implements_non_class_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ImplementsNonClassTest);
-    defineReflectiveTests(ImplementsNonClassWithNnbdTest);
+    defineReflectiveTests(ImplementsNonClassWithNullSafetyTest);
   });
 }
 
@@ -56,7 +56,7 @@
 }
 
 @reflectiveTest
-class ImplementsNonClassWithNnbdTest extends ImplementsNonClassTest
+class ImplementsNonClassWithNullSafetyTest extends ImplementsNonClassTest
     with WithNullSafetyMixin {
   test_Never() async {
     await assertErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/implicit_this_reference_in_initializer_test.dart b/pkg/analyzer/test/src/diagnostics/implicit_this_reference_in_initializer_test.dart
index 033d8bb..1dad8ec 100644
--- a/pkg/analyzer/test/src/diagnostics/implicit_this_reference_in_initializer_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/implicit_this_reference_in_initializer_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ImplicitThisReferenceInInitializerTest);
-    defineReflectiveTests(ImplicitThisReferenceInInitializerWithNnbdTest);
+    defineReflectiveTests(ImplicitThisReferenceInInitializerWithNullSafetyTest);
   });
 }
 
@@ -248,7 +248,7 @@
 }
 
 @reflectiveTest
-class ImplicitThisReferenceInInitializerWithNnbdTest
+class ImplicitThisReferenceInInitializerWithNullSafetyTest
     extends ImplicitThisReferenceInInitializerTest with WithNullSafetyMixin {
   test_class_field_late_invokeInstanceMethod() async {
     await assertNoErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/import_internal_library_test.dart b/pkg/analyzer/test/src/diagnostics/import_internal_library_test.dart
new file mode 100644
index 0000000..7397975
--- /dev/null
+++ b/pkg/analyzer/test/src/diagnostics/import_internal_library_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:analyzer/src/error/codes.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../dart/resolution/driver_resolution.dart';
+
+main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(ImportInternalLibraryTest);
+  });
+}
+
+@reflectiveTest
+class ImportInternalLibraryTest extends DriverResolutionTest {
+  test_internal() async {
+    // Note, in these error cases we may generate an UNUSED_IMPORT hint, while
+    // we could prevent the hint from being generated by testing the import
+    // directive for the error, this is such a minor corner case that we don't
+    // think we should add the additional computation time to figure out such
+    // cases.
+    await assertErrorsInCode('''
+import 'dart:_interceptors';
+''', [
+      error(CompileTimeErrorCode.IMPORT_INTERNAL_LIBRARY, 7, 20),
+      error(HintCode.UNUSED_IMPORT, 7, 20),
+    ]);
+  }
+}
diff --git a/pkg/analyzer/test/src/diagnostics/import_of_non_library_test.dart b/pkg/analyzer/test/src/diagnostics/import_of_non_library_test.dart
index c5d1d06..36ac79a 100644
--- a/pkg/analyzer/test/src/diagnostics/import_of_non_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/import_of_non_library_test.dart
@@ -15,7 +15,7 @@
 
 @reflectiveTest
 class ImportOfNonLibraryTest extends DriverResolutionTest {
-  test_part() async {
+  test_deferred() async {
     newFile("/test/lib/lib1.dart", content: '''
 part of lib;
 class A {}
@@ -28,4 +28,18 @@
       error(CompileTimeErrorCode.IMPORT_OF_NON_LIBRARY, 20, 11),
     ]);
   }
+
+  test_part() async {
+    newFile("/test/lib/part.dart", content: r'''
+part of lib;
+class A{}
+''');
+    await assertErrorsInCode(r'''
+library lib;
+import 'part.dart';
+A a;
+''', [
+      error(CompileTimeErrorCode.IMPORT_OF_NON_LIBRARY, 20, 11),
+    ]);
+  }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/instantiate_abstract_class_test.dart b/pkg/analyzer/test/src/diagnostics/instantiate_abstract_class_test.dart
index 560995d..271ffff 100644
--- a/pkg/analyzer/test/src/diagnostics/instantiate_abstract_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/instantiate_abstract_class_test.dart
@@ -24,7 +24,7 @@
   var a = const A<int>();
 }''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 54, 1),
-      error(StaticWarningCode.INSTANTIATE_ABSTRACT_CLASS, 64, 6),
+      error(CompileTimeErrorCode.INSTANTIATE_ABSTRACT_CLASS, 64, 6),
     ]);
 
     assertType(findNode.instanceCreation('const A<int>'), 'A<int>');
@@ -39,7 +39,7 @@
   A a = const A();
 }''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 49, 1),
-      error(StaticWarningCode.INSTANTIATE_ABSTRACT_CLASS, 59, 1),
+      error(CompileTimeErrorCode.INSTANTIATE_ABSTRACT_CLASS, 59, 1),
     ]);
   }
 
@@ -50,7 +50,7 @@
   new A<int>();
 }
 ''', [
-      error(StaticWarningCode.INSTANTIATE_ABSTRACT_CLASS, 40, 6),
+      error(CompileTimeErrorCode.INSTANTIATE_ABSTRACT_CLASS, 40, 6),
     ]);
 
     assertType(findNode.instanceCreation('new A<int>'), 'A<int>');
@@ -63,7 +63,7 @@
   new A();
 }
 ''', [
-      error(StaticWarningCode.INSTANTIATE_ABSTRACT_CLASS, 37, 1),
+      error(CompileTimeErrorCode.INSTANTIATE_ABSTRACT_CLASS, 37, 1),
     ]);
   }
 
@@ -74,7 +74,7 @@
   A<int>();
 }
 ''', [
-      error(StaticWarningCode.INSTANTIATE_ABSTRACT_CLASS, 36, 6),
+      error(CompileTimeErrorCode.INSTANTIATE_ABSTRACT_CLASS, 36, 6),
     ]);
 
     assertType(findNode.instanceCreation('A<int>'), 'A<int>');
@@ -87,7 +87,7 @@
   A();
 }
 ''', [
-      error(StaticWarningCode.INSTANTIATE_ABSTRACT_CLASS, 33, 1),
+      error(CompileTimeErrorCode.INSTANTIATE_ABSTRACT_CLASS, 33, 1),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_cast_new_expr_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_cast_new_expr_test.dart
index e963c1f..3ea45a5 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_cast_new_expr_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_cast_new_expr_test.dart
@@ -25,7 +25,7 @@
   const B();
 }
 ''', [
-      error(StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 14, 3),
+      error(CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 14, 3),
       error(CompileTimeErrorCode.INVALID_CAST_NEW_EXPR, 14, 3),
     ]);
   }
@@ -54,7 +54,7 @@
   const B();
 }
 ''', [
-      error(StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 14, 3),
+      error(CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 14, 3),
       error(CompileTimeErrorCode.INVALID_CAST_NEW_EXPR, 14, 3),
     ]);
   }
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_override_different_default_values_named_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_override_different_default_values_named_test.dart
index f9949d7..267f92e 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_override_different_default_values_named_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_override_different_default_values_named_test.dart
@@ -12,7 +12,7 @@
   defineReflectiveSuite(() {
     defineReflectiveTests(InvalidOverrideDifferentDefaultValuesNamedTest);
     defineReflectiveTests(
-      InvalidOverrideDifferentDefaultValuesNamedWithNnbdTest,
+      InvalidOverrideDifferentDefaultValuesNamedWithNullSafetyTest,
     );
   });
 }
@@ -241,7 +241,7 @@
 }
 ''', [
       error(CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, 26, 9),
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 26, 9),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 26, 9),
     ]);
   }
 
@@ -257,9 +257,9 @@
 }
 ''', [
       error(CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, 26, 9),
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 26, 9),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 26, 9),
       error(CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, 85, 10),
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 85, 10),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 85, 10),
     ]);
   }
 
@@ -275,7 +275,7 @@
 }
 ''', [
       error(CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, 71, 9),
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 71, 9),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 71, 9),
     ]);
   }
 
@@ -298,7 +298,7 @@
 }
 
 @reflectiveTest
-class InvalidOverrideDifferentDefaultValuesNamedWithNnbdTest
+class InvalidOverrideDifferentDefaultValuesNamedWithNullSafetyTest
     extends InvalidOverrideDifferentDefaultValuesNamedTest
     with WithNullSafetyMixin {
   test_concrete_equal_optIn_extends_optOut() async {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_override_different_default_values_positional_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_override_different_default_values_positional_test.dart
index 3955adb..1995413 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_override_different_default_values_positional_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_override_different_default_values_positional_test.dart
@@ -12,7 +12,7 @@
   defineReflectiveSuite(() {
     defineReflectiveTests(InvalidOverrideDifferentDefaultValuesPositionalTest);
     defineReflectiveTests(
-      InvalidOverrideDifferentDefaultValuesPositionalWithNnbdTest,
+      InvalidOverrideDifferentDefaultValuesPositionalWithNullSafetyTest,
     );
   });
 }
@@ -253,7 +253,7 @@
 }
 ''', [
       error(CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, 26, 9),
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 26, 9),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 26, 9),
     ]);
   }
 
@@ -269,9 +269,9 @@
 }
 ''', [
       error(CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, 26, 9),
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 26, 9),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 26, 9),
       error(CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, 85, 10),
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 85, 10),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 85, 10),
     ]);
   }
 
@@ -287,7 +287,7 @@
 }
 ''', [
       error(CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, 71, 9),
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 71, 9),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 71, 9),
     ]);
   }
 
@@ -313,7 +313,7 @@
 }
 
 @reflectiveTest
-class InvalidOverrideDifferentDefaultValuesPositionalWithNnbdTest
+class InvalidOverrideDifferentDefaultValuesPositionalWithNullSafetyTest
     extends InvalidOverrideDifferentDefaultValuesPositionalTest
     with WithNullSafetyMixin {
   test_concrete_equal_optIn_extends_optOut() async {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart
index f5987fd..d234456 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(InvalidOverrideTest);
-    defineReflectiveTests(InvalidOverrideWithNnbdTest);
+    defineReflectiveTests(InvalidOverrideWithNullSafetyTest);
   });
 }
 
@@ -561,7 +561,7 @@
 }
 
 @reflectiveTest
-class InvalidOverrideWithNnbdTest extends DriverResolutionTest
+class InvalidOverrideWithNullSafetyTest extends DriverResolutionTest
     with WithNullSafetyMixin {
   test_method_parameter_functionTyped_optOut_extends_optIn() async {
     newFile('/test/lib/a.dart', content: r'''
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_reference_to_this_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_reference_to_this_test.dart
index 00fc44d..1421341 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_reference_to_this_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_reference_to_this_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(InvalidReferenceToThisTest);
-    defineReflectiveTests(InvalidReferenceToThisTest_NNBD);
+    defineReflectiveTests(InvalidReferenceToThisWithNullSafetyTest);
   });
 }
 
@@ -135,8 +135,8 @@
 }
 
 @reflectiveTest
-class InvalidReferenceToThisTest_NNBD extends InvalidReferenceToThisTest
-    with WithNullSafetyMixin {
+class InvalidReferenceToThisWithNullSafetyTest
+    extends InvalidReferenceToThisTest with WithNullSafetyMixin {
   test_instanceVariableInitializer_inDeclaration_late() async {
     await assertNoErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_super_invocation_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_super_invocation_test.dart
new file mode 100644
index 0000000..4ea6c25
--- /dev/null
+++ b/pkg/analyzer/test/src/diagnostics/invalid_super_invocation_test.dart
@@ -0,0 +1,38 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:analyzer/src/error/codes.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../dart/resolution/driver_resolution.dart';
+
+main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(InvalidSuperInvocationTest);
+  });
+}
+
+@reflectiveTest
+class InvalidSuperInvocationTest extends DriverResolutionTest {
+  test_superBeforeAssert() async {
+    await assertErrorsInCode(r'''
+class A {
+  A(int x) : super(), assert(x != null);
+}
+''', [
+      error(CompileTimeErrorCode.INVALID_SUPER_INVOCATION, 23, 7),
+    ]);
+  }
+
+  test_superBeforeAssignment() async {
+    await assertErrorsInCode(r'''
+class A {
+  final int x;
+  A() : super(), x = 1;
+}
+''', [
+      error(CompileTimeErrorCode.INVALID_SUPER_INVOCATION, 33, 7),
+    ]);
+  }
+}
diff --git a/pkg/analyzer/test/src/diagnostics/list_element_type_not_assignable_test.dart b/pkg/analyzer/test/src/diagnostics/list_element_type_not_assignable_test.dart
index bdd4b72..f0d3fbe 100644
--- a/pkg/analyzer/test/src/diagnostics/list_element_type_not_assignable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/list_element_type_not_assignable_test.dart
@@ -42,8 +42,8 @@
 ''',
         analysisOptions.experimentStatus.constant_update_2018
             ? [
-                error(
-                    StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 82, 1),
+                error(CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 82,
+                    1),
               ]
             : [
                 error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 64, 19),
@@ -57,13 +57,13 @@
 ''',
         analysisOptions.experimentStatus.constant_update_2018
             ? [
-                error(
-                    StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 31, 3),
+                error(CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 31,
+                    3),
               ]
             : [
                 error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 20, 14),
-                error(
-                    StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 31, 3),
+                error(CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 31,
+                    3),
               ]);
   }
 
@@ -101,8 +101,8 @@
 ''',
         analysisOptions.experimentStatus.constant_update_2018
             ? [
-                error(
-                    StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 53, 1),
+                error(CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 53,
+                    1),
               ]
             : [
                 error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 43, 11),
@@ -125,7 +125,7 @@
     await assertErrorsInCode('''
 var v = const <String>[42];
 ''', [
-      error(StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 23, 2),
+      error(CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 23, 2),
     ]);
   }
 
@@ -134,7 +134,7 @@
 const dynamic x = 42;
 var v = const <String>[x];
 ''', [
-      error(StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 45, 1),
+      error(CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 45, 1),
     ]);
   }
 
@@ -184,7 +184,7 @@
     await assertErrorsInCode('''
 var v = <int>[if (1 < 0) 'a'];
 ''', [
-      error(StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 25, 3),
+      error(CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 25, 3),
     ]);
   }
 
@@ -212,7 +212,7 @@
     await assertErrorsInCode('''
 var v = <String>[42];
 ''', [
-      error(StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 17, 2),
+      error(CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 17, 2),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/map_key_type_not_assignable_test.dart b/pkg/analyzer/test/src/diagnostics/map_key_type_not_assignable_test.dart
index 3d3f4a3..95815bb 100644
--- a/pkg/analyzer/test/src/diagnostics/map_key_type_not_assignable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/map_key_type_not_assignable_test.dart
@@ -42,7 +42,7 @@
 ''',
         analysisOptions.experimentStatus.constant_update_2018
             ? [
-                error(StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 94, 1),
+                error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 94, 1),
               ]
             : [
                 error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 70, 32),
@@ -69,11 +69,11 @@
 ''',
         analysisOptions.experimentStatus.constant_update_2018
             ? [
-                error(StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 37, 3),
+                error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 37, 3),
               ]
             : [
                 error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 26, 20),
-                error(StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 37, 3),
+                error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 37, 3),
               ]);
   }
 
@@ -98,7 +98,7 @@
 ''',
         analysisOptions.experimentStatus.constant_update_2018
             ? [
-                error(StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 59, 1),
+                error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 59, 1),
               ]
             : [
                 error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 49, 17),
@@ -132,7 +132,7 @@
 const dynamic a = 'a';
 var v = const <int, bool>{a : true};
 ''', [
-      error(StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 49, 1),
+      error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 49, 1),
     ]);
   }
 
@@ -140,7 +140,7 @@
     await assertErrorsInCode('''
 var v = const <int, bool>{'a' : true};
 ''', [
-      error(StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 26, 3),
+      error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 26, 3),
     ]);
   }
 
@@ -164,11 +164,11 @@
 ''',
         analysisOptions.experimentStatus.constant_update_2018
             ? [
-                error(StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 55, 1),
+                error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 55, 1),
               ]
             : [
                 error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 51, 11),
-                error(StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 55, 1),
+                error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 55, 1),
               ]);
   }
 
@@ -198,7 +198,7 @@
     await assertErrorsInCode('''
 var v = <int, bool>{if (1 < 0) 'a': true};
 ''', [
-      error(StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 31, 3),
+      error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 31, 3),
     ]);
   }
 
@@ -234,7 +234,7 @@
     await assertErrorsInCode('''
 var v = <int, bool>{'a' : true};
 ''', [
-      error(StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 20, 3),
+      error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 20, 3),
     ]);
   }
 
@@ -254,7 +254,7 @@
     await assertErrorsInCode('''
 var v = <int, String>{...{'a': 'a'}};
 ''', [
-      error(StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 26, 3),
+      error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 26, 3),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/map_value_type_not_assignable_test.dart b/pkg/analyzer/test/src/diagnostics/map_value_type_not_assignable_test.dart
index e540eed..37911a8 100644
--- a/pkg/analyzer/test/src/diagnostics/map_value_type_not_assignable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/map_value_type_not_assignable_test.dart
@@ -42,7 +42,8 @@
 ''',
         analysisOptions.experimentStatus.constant_update_2018
             ? [
-                error(StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 101, 1),
+                error(
+                    CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 101, 1),
               ]
             : [
                 error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 70, 32),
@@ -69,11 +70,13 @@
 ''',
         analysisOptions.experimentStatus.constant_update_2018
             ? [
-                error(StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 43, 3),
+                error(
+                    CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 43, 3),
               ]
             : [
                 error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 26, 20),
-                error(StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 43, 3),
+                error(
+                    CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 43, 3),
               ]);
   }
 
@@ -98,7 +101,8 @@
 ''',
         analysisOptions.experimentStatus.constant_update_2018
             ? [
-                error(StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 65, 1),
+                error(
+                    CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 65, 1),
               ]
             : [
                 error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 49, 17),
@@ -132,7 +136,7 @@
 const dynamic a = 'a';
 var v = const <bool, int>{true: a};
 ''', [
-      error(StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 55, 1),
+      error(CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 55, 1),
     ]);
   }
 
@@ -140,7 +144,7 @@
     await assertErrorsInCode('''
 var v = const <bool, int>{true: 'a'};
 ''', [
-      error(StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 32, 3),
+      error(CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 32, 3),
     ]);
   }
 
@@ -164,11 +168,13 @@
 ''',
         analysisOptions.experimentStatus.constant_update_2018
             ? [
-                error(StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 59, 1),
+                error(
+                    CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 59, 1),
               ]
             : [
                 error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 49, 12),
-                error(StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 59, 1),
+                error(
+                    CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 59, 1),
               ]);
   }
 
@@ -192,7 +198,7 @@
     await assertErrorsInCode('''
 var v = <bool, int>{if (1 < 0) true: 'a'};
 ''', [
-      error(StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 37, 3),
+      error(CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 37, 3),
     ]);
   }
 
@@ -228,7 +234,7 @@
     await assertErrorsInCode('''
 var v = <bool, int>{true: 'a'};
 ''', [
-      error(StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 26, 3),
+      error(CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 26, 3),
     ]);
   }
 
@@ -248,7 +254,7 @@
     await assertErrorsInCode('''
 var v = <bool, int>{...{true: 'a'}};
 ''', [
-      error(StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 30, 3),
+      error(CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 30, 3),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/missing_enum_constant_in_switch_test.dart b/pkg/analyzer/test/src/diagnostics/missing_enum_constant_in_switch_test.dart
index 7065eda..81af1c1 100644
--- a/pkg/analyzer/test/src/diagnostics/missing_enum_constant_in_switch_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/missing_enum_constant_in_switch_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(MissingEnumConstantInSwitchTest);
-    defineReflectiveTests(MissingEnumConstantInSwitchWithNnbdTest);
+    defineReflectiveTests(MissingEnumConstantInSwitchWithNullSafetyTest);
   });
 }
 
@@ -82,7 +82,7 @@
 }
 
 @reflectiveTest
-class MissingEnumConstantInSwitchWithNnbdTest
+class MissingEnumConstantInSwitchWithNullSafetyTest
     extends MissingEnumConstantInSwitchTest with WithNullSafetyMixin {
   test_nullable() async {
     await assertErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/missing_required_param_test.dart b/pkg/analyzer/test/src/diagnostics/missing_required_param_test.dart
index dfc42f9..d64dcf9 100644
--- a/pkg/analyzer/test/src/diagnostics/missing_required_param_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/missing_required_param_test.dart
@@ -13,7 +13,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(MissingRequiredParamTest);
-    defineReflectiveTests(MissingRequiredParamWithNnbdTest);
+    defineReflectiveTests(MissingRequiredParamWithNullSafetyTest);
   });
 }
 
@@ -245,7 +245,7 @@
 }
 
 @reflectiveTest
-class MissingRequiredParamWithNnbdTest extends DriverResolutionTest
+class MissingRequiredParamWithNullSafetyTest extends DriverResolutionTest
     with WithNullSafetyMixin {
   test_constructor_argumentGiven() async {
     await assertNoErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/missing_return_test.dart b/pkg/analyzer/test/src/diagnostics/missing_return_test.dart
index 3441f21..353bef4 100644
--- a/pkg/analyzer/test/src/diagnostics/missing_return_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/missing_return_test.dart
@@ -7,10 +7,12 @@
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/with_null_safety_mixin.dart';
 
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(MissingReturnTest);
+    defineReflectiveTests(MissingReturnWithNullSafetyTest);
   });
 }
 
@@ -213,3 +215,23 @@
     ]);
   }
 }
+
+@reflectiveTest
+class MissingReturnWithNullSafetyTest extends DriverResolutionTest
+    with WithNullSafetyMixin {
+  test_returnNever() async {
+    newFile('/test/lib/a.dart', content: r'''
+Never foo() {
+  throw 0;
+}
+''');
+    await assertNoErrorsInCode(r'''
+// @dart = 2.8
+import 'a.dart';
+
+int f() {
+  foo();
+}
+''');
+  }
+}
diff --git a/pkg/analyzer/test/src/diagnostics/mixin_declares_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/mixin_declares_constructor_test.dart
index 355a804..51f315e 100644
--- a/pkg/analyzer/test/src/diagnostics/mixin_declares_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/mixin_declares_constructor_test.dart
@@ -4,6 +4,7 @@
 
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/src/dart/error/syntactic_errors.dart';
+import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/driver_resolution.dart';
@@ -24,6 +25,9 @@
 }
 ''', [
       error(ParserErrorCode.MIXIN_DECLARES_CONSTRUCTOR, 27, 1),
+      // TODO(srawlins): Don't report this from within a mixin.
+      error(
+          CompileTimeErrorCode.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE, 29, 6),
     ]);
 
     var element = findElement.mixin('M');
diff --git a/pkg/analyzer/test/src/diagnostics/mixin_of_non_class_test.dart b/pkg/analyzer/test/src/diagnostics/mixin_of_non_class_test.dart
index 6f7275d..bb19212 100644
--- a/pkg/analyzer/test/src/diagnostics/mixin_of_non_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/mixin_of_non_class_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(MixinOfNonClassTest);
-    defineReflectiveTests(MixinOfNonClassWithNnbdTest);
+    defineReflectiveTests(MixinOfNonClassWithNullSafetyTest);
   });
 }
 
@@ -59,7 +59,7 @@
 }
 
 @reflectiveTest
-class MixinOfNonClassWithNnbdTest extends MixinOfNonClassTest
+class MixinOfNonClassWithNullSafetyTest extends MixinOfNonClassTest
     with WithNullSafetyMixin {
   test_Never() async {
     await assertErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/mixin_super_class_constraint_non_interface_test.dart b/pkg/analyzer/test/src/diagnostics/mixin_super_class_constraint_non_interface_test.dart
index 3b00377..cb8bc73 100644
--- a/pkg/analyzer/test/src/diagnostics/mixin_super_class_constraint_non_interface_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/mixin_super_class_constraint_non_interface_test.dart
@@ -11,7 +11,8 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(MixinSuperClassConstraintNonInterfaceTest);
-    defineReflectiveTests(MixinSuperClassConstraintNonInterfaceWithNnbdTest);
+    defineReflectiveTests(
+        MixinSuperClassConstraintNonInterfaceWithNullSafetyTest);
   });
 }
 
@@ -19,7 +20,7 @@
 class MixinSuperClassConstraintNonInterfaceTest extends DriverResolutionTest {}
 
 @reflectiveTest
-class MixinSuperClassConstraintNonInterfaceWithNnbdTest
+class MixinSuperClassConstraintNonInterfaceWithNullSafetyTest
     extends MixinSuperClassConstraintNonInterfaceTest with WithNullSafetyMixin {
   test_Never() async {
     await assertErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/multiple_super_initializers_test.dart b/pkg/analyzer/test/src/diagnostics/multiple_super_initializers_test.dart
index 6423c0d..72669cd 100644
--- a/pkg/analyzer/test/src/diagnostics/multiple_super_initializers_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/multiple_super_initializers_test.dart
@@ -22,7 +22,7 @@
   B() : super(), super() {}
 }
 ''', [
-      error(StrongModeCode.INVALID_SUPER_INVOCATION, 39, 7),
+      error(CompileTimeErrorCode.INVALID_SUPER_INVOCATION, 39, 7),
       error(CompileTimeErrorCode.MULTIPLE_SUPER_INITIALIZERS, 48, 7),
     ]);
   }
diff --git a/pkg/analyzer/test/src/diagnostics/new_with_non_type_test.dart b/pkg/analyzer/test/src/diagnostics/new_with_non_type_test.dart
index 04bd897d..52ea5df 100644
--- a/pkg/analyzer/test/src/diagnostics/new_with_non_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/new_with_non_type_test.dart
@@ -23,7 +23,7 @@
   new F();
 }
 ''', [
-      error(StaticWarningCode.NEW_WITH_NON_TYPE, 49, 1),
+      error(CompileTimeErrorCode.NEW_WITH_NON_TYPE, 49, 1),
     ]);
   }
 
@@ -36,7 +36,7 @@
 }
 lib.B b;
 ''', [
-      error(StaticWarningCode.NEW_WITH_NON_TYPE, 47, 1),
+      error(CompileTimeErrorCode.NEW_WITH_NON_TYPE, 47, 1),
     ]);
   }
 
@@ -47,7 +47,7 @@
   new A();
 }
 ''', [
-      error(StaticWarningCode.NEW_WITH_NON_TYPE, 28, 1),
+      error(CompileTimeErrorCode.NEW_WITH_NON_TYPE, 28, 1),
     ]);
   }
 
@@ -60,7 +60,7 @@
   new C.x.y();
 }
 ''', [
-      error(StaticWarningCode.NEW_WITH_NON_TYPE, 36, 3),
+      error(CompileTimeErrorCode.NEW_WITH_NON_TYPE, 36, 3),
     ]);
   }
 
@@ -70,7 +70,7 @@
   new T();
 }
 ''', [
-      error(StaticWarningCode.NEW_WITH_NON_TYPE, 22, 1),
+      error(CompileTimeErrorCode.NEW_WITH_NON_TYPE, 22, 1),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/new_with_undefined_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/new_with_undefined_constructor_test.dart
index 07eb600..3f5f6ff 100644
--- a/pkg/analyzer/test/src/diagnostics/new_with_undefined_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/new_with_undefined_constructor_test.dart
@@ -24,7 +24,7 @@
   new A();
 }
 ''', [
-      error(StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT, 38, 1),
+      error(CompileTimeErrorCode.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT, 38, 1),
     ]);
   }
 
@@ -59,7 +59,7 @@
   new A.name();
 }
 ''', [
-      error(StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR, 35, 4),
+      error(CompileTimeErrorCode.NEW_WITH_UNDEFINED_CONSTRUCTOR, 35, 4),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/non_abstract_class_inherits_abstract_member_test.dart b/pkg/analyzer/test/src/diagnostics/non_abstract_class_inherits_abstract_member_test.dart
index c56b4f8..62bd7b4 100644
--- a/pkg/analyzer/test/src/diagnostics/non_abstract_class_inherits_abstract_member_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_abstract_class_inherits_abstract_member_test.dart
@@ -98,7 +98,7 @@
 }
 ''', [
       error(
-          StaticWarningCode
+          CompileTimeErrorCode
               .NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS,
           62,
           1),
@@ -116,8 +116,10 @@
 class C extends A {
 }
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR,
-          55, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR,
+          55,
+          1),
     ]);
   }
 
@@ -215,8 +217,10 @@
 }
 class B = A with M implements I;
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
-          74, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
+          74,
+          1),
     ]);
   }
 
@@ -229,8 +233,10 @@
 abstract class A {}
 class B = A with M;
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
-          54, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
+          54,
+          1),
     ]);
   }
 
@@ -243,8 +249,10 @@
 }
 class B = A with M;
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
-          45, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
+          45,
+          1),
     ]);
   }
 
@@ -256,8 +264,10 @@
 class C implements I {
 }
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
-          42, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
+          42,
+          1),
     ]);
   }
 
@@ -269,8 +279,10 @@
 class C extends A {
 }
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
-          40, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
+          40,
+          1),
     ]);
   }
 
@@ -282,8 +294,10 @@
 class C implements I {
 }
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
-          28, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
+          28,
+          1),
     ]);
   }
 
@@ -296,8 +310,10 @@
   noSuchMethod(v);
 }
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
-          28, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
+          28,
+          1),
     ]);
   }
 
@@ -324,8 +340,10 @@
 class C implements I {
 }
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
-          55, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
+          55,
+          1),
     ]);
   }
 
@@ -337,8 +355,10 @@
 class C extends A {
 }
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
-          35, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
+          35,
+          1),
     ]);
   }
 
@@ -354,8 +374,10 @@
 class C implements A, B {
 }
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
-          89, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
+          89,
+          1),
     ]);
   }
 
@@ -366,8 +388,10 @@
 abstract class B implements A { get g1 => 1; }
 class C extends Object with B {}
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
-          90, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
+          90,
+          1),
     ]);
   }
 
@@ -378,8 +402,10 @@
 abstract class B implements A { m1() => 1; }
 class C extends Object with B {}
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
-          84, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
+          84,
+          1),
     ]);
   }
 
@@ -390,8 +416,10 @@
 abstract class B implements A { set s1(v) {} }
 class C extends Object with B {}
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
-          96, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
+          96,
+          1),
     ]);
   }
 
@@ -407,8 +435,10 @@
 class B extends A implements I {
 }
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
-          71, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
+          71,
+          1),
     ]);
   }
 
@@ -425,8 +455,10 @@
   get field => 0;
 }
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
-          77, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
+          77,
+          1),
     ]);
   }
 
@@ -438,8 +470,10 @@
 class C implements I {
 }
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
-          36, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
+          36,
+          1),
     ]);
   }
 
@@ -451,8 +485,10 @@
 class C extends A {
 }
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
-          43, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
+          43,
+          1),
     ]);
   }
 
@@ -468,8 +504,10 @@
 class C extends B {
 }
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
-          84, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
+          84,
+          1),
     ]);
   }
 
@@ -483,8 +521,10 @@
   set v(_) {}
 }
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
-          27, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
+          27,
+          1),
     ]);
   }
 
@@ -498,8 +538,10 @@
   get v => 1;
 }
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
-          27, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
+          27,
+          1),
     ]);
   }
 
@@ -523,8 +565,11 @@
 class C extends A {
 }
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE,
-          48, 1),
+      error(
+          CompileTimeErrorCode
+              .NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE,
+          48,
+          1),
     ]);
   }
 
@@ -537,8 +582,10 @@
 class C extends A {
 }
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO,
-          41, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO,
+          41,
+          1),
     ]);
   }
 
@@ -551,8 +598,10 @@
 class C implements I {
 }
 ''', [
-      error(StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO,
-          27, 1),
+      error(
+          CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO,
+          27,
+          1),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/non_bool_condition_test.dart b/pkg/analyzer/test/src/diagnostics/non_bool_condition_test.dart
index cd56b71..02438ae 100644
--- a/pkg/analyzer/test/src/diagnostics/non_bool_condition_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_bool_condition_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(NonBoolConditionTest);
-    defineReflectiveTests(NonBoolConditionTest_NNBD);
+    defineReflectiveTests(NonBoolConditionWithNullSafetyTest);
   });
 }
 
@@ -84,7 +84,7 @@
 }
 
 @reflectiveTest
-class NonBoolConditionTest_NNBD extends DriverResolutionTest
+class NonBoolConditionWithNullSafetyTest extends DriverResolutionTest
     with WithNullSafetyMixin {
   test_if_null() async {
     await assertErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/non_bool_negation_expression_test.dart b/pkg/analyzer/test/src/diagnostics/non_bool_negation_expression_test.dart
index 5c76c36..7eb4c52 100644
--- a/pkg/analyzer/test/src/diagnostics/non_bool_negation_expression_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_bool_negation_expression_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(NonBoolNegationExpressionTest);
-    defineReflectiveTests(NonBoolNegationExpressionTest_NNBD);
+    defineReflectiveTests(NonBoolNegationExpressionWithNullSafetyTest);
   });
 }
 
@@ -29,7 +29,7 @@
 }
 
 @reflectiveTest
-class NonBoolNegationExpressionTest_NNBD extends DriverResolutionTest
+class NonBoolNegationExpressionWithNullSafetyTest extends DriverResolutionTest
     with WithNullSafetyMixin {
   test_null() async {
     await assertErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/non_bool_operand_test.dart b/pkg/analyzer/test/src/diagnostics/non_bool_operand_test.dart
index 25168ff..07c6c1d 100644
--- a/pkg/analyzer/test/src/diagnostics/non_bool_operand_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_bool_operand_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(NonBoolOperandTest);
-    defineReflectiveTests(NonBoolOperandTest_NNBD);
+    defineReflectiveTests(NonBoolOperandWithNullSafetyTest);
   });
 }
 
@@ -59,7 +59,7 @@
 }
 
 @reflectiveTest
-class NonBoolOperandTest_NNBD extends DriverResolutionTest
+class NonBoolOperandWithNullSafetyTest extends DriverResolutionTest
     with WithNullSafetyMixin {
   test_and_null() async {
     await assertErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_case_expression_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_case_expression_test.dart
index 30c5ffb..e37e3ea 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_case_expression_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_case_expression_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(NonConstantCaseExpressionTest);
-    defineReflectiveTests(NonConstantCaseExpressionWithNnbdTest);
+    defineReflectiveTests(NonConstantCaseExpressionWithNullSafetyTest);
   });
 }
 
@@ -66,5 +66,5 @@
 }
 
 @reflectiveTest
-class NonConstantCaseExpressionWithNnbdTest
+class NonConstantCaseExpressionWithNullSafetyTest
     extends NonConstantCaseExpressionTest with WithNullSafetyMixin {}
diff --git a/pkg/analyzer/test/src/diagnostics/non_type_in_catch_clause_test.dart b/pkg/analyzer/test/src/diagnostics/non_type_in_catch_clause_test.dart
index 92f7df5..1ce275e 100644
--- a/pkg/analyzer/test/src/diagnostics/non_type_in_catch_clause_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_type_in_catch_clause_test.dart
@@ -62,7 +62,7 @@
   }
 }
 ''', [
-      error(StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE, 21, 1),
+      error(CompileTimeErrorCode.NON_TYPE_IN_CATCH_CLAUSE, 21, 1),
       error(HintCode.UNUSED_CATCH_CLAUSE, 30, 1),
     ]);
   }
@@ -76,7 +76,7 @@
   }
 }
 ''', [
-      error(StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE, 32, 1),
+      error(CompileTimeErrorCode.NON_TYPE_IN_CATCH_CLAUSE, 32, 1),
       error(HintCode.UNUSED_CATCH_CLAUSE, 41, 1),
     ]);
   }
diff --git a/pkg/analyzer/test/src/diagnostics/non_void_return_for_operator_test.dart b/pkg/analyzer/test/src/diagnostics/non_void_return_for_operator_test.dart
index b63e7ce..b0d4dd0 100644
--- a/pkg/analyzer/test/src/diagnostics/non_void_return_for_operator_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_void_return_for_operator_test.dart
@@ -20,7 +20,7 @@
 class A {
   int operator []=(a, b) { return a; }
 }''', [
-      error(StaticWarningCode.NON_VOID_RETURN_FOR_OPERATOR, 12, 3),
+      error(CompileTimeErrorCode.NON_VOID_RETURN_FOR_OPERATOR, 12, 3),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/non_void_return_for_setter_test.dart b/pkg/analyzer/test/src/diagnostics/non_void_return_for_setter_test.dart
index 835fb02..b35f65d 100644
--- a/pkg/analyzer/test/src/diagnostics/non_void_return_for_setter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_void_return_for_setter_test.dart
@@ -20,7 +20,7 @@
 int set x(int v) {
   return 42;
 }''', [
-      error(StaticWarningCode.NON_VOID_RETURN_FOR_SETTER, 0, 3),
+      error(CompileTimeErrorCode.NON_VOID_RETURN_FOR_SETTER, 0, 3),
     ]);
   }
 
@@ -43,7 +43,7 @@
     return 42;
   }
 }''', [
-      error(StaticWarningCode.NON_VOID_RETURN_FOR_SETTER, 12, 3),
+      error(CompileTimeErrorCode.NON_VOID_RETURN_FOR_SETTER, 12, 3),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/not_a_type_test.dart b/pkg/analyzer/test/src/diagnostics/not_a_type_test.dart
index 8f961ad..c5280ab 100644
--- a/pkg/analyzer/test/src/diagnostics/not_a_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/not_a_type_test.dart
@@ -15,11 +15,35 @@
 
 @reflectiveTest
 class NotATypeTest extends DriverResolutionTest {
+  test_class_constructor() async {
+    await assertErrorsInCode('''
+class A {
+  A.foo();
+}
+
+A.foo bar() {}
+''', [
+      error(CompileTimeErrorCode.NOT_A_TYPE, 24, 5),
+    ]);
+  }
+
+  test_class_method() async {
+    await assertErrorsInCode('''
+class A {
+  static void foo() {}
+}
+
+A.foo bar() {}
+''', [
+      error(CompileTimeErrorCode.NOT_A_TYPE, 36, 5),
+    ]);
+  }
+
   test_extension() async {
     await assertErrorsInCode('''
 extension E on int {}
 E a;
-''', [error(StaticWarningCode.NOT_A_TYPE, 22, 1)]);
+''', [error(CompileTimeErrorCode.NOT_A_TYPE, 22, 1)]);
     var typeName = findNode.typeName('E a;');
     assertTypeDynamic(typeName.type);
     assertTypeNull(typeName.name);
@@ -31,7 +55,7 @@
 main() {
   f v = null;
 }''', [
-      error(StaticWarningCode.NOT_A_TYPE, 18, 1),
+      error(CompileTimeErrorCode.NOT_A_TYPE, 18, 1),
       error(HintCode.UNUSED_LOCAL_VARIABLE, 20, 1),
     ]);
   }
diff --git a/pkg/analyzer/test/src/diagnostics/part_of_different_library_test.dart b/pkg/analyzer/test/src/diagnostics/part_of_different_library_test.dart
index b54eff4..a40df04 100644
--- a/pkg/analyzer/test/src/diagnostics/part_of_different_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/part_of_different_library_test.dart
@@ -21,7 +21,7 @@
 library lib;
 part 'part.dart';
 ''', [
-      error(StaticWarningCode.PART_OF_DIFFERENT_LIBRARY, 18, 11),
+      error(CompileTimeErrorCode.PART_OF_DIFFERENT_LIBRARY, 18, 11),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/receiver_of_type_never_test.dart b/pkg/analyzer/test/src/diagnostics/receiver_of_type_never_test.dart
index c466333..67439cb 100644
--- a/pkg/analyzer/test/src/diagnostics/receiver_of_type_never_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/receiver_of_type_never_test.dart
@@ -78,7 +78,7 @@
   x + (1 + 2);
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 24, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 24, 1),
     ]);
 
     assertBinaryExpression(
@@ -122,7 +122,7 @@
   x();
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 24, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 24, 1),
     ]);
   }
 
@@ -190,7 +190,7 @@
   x[0];
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 24, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 24, 1),
       error(StaticTypeWarningCode.UNDEFINED_OPERATOR, 25, 3),
     ]);
 
@@ -208,7 +208,7 @@
   x[0] += 1 + 2;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 24, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 24, 1),
       error(StaticTypeWarningCode.UNDEFINED_OPERATOR, 25, 3),
       error(StaticTypeWarningCode.UNDEFINED_OPERATOR, 25, 3),
     ]);
@@ -229,7 +229,7 @@
   x[0] = 1 + 2;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 24, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 24, 1),
       error(StaticTypeWarningCode.UNDEFINED_OPERATOR, 25, 3),
     ]);
 
@@ -335,7 +335,7 @@
   x++;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 24, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 24, 1),
     ]);
 
     assertPostfixExpression(
@@ -368,7 +368,7 @@
   ++x;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 26, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 26, 1),
     ]);
 
     assertPrefixExpression(
@@ -470,7 +470,7 @@
   x.foo;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 24, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 24, 1),
     ]);
 
     assertSimpleIdentifier(
diff --git a/pkg/analyzer/test/src/diagnostics/recursive_compile_time_constant_test.dart b/pkg/analyzer/test/src/diagnostics/recursive_compile_time_constant_test.dart
index 05d0a4c..c07784e 100644
--- a/pkg/analyzer/test/src/diagnostics/recursive_compile_time_constant_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/recursive_compile_time_constant_test.dart
@@ -21,9 +21,7 @@
 const y = x + 1;
 ''', [
       error(CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT, 6, 1),
-      error(StrongModeCode.TOP_LEVEL_CYCLE, 10, 1),
       error(CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT, 23, 1),
-      error(StrongModeCode.TOP_LEVEL_CYCLE, 27, 1),
     ]);
   }
 
@@ -72,7 +70,6 @@
 const x = x;
 ''', [
       error(CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT, 6, 1),
-      error(StrongModeCode.TOP_LEVEL_CYCLE, 10, 1),
     ]);
   }
 
@@ -85,7 +82,6 @@
 ];
 ''', [
       error(CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT, 6, 5),
-      error(StrongModeCode.TOP_LEVEL_CYCLE, 39, 5),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/redirect_to_invalid_function_type_test.dart b/pkg/analyzer/test/src/diagnostics/redirect_to_invalid_function_type_test.dart
index bd47fd3..ee21c3b 100644
--- a/pkg/analyzer/test/src/diagnostics/redirect_to_invalid_function_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/redirect_to_invalid_function_type_test.dart
@@ -23,7 +23,7 @@
 class B {
   factory B() = A;
 }''', [
-      error(StaticWarningCode.REDIRECT_TO_INVALID_FUNCTION_TYPE, 65, 1),
+      error(CompileTimeErrorCode.REDIRECT_TO_INVALID_FUNCTION_TYPE, 65, 1),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/redirect_to_invalid_return_type_test.dart b/pkg/analyzer/test/src/diagnostics/redirect_to_invalid_return_type_test.dart
index d1b8b0f..c61ac9c 100644
--- a/pkg/analyzer/test/src/diagnostics/redirect_to_invalid_return_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/redirect_to_invalid_return_type_test.dart
@@ -23,7 +23,7 @@
 class B {
   factory B() = A;
 }''', [
-      error(StaticWarningCode.REDIRECT_TO_INVALID_RETURN_TYPE, 47, 1),
+      error(CompileTimeErrorCode.REDIRECT_TO_INVALID_RETURN_TYPE, 47, 1),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/referenced_before_declaration_test.dart b/pkg/analyzer/test/src/diagnostics/referenced_before_declaration_test.dart
index 8e571cd..a3abb89 100644
--- a/pkg/analyzer/test/src/diagnostics/referenced_before_declaration_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/referenced_before_declaration_test.dart
@@ -69,7 +69,7 @@
     ]);
   }
 
-  test_hideInBlock_subBlock() async {
+  test_hideInBlock_local_subBlock() async {
     await assertErrorsInCode(r'''
 var v = 1;
 main() {
@@ -85,6 +85,82 @@
     ]);
   }
 
+  test_hideInSwitchCase_function() async {
+    await assertErrorsInCode(r'''
+var v = 0;
+
+void f(int a) {
+  switch (a) {
+    case 0:
+      v;
+      void v() {}
+  }
+}
+''', [
+      error(CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION, 61, 1,
+          contextMessages: [message('/test/lib/test.dart', 75, 1)]),
+    ]);
+
+    assertElement(findNode.simple('v;'), findElement.localFunction('v'));
+  }
+
+  test_hideInSwitchCase_local() async {
+    await assertErrorsInCode(r'''
+var v = 0;
+
+void f(int a) {
+  switch (a) {
+    case 0:
+      v;
+      var v = 1;
+  }
+}
+''', [
+      error(CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION, 61, 1,
+          contextMessages: [message('/test/lib/test.dart', 74, 1)]),
+    ]);
+
+    assertElement(findNode.simple('v;'), findElement.localVar('v'));
+  }
+
+  test_hideInSwitchDefault_function() async {
+    await assertErrorsInCode(r'''
+var v = 0;
+
+void f(int a) {
+  switch (a) {
+    default:
+      v;
+      void v() {}
+  }
+}
+''', [
+      error(CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION, 62, 1,
+          contextMessages: [message('/test/lib/test.dart', 76, 1)]),
+    ]);
+
+    assertElement(findNode.simple('v;'), findElement.localFunction('v'));
+  }
+
+  test_hideInSwitchDefault_local() async {
+    await assertErrorsInCode(r'''
+var v = 0;
+
+void f(int a) {
+  switch (a) {
+    default:
+      v;
+      var v = 1;
+  }
+}
+''', [
+      error(CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION, 62, 1,
+          contextMessages: [message('/test/lib/test.dart', 75, 1)]),
+    ]);
+
+    assertElement(findNode.simple('v;'), findElement.localVar('v'));
+  }
+
   test_inInitializer_closure() async {
     await assertErrorsInCode(r'''
 main() {
@@ -107,6 +183,30 @@
     ]);
   }
 
+  test_labeledStatement_function() async {
+    await assertNoErrorsInCode(r'''
+void f() {
+  // ignore:unused_label
+  label: void v() {}
+  v;
+}
+''');
+
+    assertElement(findNode.simple('v;'), findElement.localFunction('v'));
+  }
+
+  test_labeledStatement_local() async {
+    await assertNoErrorsInCode(r'''
+void f() {
+  // ignore:unused_label
+  label: var v = 0;
+  v; 
+}
+''');
+
+    assertElement(findNode.simple('v;'), findElement.localVar('v'));
+  }
+
   test_type_localFunction() async {
     await assertErrorsInCode(r'''
 void testTypeRef() {
diff --git a/pkg/analyzer/test/src/diagnostics/return_without_value_test.dart b/pkg/analyzer/test/src/diagnostics/return_without_value_test.dart
index be13d13..93bed68 100644
--- a/pkg/analyzer/test/src/diagnostics/return_without_value_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/return_without_value_test.dart
@@ -23,7 +23,7 @@
   return;
 }
 ''', [
-      error(StaticWarningCode.RETURN_WITHOUT_VALUE, 26, 6),
+      error(CompileTimeErrorCode.RETURN_WITHOUT_VALUE, 26, 6),
     ]);
   }
 
@@ -33,7 +33,7 @@
   return;
 }
 ''', [
-      error(StaticWarningCode.RETURN_WITHOUT_VALUE, 29, 6),
+      error(CompileTimeErrorCode.RETURN_WITHOUT_VALUE, 29, 6),
     ]);
   }
 
@@ -45,7 +45,7 @@
   }
 }
 ''', [
-      error(StaticWarningCode.RETURN_WITHOUT_VALUE, 30, 6),
+      error(CompileTimeErrorCode.RETURN_WITHOUT_VALUE, 30, 6),
     ]);
   }
 
@@ -55,7 +55,7 @@
   return;
 }
 ''', [
-      error(StaticWarningCode.RETURN_WITHOUT_VALUE, 12, 6),
+      error(CompileTimeErrorCode.RETURN_WITHOUT_VALUE, 12, 6),
     ]);
   }
 
@@ -112,7 +112,7 @@
   };
 }
 ''', [
-      error(StaticWarningCode.RETURN_WITHOUT_VALUE, 48, 6),
+      error(CompileTimeErrorCode.RETURN_WITHOUT_VALUE, 48, 6),
     ]);
   }
 
@@ -132,7 +132,7 @@
   }
 }
 ''', [
-      error(StaticWarningCode.RETURN_WITHOUT_VALUE, 26, 6),
+      error(CompileTimeErrorCode.RETURN_WITHOUT_VALUE, 26, 6),
     ]);
   }
 
@@ -147,7 +147,7 @@
   return;
 }
 ''', [
-      error(StaticWarningCode.RETURN_WITHOUT_VALUE, 50, 6),
+      error(CompileTimeErrorCode.RETURN_WITHOUT_VALUE, 50, 6),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/sdk_version_never_test.dart b/pkg/analyzer/test/src/diagnostics/sdk_version_never_test.dart
index 443e5d00..25f3ed0 100644
--- a/pkg/analyzer/test/src/diagnostics/sdk_version_never_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/sdk_version_never_test.dart
@@ -13,7 +13,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(SdkVersionNeverTest);
-    defineReflectiveTests(SdkVersionNeverWithNnbdTest);
+    defineReflectiveTests(SdkVersionNeverWithNullSafetyTest);
   });
 }
 
@@ -33,7 +33,7 @@
 }
 
 @reflectiveTest
-class SdkVersionNeverWithNnbdTest extends SdkConstraintVerifierTest
+class SdkVersionNeverWithNullSafetyTest extends SdkConstraintVerifierTest
     with WithNullSafetyMixin {
   test_experimentEnabled() async {
     await verifyVersion('2.7.0', r'''
diff --git a/pkg/analyzer/test/src/diagnostics/set_element_type_not_assignable_test.dart b/pkg/analyzer/test/src/diagnostics/set_element_type_not_assignable_test.dart
index 5ab2d41..08957ff 100644
--- a/pkg/analyzer/test/src/diagnostics/set_element_type_not_assignable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/set_element_type_not_assignable_test.dart
@@ -42,7 +42,8 @@
 ''',
         analysisOptions.experimentStatus.constant_update_2018
             ? [
-                error(StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 82, 1),
+                error(CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 82,
+                    1),
               ]
             : [
                 error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 64, 19),
@@ -56,11 +57,13 @@
 ''',
         analysisOptions.experimentStatus.constant_update_2018
             ? [
-                error(StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 31, 3),
+                error(CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 31,
+                    3),
               ]
             : [
                 error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 20, 14),
-                error(StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 31, 3),
+                error(CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 31,
+                    3),
               ]);
   }
 
@@ -98,7 +101,8 @@
 ''',
         analysisOptions.experimentStatus.constant_update_2018
             ? [
-                error(StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 53, 1),
+                error(CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 53,
+                    1),
               ]
             : [
                 error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 43, 11),
@@ -121,7 +125,7 @@
     await assertErrorsInCode('''
 var v = const <String>{42};
 ''', [
-      error(StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 23, 2),
+      error(CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 23, 2),
     ]);
   }
 
@@ -137,7 +141,7 @@
 const dynamic x = 42;
 var v = const <String>{x};
 ''', [
-      error(StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 45, 1),
+      error(CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 45, 1),
     ]);
   }
 
@@ -145,7 +149,7 @@
     await assertErrorsInCode('''
 var v = <String>{42};
 ''', [
-      error(StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 17, 2),
+      error(CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 17, 2),
     ]);
   }
 
@@ -169,7 +173,7 @@
     await assertErrorsInCode('''
 var v = <int>[if (1 < 0) 'a'];
 ''', [
-      error(StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 25, 3),
+      error(CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 25, 3),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/static_access_to_instance_member_test.dart b/pkg/analyzer/test/src/diagnostics/static_access_to_instance_member_test.dart
index db3e52c..2e14499 100644
--- a/pkg/analyzer/test/src/diagnostics/static_access_to_instance_member_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/static_access_to_instance_member_test.dart
@@ -35,7 +35,7 @@
   E.g;
 }
 ''', [
-      error(StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER, 51, 1),
+      error(CompileTimeErrorCode.STATIC_ACCESS_TO_INSTANCE_MEMBER, 51, 1),
     ]);
   }
 
@@ -48,7 +48,7 @@
   E.m();
 }
 ''', [
-      error(StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER, 47, 1),
+      error(CompileTimeErrorCode.STATIC_ACCESS_TO_INSTANCE_MEMBER, 47, 1),
     ]);
   }
 
@@ -61,7 +61,7 @@
   E.s = 2;
 }
 ''', [
-      error(StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER, 56, 1),
+      error(CompileTimeErrorCode.STATIC_ACCESS_TO_INSTANCE_MEMBER, 56, 1),
     ]);
   }
 
@@ -73,7 +73,7 @@
 main() {
   A.m();
 }''', [
-      error(StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER, 34, 1),
+      error(CompileTimeErrorCode.STATIC_ACCESS_TO_INSTANCE_MEMBER, 34, 1),
     ]);
   }
 
@@ -85,7 +85,7 @@
 main() {
   A.m;
 }''', [
-      error(StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER, 34, 1),
+      error(CompileTimeErrorCode.STATIC_ACCESS_TO_INSTANCE_MEMBER, 34, 1),
     ]);
   }
 
@@ -97,7 +97,7 @@
 main() {
   A.f;
 }''', [
-      error(StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER, 34, 1),
+      error(CompileTimeErrorCode.STATIC_ACCESS_TO_INSTANCE_MEMBER, 34, 1),
     ]);
   }
 
@@ -109,7 +109,7 @@
 main() {
   A.f;
 }''', [
-      error(StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER, 40, 1),
+      error(CompileTimeErrorCode.STATIC_ACCESS_TO_INSTANCE_MEMBER, 40, 1),
     ]);
   }
 
@@ -121,7 +121,7 @@
 main() {
   A.f = 42;
 }''', [
-      error(StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER, 39, 1),
+      error(CompileTimeErrorCode.STATIC_ACCESS_TO_INSTANCE_MEMBER, 39, 1),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/super_in_redirecting_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/super_in_redirecting_constructor_test.dart
index 1a10868..98b93d9 100644
--- a/pkg/analyzer/test/src/diagnostics/super_in_redirecting_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/super_in_redirecting_constructor_test.dart
@@ -17,26 +17,24 @@
 class SuperInRedirectingConstructorTest extends DriverResolutionTest {
   test_redirectionSuper() async {
     await assertErrorsInCode(r'''
-class A {}
-class B {
-  B() : this.name(), super();
-  B.name() {}
+class A {
+  A() : this.name(), super();
+  A.name() {}
 }
 ''', [
-      error(CompileTimeErrorCode.SUPER_IN_REDIRECTING_CONSTRUCTOR, 42, 7),
+      error(CompileTimeErrorCode.SUPER_IN_REDIRECTING_CONSTRUCTOR, 31, 7),
     ]);
   }
 
   test_superRedirection() async {
     await assertErrorsInCode(r'''
-class A {}
-class B {
-  B() : super(), this.name();
-  B.name() {}
+class A {
+  A() : super(), this.name();
+  A.name() {}
 }
 ''', [
-      error(StrongModeCode.INVALID_SUPER_INVOCATION, 29, 7),
-      error(CompileTimeErrorCode.SUPER_IN_REDIRECTING_CONSTRUCTOR, 29, 7),
+      error(CompileTimeErrorCode.INVALID_SUPER_INVOCATION, 18, 7),
+      error(CompileTimeErrorCode.SUPER_IN_REDIRECTING_CONSTRUCTOR, 18, 7),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/switch_expression_not_assignable_test.dart b/pkg/analyzer/test/src/diagnostics/switch_expression_not_assignable_test.dart
index e8d5051..0e9f2b5 100644
--- a/pkg/analyzer/test/src/diagnostics/switch_expression_not_assignable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/switch_expression_not_assignable_test.dart
@@ -22,7 +22,7 @@
     case 'a': break;
   }
 }''', [
-      error(StaticWarningCode.SWITCH_EXPRESSION_NOT_ASSIGNABLE, 21, 1),
+      error(CompileTimeErrorCode.SWITCH_EXPRESSION_NOT_ASSIGNABLE, 21, 1),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/test_all.dart b/pkg/analyzer/test/src/diagnostics/test_all.dart
index 170a1f0..f5f1ba7 100644
--- a/pkg/analyzer/test/src/diagnostics/test_all.dart
+++ b/pkg/analyzer/test/src/diagnostics/test_all.dart
@@ -89,6 +89,10 @@
     as const_spread_expected_list_or_set;
 import 'const_spread_expected_map_test.dart' as const_spread_expected_map;
 import 'const_with_non_const_test.dart' as const_with_non_const;
+import 'const_with_non_type_test.dart' as const_with_non_type;
+import 'const_with_type_parameters_test.dart' as const_with_type_parameters;
+import 'const_with_undefined_constructor_test.dart'
+    as const_with_undefined_constructor;
 import 'dead_code_test.dart' as dead_code;
 import 'dead_null_aware_expression_test.dart' as dead_null_aware_expression;
 import 'default_list_constructor_test.dart' as default_list_constructor;
@@ -185,6 +189,8 @@
     as for_in_of_invalid_element_type;
 import 'for_in_of_invalid_type_test.dart' as for_in_of_invalid_type;
 import 'for_in_with_const_variable_test.dart' as for_in_with_const_variable;
+import 'generic_function_type_cannot_be_bound_test.dart'
+    as generic_function_type_cannot_be_bound;
 import 'generic_struct_subclass_test.dart' as generic_struct_subclass;
 import 'getter_not_assignable_setter_types_test.dart'
     as getter_not_assignable_setter_types;
@@ -205,6 +211,7 @@
     as implicit_this_reference_in_initializer;
 import 'import_deferred_library_with_load_function_test.dart'
     as import_deferred_library_with_load_function;
+import 'import_internal_library_test.dart' as import_internal_library;
 import 'import_of_non_library_test.dart' as import_of_non_library;
 import 'inconsistent_case_expression_types_test.dart'
     as inconsistent_case_expression_types;
@@ -280,6 +287,7 @@
 import 'invalid_required_positional_param_test.dart'
     as invalid_required_positional_param;
 import 'invalid_sealed_annotation_test.dart' as invalid_sealed_annotation;
+import 'invalid_super_invocation_test.dart' as invalid_super_invocation;
 import 'invalid_type_argument_in_const_list_test.dart'
     as invalid_type_argument_in_const_list;
 import 'invalid_type_argument_in_const_map_test.dart'
@@ -524,6 +532,7 @@
     as switch_expression_not_assignable;
 import 'throw_of_invalid_type_test.dart' as throw_of_invalid_type;
 import 'todo_test.dart' as todo_test;
+import 'top_level_cycle_test.dart' as top_level_cycle;
 import 'top_level_instance_getter_test.dart' as top_level_instance_getter;
 import 'top_level_instance_method_test.dart' as top_level_instance_method;
 import 'type_alias_cannot_reference_itself_test.dart'
@@ -658,6 +667,9 @@
     const_spread_expected_list_or_set.main();
     const_spread_expected_map.main();
     const_with_non_const.main();
+    const_with_non_type.main();
+    const_with_type_parameters.main();
+    const_with_undefined_constructor.main();
     dead_code.main();
     dead_null_aware_expression.main();
     default_list_constructor.main();
@@ -722,6 +734,7 @@
     for_in_of_invalid_element_type.main();
     for_in_of_invalid_type.main();
     for_in_with_const_variable.main();
+    generic_function_type_cannot_be_bound.main();
     generic_struct_subclass.main();
     getter_not_assignable_setter_types.main();
     getter_not_subtype_setter_types.main();
@@ -735,6 +748,7 @@
     implements_super_class.main();
     implicit_this_reference_in_initializer.main();
     import_deferred_library_with_load_function.main();
+    import_internal_library.main();
     import_of_non_library.main();
     inconsistent_case_expression_types.main();
     inconsistent_inheritance_getter_and_method.main();
@@ -785,6 +799,7 @@
     invalid_required_optional_positional_param.main();
     invalid_required_positional_param.main();
     invalid_sealed_annotation.main();
+    invalid_super_invocation.main();
     invalid_type_argument_in_const_list.main();
     invalid_type_argument_in_const_map.main();
     invalid_type_argument_in_const_set.main();
@@ -947,6 +962,7 @@
     switch_expression_not_assignable.main();
     throw_of_invalid_type.main();
     todo_test.main();
+    top_level_cycle.main();
     top_level_instance_getter.main();
     top_level_instance_method.main();
     type_alias_cannot_reference_itself.main();
diff --git a/pkg/analyzer/test/src/diagnostics/top_level_cycle_test.dart b/pkg/analyzer/test/src/diagnostics/top_level_cycle_test.dart
new file mode 100644
index 0000000..e0732c8
--- /dev/null
+++ b/pkg/analyzer/test/src/diagnostics/top_level_cycle_test.dart
@@ -0,0 +1,47 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:analyzer/src/error/codes.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../dart/resolution/driver_resolution.dart';
+
+main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(TopLevelCycleTest);
+  });
+}
+
+@reflectiveTest
+class TopLevelCycleTest extends DriverResolutionTest {
+  test_cycle() async {
+    await assertErrorsInCode(r'''
+var x = y + 1;
+var y = x + 1;
+''', [
+      error(CompileTimeErrorCode.TOP_LEVEL_CYCLE, 8, 1),
+      error(CompileTimeErrorCode.TOP_LEVEL_CYCLE, 23, 1),
+    ]);
+  }
+
+  test_singleVariable() async {
+    await assertErrorsInCode(r'''
+var x = x;
+''', [
+      error(CompileTimeErrorCode.TOP_LEVEL_CYCLE, 8, 1),
+    ]);
+  }
+
+  test_singleVariable_fromList() async {
+    await assertErrorsInCode(r'''
+var elems = [
+  [
+    1, elems, 3,
+  ],
+];
+''', [
+      error(CompileTimeErrorCode.TOP_LEVEL_CYCLE, 25, 5),
+    ]);
+  }
+}
diff --git a/pkg/analyzer/test/src/diagnostics/type_annotation_deferred_class_test.dart b/pkg/analyzer/test/src/diagnostics/type_annotation_deferred_class_test.dart
index 516f8c5..e1aebac 100644
--- a/pkg/analyzer/test/src/diagnostics/type_annotation_deferred_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/type_annotation_deferred_class_test.dart
@@ -25,7 +25,7 @@
 f(var v) {
   v as a.A;
 }''', [
-      error(StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS, 66, 3),
+      error(CompileTimeErrorCode.TYPE_ANNOTATION_DEFERRED_CLASS, 66, 3),
     ]);
   }
 
@@ -41,7 +41,7 @@
   } on a.A {
   }
 }''', [
-      error(StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS, 74, 3),
+      error(CompileTimeErrorCode.TYPE_ANNOTATION_DEFERRED_CLASS, 74, 3),
     ]);
   }
 
@@ -56,7 +56,7 @@
   var v;
   C(a.A this.v);
 }''', [
-      error(StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS, 71, 3),
+      error(CompileTimeErrorCode.TYPE_ANNOTATION_DEFERRED_CLASS, 71, 3),
     ]);
   }
 
@@ -68,7 +68,7 @@
 library root;
 import 'lib1.dart' deferred as a;
 a.A f() { return null; }''', [
-      error(StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS, 48, 3),
+      error(CompileTimeErrorCode.TYPE_ANNOTATION_DEFERRED_CLASS, 48, 3),
     ]);
   }
 
@@ -80,7 +80,7 @@
 library root;
 import 'lib1.dart' deferred as a;
 f(a.A g()) {}''', [
-      error(StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS, 50, 3),
+      error(CompileTimeErrorCode.TYPE_ANNOTATION_DEFERRED_CLASS, 50, 3),
     ]);
   }
 
@@ -95,7 +95,7 @@
   bool b = v is a.A;
 }''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 66, 1),
-      error(StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS, 75, 3),
+      error(CompileTimeErrorCode.TYPE_ANNOTATION_DEFERRED_CLASS, 75, 3),
     ]);
   }
 
@@ -109,7 +109,7 @@
 class C {
   a.A m() { return null; }
 }''', [
-      error(StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS, 60, 3),
+      error(CompileTimeErrorCode.TYPE_ANNOTATION_DEFERRED_CLASS, 60, 3),
     ]);
   }
 
@@ -121,7 +121,7 @@
 library root;
 import 'lib1.dart' deferred as a;
 f(a.A v) {}''', [
-      error(StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS, 50, 3),
+      error(CompileTimeErrorCode.TYPE_ANNOTATION_DEFERRED_CLASS, 50, 3),
     ]);
   }
 
@@ -134,7 +134,7 @@
 import 'lib1.dart' deferred as a;
 class C<E> {}
 C<a.A> c;''', [
-      error(StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS, 64, 3),
+      error(CompileTimeErrorCode.TYPE_ANNOTATION_DEFERRED_CLASS, 64, 3),
     ]);
   }
 
@@ -147,8 +147,8 @@
 import 'lib1.dart' deferred as a;
 class C<E, F> {}
 C<a.A, a.A> c;''', [
-      error(StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS, 67, 3),
-      error(StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS, 72, 3),
+      error(CompileTimeErrorCode.TYPE_ANNOTATION_DEFERRED_CLASS, 67, 3),
+      error(CompileTimeErrorCode.TYPE_ANNOTATION_DEFERRED_CLASS, 72, 3),
     ]);
   }
 
@@ -160,7 +160,7 @@
 library root;
 import 'lib1.dart' deferred as a;
 class C<E extends a.A> {}''', [
-      error(StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS, 66, 3),
+      error(CompileTimeErrorCode.TYPE_ANNOTATION_DEFERRED_CLASS, 66, 3),
     ]);
   }
 
@@ -172,7 +172,7 @@
 library root;
 import 'lib1.dart' deferred as a;
 a.A v;''', [
-      error(StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS, 48, 3),
+      error(CompileTimeErrorCode.TYPE_ANNOTATION_DEFERRED_CLASS, 48, 3),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/type_argument_not_matching_bounds_test.dart b/pkg/analyzer/test/src/diagnostics/type_argument_not_matching_bounds_test.dart
index 3d380ff..b8e6b4c 100644
--- a/pkg/analyzer/test/src/diagnostics/type_argument_not_matching_bounds_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/type_argument_not_matching_bounds_test.dart
@@ -12,7 +12,7 @@
   defineReflectiveSuite(() {
     defineReflectiveTests(TypeArgumentNotMatchingBoundsTest);
     defineReflectiveTests(
-      TypeArgumentNotMatchingBoundsWithNnbdTest,
+      TypeArgumentNotMatchingBoundsWithNullSafetyTest,
     );
   });
 }
@@ -348,7 +348,7 @@
   factory X.name(int x, int y) = X<B>;
 }
 ''', [
-      error(StaticWarningCode.REDIRECT_TO_INVALID_RETURN_TYPE, 99, 4),
+      error(CompileTimeErrorCode.REDIRECT_TO_INVALID_RETURN_TYPE, 99, 4),
       error(CompileTimeErrorCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, 101, 1),
     ]);
   }
@@ -401,7 +401,7 @@
 }
 
 @reflectiveTest
-class TypeArgumentNotMatchingBoundsWithNnbdTest
+class TypeArgumentNotMatchingBoundsWithNullSafetyTest
     extends TypeArgumentNotMatchingBoundsTest with WithNullSafetyMixin {
   test_extends_optIn_fromOptOut_Null() async {
     newFile('/test/lib/a.dart', content: r'''
diff --git a/pkg/analyzer/test/src/diagnostics/type_parameter_referenced_by_static_test.dart b/pkg/analyzer/test/src/diagnostics/type_parameter_referenced_by_static_test.dart
index 7678cc3..a1701e8 100644
--- a/pkg/analyzer/test/src/diagnostics/type_parameter_referenced_by_static_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/type_parameter_referenced_by_static_test.dart
@@ -23,7 +23,7 @@
   }
 }
 ''', [
-      error(StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, 34, 1),
+      error(CompileTimeErrorCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, 34, 1),
     ]);
   }
 
@@ -33,7 +33,7 @@
   static T foo;
 }
 ''', [
-      error(StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, 22, 1),
+      error(CompileTimeErrorCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, 22, 1),
     ]);
   }
 
@@ -43,7 +43,7 @@
   static T get foo => null;
 }
 ''', [
-      error(StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, 22, 1),
+      error(CompileTimeErrorCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, 22, 1),
     ]);
   }
 
@@ -56,7 +56,7 @@
   }
 }
 ''', [
-      error(StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, 70, 1),
+      error(CompileTimeErrorCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, 70, 1),
     ]);
   }
 
@@ -68,7 +68,7 @@
   }
 }
 ''', [
-      error(StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, 49, 1),
+      error(CompileTimeErrorCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, 49, 1),
     ]);
   }
 
@@ -78,7 +78,7 @@
   static foo(T a) {}
 }
 ''', [
-      error(StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, 26, 1),
+      error(CompileTimeErrorCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, 26, 1),
     ]);
   }
 
@@ -90,7 +90,7 @@
   }
 }
 ''', [
-      error(StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, 22, 1),
+      error(CompileTimeErrorCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, 22, 1),
     ]);
   }
 
@@ -100,7 +100,7 @@
   static set foo(T _) {}
 }
 ''', [
-      error(StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, 30, 1),
+      error(CompileTimeErrorCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, 30, 1),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/type_test_with_non_type_test.dart b/pkg/analyzer/test/src/diagnostics/type_test_with_non_type_test.dart
index 39f086c9..97bb854 100644
--- a/pkg/analyzer/test/src/diagnostics/type_test_with_non_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/type_test_with_non_type_test.dart
@@ -22,7 +22,7 @@
   if (p is A) {
   }
 }''', [
-      error(StaticWarningCode.TYPE_TEST_WITH_NON_TYPE, 33, 1),
+      error(CompileTimeErrorCode.TYPE_TEST_WITH_NON_TYPE, 33, 1),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/type_test_with_undefined_name_test.dart b/pkg/analyzer/test/src/diagnostics/type_test_with_undefined_name_test.dart
index b530cf4..0183ea6 100644
--- a/pkg/analyzer/test/src/diagnostics/type_test_with_undefined_name_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/type_test_with_undefined_name_test.dart
@@ -21,7 +21,7 @@
   if (p is A) {
   }
 }''', [
-      error(StaticWarningCode.TYPE_TEST_WITH_UNDEFINED_NAME, 22, 1),
+      error(CompileTimeErrorCode.TYPE_TEST_WITH_UNDEFINED_NAME, 22, 1),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_class_boolean_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_class_boolean_test.dart
index 8ee9e4b..5940836 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_class_boolean_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_class_boolean_test.dart
@@ -20,7 +20,7 @@
     await assertErrorsInCode('''
 f() { boolean v; }
 ''', [
-      error(StaticWarningCode.UNDEFINED_CLASS_BOOLEAN, 6, 7),
+      error(CompileTimeErrorCode.UNDEFINED_CLASS_BOOLEAN, 6, 7),
       error(HintCode.UNUSED_LOCAL_VARIABLE, 14, 1),
     ]);
   }
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_class_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_class_test.dart
index 2842fc2..cc2fd47 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_class_test.dart
@@ -40,7 +40,7 @@
     await assertErrorsInCode('''
 f() { new C(); }
 ''', [
-      error(StaticWarningCode.NEW_WITH_NON_TYPE, 10, 1),
+      error(CompileTimeErrorCode.NEW_WITH_NON_TYPE, 10, 1),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_identifier_await_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_identifier_await_test.dart
index 89019f9..088d627 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_identifier_await_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_identifier_await_test.dart
@@ -19,7 +19,7 @@
     await assertErrorsInCode('''
 void a() { await; }
 ''', [
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER_AWAIT, 11, 5),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER_AWAIT, 11, 5),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart
index 24e3567..e8f620e 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart
@@ -12,7 +12,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(UndefinedIdentifierTest);
-    defineReflectiveTests(UndefinedIdentifierWithNnbdTest);
+    defineReflectiveTests(UndefinedIdentifierWithNullSafetyTest);
   });
 }
 
@@ -24,8 +24,8 @@
 /** [m] xxx [new B.c] */
 class A {
 }''', [
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 5, 1),
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 17, 1),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 5, 1),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 17, 1),
     ]);
   }
 
@@ -35,7 +35,7 @@
   for (e in l) {
   }
 }''', [
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 18, 1),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 18, 1),
     ]);
   }
 
@@ -54,7 +54,7 @@
 }
 ''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 25, 1),
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 40, 1),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 40, 1),
     ]);
   }
 
@@ -76,7 +76,7 @@
 }
 ''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 17, 1),
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 31, 1),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 31, 1),
     ]);
   }
 
@@ -84,7 +84,7 @@
     await assertErrorsInCode('''
 int a() => b;
 ''', [
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 11, 1),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 11, 1),
     ]);
   }
 
@@ -95,7 +95,7 @@
   List;
   String;
 }''', [
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 49, 6),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 49, 6),
     ]);
   }
 
@@ -103,7 +103,7 @@
     await assertErrorsInCode('''
 var a = b;
 ''', [
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 8, 1),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 8, 1),
     ]);
   }
 
@@ -111,7 +111,7 @@
     await assertErrorsInCode('''
 f() { C.m(); }
 ''', [
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 6, 1),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 6, 1),
     ]);
   }
 
@@ -129,7 +129,7 @@
   }
 }''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 58, 1),
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 62, 4),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 62, 4),
     ]);
   }
 
@@ -146,7 +146,7 @@
     _foo = 42;
   }
 }''', [
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 54, 4),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 54, 4),
     ]);
   }
 
@@ -176,5 +176,5 @@
 }
 
 @reflectiveTest
-class UndefinedIdentifierWithNnbdTest extends UndefinedIdentifierTest
+class UndefinedIdentifierWithNullSafetyTest extends UndefinedIdentifierTest
     with WithNullSafetyMixin {}
diff --git a/pkg/analyzer/test/src/diagnostics/unnecessary_type_check_test.dart b/pkg/analyzer/test/src/diagnostics/unnecessary_type_check_test.dart
index 9403b54..8121ec5 100644
--- a/pkg/analyzer/test/src/diagnostics/unnecessary_type_check_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unnecessary_type_check_test.dart
@@ -11,9 +11,9 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(UnnecessaryTypeCheckFalseTest);
-    defineReflectiveTests(UnnecessaryTypeCheckFalseWithNnbdTest);
+    defineReflectiveTests(UnnecessaryTypeCheckFalseWithNullSafetyTest);
     defineReflectiveTests(UnnecessaryTypeCheckTrueTest);
-    defineReflectiveTests(UnnecessaryTypeCheckTrueWithNnbdTest);
+    defineReflectiveTests(UnnecessaryTypeCheckTrueWithNullSafetyTest);
   });
 }
 
@@ -49,7 +49,7 @@
 }
 
 @reflectiveTest
-class UnnecessaryTypeCheckFalseWithNnbdTest
+class UnnecessaryTypeCheckFalseWithNullSafetyTest
     extends UnnecessaryTypeCheckFalseTest with WithNullSafetyMixin {
   @override
   test_type_not_object() async {
@@ -103,8 +103,8 @@
 }
 
 @reflectiveTest
-class UnnecessaryTypeCheckTrueWithNnbdTest extends UnnecessaryTypeCheckTrueTest
-    with WithNullSafetyMixin {
+class UnnecessaryTypeCheckTrueWithNullSafetyTest
+    extends UnnecessaryTypeCheckTrueTest with WithNullSafetyMixin {
   @override
   test_type_is_object() async {
     await assertNoErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/unused_element_test.dart b/pkg/analyzer/test/src/diagnostics/unused_element_test.dart
index bf0abe7..b7bd46a 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_element_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_element_test.dart
@@ -11,7 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(UnusedElementTest);
-    defineReflectiveTests(UnusedElementWithNnbdTest);
+    defineReflectiveTests(UnusedElementWithNullSafetyTest);
   });
 }
 
@@ -1402,7 +1402,7 @@
 }
 
 @reflectiveTest
-class UnusedElementWithNnbdTest extends DriverResolutionTest
+class UnusedElementWithNullSafetyTest extends DriverResolutionTest
     with WithNullSafetyMixin {
   test_optionalParameter_isUsed_overrideRequiredNamed() async {
     await assertNoErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/uri_with_interpolation_test.dart b/pkg/analyzer/test/src/diagnostics/uri_with_interpolation_test.dart
index a396f27..bf316a5 100644
--- a/pkg/analyzer/test/src/diagnostics/uri_with_interpolation_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/uri_with_interpolation_test.dart
@@ -20,7 +20,7 @@
 import 'stuff_\$platform.dart';
 ''', [
       error(CompileTimeErrorCode.URI_WITH_INTERPOLATION, 7, 22),
-      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 15, 8),
+      error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 15, 8),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/use_of_nullable_value_test.dart b/pkg/analyzer/test/src/diagnostics/use_of_nullable_value_test.dart
index 66842d8..096a963 100644
--- a/pkg/analyzer/test/src/diagnostics/use_of_nullable_value_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/use_of_nullable_value_test.dart
@@ -64,7 +64,7 @@
 }
 ''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 27, 1),
-      error(StaticWarningCode.INVALID_USE_OF_NULL_VALUE, 32, 1),
+      error(CompileTimeErrorCode.INVALID_USE_OF_NULL_VALUE, 32, 1),
     ]);
   }
 
@@ -162,8 +162,8 @@
   }
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 126, 4),
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 154, 4),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 126, 4),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 154, 4),
     ]);
   }
 
@@ -203,8 +203,8 @@
   }
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 68, 3),
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 79, 4),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 68, 3),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 79, 4),
     ]);
   }
 
@@ -234,7 +234,7 @@
   }
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 78, 4),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 78, 4),
     ]);
   }
 
@@ -278,8 +278,8 @@
   }
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 93, 3),
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 102, 4),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 93, 3),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 102, 4),
     ]);
   }
 
@@ -323,8 +323,8 @@
   }
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 93, 3),
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 106, 4),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 93, 3),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 106, 4),
     ]);
   }
 }
@@ -348,7 +348,7 @@
   if(x && true) {}
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 22, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 22, 1),
     ]);
   }
 
@@ -377,7 +377,7 @@
   assert(x);
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 26, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 26, 1),
     ]);
   }
 
@@ -398,7 +398,7 @@
   b.a.x = 2;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 100, 3),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 100, 3),
     ]);
     var assignment1 = findNode.assignment('b.a?.x = 1');
     var assignment2 = findNode.assignment('b.a.x = 2');
@@ -441,7 +441,7 @@
   b.a.y += 0;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 109, 5),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 109, 5),
     ]);
     var assignment1 = findNode.assignment('b.a.x +=');
     var assignment2 = findNode.assignment('b.a.y +=');
@@ -468,7 +468,7 @@
   b.a.x += 2;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 101, 3),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 101, 3),
     ]);
     var assignment1 = findNode.assignment('b.a?.x += 1');
     var assignment2 = findNode.assignment('b.a.x += 2');
@@ -485,7 +485,7 @@
   y += 0;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 31, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 31, 1),
     ]);
     var assignment1 = findNode.assignment('x +=');
     var assignment2 = findNode.assignment('y +=');
@@ -529,7 +529,7 @@
   x..[0] = 1;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 24, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 24, 1),
     ]);
   }
 
@@ -549,7 +549,7 @@
   x..abs();
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
     ]);
   }
 
@@ -569,7 +569,7 @@
   x..isEven;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
     ]);
   }
 
@@ -610,7 +610,7 @@
 }
 ''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 28, 1),
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 33, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 33, 1),
     ]);
   }
 
@@ -624,7 +624,7 @@
   x.foo;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 58, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 58, 1),
       error(StaticTypeWarningCode.UNDEFINED_GETTER, 60, 3),
     ]);
   }
@@ -645,7 +645,7 @@
   if (x) {}
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 23, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 23, 1),
     ]);
   }
 
@@ -665,7 +665,7 @@
   x[0];
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 19, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 19, 1),
     ]);
   }
 
@@ -685,7 +685,7 @@
   x();
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 23, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 23, 1),
     ]);
   }
 
@@ -705,7 +705,7 @@
   x();
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 25, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 25, 1),
     ]);
   }
 
@@ -761,7 +761,7 @@
   x.isEven;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
     ]);
     assertSimpleIdentifier(
       findNode.simple('isEven'),
@@ -786,7 +786,7 @@
   (x).isEven;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 3),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 3),
     ]);
   }
 
@@ -805,7 +805,7 @@
   x.isEven;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 27, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 27, 1),
     ]);
   }
 
@@ -815,7 +815,7 @@
   x.first();
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 38, 7),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 38, 7),
     ]);
   }
 
@@ -861,7 +861,7 @@
   x.round();
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
     ]);
   }
 
@@ -875,7 +875,7 @@
   x.foo();
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 54, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 54, 1),
       error(StaticTypeWarningCode.UNDEFINED_METHOD, 56, 3),
     ]);
   }
@@ -911,7 +911,7 @@
   x.call();
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 19, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 19, 1),
     ]);
   }
 
@@ -934,7 +934,7 @@
 }
 ''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 13, 1),
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
     ]);
   }
 
@@ -954,7 +954,7 @@
   if(!x) {}
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 23, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 23, 1),
     ]);
   }
 
@@ -1011,7 +1011,7 @@
   x - 3;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
     ]);
   }
 
@@ -1031,7 +1031,7 @@
   x + 3;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
     ]);
   }
 
@@ -1054,7 +1054,7 @@
 }
 ''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 13, 1),
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
     ]);
   }
 
@@ -1072,7 +1072,7 @@
   x++;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 14, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 14, 1),
     ]);
   }
 
@@ -1088,7 +1088,7 @@
   x++;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 77, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 77, 1),
     ]);
   }
 
@@ -1111,7 +1111,7 @@
 }
 ''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 13, 1),
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 20, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 20, 1),
     ]);
   }
 
@@ -1129,7 +1129,7 @@
   ++x;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 16, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 16, 1),
     ]);
   }
 
@@ -1152,7 +1152,7 @@
 }
 ''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 13, 1),
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 19, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 19, 1),
     ]);
   }
 
@@ -1168,7 +1168,7 @@
   -x;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 73, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 73, 1),
     ]);
   }
 
@@ -1188,7 +1188,7 @@
   if(x || false) {}
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 22, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 22, 1),
     ]);
   }
 
@@ -1206,7 +1206,7 @@
   x += 1;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 14, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 14, 1),
     ]);
   }
 
@@ -1222,7 +1222,7 @@
   a.x; // 2
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 66, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 66, 1),
     ]);
     var propertyAccess1 = findNode.propertyAccess('a?.x; // 1');
     var propertyAccess2 = findNode.prefixed('a.x; // 2');
@@ -1253,7 +1253,7 @@
   b.a.x; // 2
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 101, 3),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 101, 3),
     ]);
     var propertyAccess1 = findNode.propertyAccess('b.a?.x; // 1');
     var propertyAccess2 = findNode.propertyAccess('b.a.x; // 2');
@@ -1284,7 +1284,7 @@
   b.a.x; // 2
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 101, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 101, 1),
     ]);
     var propertyAccess1 = findNode.propertyAccess('x; // 1');
     var propertyAccess2 = findNode.propertyAccess('x; // 2');
@@ -1320,7 +1320,7 @@
   c.b.a.x; // 2
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 142, 5),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 142, 5),
     ]);
     var propertyAccess1 = findNode.propertyAccess('x; // 1');
     var propertyAccess2 = findNode.propertyAccess('x; // 2');
@@ -1356,7 +1356,7 @@
   c.b.a.x; // 2
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 148, 3),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 148, 3),
     ]);
     var propertyAccess1 = findNode.propertyAccess('x; // 1');
     var propertyAccess2 = findNode.propertyAccess('x; // 2');
@@ -1390,7 +1390,7 @@
   [...list];
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 26, 4),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 26, 4),
     ]);
   }
 
@@ -1410,7 +1410,7 @@
   x ? 0 : 1;
 }
 ''', [
-      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 19, 1),
+      error(CompileTimeErrorCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 19, 1),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart b/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart
index 805c65a..e2fbe45 100644
--- a/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart
@@ -25,7 +25,7 @@
   x && true;
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 26, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 26, 1),
     ]);
   }
 
@@ -36,7 +36,7 @@
   true && x;
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 34, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 34, 1),
     ]);
   }
 
@@ -50,7 +50,7 @@
   }
 }''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 38, 1),
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 49, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 49, 1),
     ]);
   }
 
@@ -64,7 +64,7 @@
   }
 }''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 40, 1),
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 51, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 51, 1),
     ]);
   }
 
@@ -113,7 +113,7 @@
   E(f()).g;
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 71, 3),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 71, 3),
     ]);
   }
 
@@ -139,7 +139,7 @@
   }
 }''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 47, 1),
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 51, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 51, 1),
     ]);
   }
 
@@ -163,7 +163,7 @@
   "$x";
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 28, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 28, 1),
     ]);
   }
 
@@ -175,7 +175,7 @@
 }
 ''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 21, 1),
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 27, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 27, 1),
     ]);
   }
 
@@ -197,7 +197,7 @@
   x || true;
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 26, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 26, 1),
     ]);
   }
 
@@ -208,7 +208,7 @@
   false || x;
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 35, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 35, 1),
     ]);
   }
 
@@ -219,7 +219,7 @@
   throw x;
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 32, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 32, 1),
     ]);
   }
 
@@ -233,7 +233,7 @@
       // TODO(mfairhurst) suppress UNDEFINED_OPERATOR
       error(HintCode.UNUSED_LOCAL_VARIABLE, 21, 1),
       error(StaticTypeWarningCode.UNDEFINED_OPERATOR, 26, 1),
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 27, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 27, 1),
     ]);
   }
 
@@ -244,7 +244,7 @@
   list[x] = null;
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 40, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 40, 1),
     ]);
   }
 
@@ -255,7 +255,7 @@
   list[x];
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 40, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 40, 1),
     ]);
   }
 
@@ -267,7 +267,7 @@
 }
 ''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 34, 1),
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 38, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 38, 1),
     ]);
   }
 
@@ -278,7 +278,7 @@
   x[0];
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 27, 3),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 27, 3),
     ]);
   }
 
@@ -289,7 +289,7 @@
   x.foo = null;
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 28, 3),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 28, 3),
     ]);
   }
 
@@ -310,7 +310,7 @@
   x ? null : null;
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 26, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 26, 1),
     ]);
   }
 
@@ -323,7 +323,7 @@
   c ? x : null;
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 36, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 36, 1),
     ]);
   }
 
@@ -336,7 +336,7 @@
   c ? null : x;
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 43, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 43, 1),
     ]);
   }
 
@@ -347,7 +347,7 @@
   do {} while (x);
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 39, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 39, 1),
     ]);
   }
 
@@ -369,7 +369,7 @@
 }
 ''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 30, 1),
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 45, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 45, 1),
     ]);
   }
 
@@ -381,7 +381,7 @@
 }
 ''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 35, 1),
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 40, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 40, 1),
     ]);
   }
 
@@ -393,7 +393,7 @@
   for (x in [1, 2]) {}
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 31, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 31, 1),
     ]);
   }
 
@@ -413,7 +413,7 @@
   x is int;
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 26, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 26, 1),
     ]);
   }
 
@@ -424,7 +424,7 @@
   <dynamic>[x];
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 36, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 36, 1),
     ]);
   }
 
@@ -445,7 +445,7 @@
 }
 ''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 30, 2),
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 50, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 50, 1),
     ]);
   }
 
@@ -468,7 +468,7 @@
 }
 ''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 30, 2),
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 53, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 53, 1),
     ]);
   }
 
@@ -490,7 +490,7 @@
   x ?? 499;
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 26, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 26, 1),
     ]);
   }
 
@@ -511,7 +511,7 @@
 }
 ''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 21, 1),
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 28, 2),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 28, 2),
     ]);
   }
 
@@ -522,7 +522,7 @@
   switch(x) {}
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 33, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 33, 1),
     ]);
   }
 
@@ -533,7 +533,7 @@
   while (x) {};
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 33, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 33, 1),
     ]);
   }
 
@@ -544,7 +544,7 @@
   x?.foo;
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 29, 3),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 29, 3),
     ]);
   }
 
@@ -555,7 +555,7 @@
   x.foo;
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 28, 3),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 28, 3),
     ]);
   }
 
@@ -569,7 +569,7 @@
 }
 ''', [
       error(HintCode.UNUSED_ELEMENT, 22, 8),
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 96, 4),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 96, 4),
     ]);
   }
 
@@ -603,7 +603,7 @@
   use(x);
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 54, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 54, 1),
     ]);
   }
 
@@ -627,7 +627,7 @@
   }
 }''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 41, 1),
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 45, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 45, 1),
     ]);
   }
 
@@ -653,9 +653,9 @@
   }
 }''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 43, 1),
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 47, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 47, 1),
       error(HintCode.UNUSED_LOCAL_VARIABLE, 52, 1),
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 56, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 56, 1),
     ]);
   }
 
@@ -668,7 +668,7 @@
   }
 }''', [
       error(HintCode.UNUSED_LOCAL_VARIABLE, 43, 1),
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 47, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 47, 1),
     ]);
   }
 
@@ -691,7 +691,7 @@
   yield* x;
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 31, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 31, 1),
     ]);
   }
 
@@ -701,7 +701,7 @@
   yield* x;
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 30, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 30, 1),
     ]);
   }
 
@@ -711,7 +711,7 @@
   yield x;
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 30, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 30, 1),
     ]);
   }
 
@@ -721,7 +721,7 @@
   yield x;
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 29, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 29, 1),
     ]);
   }
 }
@@ -735,7 +735,7 @@
   await x;
 }
 ''', [
-      error(StaticWarningCode.USE_OF_VOID_RESULT, 29, 1),
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 29, 1),
     ]);
   }
 
@@ -744,7 +744,7 @@
 f(void x) {
   x!;
 }
-''', [ExpectedError(StaticWarningCode.USE_OF_VOID_RESULT, 14, 2)]);
+''', [ExpectedError(CompileTimeErrorCode.USE_OF_VOID_RESULT, 14, 2)]);
 
     assertType(findNode.postfix('x!'), 'void');
   }
diff --git a/pkg/analyzer/test/src/fasta/recovery/partial_code/top_level_variable_test.dart b/pkg/analyzer/test/src/fasta/recovery/partial_code/top_level_variable_test.dart
index e57c5c8..2d817a4 100644
--- a/pkg/analyzer/test/src/fasta/recovery/partial_code/top_level_variable_test.dart
+++ b/pkg/analyzer/test/src/fasta/recovery/partial_code/top_level_variable_test.dart
@@ -134,7 +134,7 @@
               'setter'
             ],
             expectedErrorsInValidCode: [
-              StaticWarningCode.FINAL_NOT_INITIALIZED
+              CompileTimeErrorCode.FINAL_NOT_INITIALIZED
             ],
           ),
           TestDescriptor(
@@ -142,12 +142,12 @@
             'final a',
             [
               ParserErrorCode.EXPECTED_TOKEN,
-              StaticWarningCode.FINAL_NOT_INITIALIZED
+              CompileTimeErrorCode.FINAL_NOT_INITIALIZED
             ],
             "final a;",
             failing: ['functionNonVoid', 'getter', 'setter', 'mixin'],
             expectedErrorsInValidCode: [
-              StaticWarningCode.FINAL_NOT_INITIALIZED
+              CompileTimeErrorCode.FINAL_NOT_INITIALIZED
             ],
           ),
           TestDescriptor(
@@ -155,11 +155,11 @@
             'final int a',
             [
               ParserErrorCode.EXPECTED_TOKEN,
-              StaticWarningCode.FINAL_NOT_INITIALIZED
+              CompileTimeErrorCode.FINAL_NOT_INITIALIZED
             ],
             "final int a;",
             expectedErrorsInValidCode: [
-              StaticWarningCode.FINAL_NOT_INITIALIZED
+              CompileTimeErrorCode.FINAL_NOT_INITIALIZED
             ],
           ),
           TestDescriptor(
diff --git a/pkg/analyzer/test/src/task/strong/checker_test.dart b/pkg/analyzer/test/src/task/strong/checker_test.dart
index 6cdf516..fe99a26 100644
--- a/pkg/analyzer/test/src/task/strong/checker_test.dart
+++ b/pkg/analyzer/test/src/task/strong/checker_test.dart
@@ -422,7 +422,7 @@
 
   A.c2(this.x, this.y);
 
-  A.c3(/*error:INVALID_PARAMETER_DECLARATION*/num this.x, String this.y);
+  A.c3(/*error:FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE*/num this.x, String this.y);
 }
 
 class B extends A {
diff --git a/pkg/analyzer/test/verify_diagnostics_test.dart b/pkg/analyzer/test/verify_diagnostics_test.dart
index ee476e0..745e237 100644
--- a/pkg/analyzer/test/verify_diagnostics_test.dart
+++ b/pkg/analyzer/test/verify_diagnostics_test.dart
@@ -38,6 +38,8 @@
   /// ony include docs that cannot be verified because of missing support in the
   /// verifier.
   static const List<String> unverifiedDocs = [
+    // Needs to be able to specify two expected diagnostics.
+    'CompileTimeErrorCode.AMBIGUOUS_IMPORT',
     // Produces two diagnostics when it should only produce one.
     'CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE',
     // Produces two diagnostics when it should only produce one. We could get
@@ -46,17 +48,15 @@
     'CompileTimeErrorCode.IMPORT_INTERNAL_LIBRARY',
     // Produces two diagnostics when it should only produce one.
     'CompileTimeErrorCode.INVALID_URI',
+    // Produces two diagnostics when it should only produce one.
+    'CompileTimeErrorCode.INVALID_USE_OF_NULL_VALUE',
     // Need a way to make auxiliary files that (a) are not included in the
     // generated docs or (b) can be made persistent for fixes.
     'CompileTimeErrorCode.PART_OF_NON_PART',
+    // Produces the diagnostic HintCode.UNUSED_LOCAL_VARIABLE when it shouldn't.
+    'CompileTimeErrorCode.UNDEFINED_IDENTIFIER_AWAIT',
     // The code has been replaced but is not yet removed.
     'HintCode.DEPRECATED_MEMBER_USE',
-    // Needs to be able to specify two expected diagnostics.
-    'StaticWarningCode.AMBIGUOUS_IMPORT',
-    // Produces two diagnostics when it should only produce one.
-    'StaticWarningCode.INVALID_USE_OF_NULL_VALUE',
-    // Produces the diagnostic HintCode.UNUSED_LOCAL_VARIABLE when it shouldn't.
-    'StaticWarningCode.UNDEFINED_IDENTIFIER_AWAIT',
   ];
 
   /// The prefix used on directive lines to specify the experiments that should
diff --git a/pkg/analyzer_plugin/lib/utilities/range_factory.dart b/pkg/analyzer_plugin/lib/utilities/range_factory.dart
index 1ef5dbc..c791818 100644
--- a/pkg/analyzer_plugin/lib/utilities/range_factory.dart
+++ b/pkg/analyzer_plugin/lib/utilities/range_factory.dart
@@ -57,14 +57,18 @@
   /// trailing comma as appropriate) in the containing [list].
   SourceRange nodeInList<T extends AstNode>(NodeList<T> list, T item) {
     if (list.length == 1) {
+      var nextToken = item.endToken.next;
+      if (nextToken.type == TokenType.COMMA) {
+        return startEnd(item, nextToken);
+      }
       return node(item);
     }
     final index = list.indexOf(item);
-    // Remove trailing comma.
     if (index == 0) {
+      // Remove the trailing comma.
       return startStart(item, list[1]);
     } else {
-      // Remove leading comma.
+      // Remove the leading comma.
       return endEnd(list[index - 1], item);
     }
   }
diff --git a/pkg/analyzer_plugin/test/utilities/range_factory_test.dart b/pkg/analyzer_plugin/test/utilities/range_factory_test.dart
index 8648555..9ab8590 100644
--- a/pkg/analyzer_plugin/test/utilities/range_factory_test.dart
+++ b/pkg/analyzer_plugin/test/utilities/range_factory_test.dart
@@ -4,6 +4,7 @@
 
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/error/error.dart';
+import 'package:analyzer/source/source_range.dart';
 import 'package:analyzer/src/generated/parser.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer_plugin/utilities/range_factory.dart';
@@ -14,12 +15,22 @@
 
 void main() {
   defineReflectiveSuite(() {
-    defineReflectiveTests(SourceRangesTest);
+    defineReflectiveTests(RangeFactoryTest);
   });
 }
 
 @reflectiveTest
-class SourceRangesTest extends AbstractSingleUnitTest {
+class RangeFactoryTest extends AbstractSingleUnitTest {
+  /// Assuming that the test code starts with a function whose block body starts
+  /// with a method invocation, return the list of arguments in that invocation.
+  NodeList<Expression> get _argumentList {
+    var f = testUnit.declarations[0] as FunctionDeclaration;
+    var body = f.functionExpression.body as BlockFunctionBody;
+    var statement = body.block.statements[0] as ExpressionStatement;
+    var invocation = statement.expression as MethodInvocation;
+    return invocation.argumentList.arguments;
+  }
+
   Future<void> test_elementName() async {
     await resolveTestUnit('class ABC {}');
     var element = findElement('ABC');
@@ -61,6 +72,117 @@
     expect(range.node(mainName), SourceRange(0, 4));
   }
 
+  Future<void> test_nodeInList_argumentList_first_named() async {
+    await resolveTestUnit('''
+void f() {
+  g(a: 1, b: 2);
+}
+void g({int a, int b}) {}
+''');
+    var list = _argumentList;
+    expect(range.nodeInList(list, list[0]), SourceRange(15, 6));
+  }
+
+  Future<void> test_nodeInList_argumentList_first_positional() async {
+    await resolveTestUnit('''
+void f() {
+  g(1, 2);
+}
+void g(int a, int b) {}
+''');
+    var list = _argumentList;
+    expect(range.nodeInList(list, list[0]), SourceRange(15, 3));
+  }
+
+  Future<void> test_nodeInList_argumentList_last_named() async {
+    await resolveTestUnit('''
+void f() {
+  g(a: 1, b: 2);
+}
+void g({int a, int b}) {}
+''');
+    var list = _argumentList;
+    expect(range.nodeInList(list, list[1]), SourceRange(19, 6));
+  }
+
+  Future<void> test_nodeInList_argumentList_last_positional() async {
+    await resolveTestUnit('''
+void f() {
+  g(1, 2);
+}
+void g(int a, int b) {}
+''');
+    var list = _argumentList;
+    expect(range.nodeInList(list, list[1]), SourceRange(16, 3));
+  }
+
+  Future<void> test_nodeInList_argumentList_middle_named() async {
+    await resolveTestUnit('''
+void f() {
+  g(a: 1, b: 2, c: 3);
+}
+void g({int a, int b, int c}) {}
+''');
+    var list = _argumentList;
+    expect(range.nodeInList(list, list[1]), SourceRange(19, 6));
+  }
+
+  Future<void> test_nodeInList_argumentList_middle_positional() async {
+    await resolveTestUnit('''
+void f() {
+  g(1, 2, 3);
+}
+void g(int a, int b, int c) {}
+''');
+    var list = _argumentList;
+    expect(range.nodeInList(list, list[1]), SourceRange(16, 3));
+  }
+
+  Future<void> test_nodeInList_argumentList_only_named() async {
+    await resolveTestUnit('''
+void f() {
+  g(a: 1);
+}
+void g({int a}) {}
+''');
+    var list = _argumentList;
+    expect(range.nodeInList(list, list[0]), SourceRange(15, 4));
+  }
+
+  Future<void> test_nodeInList_argumentList_only_named_trailingComma() async {
+    await resolveTestUnit('''
+void f() {
+  g(a: 1,);
+}
+void g({int a}) {}
+''');
+    var list = _argumentList;
+    expect(range.nodeInList(list, list[0]), SourceRange(15, 5));
+  }
+
+  Future<void> test_nodeInList_argumentList_only_positional() async {
+    await resolveTestUnit('''
+void f() {
+  g(1);
+}
+void g(int a) {}
+''');
+    var list = _argumentList;
+    expect(range.nodeInList(list, list[0]), SourceRange(15, 1));
+  }
+
+  Future<void>
+      test_nodeInList_argumentList_only_positional_trailingComma() async {
+    await resolveTestUnit('''
+void f() {
+  g(1,);
+}
+void g(int a) {}
+''');
+    var list = _argumentList;
+    expect(range.nodeInList(list, list[0]), SourceRange(15, 2));
+  }
+
   Future<void> test_nodes() async {
     await resolveTestUnit(' main() {}');
     var mainFunction = testUnit.declarations[0] as FunctionDeclaration;
diff --git a/pkg/compiler/lib/src/deferred_load.dart b/pkg/compiler/lib/src/deferred_load.dart
index 6320f60..e7fa6cd 100644
--- a/pkg/compiler/lib/src/deferred_load.dart
+++ b/pkg/compiler/lib/src/deferred_load.dart
@@ -28,6 +28,7 @@
 import 'universe/use.dart';
 import 'universe/world_impact.dart'
     show ImpactUseCase, WorldImpact, WorldImpactVisitorImpl;
+import 'util/maplet.dart';
 import 'util/util.dart' show makeUnique;
 import 'world.dart' show KClosedWorld;
 
@@ -1050,8 +1051,11 @@
         b = b._previous;
       }
     }
-    while (imports.isNotEmpty) {
-      result = result._add(imports.removeLast());
+
+    // Add merged elements back in reverse order. It is tempting to pop them off
+    // with `removeLast()` but that causes measurable shrinking reallocations.
+    for (int i = imports.length - 1; i >= 0; i--) {
+      result = result._add(imports[i]);
     }
     return result;
   }
@@ -1091,7 +1095,7 @@
   }
 
   /// Links to other import sets in the lattice by adding one import.
-  final Map<_DeferredImport, ImportSet> _transitions = {};
+  final Map<_DeferredImport, ImportSet> _transitions = Maplet();
 
   ImportSet.empty()
       : _import = null,
diff --git a/pkg/compiler/lib/src/elements/types.dart b/pkg/compiler/lib/src/elements/types.dart
index 8ae41d3..00dd891 100644
--- a/pkg/compiler/lib/src/elements/types.dart
+++ b/pkg/compiler/lib/src/elements/types.dart
@@ -651,7 +651,7 @@
 
   final List<FunctionTypeVariable> typeVariables;
 
-  FunctionType._(
+  FunctionType._allocate(
       this.returnType,
       this.parameterTypes,
       this.optionalParameterTypes,
@@ -659,17 +659,42 @@
       this.requiredNamedParameters,
       this.namedParameterTypes,
       this.typeVariables) {
-    assert(returnType != null, "Invalid return type in $this.");
-    assert(!parameterTypes.contains(null), "Invalid parameter types in $this.");
+    assert(returnType != null, 'Invalid return type in $this.');
+    assert(!parameterTypes.contains(null), 'Invalid parameter types in $this.');
     assert(!optionalParameterTypes.contains(null),
-        "Invalid optional parameter types in $this.");
+        'Invalid optional parameter types in $this.');
     assert(
-        !namedParameters.contains(null), "Invalid named parameters in $this.");
+        !namedParameters.contains(null), 'Invalid named parameters in $this.');
     assert(!requiredNamedParameters.contains(null),
-        "Invalid required named parameters in $this.");
+        'Invalid required named parameters in $this.');
     assert(!namedParameterTypes.contains(null),
-        "Invalid named parameter types in $this.");
-    assert(!typeVariables.contains(null), "Invalid type variables in $this.");
+        'Invalid named parameter types in $this.');
+    assert(!typeVariables.contains(null), 'Invalid type variables in $this.');
+  }
+
+  factory FunctionType._(
+      DartType returnType,
+      List<DartType> parameterTypes,
+      List<DartType> optionalParameterTypes,
+      List<String> namedParameters,
+      Set<String> requiredNamedParameters,
+      List<DartType> namedParameterTypes,
+      List<FunctionTypeVariable> typeVariables) {
+    // Canonicalize empty collections to constants to save storage.
+    if (parameterTypes.isEmpty) parameterTypes = const [];
+    if (optionalParameterTypes.isEmpty) optionalParameterTypes = const [];
+    if (namedParameterTypes.isEmpty) namedParameterTypes = const [];
+    if (requiredNamedParameters.isEmpty) requiredNamedParameters = const {};
+    if (typeVariables.isEmpty) typeVariables = const [];
+
+    return FunctionType._allocate(
+        returnType,
+        parameterTypes,
+        optionalParameterTypes,
+        namedParameters,
+        requiredNamedParameters,
+        namedParameterTypes,
+        typeVariables);
   }
 
   factory FunctionType._readFromDataSource(
@@ -1915,6 +1940,11 @@
 
   bool _subtypeHelper(DartType s, DartType t,
       {bool allowPotentialSubtypes: false, bool assumeInstantiations: false}) {
+    assert(allowPotentialSubtypes || !assumeInstantiations);
+
+    // TODO(fishythefish): Add constraint solving for potential subtypes.
+    if (allowPotentialSubtypes) return true;
+
     /// Based on
     /// https://github.com/dart-lang/language/blob/master/resources/type-system/subtyping.md.
     /// See also [_isSubtype] in `dart:_rti`.
@@ -1927,10 +1957,6 @@
           env.isAssumed(s, t)) return true;
 
       if (s is AnyType) return true;
-      if (allowPotentialSubtypes &&
-          (s is TypeVariableType || t is TypeVariableType)) return true;
-      if (assumeInstantiations &&
-          (s is FunctionTypeVariable || t is FunctionTypeVariable)) return true;
 
       // Right Top:
       if (isTopType(t)) return true;
@@ -2039,10 +2065,10 @@
           List<FunctionTypeVariable> sTypeVariables = s.typeVariables;
           List<FunctionTypeVariable> tTypeVariables = t.typeVariables;
           int length = tTypeVariables.length;
-          if (length == sTypeVariables.length) {
-            env ??= _Assumptions();
-            env.assumePairs(sTypeVariables, tTypeVariables);
-          } else if (!assumeInstantiations || length > 0) return false;
+          if (length != sTypeVariables.length) return false;
+
+          env ??= _Assumptions();
+          env.assumePairs(sTypeVariables, tTypeVariables);
           try {
             for (int i = 0; i < length; i++) {
               DartType sBound = sTypeVariables[i].bound;
diff --git a/pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart b/pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart
index 8259c10..086d55aa 100644
--- a/pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart
+++ b/pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart
@@ -167,11 +167,15 @@
   }
 }
 
+bool _isProperty(Entity entity) =>
+    entity is MemberEntity && (entity.isField || entity.isGetter);
+
 class CallablePropertyNode extends CallableNode {
   final MemberEntity property;
   final DartType type;
 
-  CallablePropertyNode(this.property, this.type);
+  CallablePropertyNode(this.property, this.type)
+      : assert(_isProperty(property));
 
   @override
   Entity get entity => property;
@@ -181,8 +185,6 @@
 
   @override
   bool selectorApplies(Selector selector, BuiltWorld world) {
-    if (world.annotationsData.getParameterCheckPolicy(property).isTrusted)
-      return false;
     if (property.memberName != selector.memberName) return false;
     if (type is FunctionType &&
         !selector.callStructure
@@ -305,6 +307,8 @@
     Iterable<RtiNode> dependencies;
     if (entity is ClassEntity) {
       dependencies = _classes[entity]?.dependencies;
+    } else if (_isProperty(entity)) {
+      dependencies = _callableProperties[entity]?.dependencies;
     } else {
       dependencies = _methods[entity]?.dependencies;
     }
@@ -1031,6 +1035,8 @@
         });
       } else if (entity is FunctionEntity) {
         methodsNeedingTypeArguments.add(entity);
+      } else if (_isProperty(entity)) {
+        // Do nothing. We just need to visit the dependencies.
       } else {
         localFunctionsNeedingTypeArguments.add(entity);
       }
@@ -1139,6 +1145,9 @@
     localFunctionsUsingTypeVariableLiterals
         .forEach(potentiallyNeedTypeArguments);
 
+    typeVariableTests._callableProperties.keys
+        .forEach(potentiallyNeedTypeArguments);
+
     if (closedWorld.isMemberUsed(
         closedWorld.commonElements.invocationTypeArgumentGetter)) {
       // If `Invocation.typeArguments` is live, mark all user-defined
@@ -1317,7 +1326,7 @@
     typeVariableTests
         .forEachAppliedSelector((Selector selector, Set<Entity> targets) {
       for (Entity target in targets) {
-        if (target is MemberEntity && (target.isField || target.isGetter) ||
+        if (_isProperty(target) ||
             methodsNeedingTypeArguments.contains(target) ||
             localFunctionsNeedingTypeArguments.contains(target)) {
           selectorsNeedingTypeArguments.add(selector);
diff --git a/pkg/compiler/lib/src/js_emitter/program_builder/collector.dart b/pkg/compiler/lib/src/js_emitter/program_builder/collector.dart
index 62a40d7..9058ec1 100644
--- a/pkg/compiler/lib/src/js_emitter/program_builder/collector.dart
+++ b/pkg/compiler/lib/src/js_emitter/program_builder/collector.dart
@@ -196,26 +196,6 @@
 
     neededClasses.addAll(classesOnlyNeededForRti);
 
-    // TODO(18175, floitsch): remove once issue 18175 is fixed.
-    if (neededClasses.contains(_commonElements.jsIntClass)) {
-      neededClasses.add(_commonElements.intClass);
-    }
-    if (neededClasses.contains(_commonElements.jsDoubleClass)) {
-      neededClasses.add(_commonElements.doubleClass);
-    }
-    if (neededClasses.contains(_commonElements.jsNumberClass)) {
-      neededClasses.add(_commonElements.numClass);
-    }
-    if (neededClasses.contains(_commonElements.jsStringClass)) {
-      neededClasses.add(_commonElements.stringClass);
-    }
-    if (neededClasses.contains(_commonElements.jsBoolClass)) {
-      neededClasses.add(_commonElements.boolClass);
-    }
-    if (neededClasses.contains(_commonElements.jsArrayClass)) {
-      neededClasses.add(_commonElements.listClass);
-    }
-
     // 4. Finally, sort the classes.
     List<ClassEntity> sortedClasses = _sorter.sortClasses(neededClasses);
 
diff --git a/pkg/compiler/lib/src/kernel/dart2js_target.dart b/pkg/compiler/lib/src/kernel/dart2js_target.dart
index 891c462..c6aa102 100644
--- a/pkg/compiler/lib/src/kernel/dart2js_target.dart
+++ b/pkg/compiler/lib/src/kernel/dart2js_target.dart
@@ -127,7 +127,7 @@
       name = name.substring(4);
     } else if (name.startsWith('set:')) {
       kind = invocationMirrorSetterKind;
-      name = name.substring(4);
+      name = name.substring(4) + '=';
     } else {
       kind = invocationMirrorMethodKind;
     }
diff --git a/pkg/compiler/test/rti/data/async_local_typed.dart b/pkg/compiler/test/rti/data/async_local_typed.dart
index bb76c5d..3b6f939 100644
--- a/pkg/compiler/test/rti/data/async_local_typed.dart
+++ b/pkg/compiler/test/rti/data/async_local_typed.dart
@@ -13,7 +13,7 @@
   // `dynamic Function(dynamic, Class<int>)`, is not a potential subtype and
   // therefore doesn't need its signature.
 
-  /*spec.needsSignature*/
+  /*needsSignature*/
   local(object, Class<int> stacktrace) => null;
 
   return local;
diff --git a/pkg/compiler/test/rti/data/closure_generic_unneeded.dart b/pkg/compiler/test/rti/data/closure_generic_unneeded.dart
index 2777f62..aa3b2cb 100644
--- a/pkg/compiler/test/rti/data/closure_generic_unneeded.dart
+++ b/pkg/compiler/test/rti/data/closure_generic_unneeded.dart
@@ -5,10 +5,11 @@
 // @dart = 2.7
 
 /*spec.class: A:direct,explicit=[A.T*],needsArgs*/
+/*prod.class: A:needsArgs*/
 class A<T> {
   @pragma('dart2js:noInline')
   m() {
-    return (T t, String s) {};
+    return /*needsSignature*/(T t, String s) {};
   }
 }
 
diff --git a/pkg/compiler/test/rti/data/closure_unneeded.dart b/pkg/compiler/test/rti/data/closure_unneeded.dart
index 2777f62..aa3b2cb 100644
--- a/pkg/compiler/test/rti/data/closure_unneeded.dart
+++ b/pkg/compiler/test/rti/data/closure_unneeded.dart
@@ -5,10 +5,11 @@
 // @dart = 2.7
 
 /*spec.class: A:direct,explicit=[A.T*],needsArgs*/
+/*prod.class: A:needsArgs*/
 class A<T> {
   @pragma('dart2js:noInline')
   m() {
-    return (T t, String s) {};
+    return /*needsSignature*/(T t, String s) {};
   }
 }
 
diff --git a/pkg/compiler/test/rti/data/generic_bounds.dart b/pkg/compiler/test/rti/data/generic_bounds.dart
index 348fd44..689e659 100644
--- a/pkg/compiler/test/rti/data/generic_bounds.dart
+++ b/pkg/compiler/test/rti/data/generic_bounds.dart
@@ -41,13 +41,13 @@
 method10<T extends Class4>() => null;
 
 main() {
-  /*spec.needsArgs,selectors=[Selector(call, call, arity=0, types=1)]*/
+  /*needsArgs,needsSignature,selectors=[Selector(call, call, arity=0, types=1)]*/
   method7<T extends Class1a>() => null;
 
-  /*spec.needsArgs,selectors=[Selector(call, call, arity=0, types=1)]*/
+  /*needsArgs,needsSignature,selectors=[Selector(call, call, arity=0, types=1)]*/
   method8<T extends Class2a<num>>() => null;
 
-  method9<T>() => null;
+  /*needsArgs,needsSignature,selectors=[Selector(call, call, arity=0, types=1)]*/method9<T>() => null;
 
   dynamic f1 = method1;
   dynamic f2 = method2;
diff --git a/pkg/compiler/test/rti/data/instantiation3.dart b/pkg/compiler/test/rti/data/instantiation3.dart
index 7bdcd01..96e7c7a 100644
--- a/pkg/compiler/test/rti/data/instantiation3.dart
+++ b/pkg/compiler/test/rti/data/instantiation3.dart
@@ -15,7 +15,7 @@
   F<S> c;
 
   method() {
-    return () {
+    return /*spec.needsSignature*/() {
       c = f;
     };
   }
diff --git a/pkg/compiler/test/rti/data/instantiation4.dart b/pkg/compiler/test/rti/data/instantiation4.dart
index 2efdd47..7ec0433 100644
--- a/pkg/compiler/test/rti/data/instantiation4.dart
+++ b/pkg/compiler/test/rti/data/instantiation4.dart
@@ -15,7 +15,7 @@
   F<S> c;
 
   method() {
-    return () {
+    return /*spec.needsSignature*/() {
       c = f;
     };
   }
diff --git a/pkg/compiler/test/rti/data/local_function_map_literal.dart b/pkg/compiler/test/rti/data/local_function_map_literal.dart
index 17c5972..5069a9a 100644
--- a/pkg/compiler/test/rti/data/local_function_map_literal.dart
+++ b/pkg/compiler/test/rti/data/local_function_map_literal.dart
@@ -13,7 +13,7 @@
 /*spec.member: method:implicit=[method.T],indirect,needsArgs*/
 /*prod.member: method:needsArgs*/
 method<T>() {
-  return () => <T, int>{};
+  return /*spec.needsSignature*/() => <T, int>{};
 }
 
 @pragma('dart2js:noInline')
diff --git a/pkg/compiler/test/rti/data/local_function_signature2.dart b/pkg/compiler/test/rti/data/local_function_signature2.dart
index 4a69e2a..39ffbd7 100644
--- a/pkg/compiler/test/rti/data/local_function_signature2.dart
+++ b/pkg/compiler/test/rti/data/local_function_signature2.dart
@@ -8,17 +8,17 @@
 
 class Class1 {
   method1() {
-    num local<T>(num n) => null;
+    /*needsArgs,needsSignature*/num local<T>(num n) => null;
     return local;
   }
 
   method2() {
-    num local<T>(int n) => null;
+    /*needsArgs,needsSignature*/num local<T>(int n) => null;
     return local;
   }
 
   method3() {
-    int local<T>(num n) => null;
+    /*needsArgs,needsSignature*/int local<T>(num n) => null;
     return local;
   }
 }
@@ -43,9 +43,10 @@
 }
 
 class Class4 {
+  /*prod.member: Class4.method6:needsArgs,selectors=[Selector(call, method6, arity=0, types=1)]*/
   /*spec.member: Class4.method6:direct,explicit=[method6.T*],needsArgs,selectors=[Selector(call, method6, arity=0, types=1)]*/
   method6<T>() {
-    num local(num n, T t) => null;
+    /*needsSignature*/num local(num n, T t) => null;
     return local;
   }
 }
@@ -66,25 +67,26 @@
 }
 
 /*spec.member: method9:direct,explicit=[method9.T*],needsArgs*/
+/*prod.member: method9:needsArgs*/
 method9<T>() {
-  num local(num n, T t) => null;
+  /*needsSignature*/num local(num n, T t) => null;
   return local;
 }
 
 method10() {
-  /*spec.direct,explicit=[local.T*],needsArgs*/
-  num local<T>(T n) => null;
+  /*spec.direct,explicit=[local.T*],needsArgs,needsSignature*/
+  /*prod.needsArgs,needsSignature*/num local<T>(T n) => null;
   return local;
 }
 
 method11() {
-  T local<T>(num n) => null;
+  /*needsArgs,needsSignature*/T local<T>(num n) => null;
   return local;
 }
 
 method12() {
-  /*spec.direct,explicit=[local.T*],needsArgs*/
-  num local<T>(num n, T t) => null;
+  /*spec.direct,explicit=[local.T*],needsArgs,needsSignature*/
+  /*prod.needsArgs,needsSignature*/num local<T>(num n, T t) => null;
   return local;
 }
 
diff --git a/pkg/compiler/test/rti/data/local_function_signatures.dart b/pkg/compiler/test/rti/data/local_function_signatures.dart
index 297212f..7744aa6 100644
--- a/pkg/compiler/test/rti/data/local_function_signatures.dart
+++ b/pkg/compiler/test/rti/data/local_function_signatures.dart
@@ -14,12 +14,12 @@
   }
 
   method2() {
-    num local(int n) => null;
+    /*needsSignature*/num local(int n) => null;
     return local;
   }
 
   method3() {
-    Object local(num n) => null;
+    /*needsSignature*/Object local(num n) => null;
     return local;
   }
 }
@@ -44,9 +44,10 @@
 }
 
 /*spec.class: Class4:direct,explicit=[Class4.T*],needsArgs*/
+/*prod.class: Class4:needsArgs*/
 class Class4<T> {
   method6() {
-    num local(num n, T t) => null;
+    /*needsSignature*/num local(num n, T t) => null;
     return local;
   }
 }
diff --git a/pkg/compiler/test/rti/data/local_function_signatures_generic.dart b/pkg/compiler/test/rti/data/local_function_signatures_generic.dart
index 93b62e8..dc86b33 100644
--- a/pkg/compiler/test/rti/data/local_function_signatures_generic.dart
+++ b/pkg/compiler/test/rti/data/local_function_signatures_generic.dart
@@ -14,7 +14,7 @@
   }
 
   method2() {
-    num local<T>(int n) => null;
+    /*needsArgs,needsInst=[<dynamic>,<num*>,<num*>],needsSignature*/num local<T>(int n) => null;
     return local;
   }
 
@@ -45,9 +45,10 @@
 }
 
 class Class4 {
+  /*prod.member: Class4.method6:needsArgs,selectors=[Selector(call, method6, arity=0, types=1)]*/
   /*spec.member: Class4.method6:direct,explicit=[method6.T*],needsArgs,selectors=[Selector(call, method6, arity=0, types=1)]*/
   method6<T>() {
-    num local(num n, T t) => null;
+    /*needsSignature*/num local(num n, T t) => null;
     return local;
   }
 }
@@ -68,8 +69,9 @@
 }
 
 /*spec.member: method9:direct,explicit=[method9.T*],needsArgs*/
+/*prod.member: method9:needsArgs*/
 method9<T>() {
-  num local(num n, T t) => null;
+  /*needsSignature*/num local(num n, T t) => null;
   return local;
 }
 
@@ -87,8 +89,8 @@
 }
 
 method12() {
-  /*spec.direct,explicit=[local.T*],needsArgs,needsInst=[<dynamic>,<num*>,<num*>]*/
-  num local<T>(num n, T t) => null;
+  /*spec.direct,explicit=[local.T*],needsArgs,needsInst=[<dynamic>,<num*>,<num*>],needsSignature*/
+  /*prod.needsArgs,needsInst=[<dynamic>,<num*>,<num*>],needsSignature*/num local<T>(num n, T t) => null;
   return local;
 }
 
diff --git a/pkg/compiler/test/rti/data/subtype_named_args.dart b/pkg/compiler/test/rti/data/subtype_named_args.dart
index b795bea..d1e2eb7 100644
--- a/pkg/compiler/test/rti/data/subtype_named_args.dart
+++ b/pkg/compiler/test/rti/data/subtype_named_args.dart
@@ -53,19 +53,19 @@
 
 main() {
   Expect.isTrue(
-      /*spec.needsSignature*/
+      /*needsSignature*/
       ({D a, B b, C c, A d}) {} is classesFunc);
   Expect.isTrue(
       /*needsSignature*/
       ({A a, A b, A c, A d}) {} is classesFunc);
   Expect.isTrue(
-      /*spec.needsSignature*/
+      /*needsSignature*/
       ({D a, A1 b, A1 c, A1 d}) {} is classesFunc);
   Expect.isTrue(
-      /*spec.needsSignature*/
+      /*needsSignature*/
       ({D a, A2 b, A2 c, A2 d}) {} is classesFunc);
   Expect.isTrue(
-      /*spec.needsSignature*/
+      /*needsSignature*/
       ({D a, D b, D c, D d}) {} is classesFunc);
   Expect.isTrue(
       /*needsSignature*/
@@ -79,7 +79,7 @@
       ({Map<num, num> m, List<List<A1>> l, G<A, A1, A1, A1> g}) {}
           is genericsFunc);
   Expect.isTrue(
-      /*spec.needsSignature*/
+      /*needsSignature*/
       ({Map<int, int> m, List<List<D>> l, G<D, D, D, D> g}) {} is genericsFunc);
   Expect.isTrue(
       /*needsSignature*/
@@ -89,13 +89,13 @@
       ({Object m, Object l, Object g}) {} is genericsFunc);
 
   Expect.isTrue(
-      /*spec.needsSignature*/
+      /*needsSignature*/
       ({A x, G y, mixFunc z, var v}) {} is dynamicFunc);
   Expect.isTrue(
-      /*spec.needsSignature*/
+      /*needsSignature*/
       ({int x, bool y, List<Map> z, classesFunc v}) {} is dynamicFunc);
 
-  Expect.isTrue((
+  Expect.isTrue(/*needsSignature*/(
       {okWithClassesFunc_1 f1,
       okWithGenericsFunc_1 f2,
       okWithDynamicFunc_1 f3}) {} is funcFunc);
diff --git a/pkg/compiler/test/rti/data/subtype_named_args1.dart b/pkg/compiler/test/rti/data/subtype_named_args1.dart
index e20cf27..8b797f3 100644
--- a/pkg/compiler/test/rti/data/subtype_named_args1.dart
+++ b/pkg/compiler/test/rti/data/subtype_named_args1.dart
@@ -40,16 +40,16 @@
   Expect.isTrue(/*needsSignature*/ ({A a}) {} is t1);
   Expect.isTrue(/*needsSignature*/ ({B a}) {} is t1);
   Expect.isTrue(
-      /*spec.needsSignature*/ ({C a}) {} is t1);
+      /*needsSignature*/ ({C a}) {} is t1);
   Expect.isTrue(
-      /*spec.needsSignature*/ ({D a}) {} is t1);
+      /*needsSignature*/ ({D a}) {} is t1);
   Expect.isTrue(/*needsSignature*/ ({Object a}) {} is t1);
   Expect.isTrue(/*needsSignature*/ ({var a}) {} is t1);
 
   Expect.isTrue(/*needsSignature*/ ({A c}) {} is t2);
   Expect.isTrue(/*needsSignature*/ ({B c}) {} is t2);
   Expect.isTrue(/*needsSignature*/ ({C c}) {} is t2);
-  Expect.isTrue(({D c}) {} is t2);
+  Expect.isTrue(/*needsSignature*/({D c}) {} is t2);
   Expect.isTrue(/*needsSignature*/ ({Object c}) {} is t2);
   Expect.isTrue(/*needsSignature*/ ({var c}) {} is t2);
 
@@ -58,34 +58,34 @@
   Expect.isTrue(/*needsSignature*/ ({Object i}) {} is t3);
   Expect.isTrue(/*needsSignature*/ ({var i}) {} is t3);
 
-  Expect.isTrue(({A v}) {} is t4);
-  Expect.isTrue(({B v}) {} is t4);
-  Expect.isTrue(({C v}) {} is t4);
-  Expect.isTrue(({D v}) {} is t4);
+  Expect.isTrue(/*needsSignature*/({A v}) {} is t4);
+  Expect.isTrue(/*needsSignature*/({B v}) {} is t4);
+  Expect.isTrue(/*needsSignature*/({C v}) {} is t4);
+  Expect.isTrue(/*needsSignature*/({D v}) {} is t4);
   Expect.isTrue(/*needsSignature*/ ({Object v}) {} is t4);
   Expect.isTrue(/*needsSignature*/ ({var v}) {} is t4);
-  Expect.isTrue(({num v}) {} is t4);
-  Expect.isTrue(({int v}) {} is t4);
-  Expect.isTrue(({Map v}) {} is t4);
-  Expect.isTrue(({Map<List<Map<List, List<int>>>, List> v}) {} is t4);
-  Expect.isTrue(({List v}) {} is t4);
-  Expect.isTrue(({t8 v}) {} is t4);
-  Expect.isTrue(({t7 v}) {} is t4);
+  Expect.isTrue(/*needsSignature*/({num v}) {} is t4);
+  Expect.isTrue(/*needsSignature*/({int v}) {} is t4);
+  Expect.isTrue(/*needsSignature*/({Map v}) {} is t4);
+  Expect.isTrue(/*needsSignature*/({Map<List<Map<List, List<int>>>, List> v}) {} is t4);
+  Expect.isTrue(/*needsSignature*/({List v}) {} is t4);
+  Expect.isTrue(/*needsSignature*/({t8 v}) {} is t4);
+  Expect.isTrue(/*needsSignature*/({t7 v}) {} is t4);
 
   Expect.isTrue(/*needsSignature*/ ({Map m}) {} is t5);
-  Expect.isTrue(({Map<List, t8> m}) {} is t5);
+  Expect.isTrue(/*needsSignature*/({Map<List, t8> m}) {} is t5);
   Expect.isTrue(/*needsSignature*/ ({Object m}) {} is t5);
   Expect.isTrue(/*needsSignature*/ ({var m}) {} is t5);
-  Expect.isTrue(({Map<List, List> m}) {} is t5);
-  Expect.isTrue(({Map<int, t8> m}) {} is t5);
+  Expect.isTrue(/*needsSignature*/({Map<List, List> m}) {} is t5);
+  Expect.isTrue(/*needsSignature*/({Map<int, t8> m}) {} is t5);
 
   Expect.isTrue(/*needsSignature*/ ({Map<num, num> m}) {} is t6);
-  Expect.isTrue(({Map<int, int> m}) {} is t6);
+  Expect.isTrue(/*needsSignature*/({Map<int, int> m}) {} is t6);
   Expect.isTrue(/*needsSignature*/ ({Map m}) {} is t6);
   Expect.isTrue(/*needsSignature*/ ({Object m}) {} is t6);
   Expect.isTrue(/*needsSignature*/ ({var m}) {} is t6);
 
-  Expect.isTrue(({okWithT1_1 f}) {} is t7);
+  Expect.isTrue(/*needsSignature*/({okWithT1_1 f}) {} is t7);
   Expect.isTrue(/*needsSignature*/ ({okWithT1_2 f}) {} is t7);
   Expect.isTrue(/*needsSignature*/ ({okWithT1_3 f}) {} is t7);
   Expect.isTrue(/*needsSignature*/ ({okWithT1_4 f}) {} is t7);
@@ -93,14 +93,14 @@
   Expect.isTrue(/*needsSignature*/ ({A a}) {} is t8);
   Expect.isTrue(/*needsSignature*/ ({B a}) {} is t8);
   Expect.isTrue(
-      /*spec.needsSignature*/ ({C a}) {} is t8);
+      /*needsSignature*/ ({C a}) {} is t8);
   Expect.isTrue(
-      /*spec.needsSignature*/ ({D a}) {} is t8);
+      /*needsSignature*/ ({D a}) {} is t8);
   Expect.isTrue(/*needsSignature*/ ({Object a}) {} is t8);
   Expect.isTrue(/*needsSignature*/ ({var a}) {} is t8);
-  Expect.isTrue(({num a}) {} is t8);
-  Expect.isTrue(({int a}) {} is t8);
-  Expect.isTrue(({Map a}) {} is t8);
-  Expect.isTrue(({Map<List<Map<List, List<int>>>, List> a}) {} is t8);
-  Expect.isTrue(({List a}) {} is t8);
+  Expect.isTrue(/*needsSignature*/({num a}) {} is t8);
+  Expect.isTrue(/*needsSignature*/({int a}) {} is t8);
+  Expect.isTrue(/*needsSignature*/({Map a}) {} is t8);
+  Expect.isTrue(/*needsSignature*/({Map<List<Map<List, List<int>>>, List> a}) {} is t8);
+  Expect.isTrue(/*needsSignature*/({List a}) {} is t8);
 }
diff --git a/pkg/compiler/test/rti/emission/closure_function_type.dart b/pkg/compiler/test/rti/emission/closure_function_type.dart
index b40047e..98b9a7f 100644
--- a/pkg/compiler/test/rti/emission/closure_function_type.dart
+++ b/pkg/compiler/test/rti/emission/closure_function_type.dart
@@ -11,6 +11,6 @@
   test(/*checks=[$signature],instance*/ () {});
   test(
 
-      /*checks=[],instance*/
+      /*checks=[$signature],instance*/
       (a) {});
 }
diff --git a/pkg/compiler/test/rti/emission/closure_signature_unneeded.dart b/pkg/compiler/test/rti/emission/closure_signature_unneeded.dart
index 15549d7..ca88622 100644
--- a/pkg/compiler/test/rti/emission/closure_signature_unneeded.dart
+++ b/pkg/compiler/test/rti/emission/closure_signature_unneeded.dart
@@ -12,7 +12,7 @@
     // potential subtype of the checked function types.
     return
 
-        /*checks=[],instance*/
+        /*checks=[$signature],instance*/
         (T t, String s) {};
   }
 }
diff --git a/pkg/compiler/test/rti/emission/local_function_map_literal.dart b/pkg/compiler/test/rti/emission/local_function_map_literal.dart
index 03ec2a1..0468a3e 100644
--- a/pkg/compiler/test/rti/emission/local_function_map_literal.dart
+++ b/pkg/compiler/test/rti/emission/local_function_map_literal.dart
@@ -11,7 +11,8 @@
 @pragma('dart2js:noInline')
 method<T>() {
   return
-      /*checks=[],instance*/
+      /*spec.checks=[$signature],instance*/
+      /*prod.checks=[],instance*/
       () => <T, int>{};
 }
 
diff --git a/pkg/compiler/test/rti/emission/subtype_named_args.dart b/pkg/compiler/test/rti/emission/subtype_named_args.dart
index f21234d..5ae613b 100644
--- a/pkg/compiler/test/rti/emission/subtype_named_args.dart
+++ b/pkg/compiler/test/rti/emission/subtype_named_args.dart
@@ -55,23 +55,19 @@
 
 main() {
   Expect.isTrue(
-      /*spec.checks=[$signature],instance*/
-      /*prod.checks=[],instance*/
+      /*checks=[$signature],instance*/
       ({D a, B b, C c, A d}) {} is classesFunc);
   Expect.isTrue(
       /*checks=[$signature],instance*/
       ({A a, A b, A c, A d}) {} is classesFunc);
   Expect.isTrue(
-      /*spec.checks=[$signature],instance*/
-      /*prod.checks=[],instance*/
+      /*checks=[$signature],instance*/
       ({D a, A1 b, A1 c, A1 d}) {} is classesFunc);
   Expect.isTrue(
-      /*spec.checks=[$signature],instance*/
-      /*prod.checks=[],instance*/
+      /*checks=[$signature],instance*/
       ({D a, A2 b, A2 c, A2 d}) {} is classesFunc);
   Expect.isTrue(
-      /*spec.checks=[$signature],instance*/
-      /*prod.checks=[],instance*/
+      /*checks=[$signature],instance*/
       ({D a, D b, D c, D d}) {} is classesFunc);
   Expect.isTrue(
       /*checks=[$signature],instance*/
@@ -85,8 +81,7 @@
       ({Map<num, num> m, List<List<A1>> l, G<A, A1, A1, A1> g}) {}
           is genericsFunc);
   Expect.isTrue(
-      /*spec.checks=[$signature],instance*/
-      /*prod.checks=[],instance*/
+      /*checks=[$signature],instance*/
       ({Map<int, int> m, List<List<D>> l, G<D, D, D, D> g}) {} is genericsFunc);
   Expect.isTrue(
       /*checks=[$signature],instance*/
@@ -96,16 +91,14 @@
       ({Object m, Object l, Object g}) {} is genericsFunc);
 
   Expect.isTrue(
-      /*spec.checks=[$signature],instance*/
-      /*prod.checks=[],instance*/
+      /*checks=[$signature],instance*/
       ({A x, G y, mixFunc z, var v}) {} is dynamicFunc);
   Expect.isTrue(
-      /*spec.checks=[$signature],instance*/
-      /*prod.checks=[],instance*/
+      /*checks=[$signature],instance*/
       ({int x, bool y, List<Map> z, classesFunc v}) {} is dynamicFunc);
 
   Expect.isTrue(
-      /*checks=[],instance*/
+      /*checks=[$signature],instance*/
       (
           {okWithClassesFunc_1 f1,
           okWithGenericsFunc_1 f2,
diff --git a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
index c7dadc0..49d7a0b 100644
--- a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
@@ -42,6 +42,7 @@
         messageConstEvalFailedAssertion,
         messageConstEvalNotListOrSetInSpread,
         messageConstEvalNotMapInSpread,
+        messageConstEvalNonNull,
         messageConstEvalNullValue,
         messageConstEvalStartingPoint,
         messageConstEvalUnevaluated,
@@ -2239,6 +2240,18 @@
   }
 
   @override
+  Constant visitNullCheck(NullCheck node) {
+    final Constant constant = _evaluateSubexpression(node.operand);
+    if (constant is NullConstant) {
+      return report(node, messageConstEvalNonNull);
+    }
+    if (shouldBeUnevaluated) {
+      return unevaluated(node, new NullCheck(extract(constant)));
+    }
+    return constant;
+  }
+
+  @override
   Constant visitSymbolLiteral(SymbolLiteral node) {
     final Reference libraryReference =
         node.value.startsWith('_') ? libraryOf(node).reference : null;
diff --git a/pkg/front_end/messages.status b/pkg/front_end/messages.status
index a002f41..e8b5454 100644
--- a/pkg/front_end/messages.status
+++ b/pkg/front_end/messages.status
@@ -122,6 +122,8 @@
 ConstEvalNonConstantVariableGet/example: Fail
 ConstEvalNotListOrSetInSpread/example: Fail
 ConstEvalNotMapInSpread/example: Fail
+ConstEvalNonNull/analyzerCode: Fail
+ConstEvalNonNull/example: Fail
 ConstEvalNullValue/example: Fail
 ConstEvalStartingPoint/analyzerCode: Fail # This is just used for displaying the starting point.
 ConstEvalStartingPoint/example: Fail # This is just used for displaying the starting point.
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index 7dc026c..3966bbe 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -132,6 +132,9 @@
 ConstEvalTruncateError:
   template: "Binary operator '#string ~/ #string2' results is Infinity or NaN."
 
+ConstEvalNonNull:
+  template: "Constant expression must be non-null."
+
 ConstEvalInvalidMethodInvocation:
   template: "The method '#string' can't be invoked on '#constant' in a constant expression."
   analyzerCode: UNDEFINED_OPERATOR
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform_nnbd.yaml b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform_nnbd.yaml
index 160f076..ccf7702 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform_nnbd.yaml
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform_nnbd.yaml
@@ -64,8 +64,7 @@
             {
               "name": "flutter",
               "rootUri": "../flutter",
-              "packageUri": "lib/",
-              "languageVersion": "2.9"
+              "packageUri": "lib/"
             }
           ]
         }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform_nnbd.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform_nnbd.yaml.world.2.expect
index 2019f1f..c2ce924 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform_nnbd.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform_nnbd.yaml.world.2.expect
@@ -47,8 +47,14 @@
 
   import "org-dartlang-test:///foo.dart";
 
-  static field foo::Foo foo = invalid-expression "Constant evaluation has no support for NullCheck!";
+  static field foo::Foo foo = #C7;
 }
 constants  {
   #C1 = null
+  #C2 = "org-dartlang-test:///main.dart"
+  #C3 = 3.0
+  #C4 = 17.0
+  #C5 = <wid::_Location*>[]
+  #C6 = wid::_Location {file:#C2, line:#C3, column:#C4, name:#C1, parameterLocations:#C5}
+  #C7 = foo::Foo {_location:#C6}
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transformer_non_const.yaml b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transformer_non_const.yaml
index 99f0f81..4f4309f 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transformer_non_const.yaml
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transformer_non_const.yaml
@@ -59,8 +59,7 @@
             {
               "name": "flutter",
               "rootUri": "../flutter",
-              "packageUri": "lib/",
-              "languageVersion": "2.9"
+              "packageUri": "lib/"
             }
           ]
         }
diff --git a/pkg/front_end/testcases/nnbd/constant_null_check.dart b/pkg/front_end/testcases/nnbd/constant_null_check.dart
new file mode 100644
index 0000000..3ebe34f
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/constant_null_check.dart
@@ -0,0 +1,27 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+const int? a = 42;
+const int b = a!;
+
+const int? c = null;
+const int? d = c!;
+
+class Class {
+  final int y;
+  const Class(int? x) : y = x!;
+}
+
+const Class e = const Class(a);
+const Class f = const Class(c);
+
+main() {
+  expect(42, a);
+  expect(42, b);
+  expect(42, e.y);
+}
+
+expect(expected, actual) {
+  if (expected != actual) throw 'Expected $expected, actual $actual';
+}
diff --git a/pkg/front_end/testcases/nnbd/constant_null_check.dart.outline.expect b/pkg/front_end/testcases/nnbd/constant_null_check.dart.outline.expect
new file mode 100644
index 0000000..dc7afba
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/constant_null_check.dart.outline.expect
@@ -0,0 +1,20 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object /*hasConstConstructor*/  {
+  final field core::int y;
+  const constructor •(core::int? x) → self::Class
+    : self::Class::y = x!, super core::Object::•()
+    ;
+}
+static const field core::int? a = 42;
+static const field core::int b = self::a!;
+static const field core::int? c = null;
+static const field core::int? d = self::c!;
+static const field self::Class e = const self::Class::•(self::a);
+static const field self::Class f = const self::Class::•(self::c);
+static method main() → dynamic
+  ;
+static method expect(dynamic expected, dynamic actual) → dynamic
+  ;
diff --git a/pkg/front_end/testcases/nnbd/constant_null_check.dart.strong.expect b/pkg/front_end/testcases/nnbd/constant_null_check.dart.strong.expect
new file mode 100644
index 0000000..ca8683f
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/constant_null_check.dart.strong.expect
@@ -0,0 +1,54 @@
+//
+// Problems in component:
+//
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:9:17: Error: Constant evaluation error:
+// const int? d = c!;
+//                 ^
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:9:17: Context: Constant expression must be non-null.
+// const int? d = c!;
+//                 ^
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:9:12: Context: While analyzing:
+// const int? d = c!;
+//            ^
+//
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:17:23: Error: Constant evaluation error:
+// const Class f = const Class(c);
+//                       ^
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:13:30: Context: Constant expression must be non-null.
+//   const Class(int? x) : y = x!;
+//                              ^
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:17:13: Context: While analyzing:
+// const Class f = const Class(c);
+//             ^
+//
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object /*hasConstConstructor*/  {
+  final field core::int y;
+  const constructor •(core::int? x) → self::Class
+    : self::Class::y = x!, super core::Object::•()
+    ;
+}
+static const field core::int? a = #C1;
+static const field core::int b = #C1;
+static const field core::int? c = #C2;
+static const field core::int? d = invalid-expression "Constant expression must be non-null.";
+static const field self::Class e = #C3;
+static const field self::Class f = invalid-expression "Constant expression must be non-null.";
+static method main() → dynamic {
+  self::expect(42, #C1);
+  self::expect(42, #C1);
+  self::expect(42, (#C3).{self::Class::y});
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!expected.{core::Object::==}(actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+
+constants  {
+  #C1 = 42
+  #C2 = null
+  #C3 = self::Class {y:#C1}
+}
diff --git a/pkg/front_end/testcases/nnbd/constant_null_check.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/constant_null_check.dart.strong.transformed.expect
new file mode 100644
index 0000000..ca8683f
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/constant_null_check.dart.strong.transformed.expect
@@ -0,0 +1,54 @@
+//
+// Problems in component:
+//
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:9:17: Error: Constant evaluation error:
+// const int? d = c!;
+//                 ^
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:9:17: Context: Constant expression must be non-null.
+// const int? d = c!;
+//                 ^
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:9:12: Context: While analyzing:
+// const int? d = c!;
+//            ^
+//
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:17:23: Error: Constant evaluation error:
+// const Class f = const Class(c);
+//                       ^
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:13:30: Context: Constant expression must be non-null.
+//   const Class(int? x) : y = x!;
+//                              ^
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:17:13: Context: While analyzing:
+// const Class f = const Class(c);
+//             ^
+//
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object /*hasConstConstructor*/  {
+  final field core::int y;
+  const constructor •(core::int? x) → self::Class
+    : self::Class::y = x!, super core::Object::•()
+    ;
+}
+static const field core::int? a = #C1;
+static const field core::int b = #C1;
+static const field core::int? c = #C2;
+static const field core::int? d = invalid-expression "Constant expression must be non-null.";
+static const field self::Class e = #C3;
+static const field self::Class f = invalid-expression "Constant expression must be non-null.";
+static method main() → dynamic {
+  self::expect(42, #C1);
+  self::expect(42, #C1);
+  self::expect(42, (#C3).{self::Class::y});
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!expected.{core::Object::==}(actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+
+constants  {
+  #C1 = 42
+  #C2 = null
+  #C3 = self::Class {y:#C1}
+}
diff --git a/pkg/front_end/testcases/nnbd/constant_null_check.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/constant_null_check.dart.textual_outline.expect
new file mode 100644
index 0000000..a5a28c9
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/constant_null_check.dart.textual_outline.expect
@@ -0,0 +1,14 @@
+const int? a = 42;
+const int b = a!;
+const int? c = null;
+const int? d = c!;
+
+class Class {
+  final int y;
+  const Class(int? x) : y = x!;
+}
+
+const Class e = const Class(a);
+const Class f = const Class(c);
+main() {}
+expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/nnbd/constant_null_check.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/constant_null_check.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..c4a2339
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/constant_null_check.dart.textual_outline_modelled.expect
@@ -0,0 +1,13 @@
+class Class {
+  const Class(int? x) : y = x!;
+  final int y;
+}
+
+const Class e = const Class(a);
+const Class f = const Class(c);
+const int b = a!;
+const int? a = 42;
+const int? c = null;
+const int? d = c!;
+expect(expected, actual) {}
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/constant_null_check.dart.weak.expect b/pkg/front_end/testcases/nnbd/constant_null_check.dart.weak.expect
new file mode 100644
index 0000000..ca8683f
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/constant_null_check.dart.weak.expect
@@ -0,0 +1,54 @@
+//
+// Problems in component:
+//
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:9:17: Error: Constant evaluation error:
+// const int? d = c!;
+//                 ^
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:9:17: Context: Constant expression must be non-null.
+// const int? d = c!;
+//                 ^
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:9:12: Context: While analyzing:
+// const int? d = c!;
+//            ^
+//
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:17:23: Error: Constant evaluation error:
+// const Class f = const Class(c);
+//                       ^
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:13:30: Context: Constant expression must be non-null.
+//   const Class(int? x) : y = x!;
+//                              ^
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:17:13: Context: While analyzing:
+// const Class f = const Class(c);
+//             ^
+//
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object /*hasConstConstructor*/  {
+  final field core::int y;
+  const constructor •(core::int? x) → self::Class
+    : self::Class::y = x!, super core::Object::•()
+    ;
+}
+static const field core::int? a = #C1;
+static const field core::int b = #C1;
+static const field core::int? c = #C2;
+static const field core::int? d = invalid-expression "Constant expression must be non-null.";
+static const field self::Class e = #C3;
+static const field self::Class f = invalid-expression "Constant expression must be non-null.";
+static method main() → dynamic {
+  self::expect(42, #C1);
+  self::expect(42, #C1);
+  self::expect(42, (#C3).{self::Class::y});
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!expected.{core::Object::==}(actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+
+constants  {
+  #C1 = 42
+  #C2 = null
+  #C3 = self::Class {y:#C1}
+}
diff --git a/pkg/front_end/testcases/nnbd/constant_null_check.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/constant_null_check.dart.weak.transformed.expect
new file mode 100644
index 0000000..ca8683f
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/constant_null_check.dart.weak.transformed.expect
@@ -0,0 +1,54 @@
+//
+// Problems in component:
+//
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:9:17: Error: Constant evaluation error:
+// const int? d = c!;
+//                 ^
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:9:17: Context: Constant expression must be non-null.
+// const int? d = c!;
+//                 ^
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:9:12: Context: While analyzing:
+// const int? d = c!;
+//            ^
+//
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:17:23: Error: Constant evaluation error:
+// const Class f = const Class(c);
+//                       ^
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:13:30: Context: Constant expression must be non-null.
+//   const Class(int? x) : y = x!;
+//                              ^
+// pkg/front_end/testcases/nnbd/constant_null_check.dart:17:13: Context: While analyzing:
+// const Class f = const Class(c);
+//             ^
+//
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object /*hasConstConstructor*/  {
+  final field core::int y;
+  const constructor •(core::int? x) → self::Class
+    : self::Class::y = x!, super core::Object::•()
+    ;
+}
+static const field core::int? a = #C1;
+static const field core::int b = #C1;
+static const field core::int? c = #C2;
+static const field core::int? d = invalid-expression "Constant expression must be non-null.";
+static const field self::Class e = #C3;
+static const field self::Class f = invalid-expression "Constant expression must be non-null.";
+static method main() → dynamic {
+  self::expect(42, #C1);
+  self::expect(42, #C1);
+  self::expect(42, (#C3).{self::Class::y});
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!expected.{core::Object::==}(actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+
+constants  {
+  #C1 = 42
+  #C2 = null
+  #C3 = self::Class {y:#C1}
+}
diff --git a/pkg/front_end/tool/_fasta/command_line.dart b/pkg/front_end/tool/_fasta/command_line.dart
index 950515e..ca1e771 100644
--- a/pkg/front_end/tool/_fasta/command_line.dart
+++ b/pkg/front_end/tool/_fasta/command_line.dart
@@ -502,7 +502,6 @@
     // treat this as a crash which is signalled by exiting with 255.
     exit(255);
   }
-  return failingValue;
 }
 
 abstract class ValueSpecification {
diff --git a/pkg/kernel/binary.md b/pkg/kernel/binary.md
index 72e2057..0ecae65 100644
--- a/pkg/kernel/binary.md
+++ b/pkg/kernel/binary.md
@@ -143,7 +143,7 @@
 
 type ComponentFile {
   UInt32 magic = 0x90ABCDEF;
-  UInt32 formatVersion = 43;
+  UInt32 formatVersion = 44;
   Byte[10] shortSdkHash;
   List<String> problemsAsJson; // Described in problems.md.
   Library[] libraries;
@@ -320,7 +320,7 @@
   FileOffset fileOffset; // Offset of the name of the class.
   FileOffset fileEndOffset;
   Byte flags (levelBit0, levelBit1, isAbstract, isEnum, isAnonymousMixin,
-              isEliminatedMixin, isMixinDeclaration, 
+              isEliminatedMixin, isMixinDeclaration,
               hasConstConstructor); // Where level is index into ClassLevel
   StringReference name;
   List<Expression> annotations;
diff --git a/pkg/kernel/lib/binary/tag.dart b/pkg/kernel/lib/binary/tag.dart
index 79cea32..f23d4ca 100644
--- a/pkg/kernel/lib/binary/tag.dart
+++ b/pkg/kernel/lib/binary/tag.dart
@@ -149,7 +149,7 @@
   /// Internal version of kernel binary format.
   /// Bump it when making incompatible changes in kernel binaries.
   /// Keep in sync with runtime/vm/kernel_binary.h, pkg/kernel/binary.md.
-  static const int BinaryFormatVersion = 43;
+  static const int BinaryFormatVersion = 44;
 }
 
 abstract class ConstantTag {
diff --git a/pkg/kernel/lib/src/tool/command_line_util.dart b/pkg/kernel/lib/src/tool/command_line_util.dart
index 937093e..d6f3f61 100644
--- a/pkg/kernel/lib/src/tool/command_line_util.dart
+++ b/pkg/kernel/lib/src/tool/command_line_util.dart
@@ -40,6 +40,5 @@
       print(e);
       exit(1);
     }
-    return null;
   }
 }
diff --git a/pkg/language_versioning_2.7_test/pubspec.yaml b/pkg/language_versioning_2.7_test/pubspec.yaml
new file mode 100644
index 0000000..3245f03
--- /dev/null
+++ b/pkg/language_versioning_2.7_test/pubspec.yaml
@@ -0,0 +1,14 @@
+name: language_versioning_2.7_test
+version: 1.0.0
+
+description: >
+  Tests of language versioning.
+  Stored as a package in order to have its own package configuration
+  and default language version
+
+# This package is not intended for consumption on pub.dev. DO NOT publish.
+publish_to: none
+
+environment:
+  sdk: '>=2.7.0 <3.0.0'
+
diff --git a/pkg/language_versioning_2.7_test/test/lib_ex2.7_test.dart b/pkg/language_versioning_2.7_test/test/lib_ex2.7_test.dart
new file mode 100644
index 0000000..e0756e3
--- /dev/null
+++ b/pkg/language_versioning_2.7_test/test/lib_ex2.7_test.dart
@@ -0,0 +1,26 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS
+// file for details. All rights reserved. Use of this source code is
+// governed by a BSD-style license that can be found in the LICENSE file.
+
+// Explicit version.
+// @dart=2.7
+
+part "src/part_of_ex2.7_v_ex2.7.dart";
+
+// Specification requires the part file to have
+// the same explicit langauge version marker
+// as the including library,
+// not just the same languge version.
+part "src/part_of_ex2.7_v_im2.7.dart";
+//   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// [analyzer] COMPILE_TIME_ERROR.INCONSISTENT_LANGUAGE_VERSION_OVERRIDE
+// [cfe] The language version override has to be the same in the library and its part(s).
+
+part "src/part_of_ex2.7_v_ex2.8.dart";
+//   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// [analyzer] COMPILE_TIME_ERROR.INCONSISTENT_LANGUAGE_VERSION_OVERRIDE
+// [cfe] The language version override has to be the same in the library and its part(s).
+
+main() {
+  print(x27x27);
+}
diff --git a/pkg/language_versioning_2.7_test/test/lib_ex2.8_test.dart b/pkg/language_versioning_2.7_test/test/lib_ex2.8_test.dart
new file mode 100644
index 0000000..52c191d
--- /dev/null
+++ b/pkg/language_versioning_2.7_test/test/lib_ex2.8_test.dart
@@ -0,0 +1,22 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS
+// file for details. All rights reserved. Use of this source code is
+// governed by a BSD-style license that can be found in the LICENSE file.
+
+// Explicit version.
+// @dart=2.8
+
+part "src/part_of_ex2.8_v_ex2.8.dart";
+
+part "src/part_of_ex2.8_v_ex2.7.dart";
+//   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// [analyzer] COMPILE_TIME_ERROR.INCONSISTENT_LANGUAGE_VERSION_OVERRIDE
+// [cfe] The language version override has to be the same in the library and its part(s).
+
+part "src/part_of_ex2.8_v_im2.7.dart";
+//   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// [analyzer] COMPILE_TIME_ERROR.INCONSISTENT_LANGUAGE_VERSION_OVERRIDE
+// [cfe] The language version override has to be the same in the library and its part(s).
+
+void main() {
+  print(x28x28);
+}
diff --git a/pkg/language_versioning_2.7_test/test/lib_im2.7_test.dart b/pkg/language_versioning_2.7_test/test/lib_im2.7_test.dart
new file mode 100644
index 0000000..44d541e
--- /dev/null
+++ b/pkg/language_versioning_2.7_test/test/lib_im2.7_test.dart
@@ -0,0 +1,25 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS
+// file for details. All rights reserved. Use of this source code is
+// governed by a BSD-style license that can be found in the LICENSE file.
+
+// Implicit language version 2.7 from configuration.
+
+part "src/part_of_im2.7_v_im2.7.dart";
+
+// Specification requires the part fsrc/ile to have
+// the same explicit langauge version marker
+// as the including library,
+// not just the same languge version.
+part "src/part_of_im2.7_v_ex2.7.dart";
+//   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// [analyzer] COMPILE_TIME_ERROR.INCONSISTENT_LANGUAGE_VERSION_OVERRIDE
+// [cfe] The language version override has to be the same in the library and its part(s).
+
+part "src/part_of_im2.7_v_ex2.8.dart";
+//   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// [analyzer] COMPILE_TIME_ERROR.INCONSISTENT_LANGUAGE_VERSION_OVERRIDE
+// [cfe] The language version override has to be the same in the library and its part(s).
+
+void main() {
+  print(i27i27);
+}
diff --git a/pkg/language_versioning_2.7_test/test/src/part_of_ex2.7_v_ex2.7.dart b/pkg/language_versioning_2.7_test/test/src/part_of_ex2.7_v_ex2.7.dart
new file mode 100644
index 0000000..e47db7c
--- /dev/null
+++ b/pkg/language_versioning_2.7_test/test/src/part_of_ex2.7_v_ex2.7.dart
@@ -0,0 +1,9 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS
+// file for details. All rights reserved. Use of this source code is
+// governed by a BSD-style license that can be found in the LICENSE file.
+
+// @dart=2.7
+
+part of "../lib_ex2.7_test.dart";
+
+var x27x27 = 0;
diff --git a/pkg/language_versioning_2.7_test/test/src/part_of_ex2.7_v_ex2.8.dart b/pkg/language_versioning_2.7_test/test/src/part_of_ex2.7_v_ex2.8.dart
new file mode 100644
index 0000000..070f6fb
--- /dev/null
+++ b/pkg/language_versioning_2.7_test/test/src/part_of_ex2.7_v_ex2.8.dart
@@ -0,0 +1,9 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS
+// file for details. All rights reserved. Use of this source code is
+// governed by a BSD-style license that can be found in the LICENSE file.
+
+// @dart=2.8
+
+part of "../lib_ex2.7_test.dart";
+
+var v27x28 = 0;
diff --git a/pkg/language_versioning_2.7_test/test/src/part_of_ex2.7_v_im2.7.dart b/pkg/language_versioning_2.7_test/test/src/part_of_ex2.7_v_im2.7.dart
new file mode 100644
index 0000000..a18cfd9
--- /dev/null
+++ b/pkg/language_versioning_2.7_test/test/src/part_of_ex2.7_v_im2.7.dart
@@ -0,0 +1,9 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS
+// file for details. All rights reserved. Use of this source code is
+// governed by a BSD-style license that can be found in the LICENSE file.
+
+// Implicit language version 2.7 from configuration.
+
+part of "../lib_ex2.7_test.dart";
+
+var x27i27 = 0;
diff --git a/pkg/language_versioning_2.7_test/test/src/part_of_ex2.8_v_ex2.7.dart b/pkg/language_versioning_2.7_test/test/src/part_of_ex2.8_v_ex2.7.dart
new file mode 100644
index 0000000..faab98c
--- /dev/null
+++ b/pkg/language_versioning_2.7_test/test/src/part_of_ex2.8_v_ex2.7.dart
@@ -0,0 +1,9 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS
+// file for details. All rights reserved. Use of this source code is
+// governed by a BSD-style license that can be found in the LICENSE file.
+
+// @dart=2.7
+
+part of "../lib_ex2.8_test.dart";
+
+var x28x27 = 0;
diff --git a/pkg/language_versioning_2.7_test/test/src/part_of_ex2.8_v_ex2.8.dart b/pkg/language_versioning_2.7_test/test/src/part_of_ex2.8_v_ex2.8.dart
new file mode 100644
index 0000000..6957d94
--- /dev/null
+++ b/pkg/language_versioning_2.7_test/test/src/part_of_ex2.8_v_ex2.8.dart
@@ -0,0 +1,9 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS
+// file for details. All rights reserved. Use of this source code is
+// governed by a BSD-style license that can be found in the LICENSE file.
+
+// @dart=2.8
+
+part of "../lib_ex2.8_test.dart";
+
+var x28x28 = 0;
diff --git a/pkg/language_versioning_2.7_test/test/src/part_of_ex2.8_v_im2.7.dart b/pkg/language_versioning_2.7_test/test/src/part_of_ex2.8_v_im2.7.dart
new file mode 100644
index 0000000..d96ba59
--- /dev/null
+++ b/pkg/language_versioning_2.7_test/test/src/part_of_ex2.8_v_im2.7.dart
@@ -0,0 +1,9 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS
+// file for details. All rights reserved. Use of this source code is
+// governed by a BSD-style license that can be found in the LICENSE file.
+
+// Implicit language version 2.7 from configuration.
+
+part of "../lib_ex2.8_test.dart";
+
+var x28i27 = 0;
diff --git a/pkg/language_versioning_2.7_test/test/src/part_of_im2.7_v_ex2.7.dart b/pkg/language_versioning_2.7_test/test/src/part_of_im2.7_v_ex2.7.dart
new file mode 100644
index 0000000..a4d2212
--- /dev/null
+++ b/pkg/language_versioning_2.7_test/test/src/part_of_im2.7_v_ex2.7.dart
@@ -0,0 +1,9 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS
+// file for details. All rights reserved. Use of this source code is
+// governed by a BSD-style license that can be found in the LICENSE file.
+
+// @dart=2.7
+
+part of "../lib_im2.7_test.dart";
+
+var i27x27 = 0;
diff --git a/pkg/language_versioning_2.7_test/test/src/part_of_im2.7_v_ex2.8.dart b/pkg/language_versioning_2.7_test/test/src/part_of_im2.7_v_ex2.8.dart
new file mode 100644
index 0000000..bedd006
--- /dev/null
+++ b/pkg/language_versioning_2.7_test/test/src/part_of_im2.7_v_ex2.8.dart
@@ -0,0 +1,9 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS
+// file for details. All rights reserved. Use of this source code is
+// governed by a BSD-style license that can be found in the LICENSE file.
+
+// @dart=2.8
+
+part of "../lib_im2.7_test.dart";
+
+var i27x28 = 0;
diff --git a/pkg/language_versioning_2.7_test/test/src/part_of_im2.7_v_im2.7.dart b/pkg/language_versioning_2.7_test/test/src/part_of_im2.7_v_im2.7.dart
new file mode 100644
index 0000000..aed5ff3
--- /dev/null
+++ b/pkg/language_versioning_2.7_test/test/src/part_of_im2.7_v_im2.7.dart
@@ -0,0 +1,9 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS
+// file for details. All rights reserved. Use of this source code is
+// governed by a BSD-style license that can be found in the LICENSE file.
+
+// Implicit language version 2.7 from configuration.
+
+part of "../lib_im2.7_test.dart";
+
+var i27i27 = 0;
diff --git a/pkg/nnbd_migration/lib/src/edge_builder.dart b/pkg/nnbd_migration/lib/src/edge_builder.dart
index 5f0abe0..8011686 100644
--- a/pkg/nnbd_migration/lib/src/edge_builder.dart
+++ b/pkg/nnbd_migration/lib/src/edge_builder.dart
@@ -2995,11 +2995,26 @@
   /// upcast T to that type if possible, skipping the flatten when not
   /// necessary.
   DecoratedType _wrapFuture(DecoratedType type, AstNode node) {
-    if (type.type.isDartCoreNull || type.type.isBottom) {
+    var dartType = type.type;
+    if (dartType.isDartCoreNull || dartType.isBottom) {
       return _futureOf(type, node);
     }
 
-    if (_typeSystem.isSubtypeOf(type.type, typeProvider.futureDynamicType)) {
+    if (dartType is InterfaceType &&
+        dartType.element == typeProvider.futureOrElement) {
+      var typeArguments = type.typeArguments;
+      if (typeArguments.length == 1) {
+        // Wrapping FutureOr<T?1>?2 should produce Future<T?3>, where either 1
+        // or 2 being nullable causes 3 to become nullable.
+        var typeArgument = typeArguments[0];
+        return _futureOf(
+            typeArgument
+                .withNode(NullabilityNode.forLUB(typeArgument.node, type.node)),
+            node);
+      }
+    }
+
+    if (_typeSystem.isSubtypeOf(dartType, typeProvider.futureDynamicType)) {
       return _decoratedClassHierarchy.asInstanceOf(
           type, typeProvider.futureDynamicType.element);
     }
diff --git a/pkg/nnbd_migration/lib/src/fix_builder.dart b/pkg/nnbd_migration/lib/src/fix_builder.dart
index 4ac58a0..52f6983 100644
--- a/pkg/nnbd_migration/lib/src/fix_builder.dart
+++ b/pkg/nnbd_migration/lib/src/fix_builder.dart
@@ -1035,8 +1035,7 @@
     var decoratedType = _fixBuilder._variables
         .decoratedTypeAnnotation(_fixBuilder.source, node);
     if (!typeIsNonNullableByContext(node)) {
-      var type = decoratedType.type;
-      if (!type.isDynamic && !type.isVoid && !type.isDartCoreNull) {
+      if (!_typeIsNaturallyNullable(decoratedType.type)) {
         _makeTypeNameNullable(node, decoratedType);
       }
     }
@@ -1073,12 +1072,28 @@
   }
 
   void _makeTypeNameNullable(TypeAnnotation node, DecoratedType decoratedType) {
+    bool makeNullable = decoratedType.node.isNullable;
+    if (decoratedType.type.isDartAsyncFutureOr) {
+      var typeArguments = decoratedType.typeArguments;
+      if (typeArguments.length == 1) {
+        var typeArgument = typeArguments[0];
+        if ((_typeIsNaturallyNullable(typeArgument.type) ||
+            typeArgument.node.isNullable)) {
+          // FutureOr<T?>? is equivalent to FutureOr<T?>, so there is no need to
+          // make this type nullable.
+          makeNullable = false;
+        }
+      }
+    }
     (_fixBuilder._getChange(node) as NodeChangeForTypeAnnotation)
         .recordNullability(
-            decoratedType, decoratedType.node.isNullable,
+            decoratedType, makeNullable,
             nullabilityHint:
                 _fixBuilder._variables.getNullabilityHint(source, node));
   }
+
+  bool _typeIsNaturallyNullable(DartType type) =>
+      type.isDynamic || type.isVoid || type.isDartCoreNull;
 }
 
 /// Specialization of [_AssignmentLikeExpressionHandler] for
diff --git a/pkg/nnbd_migration/lib/src/variables.dart b/pkg/nnbd_migration/lib/src/variables.dart
index b5d533d..c054c01 100644
--- a/pkg/nnbd_migration/lib/src/variables.dart
+++ b/pkg/nnbd_migration/lib/src/variables.dart
@@ -286,13 +286,16 @@
   DartType toFinalType(DecoratedType decoratedType) {
     var type = decoratedType.type;
     if (type.isVoid || type.isDynamic) return type;
-    if (type is NeverType || type.isDartCoreNull) {
+    if (type is NeverType) {
       if (decoratedType.node.isNullable) {
         return (_typeProvider.nullType as TypeImpl)
             .withNullability(NullabilitySuffix.none);
       } else {
         return NeverTypeImpl.instance;
       }
+    } else if (type.isDartCoreNull) {
+      return (_typeProvider.nullType as TypeImpl)
+          .withNullability(NullabilitySuffix.none);
     }
     var nullabilitySuffix = decoratedType.node.isNullable
         ? NullabilitySuffix.question
diff --git a/pkg/nnbd_migration/test/api_test.dart b/pkg/nnbd_migration/test/api_test.dart
index b7597fe..6b71795 100644
--- a/pkg/nnbd_migration/test/api_test.dart
+++ b/pkg/nnbd_migration/test/api_test.dart
@@ -325,6 +325,28 @@
     await _checkSingleFileChanges(content, expected);
   }
 
+  Future<void> test_avoid_redundant_future_or() async {
+    // FutureOr<int?> and FutureOr<int?>? are equivalent types; we never insert
+    // the redundant second `?`.
+    var content = '''
+import 'dart:async';
+abstract class C {
+  FutureOr<int/*?*/> f();
+  FutureOr<int>/*?*/ g();
+  FutureOr<int> h(bool b) => b ? f() : g();
+}
+''';
+    var expected = '''
+import 'dart:async';
+abstract class C {
+  FutureOr<int?> f();
+  FutureOr<int>? g();
+  FutureOr<int?> h(bool b) => b ? f() : g();
+}
+''';
+    await _checkSingleFileChanges(content, expected);
+  }
+
   Future<void>
       test_back_propagation_stops_at_implicitly_typed_variables() async {
     var content = '''
@@ -3018,7 +3040,7 @@
     FutureOr<int> foi1,
     FutureOr<int?> foi2,
     FutureOr<int>? foi3,
-    FutureOr<int?>? foi4
+    FutureOr<int?> foi4
 ) {
   int i1 = foi1 as int;
   int? i2 = foi2 as int?;
@@ -5561,6 +5583,20 @@
     await _checkSingleFileChanges(content, expected);
   }
 
+  Future<void> test_return_future_or_null_from_async_method() async {
+    var content = '''
+import 'dart:async';
+Future<Null> f() async => g();
+FutureOr<Null> g() => null;
+''';
+    var expected = '''
+import 'dart:async';
+Future<Null> f() async => g();
+FutureOr<Null> g() => null;
+''';
+    await _checkSingleFileChanges(content, expected);
+  }
+
   Future<void> test_setter_overrides_implicit_setter() async {
     var content = '''
 class A {
diff --git a/pkg/nnbd_migration/test/decorated_type_test.dart b/pkg/nnbd_migration/test/decorated_type_test.dart
index 853bf6d..4a18071f 100644
--- a/pkg/nnbd_migration/test/decorated_type_test.dart
+++ b/pkg/nnbd_migration/test/decorated_type_test.dart
@@ -540,8 +540,10 @@
   }
 
   void test_toFinalType_null_non_nullable() {
+    // We never change explicit `Null` types to `Never`, even if we can't find
+    // any reason they need to be nullable.
     var type = _variables.toFinalType(DecoratedType(null_.type, never));
-    assertDartType(type, 'Never');
+    assertDartType(type, 'Null');
   }
 
   void test_toFinalType_null_nullable() {
diff --git a/pkg/nnbd_migration/test/edge_builder_test.dart b/pkg/nnbd_migration/test/edge_builder_test.dart
index c39e923..adc7f8d 100644
--- a/pkg/nnbd_migration/test/edge_builder_test.dart
+++ b/pkg/nnbd_migration/test/edge_builder_test.dart
@@ -6812,6 +6812,29 @@
     // No assertions; just checking that it doesn't crash.
   }
 
+  Future<void> test_return_from_async_futureOr_to_future() async {
+    await analyze('''
+import 'dart:async';
+Future<Object> f(FutureOr<int> x) async => x;
+''');
+    var lubNodeMatcher = anyNode;
+    assertEdge(lubNodeMatcher, decoratedTypeAnnotation('Object').node,
+        hard: false, checkable: false);
+    var lubNode = lubNodeMatcher.matchingNode as NullabilityNodeForLUB;
+    expect(lubNode.left, same(decoratedTypeAnnotation('int> x').node));
+    expect(lubNode.right, same(decoratedTypeAnnotation('FutureOr<int>').node));
+  }
+
+  Future<void> test_return_from_async_list_to_future() async {
+    await analyze('''
+import 'dart:async';
+Future<Object> f(List<int> x) async => x;
+''');
+    assertEdge(decoratedTypeAnnotation('List<int>').node,
+        decoratedTypeAnnotation('Object').node,
+        hard: false, checkable: false);
+  }
+
   Future<void> test_return_from_async_null() async {
     await analyze('''
 Future<int> f() async {
diff --git a/pkg/nnbd_migration/test/fix_builder_test.dart b/pkg/nnbd_migration/test/fix_builder_test.dart
index 9ce7d5f..930cd9a 100644
--- a/pkg/nnbd_migration/test/fix_builder_test.dart
+++ b/pkg/nnbd_migration/test/fix_builder_test.dart
@@ -3055,6 +3055,98 @@
     visitTypeAnnotation(findNode.typeAnnotation('dynamic'), 'dynamic');
   }
 
+  Future<void> test_typeName_futureOr_dynamic_nullable() async {
+    await analyze('''
+import 'dart:async';
+void _f() {
+  FutureOr<dynamic> x = null;
+}
+''');
+    // The type of `x` should be `FutureOr<dynamic>?`, but this is equivalent to
+    // `FutureOr<dynamic>`, so we don't add a `?`.  Note: expected type is
+    // still `FutureOr<dynamic>?`; we don't go to extra effort to remove the
+    // redundant `?` from the internal type representation, just from the source
+    // code we generate.
+    visitTypeAnnotation(
+        findNode.typeAnnotation('FutureOr<dynamic> x'), 'FutureOr<dynamic>?',
+        changes: {});
+  }
+
+  Future<void> test_typeName_futureOr_inner() async {
+    await analyze('''
+import 'dart:async';
+void _f(FutureOr<int/*?*/> x) {
+  FutureOr<int> y = x;
+}
+''');
+    visitTypeAnnotation(
+        findNode.typeAnnotation('FutureOr<int> y'), 'FutureOr<int?>',
+        changes: {findNode.typeAnnotation('int> y'): isMakeNullable});
+  }
+
+  Future<void> test_typeName_futureOr_null_nullable() async {
+    await analyze('''
+import 'dart:async';
+void _f() {
+  FutureOr<Null> x = null;
+}
+''');
+    // The type of `x` should be `FutureOr<Null>?`, but this is equivalent to
+    // `FutureOr<Null>`, so we don't add a `?`.  Note: expected type is
+    // still `FutureOr<Null>?`; we don't go to extra effort to remove the
+    // redundant `?` from the internal type representation, just from the source
+    // code we generate.
+    visitTypeAnnotation(
+        findNode.typeAnnotation('FutureOr<Null> x'), 'FutureOr<Null>?',
+        changes: {});
+  }
+
+  Future<void> test_typeName_futureOr_outer() async {
+    await analyze('''
+import 'dart:async';
+void _f(FutureOr<int>/*?*/ x) {
+  FutureOr<int> y = x;
+}
+''');
+    var typeAnnotation = findNode.typeAnnotation('FutureOr<int> y');
+    visitTypeAnnotation(typeAnnotation, 'FutureOr<int>?',
+        changes: {typeAnnotation: isMakeNullable});
+  }
+
+  Future<void> test_typeName_futureOr_redundant() async {
+    await analyze('''
+import 'dart:async';
+void _f(bool b, FutureOr<int>/*?*/ x, FutureOr<int/*?*/> y) {
+  FutureOr<int> z = b ? x : y;
+}
+''');
+    // The type of `z` should be `FutureOr<int?>?`, but this is equivalent to
+    // `FutureOr<int?>`, so we only add the first `?`.  Note: expected type is
+    // still `FutureOr<int?>?`; we don't go to extra effort to remove the
+    // redundant `?` from the internal type representation, just from the source
+    // code we generate.
+    visitTypeAnnotation(
+        findNode.typeAnnotation('FutureOr<int> z'), 'FutureOr<int?>?',
+        changes: {findNode.typeAnnotation('int> z'): isMakeNullable});
+  }
+
+  Future<void> test_typeName_futureOr_void_nullable() async {
+    await analyze('''
+import 'dart:async';
+void _f() {
+  FutureOr<void> x = null;
+}
+''');
+    // The type of `x` should be `FutureOr<void>?`, but this is equivalent to
+    // `FutureOr<void>`, so we don't add a `?`.  Note: expected type is
+    // still `FutureOr<void>?`; we don't go to extra effort to remove the
+    // redundant `?` from the internal type representation, just from the source
+    // code we generate.
+    visitTypeAnnotation(
+        findNode.typeAnnotation('FutureOr<void> x'), 'FutureOr<void>?',
+        changes: {});
+  }
+
   Future<void> test_typeName_generic_nonNullable() async {
     await analyze('''
 void _f() {
@@ -3085,6 +3177,19 @@
         changes: {findNode.typeAnnotation('int'): isMakeNullable});
   }
 
+  Future<void> test_typeName_generic_nullable_arg_and_outer() async {
+    await analyze('''
+void _f(bool b) {
+  List<int> i = b ? [null] : null;
+}
+''');
+    var listInt = findNode.typeAnnotation('List<int>');
+    visitTypeAnnotation(listInt, 'List<int?>?', changes: {
+      findNode.typeAnnotation('int'): isMakeNullable,
+      listInt: isMakeNullable
+    });
+  }
+
   Future<void> test_typeName_simple_nonNullable() async {
     await analyze('''
 void _f() {
diff --git a/tools/bots/results.dart b/pkg/test_runner/lib/bot_results.dart
similarity index 78%
rename from tools/bots/results.dart
rename to pkg/test_runner/lib/bot_results.dart
index d3707f4..8ae9059 100644
--- a/tools/bots/results.dart
+++ b/pkg/test_runner/lib/bot_results.dart
@@ -1,13 +1,13 @@
-// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// results.json and flaky.json parser.
+/// Parses results.json and flaky.json.
 
 import 'dart:async';
 import 'dart:convert';
 import 'dart:io';
-import 'dart:math';
+import 'dart:math' as math;
 
 import 'package:pool/pool.dart';
 
@@ -18,34 +18,34 @@
 const testResultsStoragePath = "gs://dart-test-results/builders";
 
 /// Limit the number of concurrent subprocesses by half the number of cores.
-final gsutilPool = new Pool(max(1, Platform.numberOfProcessors ~/ 2));
+final gsutilPool = Pool(math.max(1, Platform.numberOfProcessors ~/ 2));
 
 /// Runs gsutil with the provided [arguments] and returns the standard output.
+///
 /// Returns null if the requested URL didn't exist.
 Future<String> runGsutil(List<String> arguments) async {
   return gsutilPool.withResource(() async {
-    final processResult = await Process.run(
+    var processResult = await Process.run(
         "python", [gsutilPy]..addAll(arguments),
         runInShell: Platform.isWindows);
+    var stderr = processResult.stderr as String;
     if (processResult.exitCode != 0) {
-      if (processResult.exitCode == 1 &&
-              processResult.stderr.contains("No URLs matched") ||
-          processResult.stderr
-              .contains("One or more URLs matched no objects")) {
+      if (processResult.exitCode == 1 && stderr.contains("No URLs matched") ||
+          stderr.contains("One or more URLs matched no objects")) {
         return null;
       }
-      String error = "Failed to run: python $gsutilPy $arguments\n"
+      var error = "Failed to run: python $gsutilPy $arguments\n"
           "exitCode: ${processResult.exitCode}\n"
           "stdout:\n${processResult.stdout}\n"
           "stderr:\n${processResult.stderr}";
       if (processResult.exitCode == 1 &&
-          processResult.stderr.contains("401 Anonymous caller")) {
+          stderr.contains("401 Anonymous caller")) {
         error =
             "\n\nYou need to authenticate by running:\npython $gsutilPy config\n";
       }
-      throw new Exception(error);
+      throw Exception(error);
     }
-    return processResult.stdout;
+    return processResult.stdout as String;
   });
 }
 
@@ -56,12 +56,12 @@
 /// Returns the files and directories in the provided cloud storage [directory],
 /// or null if it didn't exist.
 Future<Iterable<String>> lsGsutil(String directory) async {
-  final contents = await runGsutil(["ls", directory]);
+  var contents = await runGsutil(["ls", directory]);
   if (contents == null) {
     return null;
   }
   return LineSplitter.split(contents).map((String path) {
-    final elements = path.split("/");
+    var elements = path.split("/");
     if (elements[elements.length - 1].isEmpty) {
       return elements[elements.length - 2];
     } else {
@@ -113,23 +113,22 @@
 }
 
 Future<List<Map<String, dynamic>>> loadResults(String path) async {
-  final results = <Map<String, dynamic>>[];
-  final lines = new File(path)
+  var results = <Map<String, dynamic>>[];
+  var lines = File(path)
       .openRead()
       .cast<List<int>>()
       .transform(utf8.decoder)
-      .transform(new LineSplitter());
-  await for (final line in lines) {
-    final Map<String, dynamic> map = jsonDecode(line);
-    results.add(map);
+      .transform(const LineSplitter());
+  await for (var line in lines) {
+    results.add(jsonDecode(line) as Map<String, dynamic>);
   }
   return results;
 }
 
 Map<String, Map<String, dynamic>> createResultsMap(
     List<Map<String, dynamic>> results) {
-  Map<String, Map<String, dynamic>> result = {};
-  for (Map<String, dynamic> map in results) {
+  var result = <String, Map<String, dynamic>>{};
+  for (var map in results) {
     var key = "${map["configuration"]}:${map["name"]}";
     result.putIfAbsent(key, () => map);
   }
diff --git a/pkg/test_runner/lib/src/expectation_set.dart b/pkg/test_runner/lib/src/expectation_set.dart
index f896cd0..94ca4ef 100644
--- a/pkg/test_runner/lib/src/expectation_set.dart
+++ b/pkg/test_runner/lib/src/expectation_set.dart
@@ -49,8 +49,6 @@
     } on SyntaxError catch (error) {
       stderr.writeln(error.toString());
       exit(1);
-
-      throw "unreachable";
     }
   }
 
diff --git a/pkg/test_runner/lib/src/process_queue.dart b/pkg/test_runner/lib/src/process_queue.dart
index 878a3fc..7be0d74 100644
--- a/pkg/test_runner/lib/src/process_queue.dart
+++ b/pkg/test_runner/lib/src/process_queue.dart
@@ -1186,7 +1186,6 @@
       // it will always fail. So rather than re-trying a 1000+ times, we
       // exit.
       io.exit(1);
-      return true;
     });
   }
 
diff --git a/pkg/test_runner/lib/src/test_suite.dart b/pkg/test_runner/lib/src/test_suite.dart
index fe5f5d2..4351b8d 100644
--- a/pkg/test_runner/lib/src/test_suite.dart
+++ b/pkg/test_runner/lib/src/test_suite.dart
@@ -749,7 +749,6 @@
     // Unreachable.
     print("Cannot create URL for path $file. Not in build or dart directory.");
     exit(1);
-    return null;
   }
 
   String _uriForBrowserTest(String pathComponent) {
diff --git a/pkg/test_runner/lib/src/update_errors.dart b/pkg/test_runner/lib/src/update_errors.dart
index c7f2887..a961ea9a 100644
--- a/pkg/test_runner/lib/src/update_errors.dart
+++ b/pkg/test_runner/lib/src/update_errors.dart
@@ -12,12 +12,11 @@
 /// Removes existing static error marker comments in [source] and adds markers
 /// for the given [errors].
 ///
-/// If [removeAnalyzer] is `false`, then existing analyzer errors in [source]
-/// are preserved. Likewise for [removeCfe] and CFE errors.
+/// If [remove] is not `null`, then only removes existing errors for the given
+/// sources.
 String updateErrorExpectations(String source, List<StaticError> errors,
-    {bool removeAnalyzer, bool removeCfe}) {
-  removeAnalyzer ??= true;
-  removeCfe ??= true;
+    {Set<ErrorSource> remove}) {
+  remove ??= {};
 
   var existingErrors = StaticError.parseExpectations(source);
   var lines = source.split("\n");
@@ -38,13 +37,9 @@
     }
 
     // Re-add errors for the portions we intend to preserve.
-    var keepAnalyzer = !removeAnalyzer && error.hasError(ErrorSource.analyzer);
-    var keepCfe = !removeCfe && error.hasError(ErrorSource.cfe);
-
     var keptErrors = {
-      if (keepAnalyzer)
-        ErrorSource.analyzer: error.errorFor(ErrorSource.analyzer),
-      if (keepCfe) ErrorSource.cfe: error.errorFor(ErrorSource.cfe),
+      for (var source in ErrorSource.all.toSet().difference(remove))
+        if (error.hasError(source)) source: error.errorFor(source)
     };
 
     if (keptErrors.isNotEmpty) {
diff --git a/pkg/test_runner/lib/test_runner.dart b/pkg/test_runner/lib/test_runner.dart
new file mode 100644
index 0000000..065b840
--- /dev/null
+++ b/pkg/test_runner/lib/test_runner.dart
@@ -0,0 +1,609 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// Run tests like on the given builder and/or named configuration.
+
+import 'dart:async';
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:args/args.dart';
+import 'package:smith/smith.dart';
+
+import 'bot_results.dart';
+
+const int deflakingCount = 5;
+
+/// Quotes a string in shell single quote mode. This function produces a single
+/// shell argument that evaluates to the exact string provided, handling any
+/// special characters in the input string. Shell single quote mode works uses
+/// the single quote character as the delimiter and uses the characters
+/// in-between verbatim without any special processing. To insert the single
+/// quote character itself, escape single quote mode, insert an escaped single
+/// quote, and then return to single quote mode.
+///
+/// Examples:
+///   foo becomes 'foo'
+///   foo bar becomes 'foo bar'
+///   foo\ bar becomes 'foo\ bar'
+///   foo's bar becomes 'foo '\''s bar'
+///   foo "b"ar becomes 'foo "b"'
+///   foo
+///   bar becomes 'foo
+///   bar'
+String shellSingleQuote(String string) {
+  return "'${string.replaceAll("'", "'\\''")}'";
+}
+
+/// Like [shellSingleQuote], but if the string only contains safe ASCII
+/// characters, don't quote it. Note that it's not always safe to omit the
+/// quotes even if the string only has safe characters, as doing so might match
+/// a shell keyword or a shell builtin in the first argument in a command. It
+/// should be safe to use this for the second argument onwards in a command.
+String simpleShellSingleQuote(String string) {
+  return RegExp(r"^[a-zA-Z0-9%+,./:_-]*$").hasMatch(string)
+      ? string
+      : shellSingleQuote(string);
+}
+
+/// Runs a process and exits likewise if the process exits non-zero.
+Future<ProcessResult> runProcess(String executable, List<String> arguments,
+    {bool runInShell = false}) async {
+  var processResult =
+      await Process.run(executable, arguments, runInShell: runInShell);
+  if (processResult.exitCode != 0) {
+    var command =
+        [executable, ...arguments].map(simpleShellSingleQuote).join(" ");
+    throw Exception("Command exited ${processResult.exitCode}: $command\n"
+        "${processResult.stdout}\n${processResult.stderr}");
+  }
+  return processResult;
+}
+
+/// Runs a process and exits likewise if the process exits non-zero, but let the
+/// child process inherit out stdio handles.
+Future<ProcessResult> runProcessInheritStdio(
+    String executable, List<String> arguments,
+    {bool runInShell = false}) async {
+  var process = await Process.start(executable, arguments,
+      mode: ProcessStartMode.inheritStdio, runInShell: runInShell);
+  var exitCode = await process.exitCode;
+  var processResult = ProcessResult(process.pid, exitCode, "", "");
+  if (processResult.exitCode != 0) {
+    var command =
+        [executable, ...arguments].map(simpleShellSingleQuote).join(" ");
+    throw Exception("Command exited ${processResult.exitCode}: $command");
+  }
+  return processResult;
+}
+
+/// Finds the branch of a builder given the list of branches.
+String branchOfBuilder(String builder, List<String> branches) {
+  return branches.where((branch) => branch != "master").firstWhere(
+      (branch) => builder.endsWith("-$branch"),
+      orElse: () => "master");
+}
+
+/// Finds the named configuration to test according to the test matrix
+/// information and the command line options.
+Map<String, Set<Builder>> resolveNamedConfigurations(
+    TestMatrix testMatrix,
+    String requestedBranch,
+    List<String> requestedNamedConfigurations,
+    String requestedBuilder) {
+  assert(requestedBranch != null);
+  var testedConfigurations = <String, Set<Builder>>{};
+  var foundBuilder = false;
+  for (var builder in testMatrix.builders) {
+    if (requestedBuilder != null && builder.name != requestedBuilder) {
+      continue;
+    }
+    var branch = branchOfBuilder(builder.name, testMatrix.branches);
+    if (branch != requestedBranch) {
+      if (requestedBuilder == null) {
+        continue;
+      }
+      stderr.writeln("error: Builder $requestedBuilder is on branch $branch "
+          "rather than $requestedBranch");
+      stderr.writeln("error: To compare with that branch, use: -B $branch");
+      return null;
+    }
+    foundBuilder = true;
+    for (var step in builder.steps.where((step) => step.isTestStep)) {
+      var testedConfiguration = step.testedConfiguration;
+      if (testedConfiguration == null) {
+        // This test step does not use a configuration; for example,
+        // because it is a simple script that does not produce results.
+        continue;
+      }
+      var namedConfiguration = testedConfiguration.name;
+      if (requestedNamedConfigurations.isEmpty ||
+          requestedNamedConfigurations.contains(namedConfiguration)) {
+        testedConfigurations
+            .putIfAbsent(namedConfiguration, () => {})
+            .add(builder);
+      }
+    }
+  }
+  if (requestedBuilder != null && !foundBuilder) {
+    stderr.writeln("error: Builder $requestedBuilder doesn't exist");
+    return null;
+  }
+  if (requestedBuilder != null &&
+      requestedNamedConfigurations.isEmpty &&
+      testedConfigurations.isEmpty) {
+    stderr.writeln("error: Builder $requestedBuilder isn't testing any named "
+        "configurations");
+    return null;
+  }
+  if (requestedNamedConfigurations.isNotEmpty) {
+    var hasUntestedConfiguration = false;
+    for (var requestedConfiguration in requestedNamedConfigurations) {
+      if (!testedConfigurations.containsKey(requestedConfiguration)) {
+        var builder = requestedBuilder != null
+            ? "builder $requestedBuilder"
+            : "any builder";
+        stderr.writeln("error: The named configuration "
+            "$requestedConfiguration isn't tested on $builder");
+        hasUntestedConfiguration = true;
+      }
+    }
+    if (hasUntestedConfiguration) {
+      return null;
+    }
+  }
+
+  return testedConfigurations;
+}
+
+/// Locates the merge base between head and the [branch] on the given [remote].
+Future<String> findMergeBase(String remote, String branch) async {
+  var arguments = ["merge-base", "$remote/$branch", "HEAD"];
+  var result =
+      await Process.run("git", arguments, runInShell: Platform.isWindows);
+
+  var stdout = result.stdout as String;
+  var stderr = result.stderr as String;
+
+  if (result.exitCode != 0) {
+    throw Exception("Failed to run: git ${arguments.join(' ')}\n"
+        "stdout:\n$stdout\n"
+        "stderr:\n$stderr\n");
+  }
+  return LineSplitter.split(stdout).first;
+}
+
+/// Exception thrown when looking up the build for a commit failed.
+class CommitNotBuiltException implements Exception {
+  final String reason;
+
+  CommitNotBuiltException(this.reason);
+
+  String toString() => reason;
+}
+
+/// The result after searching for a build of a commit.
+class BuildSearchResult {
+  final int build;
+  final String commit;
+
+  BuildSearchResult(this.build, this.commit);
+}
+
+/// Locates the build number of the [commit] on the [builder], or throws an
+/// exception if the builder hasn't built the commit.
+Future<BuildSearchResult> searchForBuild(String builder, String commit) async {
+  var requestUrl = Uri.parse(
+      "https://cr-buildbucket.appspot.com/_ah/api/buildbucket/v1/search"
+      "?bucket=luci.dart.ci.sandbox"
+      "&tag=builder%3A$builder"
+      "&tag=buildset%3Acommit%2Fgit%2F$commit"
+      "&fields=builds(status%2Ctags%2Curl)");
+  var client = HttpClient();
+  var request = await client.getUrl(requestUrl);
+  var response = await request.close();
+  var object = await response
+      .cast<List<int>>()
+      .transform(const Utf8Decoder())
+      .transform(const JsonDecoder())
+      .first as Map<String, dynamic>;
+  client.close();
+  var builds = object["builds"] as List<dynamic>;
+  if (builds == null || builds.isEmpty) {
+    throw CommitNotBuiltException(
+        "Builder $builder hasn't built commit $commit");
+  }
+  var build = builds.last;
+  var tags = (build["tags"] as List).cast<String>();
+  var buildAddressTag =
+      tags.firstWhere((tag) => tag.startsWith("build_address:"));
+  var buildAddress = buildAddressTag.substring("build_address:".length);
+  if (build["status"] != "COMPLETED") {
+    throw CommitNotBuiltException("Build $buildAddress isn't completed yet");
+  }
+  return BuildSearchResult(int.parse(buildAddress.split("/").last), commit);
+}
+
+Future<BuildSearchResult> searchForApproximateBuild(
+    String builder, String commit) async {
+  try {
+    return await searchForBuild(builder, commit);
+  } on CommitNotBuiltException catch (e) {
+    print("Warning: $e, searching for an inexact previous build...");
+    var limit = 25;
+    var arguments = [
+      "rev-list",
+      "$commit~$limit..$commit~1",
+      "--first-parent",
+      "--topo-order"
+    ];
+    var processResult = await Process.run("git", arguments, runInShell: true);
+    if (processResult.exitCode != 0) {
+      throw Exception("Failed to list potential commits: git $arguments\n"
+          "exitCode: ${processResult.exitCode}\n"
+          "stdout: ${processResult.stdout}\n"
+          "stdout: ${processResult.stderr}\n");
+    }
+    for (var fallbackCommit
+        in LineSplitter.split(processResult.stdout as String)) {
+      try {
+        return await searchForBuild(builder, fallbackCommit);
+      } catch (e) {
+        print(
+            "Warning: Searching for inexact baseline build: $e, continuing...");
+      }
+    }
+    throw CommitNotBuiltException(
+        "Failed to locate approximate baseline results for "
+        "$commit in past $limit commits");
+  }
+}
+
+void overrideConfiguration(Map<String, Map<String, dynamic>> results,
+    String configuration, String newConfiguration) {
+  results.forEach((String key, Map<String, dynamic> result) {
+    if (result["configuration"] == configuration) {
+      result["configuration"] = newConfiguration;
+    }
+  });
+}
+
+void printUsage(ArgParser parser, {String error, bool printOptions = false}) {
+  if (error != null) {
+    print("$error\n");
+    exitCode = 1;
+  }
+  print("""
+Usage: test.dart -b [BUILDER] -n [CONFIGURATION] [OPTION]... [--]
+                 [TEST.PY OPTION]... [SELECTOR]...
+
+Run tests and compare with the results on the given builder. Either the -n or
+the -b option, or both, must be used. Any options following -- and non-option
+arguments will be forwarded to test.py invocations. The specified named
+configuration's results will be downloaded from the specified builder. If only a
+named configuration is specified, the results are downloaded from the
+appropriate builders. If only a builder is specified, the default named
+configuration is used if the builder only has a single named configuration.
+Otherwise the available named configurations are listed.
+
+See the documentation at https://goto.google.com/dart-status-file-free-workflow
+""");
+  if (printOptions) {
+    print(parser.usage);
+  } else {
+    print("Run test.dart --help to see all options.");
+  }
+}
+
+Future<void> runTests(List<String> args) async {
+  var parser = ArgParser();
+  parser.addOption("builder",
+      abbr: "b", help: "Run tests like on the given builder");
+  parser.addOption("branch",
+      abbr: "B",
+      help: "Select the builders building this branch",
+      defaultsTo: "master");
+  parser.addOption("commit", abbr: "C", help: "Compare with this commit");
+  parser.addFlag("deflake",
+      help: "Re-run failing newly tests $deflakingCount times.");
+  parser.addFlag("report-flakes",
+      help: "Report test failures for tests known to be flaky.\n"
+          "This ignores all flakiness data from CI but flakes\n"
+          "detected by --deflake will remain hidden");
+  parser.addFlag("list-configurations",
+      help: "Output list of configurations.", negatable: false);
+  parser.addMultiOption("named-configuration",
+      abbr: "n",
+      help: "The named test configuration(s) that supplies the\nvalues for all "
+          "test options, specifying how tests\nshould be run.");
+  parser.addOption("local-configuration",
+      abbr: "N",
+      help: "Use a different named configuration for local\ntesting than the "
+          "named configuration the baseline\nresults were downloaded for. The "
+          "results may be\ninexact if the baseline configuration is "
+          "different.");
+  parser.addOption("remote",
+      abbr: "R",
+      help: "Compare with this remote and git branch",
+      defaultsTo: "origin");
+  parser.addFlag("help", help: "Show the program usage.", negatable: false);
+
+  ArgResults options;
+  try {
+    options = parser.parse(args);
+  } on FormatException catch (exception) {
+    printUsage(parser, error: exception.message);
+    return;
+  }
+
+  if (options["help"] as bool) {
+    printUsage(parser, printOptions: true);
+    return;
+  }
+
+  if (options["list-configurations"] as bool) {
+    var process = await Process.start(
+        "python", ["tools/test.py", "--list-configurations"],
+        mode: ProcessStartMode.inheritStdio, runInShell: Platform.isWindows);
+    exitCode = await process.exitCode;
+    return;
+  }
+
+  var requestedBuilder = options["builder"] as String;
+  var requestedNamedConfigurations =
+      (options["named-configuration"] as List).cast<String>();
+  var localConfiguration = options["local-configuration"] as String;
+
+  if (requestedBuilder == null && requestedNamedConfigurations.isEmpty) {
+    printUsage(parser,
+        error: "Please specify either a configuration (-n) or "
+            "a builder (-b)");
+    return;
+  }
+
+  if (localConfiguration != null && requestedNamedConfigurations.length > 1) {
+    printUsage(parser,
+        error: "Local configuration (-N) can only be used with a"
+            " single named configuration (-n)");
+    return;
+  }
+
+  // Locate gsutil.py.
+  gsutilPy =
+      Platform.script.resolve("../third_party/gsutil/gsutil.py").toFilePath();
+
+  // Load the test matrix.
+  var testMatrixPath = Platform.script.resolve("bots/test_matrix.json");
+  var testMatrix = TestMatrix.fromPath(testMatrixPath.toFilePath());
+  // Determine what named configuration to run and which builders to download
+  // existing results from.
+  var testedConfigurations = resolveNamedConfigurations(
+      testMatrix,
+      options["branch"] as String,
+      requestedNamedConfigurations,
+      requestedBuilder);
+  if (testedConfigurations == null) {
+    // No valid configuration could be found. The error has already been
+    // reported by [resolveConfigurations].
+    exitCode = 1;
+    return;
+  }
+  var namedConfigurations = testedConfigurations.keys.toSet().toList();
+  var builders =
+      testedConfigurations.values.expand((builders) => builders).toSet();
+
+  // Print information about the resolved builders to compare with.
+  for (var namedConfiguration in namedConfigurations) {
+    var testedBuilders = testedConfigurations[namedConfiguration];
+    var onWhichBuilders = testedBuilders.length == 1
+        ? "builder ${testedBuilders.single.name}"
+        : "builders${testedBuilders.map((b) => "\n  ${b.name}").join()}";
+    if (localConfiguration != null) {
+      print("Testing named configuration $localConfiguration "
+          "compared with configuration $namedConfiguration "
+          "on $onWhichBuilders");
+    } else {
+      print("Testing named configuration $namedConfiguration "
+          "compared with $onWhichBuilders");
+    }
+  }
+
+  // Use given commit or find out where the current HEAD branched.
+  var commit = options["commit"] as String ??
+      await findMergeBase(
+          options["remote"] as String, options["branch"] as String);
+  print("Base commit is $commit");
+
+  // Store the downloaded results and our test results in a temporary directory.
+  var outDirectory = await Directory.systemTemp.createTemp("test.dart.");
+  try {
+    var tasks = <Future>[];
+    var needsConfigurationOverride = localConfiguration != null &&
+        localConfiguration != namedConfigurations.single;
+    var needsMerge = builders.length > 1;
+    var inexactBuilds = <String, String>{};
+    var previousFileName = "previous.json";
+    var flakyFileName = "flaky.json";
+    var downloadNumber = 0;
+
+    // Download the previous results and flakiness info from cloud storage.
+    for (var builder in builders) {
+      var builderName = builder.name;
+      if (needsMerge) {
+        previousFileName = "previous-$downloadNumber.json";
+        flakyFileName = "flaky-$downloadNumber.json";
+        downloadNumber++;
+      }
+
+      // Use the buildbucket API to search for builds of the right commit.
+      print("Finding build on builder $builderName to compare with...");
+      var buildSearchResult =
+          await searchForApproximateBuild(builderName, commit);
+      if (buildSearchResult.commit != commit) {
+        print("Warning: Using commit ${buildSearchResult.commit} "
+            "as baseline instead of $commit for $builderName");
+        inexactBuilds[builderName] = buildSearchResult.commit;
+      }
+
+      var buildNumber = buildSearchResult.build.toString();
+      print("Downloading results from builder $builderName "
+          "build $buildNumber...");
+      tasks.add(cpGsutil(
+          buildFileCloudPath(builderName, buildNumber, "results.json"),
+          "${outDirectory.path}/$previousFileName"));
+      if (!(options["report-flakes"] as bool)) {
+        tasks.add(cpGsutil(
+            buildFileCloudPath(builderName, buildNumber, "flaky.json"),
+            "${outDirectory.path}/$flakyFileName"));
+      }
+    }
+
+    // Run the tests.
+    var configurationsToRun = localConfiguration != null
+        ? <String>[localConfiguration]
+        : namedConfigurations;
+    print("".padLeft(80, "="));
+    print("Running tests");
+    print("".padLeft(80, "="));
+    await runProcessInheritStdio(
+        "python",
+        [
+          "tools/test.py",
+          "--named-configuration=${configurationsToRun.join(",")}",
+          "--output-directory=${outDirectory.path}",
+          "--clean-exit",
+          "--silent-failures",
+          "--write-results",
+          "--write-logs",
+          ...options.rest,
+        ],
+        runInShell: Platform.isWindows);
+    // Wait for the downloads and the test run to complete.
+    await Future.wait(tasks);
+    // Merge the results and flaky data downloaded from the builders.
+    var mergedResults = <String, Map<String, dynamic>>{};
+    var mergedFlaky = <String, Map<String, dynamic>>{};
+    if (needsMerge || needsConfigurationOverride) {
+      for (var i = 0; i < downloadNumber; ++i) {
+        previousFileName = needsMerge ? "previous-$i.json" : "previous.json";
+        var results =
+            await loadResultsMap("${outDirectory.path}/$previousFileName");
+        if (needsConfigurationOverride) {
+          overrideConfiguration(
+              results, namedConfigurations.single, localConfiguration);
+        }
+        mergedResults.addAll(results);
+        if (!(options["report-flakes"] as bool)) {
+          flakyFileName = needsMerge ? "flaky-$i.json" : "flaky.json";
+          var flakyTests =
+              await loadResultsMap("${outDirectory.path}/$flakyFileName");
+          if (needsConfigurationOverride) {
+            overrideConfiguration(
+                flakyTests, namedConfigurations.single, localConfiguration);
+          }
+          mergedFlaky.addAll(flakyTests);
+        }
+      }
+    }
+    // Write out the merged results for the builders.
+    if (needsMerge || needsConfigurationOverride) {
+      await File("${outDirectory.path}/previous.json").writeAsString(
+          mergedResults.values.map((data) => jsonEncode(data) + "\n").join(""));
+    }
+    // Ensure that there is a flaky.json even if it wasn't downloaded.
+    if (needsMerge ||
+        needsConfigurationOverride ||
+        options["report-flakes"] as bool) {
+      await File("${outDirectory.path}/flaky.json").writeAsString(
+          mergedFlaky.values.map((data) => jsonEncode(data) + "\n").join(""));
+    }
+    // Deflake results of the tests if required.
+    if (options["deflake"] as bool) {
+      await deflake(outDirectory, configurationsToRun, options.rest);
+    }
+    // Write out the final comparison.
+    print("".padLeft(80, "="));
+    print("Test Results");
+    print("".padLeft(80, "="));
+    var compareOutput = await runProcess(Platform.resolvedExecutable, [
+      "tools/bots/compare_results.dart",
+      "--human",
+      "--verbose",
+      "--changed",
+      "--failing",
+      "--passing",
+      "--flakiness-data=${outDirectory.path}/flaky.json",
+      "--logs=${outDirectory.path}/logs.json",
+      "${outDirectory.path}/previous.json",
+      "${outDirectory.path}/results.json",
+    ]);
+    if (compareOutput.stdout == "") {
+      print("There were no test failures.");
+    } else {
+      stdout.write(compareOutput.stdout);
+    }
+    if (inexactBuilds.isNotEmpty) {
+      print("");
+      var builders = inexactBuilds.keys.toList()..sort();
+      for (var builder in builders) {
+        var inexactCommit = inexactBuilds[builder];
+        print("Warning: Results may be inexact because commit $inexactCommit "
+            "was used as the baseline for $builder instead of $commit");
+      }
+    }
+  } finally {
+    await outDirectory.delete(recursive: true);
+  }
+}
+
+Future<void> deflake(Directory outDirectory, List<String> configurations,
+    List<String> testPyArgs) async {
+  // Find the list of tests to deflake.
+  var deflakeListOutput = await runProcess(Platform.resolvedExecutable, [
+    "tools/bots/compare_results.dart",
+    "--changed",
+    "--failing",
+    "--passing",
+    "--flakiness-data=${outDirectory.path}/flaky.json",
+    "${outDirectory.path}/previous.json",
+    "${outDirectory.path}/results.json",
+  ]);
+  var deflakeListPath = "${outDirectory.path}/deflake.list";
+  var deflakeListFile = File(deflakeListPath);
+  await deflakeListFile.writeAsString(deflakeListOutput.stdout as String);
+
+  // Deflake the changed tests.
+  var deflakingResultsPaths = <String>[];
+  for (var i = 1; deflakeListOutput.stdout != "" && i <= deflakingCount; i++) {
+    print("".padLeft(80, "="));
+    print("Running deflaking iteration $i");
+    print("".padLeft(80, "="));
+    var deflakeDirectory = Directory("${outDirectory.path}/$i");
+    await deflakeDirectory.create();
+    var deflakeArguments = [
+      "--named-configuration=${configurations.join(",")}",
+      "--output-directory=${deflakeDirectory.path}",
+      "--clean-exit",
+      "--silent-failures",
+      "--write-results",
+      "--test-list=$deflakeListPath",
+      ...testPyArgs,
+    ];
+
+    await runProcessInheritStdio(
+        "python", ["tools/test.py", ...deflakeArguments],
+        runInShell: Platform.isWindows);
+    deflakingResultsPaths.add("${deflakeDirectory.path}/results.json");
+  }
+
+  // Update the flakiness information based on what we've learned.
+  print("Updating flakiness information...");
+  await runProcess(Platform.resolvedExecutable, [
+    "tools/bots/update_flakiness.dart",
+    "--input=${outDirectory.path}/flaky.json",
+    "--output=${outDirectory.path}/flaky.json",
+    "${outDirectory.path}/results.json",
+    ...deflakingResultsPaths,
+  ]);
+}
diff --git a/pkg/test_runner/test/update_errors_test.dart b/pkg/test_runner/test/update_errors_test.dart
index 6a8e9c7..6c433625 100644
--- a/pkg/test_runner/test/update_errors_test.dart
+++ b/pkg/test_runner/test/update_errors_test.dart
@@ -1,6 +1,7 @@
 // Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
+import 'dart:math' as math;
 
 import 'package:expect/expect.dart';
 
@@ -16,7 +17,7 @@
 // escapes here like `\/`.
 
 void main() {
-  // Inserts analyzer, CFE, and both errors.
+  // Inserts single-front end errors.
   expectUpdate("""
 int i = "bad";
 
@@ -26,12 +27,7 @@
 """, errors: [
     makeError(line: 1, column: 9, length: 5, analyzerError: "some.error"),
     makeError(line: 3, column: 15, length: 7, cfeError: "Bad."),
-    makeError(
-        line: 5,
-        column: 13,
-        length: 5,
-        analyzerError: "an.error",
-        cfeError: "Wrong.\nLine.\nAnother."),
+    makeError(line: 5, column: 13, length: 5, webError: "Web.\nError."),
   ], expected: """
 int i = "bad";
 /\/      ^^^^^
@@ -43,15 +39,72 @@
 
 int third = "boo";
 /\/          ^^^^^
-/\/ [analyzer] an.error
-/\/ [cfe] Wrong.
-/\/ Line.
-/\/ Another.
+/\/ [web] Web.
+/\/ Error.
+""");
+
+  // Inserts errors for multiple front ends.
+  expectUpdate("""
+int i = "bad";
+
+int another = "wrong";
+
+int third = "boo";
+
+int last = "oops";
+""", errors: [
+    makeError(
+        line: 1,
+        column: 9,
+        length: 5,
+        analyzerError: "some.error",
+        cfeError: "Bad."),
+    makeError(
+        line: 3,
+        column: 15,
+        length: 7,
+        cfeError: "Another bad.",
+        webError: "Web.\nError."),
+    makeError(
+        line: 5,
+        column: 13,
+        length: 5,
+        analyzerError: "third.error",
+        webError: "Web error."),
+    makeError(
+        line: 7,
+        column: 12,
+        length: 6,
+        analyzerError: "last.error",
+        cfeError: "Final.\nError.",
+        webError: "Web error."),
+  ], expected: """
+int i = "bad";
+/\/      ^^^^^
+/\/ [analyzer] some.error
+/\/ [cfe] Bad.
+
+int another = "wrong";
+/\/            ^^^^^^^
+/\/ [cfe] Another bad.
+/\/ [web] Web.
+/\/ Error.
+
+int third = "boo";
+/\/          ^^^^^
+/\/ [analyzer] third.error
+/\/ [web] Web error.
+
+int last = "oops";
+/\/         ^^^^^^
+/\/ [analyzer] last.error
+/\/ [cfe] Final.
+/\/ Error.
+/\/ [web] Web error.
 """);
 
   // Removes only analyzer errors.
-  expectUpdate(
-      """
+  expectUpdate("""
 int i = "bad";
 /\/      ^^^^^
 /\/ [analyzer] some.error
@@ -64,9 +117,7 @@
 /\/          ^^^^^
 /\/ [analyzer] an.error
 /\/ [cfe] Wrong.
-""",
-      removeCfe: false,
-      expected: """
+""", remove: {ErrorSource.analyzer}, expected: """
 int i = "bad";
 
 int another = "wrong";
@@ -79,8 +130,7 @@
 """);
 
   // Removes only CFE errors.
-  expectUpdate(
-      """
+  expectUpdate("""
 int i = "bad";
 /\/      ^^^^^
 /\/ [analyzer] some.error
@@ -93,9 +143,7 @@
 /\/          ^^^^^
 /\/ [analyzer] an.error
 /\/ [cfe] Wrong.
-""",
-      removeAnalyzer: false,
-      expected: """
+""", remove: {ErrorSource.cfe}, expected: """
 int i = "bad";
 /\/      ^^^^^
 /\/ [analyzer] some.error
@@ -107,6 +155,60 @@
 /\/ [analyzer] an.error
 """);
 
+  // Removes only web errors.
+  expectUpdate("""
+int i = "bad";
+/\/      ^^^^^
+/\/ [analyzer] some.error
+
+int another = "wrong";
+/\/            ^^^^^^^
+/\/ [web] Bad.
+
+int third = "boo";
+/\/          ^^^^^
+/\/ [cfe] Error.
+/\/ [web] Wrong.
+""", remove: {ErrorSource.web}, expected: """
+int i = "bad";
+/\/      ^^^^^
+/\/ [analyzer] some.error
+
+int another = "wrong";
+
+int third = "boo";
+/\/          ^^^^^
+/\/ [cfe] Error.
+""");
+
+  // Removes multiple error sources.
+  expectUpdate("""
+int i = "bad";
+/\/      ^^^^^
+/\/ [analyzer] some.error
+/\/ [cfe] CFE error.
+
+int another = "wrong";
+/\/            ^^^^^^^
+/\/ [web] Bad.
+
+int third = "boo";
+/\/          ^^^^^
+/\/ [analyzer] another.error
+/\/ [cfe] Error.
+/\/ [web] Wrong.
+""", remove: {ErrorSource.analyzer, ErrorSource.web}, expected: """
+int i = "bad";
+/\/      ^^^^^
+/\/ [cfe] CFE error.
+
+int another = "wrong";
+
+int third = "boo";
+/\/          ^^^^^
+/\/ [cfe] Error.
+""");
+
   // Preserves previous error's indentation if possible.
   expectUpdate("""
 int i = "bad";
@@ -303,8 +405,7 @@
 
 void regression() {
   // https://github.com/dart-lang/sdk/issues/37990.
-  expectUpdate(
-      """
+  expectUpdate("""
 int get xx => 3;
 int get yy => 3;
 
@@ -325,20 +426,16 @@
 
   }
 }
-""",
-      removeAnalyzer: false,
-      errors: [
-        makeError(
-            line: 6,
-            column: 5,
-            length: 14,
-            cfeError: "Setter not found: 'xx'."),
-        makeError(
-            line: 16,
-            column: 7,
-            cfeError: "The method 'call' isn't defined for the class 'int'.")
-      ],
-      expected: """
+""", remove: {
+    ErrorSource.cfe
+  }, errors: [
+    makeError(
+        line: 6, column: 5, length: 14, cfeError: "Setter not found: 'xx'."),
+    makeError(
+        line: 16,
+        column: 7,
+        cfeError: "The method 'call' isn't defined for the class 'int'.")
+  ], expected: """
 int get xx => 3;
 int get yy => 3;
 
@@ -362,18 +459,62 @@
 }
 
 void expectUpdate(String original,
-    {List<StaticError> errors,
-    bool removeAnalyzer = true,
-    bool removeCfe = true,
-    String expected}) {
+    {List<StaticError> errors, Set<ErrorSource> remove, String expected}) {
   errors ??= const [];
+  remove ??= ErrorSource.all.toSet();
 
-  var actual = updateErrorExpectations(original, errors,
-      removeAnalyzer: removeAnalyzer, removeCfe: removeCfe);
+  var actual = updateErrorExpectations(original, errors, remove: remove);
   if (actual != expected) {
     // Not using Expect.equals() because the diffs it shows aren't helpful for
     // strings this large.
-    Expect.fail("Output did not match expectation. Expected:\n$expected"
-        "\n\nWas:\n$actual");
+    var actualLines = actual.split("\n");
+    var expectedLines = expected.split("\n");
+
+    // Figure out which leading lines do match so we can ignore those and
+    // highlight the offending ones.
+    var matchingActual = <int>{};
+    var matchingExpected = <int>{};
+    for (var i = 0;
+        i < math.min(actualLines.length, expectedLines.length);
+        i++) {
+      if (actualLines[i] != expectedLines[i]) break;
+      matchingActual.add(i);
+      matchingExpected.add(i);
+    }
+
+    // Find which trailing lines are the same so we can hide those too.
+    for (var i = 0;
+        i < math.min(actualLines.length, expectedLines.length);
+        i++) {
+      // Count backwards from the ends of each list.
+      var actualIndex = actualLines.length - i - 1;
+      var expectedIndex = expectedLines.length - i - 1;
+      if (actualLines[actualIndex] != expectedLines[expectedIndex]) break;
+      matchingActual.add(actualIndex);
+      matchingExpected.add(expectedIndex);
+    }
+
+    var buffer = StringBuffer();
+    void writeLine(int index, String line, Set<int> matchingLines) {
+      // Only show the line if it was different from the expectation.
+      if (matchingLines.contains(index)) {
+        buffer.writeln("    : $line");
+      } else {
+        buffer.writeln("${(index + 1).toString().padLeft(4)}: $line");
+      }
+    }
+
+    buffer.writeln("Output did not match expectation. Expected:");
+    for (var i = 0; i < expectedLines.length; i++) {
+      writeLine(i, expectedLines[i], matchingExpected);
+    }
+
+    buffer.writeln();
+    buffer.writeln("Was:");
+    for (var i = 0; i < actualLines.length; i++) {
+      writeLine(i, actualLines[i], matchingActual);
+    }
+
+    Expect.fail(buffer.toString());
   }
 }
diff --git a/pkg/test_runner/tool/update_static_error_tests.dart b/pkg/test_runner/tool/update_static_error_tests.dart
index a8017d7..263fc75 100644
--- a/pkg/test_runner/tool/update_static_error_tests.dart
+++ b/pkg/test_runner/tool/update_static_error_tests.dart
@@ -19,6 +19,8 @@
     "Usage: dart update_static_error_tests.dart [flags...] <path glob>";
 
 Future<void> main(List<String> args) async {
+  var sources = ErrorSource.all.map((e) => e.marker).toList();
+
   var parser = ArgParser();
 
   parser.addFlag("help", abbr: "h");
@@ -28,41 +30,32 @@
       help: "Print result but do not overwrite any files.",
       negatable: false);
 
-  parser.addSeparator("Strip expectations out of the tests:");
-  parser.addFlag("remove",
+  parser.addSeparator("What operations to perform:");
+  parser.addFlag("remove-all",
       abbr: "r",
       help: "Remove all existing error expectations.",
       negatable: false);
-  parser.addFlag("remove-analyzer",
-      help: "Remove existing analyzer error expectations.", negatable: false);
-  parser.addFlag("remove-cfe",
-      help: "Remove existing CFE error expectations.", negatable: false);
-
-  parser.addSeparator(
-      "Insert expectations in the tests based on current front end output:");
-  parser.addFlag("insert",
+  parser.addMultiOption("remove",
+      help: "Remove error expectations for given front ends.",
+      allowed: sources);
+  parser.addFlag("insert-all",
       abbr: "i",
-      help: "Insert analyzer and CFE error expectations.",
+      help: "Insert error expectations for all front ends.",
       negatable: false);
-  parser.addFlag("insert-analyzer",
-      help: "Insert analyzer error expectations.", negatable: false);
-  parser.addFlag("insert-cfe",
-      help: "Insert CFE error expectations.", negatable: false);
-
-  parser.addSeparator("Update combines remove and insert:");
-  parser.addFlag("update",
+  parser.addMultiOption("insert",
+      help: "Insert error expectations from given front ends.",
+      allowed: sources);
+  parser.addFlag("update-all",
       abbr: "u",
-      help: "Replace analyzer and CFE error expectations.",
+      help: "Replace error expectations for all front ends.",
       negatable: false);
-  parser.addFlag("update-analyzer",
-      help: "Replace analyzer error expectations.", negatable: false);
-  parser.addFlag("update-cfe",
-      help: "Replace CFE error expectations.", negatable: false);
+  parser.addMultiOption("update",
+      help: "Update error expectations for given front ends.",
+      allowed: sources);
 
   parser.addSeparator("Other flags:");
-  parser.addFlag("nnbd",
-      help: "Analyze with the 'non-nullable' experiment enabled.",
-      negatable: false);
+  parser.addFlag("null-safety",
+      help: "Enable the 'non-nullable' experiment.", negatable: false);
 
   var results = parser.parse(args);
 
@@ -76,29 +69,38 @@
   }
 
   var dryRun = results["dry-run"] as bool;
-  var removeAnalyzer = results["remove-analyzer"] as bool ||
-      results["remove"] as bool ||
-      results["update-analyzer"] as bool ||
-      results["update"] as bool;
+  var nullSafety = results["null-safety"] as bool;
 
-  var removeCfe = results["remove-cfe"] as bool ||
-      results["remove"] as bool ||
-      results["update-cfe"] as bool ||
-      results["update"] as bool;
+  var removeSources = <ErrorSource>{};
+  var insertSources = <ErrorSource>{};
 
-  var insertAnalyzer = results["insert-analyzer"] as bool ||
-      results["insert"] as bool ||
-      results["update-analyzer"] as bool ||
-      results["update"] as bool;
+  for (var source in results["remove"] as List<String>) {
+    removeSources.add(ErrorSource.find(source));
+  }
 
-  var insertCfe = results["insert-cfe"] as bool ||
-      results["insert"] as bool ||
-      results["update-cfe"] as bool ||
-      results["update"] as bool;
+  for (var source in results["insert"] as List<String>) {
+    insertSources.add(ErrorSource.find(source));
+  }
 
-  var nnbd = results["nnbd"] as bool;
+  for (var source in results["update"] as List<String>) {
+    removeSources.add(ErrorSource.find(source));
+    insertSources.add(ErrorSource.find(source));
+  }
 
-  if (!removeAnalyzer && !removeCfe && !insertAnalyzer && !insertCfe) {
+  if (results["remove-all"] as bool) {
+    removeSources.addAll(ErrorSource.all);
+  }
+
+  if (results["insert-all"] as bool) {
+    insertSources.addAll(ErrorSource.all);
+  }
+
+  if (results["update-all"] as bool) {
+    removeSources.addAll(ErrorSource.all);
+    insertSources.addAll(ErrorSource.all);
+  }
+
+  if (removeSources.isEmpty && insertSources.isEmpty) {
     _usageError(
         parser, "Must provide at least one flag for an operation to perform.");
   }
@@ -109,11 +111,13 @@
   }
 
   var result = results.rest.single;
+
   // Allow tests to be specified without the extension for compatibility with
   // the regular test runner syntax.
   if (!result.endsWith(".dart")) {
     result += ".dart";
   }
+
   // Allow tests to be specified either relative to the "tests" directory
   // or relative to the current directory.
   var root = result.startsWith("tests") ? "." : "tests";
@@ -124,17 +128,15 @@
     if (entry is File) {
       await _processFile(entry,
           dryRun: dryRun,
-          removeAnalyzer: removeAnalyzer,
-          removeCfe: removeCfe,
-          insertAnalyzer: insertAnalyzer,
-          insertCfe: insertCfe,
-          nnbd: nnbd);
+          remove: removeSources,
+          insert: insertSources,
+          nullSafety: nullSafety);
     }
   }
 }
 
 void _usageError(ArgParser parser, String message) {
-  stderr.writeln("Usage error: $message");
+  stderr.writeln(message);
   stderr.writeln();
   stderr.writeln(_usage);
   stderr.writeln(parser.usage);
@@ -143,17 +145,15 @@
 
 Future<void> _processFile(File file,
     {bool dryRun,
-    bool removeAnalyzer,
-    bool removeCfe,
-    bool insertAnalyzer,
-    bool insertCfe,
-    bool nnbd}) async {
+    Set<ErrorSource> remove,
+    Set<ErrorSource> insert,
+    bool nullSafety}) async {
   stdout.write("${file.path}...");
   var source = file.readAsStringSync();
   var testFile = TestFile.parse(Path("."), file.absolute.path, source);
 
   var experiments = [
-    if (nnbd) "non-nullable",
+    if (nullSafety) "non-nullable",
     if (testFile.experiments.isNotEmpty) ...testFile.experiments
   ];
 
@@ -163,7 +163,7 @@
   ];
 
   var errors = <StaticError>[];
-  if (insertAnalyzer) {
+  if (insert.contains(ErrorSource.analyzer)) {
     stdout.write("\r${file.path} (Running analyzer...)");
     var fileErrors = await runAnalyzer(file.absolute.path, options);
     if (fileErrors == null) {
@@ -173,7 +173,7 @@
     }
   }
 
-  if (insertCfe) {
+  if (insert.contains(ErrorSource.cfe)) {
     // Clear the previous line.
     stdout.write("\r${file.path}                      ");
     stdout.write("\r${file.path} (Running CFE...)");
@@ -185,10 +185,13 @@
     }
   }
 
+  if (insert.contains(ErrorSource.web)) {
+    // TODO(rnystrom): Run DDC and collect web errors.
+  }
+
   errors = StaticError.simplify(errors);
 
-  var result = updateErrorExpectations(source, errors,
-      removeAnalyzer: removeAnalyzer, removeCfe: removeCfe);
+  var result = updateErrorExpectations(source, errors, remove: remove);
 
   stdout.writeln("\r${file.path} (Updated with ${errors.length} errors)");
 
diff --git a/pkg/vm/lib/bytecode/gen_bytecode.dart b/pkg/vm/lib/bytecode/gen_bytecode.dart
index 6a2d435..ae66a6a6 100644
--- a/pkg/vm/lib/bytecode/gen_bytecode.dart
+++ b/pkg/vm/lib/bytecode/gen_bytecode.dart
@@ -1488,7 +1488,9 @@
     for (int i = 0; i < typeArgs.length; ++i) {
       final typeArg = typeArgs[i];
       if (!(typeArg is TypeParameterType &&
-          typeArg.parameter == functionTypeParameters[i])) {
+          typeArg.parameter == functionTypeParameters[i] &&
+          (typeArg.nullability == Nullability.nonNullable ||
+              typeArg.nullability == Nullability.undetermined))) {
         return false;
       }
     }
diff --git a/pkg/vm/lib/bytecode/object_table.dart b/pkg/vm/lib/bytecode/object_table.dart
index 338bb5f..734c26e 100644
--- a/pkg/vm/lib/bytecode/object_table.dart
+++ b/pkg/vm/lib/bytecode/object_table.dart
@@ -335,6 +335,20 @@
 String objectKindToString(ObjectKind kind) =>
     kind.toString().substring('ObjectKind.k'.length);
 
+String nullabilityToString(Nullability nullability) {
+  switch (nullability) {
+    case Nullability.legacy:
+      return '*';
+    case Nullability.nullable:
+      return '?';
+    case Nullability.undetermined:
+      return '%';
+    case Nullability.nonNullable:
+      return '';
+  }
+  throw "Unknown Nullability: $nullability";
+}
+
 /// Represents object (library, class, member, closure, type or name) in the
 /// object table.
 abstract class ObjectHandle extends BytecodeObject {
@@ -763,8 +777,7 @@
       other is _NeverTypeHandle && this.nullability == other.nullability;
 
   @override
-  // TODO(regis): Print nullability.
-  String toString() => 'Never';
+  String toString() => 'Never${nullabilityToString(nullability)}';
 }
 
 class _SimpleTypeHandle extends _TypeHandle {
@@ -803,8 +816,7 @@
       this.nullability == other.nullability;
 
   @override
-  // TODO(regis): Print nullability.
-  String toString() => '$class_';
+  String toString() => '$class_${nullabilityToString(nullability)}';
 }
 
 class _TypeParameterHandle extends _TypeHandle {
@@ -857,8 +869,8 @@
       this.nullability == other.nullability;
 
   @override
-  // TODO(regis): Print nullability.
-  String toString() => '$parent::TypeParam/$indexInParent';
+  String toString() =>
+      '$parent::TypeParam/$indexInParent${nullabilityToString(nullability)}';
 }
 
 class _GenericTypeHandle extends _TypeHandle {
@@ -903,8 +915,7 @@
       this.nullability == other.nullability;
 
   @override
-  // TODO(regis): Print nullability.
-  String toString() => '$class_ $typeArgs';
+  String toString() => '$class_ $typeArgs${nullabilityToString(nullability)}';
 }
 
 class _RecursiveGenericTypeHandle extends _TypeHandle {
@@ -956,8 +967,8 @@
       this.nullability == other.nullability;
 
   @override
-  // TODO(regis): Print nullability.
-  String toString() => '(recursive #$id) $class_ $typeArgs';
+  String toString() =>
+      '(recursive #$id) $class_ $typeArgs${nullabilityToString(nullability)}';
 }
 
 class _RecursiveTypeRefHandle extends _TypeHandle {
@@ -1009,7 +1020,6 @@
       this.type == other.type;
 
   @override
-  // TODO(regis): Print nullability.
   String toString() => '$type ${name.name}';
 }
 
@@ -1139,6 +1149,7 @@
     hash = _combineHashes(hash, listHashCode(positionalParams));
     hash = _combineHashes(hash, listHashCode(namedParams));
     hash = _combineHashes(hash, returnType.hashCode);
+    hash = _combineHashes(hash, nullability.index);
     return hash;
   }
 
@@ -1149,10 +1160,10 @@
       this.numRequiredParams == other.numRequiredParams &&
       listEquals(this.positionalParams, other.positionalParams) &&
       listEquals(this.namedParams, other.namedParams) &&
-      this.returnType == other.returnType;
+      this.returnType == other.returnType &&
+      this.nullability == other.nullability;
 
   @override
-  // TODO(regis): Print nullability.
   String toString() {
     StringBuffer sb = new StringBuffer();
     sb.write('FunctionType');
@@ -1173,7 +1184,7 @@
       }
       sb.write('{ ${namedParams.join(', ')} }');
     }
-    sb.write(') -> ');
+    sb.write(')${nullabilityToString(nullability)} -> ');
     sb.write(returnType);
     return sb.toString();
   }
diff --git a/pkg/vm/testcases/bytecode/asserts.dart.expect b/pkg/vm/testcases/bytecode/asserts.dart.expect
index 5da6d08..39a0d1e 100644
--- a/pkg/vm/testcases/bytecode/asserts.dart.expect
+++ b/pkg/vm/testcases/bytecode/asserts.dart.expect
@@ -11,7 +11,7 @@
 
 
 Function 'test1', static, reflectable, debuggable
-    parameters [dart:core::bool 'condition'] (required: 1)
+    parameters [dart:core::bool* 'condition'] (required: 1)
     return-type void
 
 Bytecode {
@@ -37,7 +37,7 @@
 
 
 Function 'test2', static, reflectable, debuggable
-    parameters [FunctionType () -> dart:core::bool 'condition', FunctionType () -> dart:core::String 'message'] (required: 2)
+    parameters [FunctionType ()* -> dart:core::bool* 'condition', FunctionType ()* -> dart:core::String* 'message'] (required: 2)
     return-type void
 
 Bytecode {
diff --git a/pkg/vm/testcases/bytecode/async.dart.expect b/pkg/vm/testcases/bytecode/async.dart.expect
index b758e31..7c448ee 100644
--- a/pkg/vm/testcases/bytecode/async.dart.expect
+++ b/pkg/vm/testcases/bytecode/async.dart.expect
@@ -9,7 +9,7 @@
 
 Class '', script = '#lib'
 
-Field 'asyncInFieldInitializer', type = FunctionType (dart:async::Future < dart:core::int >) -> dart:async::Future < dart:core::Null >, getter = 'get:asyncInFieldInitializer', reflectable, static, has-initializer
+Field 'asyncInFieldInitializer', type = FunctionType (dart:async::Future < dart:core::int* >*)* -> dart:async::Future < dart:core::Null? >*, getter = 'get:asyncInFieldInitializer', reflectable, static, has-initializer
     initializer
 Bytecode {
   Entry                3
@@ -34,11 +34,11 @@
   [0] = ClosureFunction 0
   [1] = InstanceField dart:core::_Closure::_context (field)
   [2] = Reserved
-  [3] = Type dart:async::Future < dart:core::int >
+  [3] = Type dart:async::Future < dart:core::int* >*
   [4] = ObjectRef 'x'
   [5] = SubtypeTestCache
   [6] = Class dart:async::_AsyncAwaitCompleter
-  [7] = ObjectRef < dart:core::Null >
+  [7] = ObjectRef < dart:core::Null? >
   [8] = DirectCall 'dart:async::_AsyncAwaitCompleter:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
   [9] = Reserved
   [10] = ClosureFunction 1
@@ -67,7 +67,7 @@
   [33] = Reserved
   [34] = EndClosureFunctionScope
 }
-Closure #lib::asyncInFieldInitializer (field)::'<anonymous closure>' async (dart:async::Future < dart:core::int > x) -> dart:async::Future < dart:core::Null >
+Closure #lib::asyncInFieldInitializer (field)::'<anonymous closure>' async (dart:async::Future < dart:core::int* >* x) -> dart:async::Future < dart:core::Null? >*
 ClosureCode {
   EntryFixed           2, 4
   Push                 FP[-6]
@@ -233,7 +233,7 @@
 
 Function 'foo', static, reflectable, async
     parameters [] (required: 0)
-    return-type dart:async::Future < dart:core::int >
+    return-type dart:async::Future < dart:core::int* >*
 
 Bytecode {
   Entry                7
@@ -293,7 +293,7 @@
 }
 ConstantPool {
   [0] = Class dart:async::_AsyncAwaitCompleter
-  [1] = ObjectRef < dart:core::int >
+  [1] = ObjectRef < dart:core::int* >
   [2] = DirectCall 'dart:async::_AsyncAwaitCompleter:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
   [3] = Reserved
   [4] = ClosureFunction 0
@@ -380,8 +380,8 @@
 
 
 Function 'simpleAsyncAwait', static, reflectable, async
-    parameters [dart:async::Future < dart:core::int > 'a', dart:async::Future < dart:core::int > 'b'] (required: 2)
-    return-type dart:async::Future < dart:core::int >
+    parameters [dart:async::Future < dart:core::int* >* 'a', dart:async::Future < dart:core::int* >* 'b'] (required: 2)
+    return-type dart:async::Future < dart:core::int* >*
 
 Bytecode {
   Entry                4
@@ -449,7 +449,7 @@
 }
 ConstantPool {
   [0] = Class dart:async::_AsyncAwaitCompleter
-  [1] = ObjectRef < dart:core::int >
+  [1] = ObjectRef < dart:core::int* >
   [2] = DirectCall 'dart:async::_AsyncAwaitCompleter:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
   [3] = Reserved
   [4] = ClosureFunction 0
@@ -605,8 +605,8 @@
 
 
 Function 'loops', static, reflectable, async
-    parameters [dart:core::List < dart:core::int > 'list'] (required: 1)
-    return-type dart:async::Future < dart:core::int >
+    parameters [dart:core::List < dart:core::int* >* 'list'] (required: 1)
+    return-type dart:async::Future < dart:core::int* >*
 
 Bytecode {
   Entry                4
@@ -671,7 +671,7 @@
 }
 ConstantPool {
   [0] = Class dart:async::_AsyncAwaitCompleter
-  [1] = ObjectRef < dart:core::int >
+  [1] = ObjectRef < dart:core::int* >
   [2] = DirectCall 'dart:async::_AsyncAwaitCompleter:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
   [3] = Reserved
   [4] = ClosureFunction 0
@@ -951,8 +951,8 @@
 
 
 Function 'tryCatchRethrow', static, reflectable, async
-    parameters [dart:async::Future < dart:core::int > 'a', dart:async::Future < dart:core::int > 'b', dart:async::Future < dart:core::int > 'c'] (required: 3)
-    return-type dart:async::Future < dart:core::int >
+    parameters [dart:async::Future < dart:core::int* >* 'a', dart:async::Future < dart:core::int* >* 'b', dart:async::Future < dart:core::int* >* 'c'] (required: 3)
+    return-type dart:async::Future < dart:core::int* >*
 
 Bytecode {
   Entry                4
@@ -1023,7 +1023,7 @@
 }
 ConstantPool {
   [0] = Class dart:async::_AsyncAwaitCompleter
-  [1] = ObjectRef < dart:core::int >
+  [1] = ObjectRef < dart:core::int* >
   [2] = DirectCall 'dart:async::_AsyncAwaitCompleter:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
   [3] = Reserved
   [4] = ClosureFunction 0
@@ -1033,7 +1033,7 @@
   [8] = DirectCall 'dart:async::_awaitHelper', ArgDesc num-args 4, num-type-args 0, names []
   [9] = Reserved
   [10] = Type dynamic
-  [11] = Type dart:core::Error
+  [11] = Type dart:core::Error*
   [12] = InterfaceCall 'dart:core::Object::_simpleInstanceOf', ArgDesc num-args 2, num-type-args 0, names []
   [13] = Reserved
   [14] = ObjectRef 'fin'
@@ -1480,7 +1480,7 @@
 
 
 Function 'closure', static, reflectable, debuggable
-    parameters [dart:async::Future < dart:core::int > 'a'] (required: 1)
+    parameters [dart:async::Future < dart:core::int* >* 'a'] (required: 1)
     return-type dynamic
 
 Bytecode {
@@ -1517,7 +1517,7 @@
   [1] = InstanceField dart:core::_Closure::_context (field)
   [2] = Reserved
   [3] = Class dart:async::_AsyncAwaitCompleter
-  [4] = ObjectRef < dart:core::int >
+  [4] = ObjectRef < dart:core::int* >
   [5] = DirectCall 'dart:async::_AsyncAwaitCompleter:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
   [6] = Reserved
   [7] = ClosureFunction 1
@@ -1549,7 +1549,7 @@
   [33] = Reserved
   [34] = EndClosureFunctionScope
 }
-Closure #lib::closure::'nested' async () -> dart:async::Future < dart:core::int >
+Closure #lib::closure::'nested' async () -> dart:async::Future < dart:core::int* >*
 ClosureCode {
   EntryFixed           1, 4
   Push                 FP[-5]
@@ -1776,8 +1776,8 @@
 
 
 Function 'testAssert', static, reflectable, async
-    parameters [dart:async::Future < dart:core::int > 'a'] (required: 1)
-    return-type dart:async::Future < dart:core::int >
+    parameters [dart:async::Future < dart:core::int* >* 'a'] (required: 1)
+    return-type dart:async::Future < dart:core::int* >*
 
 Bytecode {
   Entry                4
@@ -1842,7 +1842,7 @@
 }
 ConstantPool {
   [0] = Class dart:async::_AsyncAwaitCompleter
-  [1] = ObjectRef < dart:core::int >
+  [1] = ObjectRef < dart:core::int* >
   [2] = DirectCall 'dart:async::_AsyncAwaitCompleter:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
   [3] = Reserved
   [4] = ClosureFunction 0
diff --git a/pkg/vm/testcases/bytecode/bootstrapping.dart.expect b/pkg/vm/testcases/bytecode/bootstrapping.dart.expect
index 6551407..ba143ef 100644
--- a/pkg/vm/testcases/bytecode/bootstrapping.dart.expect
+++ b/pkg/vm/testcases/bytecode/bootstrapping.dart.expect
@@ -9,23 +9,23 @@
 
 Class '', script = '#lib'
 
-Field '_stdinFD', type = dart:core::int, reflectable, static, has-initializer
+Field '_stdinFD', type = dart:core::int*, reflectable, static, has-initializer
     value = const 0
 
-Field '_stdoutFD', type = dart:core::int, reflectable, static, has-initializer
+Field '_stdoutFD', type = dart:core::int*, reflectable, static, has-initializer
     value = const 1
 
-Field '_stderrFD', type = dart:core::int, reflectable, static, has-initializer
+Field '_stderrFD', type = dart:core::int*, reflectable, static, has-initializer
     value = const 2
 
-Field '_rawScript', type = dart:core::String, reflectable, static
+Field '_rawScript', type = dart:core::String*, reflectable, static
     value = null
 
-Field '_stdin', type = #lib::Stdin, reflectable, static
+Field '_stdin', type = #lib::Stdin*, reflectable, static
     value = null
 
 Function '_printString', static, reflectable, debuggable, native 'Builtin_PrintString'
-    parameters [dart:core::String 's'] (required: 1)
+    parameters [dart:core::String* 's'] (required: 1)
     return-type void
 
 Bytecode {
@@ -78,7 +78,7 @@
 
 
 Function '_setScheduleImmediateClosure', static, reflectable, debuggable
-    parameters [FunctionType (FunctionType () -> void) -> void 'closure'] (required: 1)
+    parameters [FunctionType (FunctionType ()* -> void)* -> void 'closure'] (required: 1)
     return-type void
 
 Bytecode {
@@ -95,7 +95,7 @@
 
 
 Function '_setStdioFDs', static, reflectable, debuggable
-    parameters [dart:core::int 'stdin', dart:core::int 'stdout', dart:core::int 'stderr'] (required: 3)
+    parameters [dart:core::int* 'stdin', dart:core::int* 'stdout', dart:core::int* 'stderr'] (required: 3)
     return-type void
 
 Bytecode {
@@ -119,7 +119,7 @@
 
 Function '_scriptUri', static, reflectable, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Uri
+    return-type dart:core::Uri*
 
 Bytecode {
   Entry                2
@@ -191,7 +191,7 @@
 
 Function 'get:stdin', getter, static, reflectable, debuggable
     parameters [] (required: 0)
-    return-type #lib::Stdin
+    return-type #lib::Stdin*
 
 Bytecode {
   Entry                2
@@ -236,14 +236,14 @@
 }
 
 Class '_ScheduleImmediate', script = '#lib'
-    extends dart:core::Object
+    extends dart:core::Object*
 
-Field '_closure', type = FunctionType (FunctionType () -> void) -> void, reflectable, static, has-initializer
+Field '_closure', type = FunctionType (FunctionType ()* -> void)* -> void, reflectable, static, has-initializer
     value = null
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::_ScheduleImmediate
+    return-type #lib::_ScheduleImmediate*
 
 Bytecode {
   Entry                0
@@ -262,53 +262,53 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class '_NamespaceImpl', script = '#lib'
-    extends dart:core::Object
-    implements [#lib::_Namespace]
+    extends dart:core::Object*
+    implements [#lib::_Namespace*]
 
-Field '_cachedNamespace', type = #lib::_NamespaceImpl, reflectable, static, has-initializer
+Field '_cachedNamespace', type = #lib::_NamespaceImpl*, reflectable, static, has-initializer
     value = null
 
 Function '_', constructor, reflectable, debuggable
     parameters [] (required: 0)
-    return-type #lib::_NamespaceImpl
+    return-type #lib::_NamespaceImpl*
 
 Bytecode {
   Entry                0
@@ -326,8 +326,8 @@
 
 
 Function '_create', static, reflectable, debuggable, native 'Namespace_Create'
-    parameters [#lib::_NamespaceImpl 'namespace', dynamic 'n'] (required: 2)
-    return-type #lib::_NamespaceImpl
+    parameters [#lib::_NamespaceImpl* 'namespace', dynamic 'n'] (required: 2)
+    return-type #lib::_NamespaceImpl*
 
 Bytecode {
   Entry                0
@@ -343,8 +343,8 @@
 
 
 Function '_getPointer', static, reflectable, debuggable, native 'Namespace_GetPointer'
-    parameters [#lib::_NamespaceImpl 'namespace'] (required: 1)
-    return-type dart:core::int
+    parameters [#lib::_NamespaceImpl* 'namespace'] (required: 1)
+    return-type dart:core::int*
 
 Bytecode {
   Entry                0
@@ -360,7 +360,7 @@
 
 Function '_getDefault', static, reflectable, debuggable, native 'Namespace_GetDefault'
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Bytecode {
   Entry                0
@@ -403,7 +403,7 @@
 
 Function 'get:_namespace', getter, static, reflectable, debuggable
     parameters [] (required: 0)
-    return-type #lib::_NamespaceImpl
+    return-type #lib::_NamespaceImpl*
 
 Bytecode {
   Entry                2
@@ -436,7 +436,7 @@
 
 Function 'get:_namespacePointer', getter, static, reflectable, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Bytecode {
   Entry                0
@@ -455,50 +455,50 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class '_Namespace', script = '#lib'
-    extends dart:core::Object
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::_Namespace
+    return-type #lib::_Namespace*
 
 Bytecode {
   Entry                0
@@ -536,7 +536,7 @@
 
 Function 'get:_namespace', getter, static, reflectable, debuggable
     parameters [] (required: 0)
-    return-type #lib::_Namespace
+    return-type #lib::_Namespace*
 
 Bytecode {
   Entry                0
@@ -552,7 +552,7 @@
 
 Function 'get:_namespacePointer', getter, static, reflectable, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Bytecode {
   Entry                0
@@ -568,45 +568,45 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'VMLibraryHooks', script = '#lib'
-    extends dart:core::Object
+    extends dart:core::Object*
 
 Field 'timerFactory', type = dynamic, reflectable, static, has-initializer
     value = null
@@ -643,7 +643,7 @@
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::VMLibraryHooks
+    return-type #lib::VMLibraryHooks*
 
 Bytecode {
   Entry                0
@@ -708,50 +708,50 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'Stdin', script = '#lib'
-    extends dart:core::Object
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::Stdin
+    return-type #lib::Stdin*
 
 Bytecode {
   Entry                0
@@ -770,50 +770,50 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class '_StdIOUtils', script = '#lib'
-    extends dart:core::Object
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::_StdIOUtils
+    return-type #lib::_StdIOUtils*
 
 Bytecode {
   Entry                0
@@ -831,8 +831,8 @@
 
 
 Function '_getStdioInputStream', static, reflectable, debuggable
-    parameters [dart:core::int 'fd'] (required: 1)
-    return-type #lib::Stdin
+    parameters [dart:core::int* 'fd'] (required: 1)
+    return-type #lib::Stdin*
 
 Bytecode {
   Entry                0
@@ -846,43 +846,43 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 
 }
 ]library #lib from "#lib" as #lib {
diff --git a/pkg/vm/testcases/bytecode/closures.dart.expect b/pkg/vm/testcases/bytecode/closures.dart.expect
index 97d6e4e..711bace 100644
--- a/pkg/vm/testcases/bytecode/closures.dart.expect
+++ b/pkg/vm/testcases/bytecode/closures.dart.expect
@@ -12,7 +12,7 @@
 
 Function 'simpleClosure', static, reflectable, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Bytecode {
   Entry                4
@@ -51,7 +51,7 @@
   [0] = ClosureFunction 0
   [1] = InstanceField dart:core::_Closure::_context (field)
   [2] = Reserved
-  [3] = Type dart:core::int
+  [3] = Type dart:core::int*
   [4] = ObjectRef 'y'
   [5] = SubtypeTestCache
   [6] = EndClosureFunctionScope
@@ -63,7 +63,7 @@
   [12] = Reserved
   [13] = ObjectRef ArgDesc num-args 2, num-type-args 0, names []
 }
-Closure #lib::simpleClosure::'<anonymous closure>' (dart:core::int y) -> dart:core::Null
+Closure #lib::simpleClosure::'<anonymous closure>' (dart:core::int* y) -> dart:core::Null?
 ClosureCode {
   EntryFixed           2, 3
   Push                 FP[-6]
@@ -92,7 +92,7 @@
 
 
 Function 'callWithArgs', static, reflectable, debuggable
-    type-params <dart:core::Object T1, dart:core::Object T2, dart:core::Object T3, dart:core::Object T4, dart:core::Object T5, dart:core::Object T6, dart:core::Object T7, dart:core::Object T8>
+    type-params <dart:core::Object* T1, dart:core::Object* T2, dart:core::Object* T3, dart:core::Object* T4, dart:core::Object* T5, dart:core::Object* T6, dart:core::Object* T7, dart:core::Object* T8>
     parameters [] (required: 0)
     return-type void
 
@@ -161,15 +161,15 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = ObjectRef < dart:core::Type >
-  [1] = Type #lib::callWithArgs::TypeParam/0
-  [2] = Type #lib::callWithArgs::TypeParam/1
-  [3] = Type #lib::callWithArgs::TypeParam/2
-  [4] = Type #lib::callWithArgs::TypeParam/3
-  [5] = Type #lib::callWithArgs::TypeParam/4
-  [6] = Type #lib::callWithArgs::TypeParam/5
-  [7] = Type #lib::callWithArgs::TypeParam/6
-  [8] = Type #lib::callWithArgs::TypeParam/7
+  [0] = ObjectRef < dart:core::Type* >
+  [1] = Type #lib::callWithArgs::TypeParam/0*
+  [2] = Type #lib::callWithArgs::TypeParam/1*
+  [3] = Type #lib::callWithArgs::TypeParam/2*
+  [4] = Type #lib::callWithArgs::TypeParam/3*
+  [5] = Type #lib::callWithArgs::TypeParam/4*
+  [6] = Type #lib::callWithArgs::TypeParam/5*
+  [7] = Type #lib::callWithArgs::TypeParam/6*
+  [8] = Type #lib::callWithArgs::TypeParam/7*
   [9] = DirectCall 'dart:core::List::_fromLiteral (constructor)', ArgDesc num-args 2, num-type-args 0, names []
   [10] = Reserved
   [11] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
@@ -218,21 +218,21 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = ObjectRef < #lib::C3, #lib::C4 >
+  [0] = ObjectRef < #lib::C3*, #lib::C4* >
   [1] = Class #lib::A
-  [2] = ObjectRef < #lib::C1, #lib::C2 >
+  [2] = ObjectRef < #lib::C1*, #lib::C2* >
   [3] = DirectCall '#lib::A:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
   [4] = Reserved
   [5] = InterfaceCall '#lib::A::foo', ArgDesc num-args 1, num-type-args 2, names []
   [6] = Reserved
-  [7] = ObjectRef < dart:core::List < #lib::C3 >, dart:core::List < #lib::C4 > >
-  [8] = ObjectRef < dart:core::List < #lib::C1 >, dart:core::List < #lib::C2 > >
+  [7] = ObjectRef < dart:core::List < #lib::C3* >*, dart:core::List < #lib::C4* >* >
+  [8] = ObjectRef < dart:core::List < #lib::C1* >*, dart:core::List < #lib::C2* >* >
 }
 
 
 Function 'testPartialInstantiation', static, reflectable, debuggable
     parameters [] (required: 0)
-    return-type FunctionType (dart:core::int) -> dynamic
+    return-type FunctionType (dart:core::int*)* -> dynamic
 
 Bytecode {
   Entry                7
@@ -297,7 +297,7 @@
   [7] = Reserved
   [8] = DirectCall 'dart:_internal::_prependTypeArguments', ArgDesc num-args 4, num-type-args 0, names []
   [9] = Reserved
-  [10] = Type #lib::testPartialInstantiation::Closure/0::TypeParam/0
+  [10] = Type #lib::testPartialInstantiation::Closure/0::TypeParam/0*
   [11] = ObjectRef 't'
   [12] = SubtypeTestCache
   [13] = EndClosureFunctionScope
@@ -305,12 +305,12 @@
   [15] = Reserved
   [16] = InstanceField dart:core::_Closure::_function (field)
   [17] = Reserved
-  [18] = ObjectRef < dart:core::int >
+  [18] = ObjectRef < dart:core::int* >
   [19] = DirectCall 'dart:_internal::_boundsCheckForPartialInstantiation', ArgDesc num-args 2, num-type-args 0, names []
   [20] = Reserved
   [21] = Class dart:core::_Closure
 }
-Closure #lib::testPartialInstantiation::'foo' <dart:core::Object T> (#lib::testPartialInstantiation::Closure/0::TypeParam/0 t) -> void
+Closure #lib::testPartialInstantiation::'foo' <dart:core::Object* T> (#lib::testPartialInstantiation::Closure/0::TypeParam/0* t) -> void
 ClosureCode {
   EntryFixed           2, 3
   Push                 FP[-6]
@@ -362,12 +362,12 @@
 }
 
 Class 'C1', script = '#lib'
-    extends dart:core::Object
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::C1
+    return-type #lib::C1*
 
 Bytecode {
   Entry                0
@@ -386,50 +386,50 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'C2', script = '#lib'
-    extends dart:core::Object
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::C2
+    return-type #lib::C2*
 
 Bytecode {
   Entry                0
@@ -448,50 +448,50 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'C3', script = '#lib'
-    extends dart:core::Object
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::C3
+    return-type #lib::C3*
 
 Bytecode {
   Entry                0
@@ -510,50 +510,50 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'C4', script = '#lib'
-    extends dart:core::Object
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::C4
+    return-type #lib::C4*
 
 Bytecode {
   Entry                0
@@ -572,50 +572,50 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'C5', script = '#lib'
-    extends dart:core::Object
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::C5
+    return-type #lib::C5*
 
 Bytecode {
   Entry                0
@@ -634,50 +634,50 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'C6', script = '#lib'
-    extends dart:core::Object
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::C6
+    return-type #lib::C6*
 
 Bytecode {
   Entry                0
@@ -696,50 +696,50 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'C7', script = '#lib'
-    extends dart:core::Object
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::C7
+    return-type #lib::C7*
 
 Bytecode {
   Entry                0
@@ -758,50 +758,50 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'C8', script = '#lib'
-    extends dart:core::Object
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::C8
+    return-type #lib::C8*
 
 Bytecode {
   Entry                0
@@ -820,51 +820,51 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'A', script = '#lib'
-    type-params <dart:core::Object T1, dart:core::Object T2> (args: 2)
-    extends dart:core::Object
+    type-params <dart:core::Object* T1, dart:core::Object* T2> (args: 2)
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::A < #lib::A::TypeParam/0, #lib::A::TypeParam/1 >
+    return-type #lib::A < #lib::A::TypeParam/0*, #lib::A::TypeParam/1* >*
 
 Bytecode {
   Entry                0
@@ -882,7 +882,7 @@
 
 
 Function 'foo', reflectable, debuggable
-    type-params <dart:core::Object T3, dart:core::Object T4>
+    type-params <dart:core::Object* T3, dart:core::Object* T4>
     parameters [] (required: 0)
     return-type void
 
@@ -942,21 +942,21 @@
   [9] = Reserved
   [10] = ClosureFunction 1
   [11] = ClosureFunction 2
-  [12] = ObjectRef < dart:core::Type >
-  [13] = Type #lib::A::TypeParam/0
+  [12] = ObjectRef < dart:core::Type* >
+  [13] = Type #lib::A::TypeParam/0*
   [14] = TypeArgumentsField #lib::A
-  [15] = Type #lib::A::TypeParam/1
-  [16] = Type #lib::A::foo::TypeParam/0
-  [17] = Type #lib::A::foo::TypeParam/1
-  [18] = Type #lib::A::foo::Closure/0::TypeParam/0
-  [19] = Type #lib::A::foo::Closure/0::TypeParam/1
-  [20] = Type #lib::A::foo::Closure/1::TypeParam/0
-  [21] = Type #lib::A::foo::Closure/1::TypeParam/1
+  [15] = Type #lib::A::TypeParam/1*
+  [16] = Type #lib::A::foo::TypeParam/0*
+  [17] = Type #lib::A::foo::TypeParam/1*
+  [18] = Type #lib::A::foo::Closure/0::TypeParam/0*
+  [19] = Type #lib::A::foo::Closure/0::TypeParam/1*
+  [20] = Type #lib::A::foo::Closure/1::TypeParam/0*
+  [21] = Type #lib::A::foo::Closure/1::TypeParam/1*
   [22] = DirectCall 'dart:core::List::_fromLiteral (constructor)', ArgDesc num-args 2, num-type-args 0, names []
   [23] = Reserved
   [24] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
   [25] = Reserved
-  [26] = ObjectRef < #lib::A::TypeParam/0, #lib::A::TypeParam/1, #lib::A::foo::TypeParam/0, #lib::A::foo::TypeParam/1, #lib::A::foo::Closure/0::TypeParam/0, #lib::A::foo::Closure/0::TypeParam/1, #lib::A::foo::Closure/1::TypeParam/0, #lib::A::foo::Closure/1::TypeParam/1 >
+  [26] = ObjectRef < #lib::A::TypeParam/0*, #lib::A::TypeParam/1*, #lib::A::foo::TypeParam/0*, #lib::A::foo::TypeParam/1*, #lib::A::foo::Closure/0::TypeParam/0*, #lib::A::foo::Closure/0::TypeParam/1*, #lib::A::foo::Closure/1::TypeParam/0*, #lib::A::foo::Closure/1::TypeParam/1* >
   [27] = DirectCall '#lib::callWithArgs', ArgDesc num-args 0, num-type-args 8, names []
   [28] = Reserved
   [29] = EndClosureFunctionScope
@@ -966,14 +966,14 @@
   [33] = Reserved
   [34] = ObjectRef ArgDesc num-args 1, num-type-args 0, names []
   [35] = EndClosureFunctionScope
-  [36] = ObjectRef < #lib::C7, #lib::C8 >
+  [36] = ObjectRef < #lib::C7*, #lib::C8* >
   [37] = ObjectRef ArgDesc num-args 1, num-type-args 2, names []
-  [38] = ObjectRef < dart:core::List < #lib::C7 >, dart:core::List < #lib::C8 > >
+  [38] = ObjectRef < dart:core::List < #lib::C7* >*, dart:core::List < #lib::C8* >* >
   [39] = EndClosureFunctionScope
-  [40] = ObjectRef < #lib::C5, #lib::C6 >
-  [41] = ObjectRef < dart:core::List < #lib::C5 >, dart:core::List < #lib::C6 > >
+  [40] = ObjectRef < #lib::C5*, #lib::C6* >
+  [41] = ObjectRef < dart:core::List < #lib::C5* >*, dart:core::List < #lib::C6* >* >
 }
-Closure #lib::A::foo::'nested1' <dart:core::Object T5, dart:core::Object T6> () -> void
+Closure #lib::A::foo::'nested1' <dart:core::Object* T5, dart:core::Object* T6> () -> void
 ClosureCode {
   EntryFixed           1, 5
   Push                 FP[-5]
@@ -1033,7 +1033,7 @@
   ReturnTOS
 }
 
-Closure #lib::A::foo::Closure/0::'nested2' <dart:core::Object T7, dart:core::Object T8> () -> void
+Closure #lib::A::foo::Closure/0::'nested2' <dart:core::Object* T7, dart:core::Object* T8> () -> void
 ClosureCode {
   EntryFixed           1, 5
   Push                 FP[-5]
@@ -1083,7 +1083,7 @@
   ReturnTOS
 }
 
-Closure #lib::A::foo::Closure/1::'<anonymous closure>' () -> dart:core::Null
+Closure #lib::A::foo::Closure/1::'<anonymous closure>' () -> dart:core::Null?
 ClosureCode {
   EntryFixed           1, 4
   Push                 FP[-5]
@@ -1169,52 +1169,52 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'B', script = '#lib'
-    extends dart:core::Object
+    extends dart:core::Object*
 
-Field 'foo', type = dart:core::int, getter = 'get:foo', setter = 'set:foo', reflectable, has-initializer
+Field 'foo', type = dart:core::int*, getter = 'get:foo', setter = 'set:foo', reflectable, has-initializer
     value = null
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::B
+    return-type #lib::B*
 
 Bytecode {
   Entry                0
@@ -1320,7 +1320,7 @@
   [0] = ClosureFunction 0
   [1] = InstanceField dart:core::_Closure::_context (field)
   [2] = Reserved
-  [3] = Type dart:core::int
+  [3] = Type dart:core::int*
   [4] = ObjectRef 'y'
   [5] = SubtypeTestCache
   [6] = ClosureFunction 1
@@ -1343,7 +1343,7 @@
   [23] = Reserved
   [24] = EndClosureFunctionScope
 }
-Closure #lib::B::topLevel::'<anonymous closure>' (dart:core::int y) -> dart:core::Null
+Closure #lib::B::topLevel::'<anonymous closure>' (dart:core::int* y) -> dart:core::Null?
 ClosureCode {
   EntryFixed           2, 4
   Push                 FP[-6]
@@ -1443,7 +1443,7 @@
   ReturnTOS
 }
 
-Closure #lib::B::topLevel::'<anonymous closure>' () -> dart:core::Null
+Closure #lib::B::topLevel::'<anonymous closure>' () -> dart:core::Null?
 ClosureCode {
   EntryFixed           1, 3
   Push                 FP[-5]
@@ -1464,50 +1464,50 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'C', script = '#lib'
-    extends dart:core::Object
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::C
+    return-type #lib::C*
 
 Bytecode {
   Entry                0
@@ -1618,7 +1618,7 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = ObjectRef < dart:core::Function >
+  [0] = ObjectRef < dart:core::Function* >
   [1] = ObjectRef const <dynamic> []
   [2] = DirectCall 'dart:core::List::_fromLiteral (constructor)', ArgDesc num-args 2, num-type-args 0, names []
   [3] = Reserved
@@ -1632,16 +1632,16 @@
   [11] = Reserved
   [12] = InstanceField dart:core::_Closure::_function (field)
   [13] = Reserved
-  [14] = InstantiatedInterfaceCall 'dart:core::List::add', ArgDesc num-args 2, num-type-args 0, names [], receiver dart:core::List < dart:core::Function >
+  [14] = InstantiatedInterfaceCall 'dart:core::List::add', ArgDesc num-args 2, num-type-args 0, names [], receiver dart:core::List < dart:core::Function* >*
   [15] = Reserved
   [16] = Reserved
   [17] = ClosureFunction 1
-  [18] = Type dart:core::int
+  [18] = Type dart:core::int*
   [19] = ObjectRef 'ii'
   [20] = SubtypeTestCache
   [21] = EndClosureFunctionScope
 }
-Closure #lib::C::testForLoop::'<anonymous closure>' () -> dart:core::int
+Closure #lib::C::testForLoop::'<anonymous closure>' () -> dart:core::int*
 ClosureCode {
   EntryFixed           1, 2
   Push                 FP[-5]
@@ -1658,7 +1658,7 @@
   ReturnTOS
 }
 
-Closure #lib::C::testForLoop::'<anonymous closure>' (dart:core::int ii) -> dart:core::Null
+Closure #lib::C::testForLoop::'<anonymous closure>' (dart:core::int* ii) -> dart:core::Null?
 ClosureCode {
   EntryFixed           2, 3
   Push                 FP[-6]
@@ -1688,7 +1688,7 @@
 
 
 Function 'testForInLoop', reflectable, debuggable
-    parameters [dart:core::List < dart:core::int > 'list'] (required: 1)
+    parameters [dart:core::List < dart:core::int* >* 'list'] (required: 1)
     return-type void
 
 Bytecode {
@@ -1762,7 +1762,7 @@
   [17] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
   [18] = Reserved
 }
-Closure #lib::C::testForInLoop::'<anonymous closure>' () -> dart:core::Null
+Closure #lib::C::testForInLoop::'<anonymous closure>' () -> dart:core::Null?
 ClosureCode {
   EntryFixed           1, 3
   Push                 FP[-5]
@@ -1783,51 +1783,51 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'D', script = '#lib'
-    type-params <dart:core::Object T> (args: 1)
-    extends dart:core::Object
+    type-params <dart:core::Object* T> (args: 1)
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::D < #lib::D::TypeParam/0 >
+    return-type #lib::D < #lib::D::TypeParam/0* >*
 
 Bytecode {
   Entry                0
@@ -1845,7 +1845,7 @@
 
 
 Function 'foo', reflectable, debuggable
-    parameters [#lib::D::TypeParam/0 't'] (required: 1)
+    parameters [#lib::D::TypeParam/0* 't'] (required: 1)
     return-type dynamic
 
 Bytecode {
@@ -1885,7 +1885,7 @@
 }
 Parameter flags: [2]
 ConstantPool {
-  [0] = Type #lib::D::TypeParam/0
+  [0] = Type #lib::D::TypeParam/0*
   [1] = TypeArgumentsField #lib::D
   [2] = ObjectRef 't'
   [3] = SubtypeTestCache
@@ -1900,7 +1900,7 @@
   [12] = InstanceField dart:core::_Closure::_function (field)
   [13] = Reserved
 }
-Closure #lib::D::foo::'<anonymous closure>' () -> #lib::D::TypeParam/0
+Closure #lib::D::foo::'<anonymous closure>' () -> #lib::D::TypeParam/0*
 ClosureCode {
   EntryFixed           1, 2
   Push                 FP[-5]
@@ -1959,7 +1959,7 @@
   [12] = ObjectRef ArgDesc num-args 1, num-type-args 0, names []
   [13] = EndClosureFunctionScope
 }
-Closure #lib::D::bar::'<anonymous closure>' () -> dart:core::Null
+Closure #lib::D::bar::'<anonymous closure>' () -> dart:core::Null?
 ClosureCode {
   EntryFixed           1, 4
   Push                 FP[-5]
@@ -1993,7 +1993,7 @@
   ReturnTOS
 }
 
-Closure #lib::D::bar::Closure/0::'inner' () -> dart:core::Null
+Closure #lib::D::bar::Closure/0::'inner' () -> dart:core::Null?
 ClosureCode {
   EntryFixed           1, 2
   Push                 FP[-5]
@@ -2008,52 +2008,52 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'E', script = '#lib', abstract
-    extends dart:core::Object
+    extends dart:core::Object*
 
-Field 'foo1', type = FunctionType (dart:core::int, dart:core::int) -> dart:core::int, getter = 'get:foo1', setter = 'set:foo1', reflectable, has-initializer
+Field 'foo1', type = FunctionType (dart:core::int*, dart:core::int*)* -> dart:core::int*, getter = 'get:foo1', setter = 'set:foo1', reflectable, has-initializer
     value = null
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::E
+    return-type #lib::E*
 
 Bytecode {
   Entry                0
@@ -2073,23 +2073,23 @@
 
 Function 'get:foo2', getter, abstract, reflectable, debuggable
     parameters [] (required: 0)
-    return-type FunctionType <dart:core::Object T> (null::TypeParam/0, null::TypeParam/0) -> dart:core::int
+    return-type FunctionType <dart:core::Object* T> (null::TypeParam/0*, null::TypeParam/0*)* -> dart:core::int*
 
 Function 'evalArg1', abstract, reflectable, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'evalArg2', abstract, reflectable, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'getE', abstract, reflectable, debuggable
     parameters [] (required: 0)
-    return-type #lib::E
+    return-type #lib::E*
 
 Function 'testCallThroughGetter1', reflectable, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Bytecode {
   Entry                3
@@ -2122,7 +2122,7 @@
 
 Function 'testCallThroughGetter2', reflectable, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Bytecode {
   Entry                3
@@ -2148,7 +2148,7 @@
   [1] = Reserved
   [2] = InterfaceCall '#lib::E::evalArg2', ArgDesc num-args 1, num-type-args 0, names []
   [3] = Reserved
-  [4] = ObjectRef < dart:core::int >
+  [4] = ObjectRef < dart:core::int* >
   [5] = InterfaceCall '#lib::E::get:foo2', ArgDesc num-args 1, num-type-args 0, names []
   [6] = Reserved
   [7] = ObjectRef ArgDesc num-args 3, num-type-args 1, names []
@@ -2157,7 +2157,7 @@
 
 Function 'testCallThroughGetter3', reflectable, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Bytecode {
   Entry                4
@@ -2188,7 +2188,7 @@
   [3] = Reserved
   [4] = InterfaceCall '#lib::E::evalArg2', ArgDesc num-args 1, num-type-args 0, names []
   [5] = Reserved
-  [6] = ObjectRef < dart:core::int >
+  [6] = ObjectRef < dart:core::int* >
   [7] = InterfaceCall '#lib::E::get:foo2', ArgDesc num-args 1, num-type-args 0, names []
   [8] = Reserved
   [9] = ObjectRef ArgDesc num-args 3, num-type-args 1, names []
@@ -2197,43 +2197,43 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 
 }
 ]library #lib from "#lib" as #lib {
diff --git a/pkg/vm/testcases/bytecode/field_initializers.dart.expect b/pkg/vm/testcases/bytecode/field_initializers.dart.expect
index 7e0795c..9ee6e00 100644
--- a/pkg/vm/testcases/bytecode/field_initializers.dart.expect
+++ b/pkg/vm/testcases/bytecode/field_initializers.dart.expect
@@ -24,26 +24,26 @@
 }
 
 Class 'A', script = '#lib'
-    extends dart:core::Object
+    extends dart:core::Object*
 
-Field 'foo1', type = dart:core::int, getter = 'get:foo1', setter = 'set:foo1', reflectable
+Field 'foo1', type = dart:core::int*, getter = 'get:foo1', setter = 'set:foo1', reflectable
     value = null
 
-Field 'foo2', type = dart:core::int, getter = 'get:foo2', setter = 'set:foo2', reflectable, has-initializer
+Field 'foo2', type = dart:core::int*, getter = 'get:foo2', setter = 'set:foo2', reflectable, has-initializer
     value = null
 
-Field 'foo3', type = dart:core::int, getter = 'get:foo3', setter = 'set:foo3', reflectable, has-initializer
+Field 'foo3', type = dart:core::int*, getter = 'get:foo3', setter = 'set:foo3', reflectable, has-initializer
     value = const 42
 
-Field 'foo4', type = dart:core::int, getter = 'get:foo4', setter = 'set:foo4', reflectable
+Field 'foo4', type = dart:core::int*, getter = 'get:foo4', setter = 'set:foo4', reflectable
     value = null
 
-Field 'foo5', type = dart:core::int, getter = 'get:foo5', setter = 'set:foo5', reflectable, has-initializer
+Field 'foo5', type = dart:core::int*, getter = 'get:foo5', setter = 'set:foo5', reflectable, has-initializer
     value = const 43
 
 Function '', constructor, reflectable, debuggable
-    parameters [dart:core::int 'foo4'] (required: 1)
-    return-type #lib::A
+    parameters [dart:core::int* 'foo4'] (required: 1)
+    return-type #lib::A*
 
 Bytecode {
   Entry                0
@@ -79,8 +79,8 @@
 
 
 Function 'constr2', constructor, reflectable, debuggable
-    parameters [dart:core::int 'x', dart:core::int 'y'] (required: 2)
-    return-type #lib::A
+    parameters [dart:core::int* 'x', dart:core::int* 'y'] (required: 2)
+    return-type #lib::A*
 
 Bytecode {
   Entry                0
@@ -119,7 +119,7 @@
 
 Function 'redirecting1', constructor, reflectable, debuggable
     parameters [] (required: 0)
-    return-type #lib::A
+    return-type #lib::A*
 
 Bytecode {
   Entry                0
@@ -138,8 +138,8 @@
 
 
 Function 'redirecting2', constructor, reflectable, debuggable
-    parameters [dart:core::int 'a', dart:core::int 'b', dart:core::int 'c'] (required: 3)
-    return-type #lib::A
+    parameters [dart:core::int* 'a', dart:core::int* 'b', dart:core::int* 'c'] (required: 3)
+    return-type #lib::A*
 
 Bytecode {
   Entry                0
@@ -162,58 +162,58 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'B', script = '#lib'
-    extends #lib::A
+    extends #lib::A*
 
-Field 'foo6', type = dart:core::int, getter = 'get:foo6', setter = 'set:foo6', reflectable, has-initializer
+Field 'foo6', type = dart:core::int*, getter = 'get:foo6', setter = 'set:foo6', reflectable, has-initializer
     value = const 46
 
-Field 'foo7', type = dart:core::int, reflectable, static, has-initializer
+Field 'foo7', type = dart:core::int*, reflectable, static, has-initializer
     value = const 47
 
-Field 'foo8', type = dart:core::int, reflectable, static, const, final, has-initializer
+Field 'foo8', type = dart:core::int*, reflectable, static, const, final, has-initializer
     value = const 48
 
 Function '', constructor, reflectable, debuggable
     parameters [] (required: 0)
-    return-type #lib::B
+    return-type #lib::B*
 
 Bytecode {
   Entry                0
@@ -237,8 +237,8 @@
 
 
 Function 'c2', constructor, reflectable, debuggable
-    parameters [dart:core::int 'i', dart:core::int 'j'] (required: 2)
-    return-type #lib::B
+    parameters [dart:core::int* 'i', dart:core::int* 'j'] (required: 2)
+    return-type #lib::B*
 
 Bytecode {
   Entry                0
diff --git a/pkg/vm/testcases/bytecode/instance_creation.dart.expect b/pkg/vm/testcases/bytecode/instance_creation.dart.expect
index 26b018c..54bd3ff 100644
--- a/pkg/vm/testcases/bytecode/instance_creation.dart.expect
+++ b/pkg/vm/testcases/bytecode/instance_creation.dart.expect
@@ -62,19 +62,19 @@
 }
 ConstantPool {
   [0] = Class #lib::A
-  [1] = ObjectRef < dart:core::int, dart:core::String >
+  [1] = ObjectRef < dart:core::int*, dart:core::String* >
   [2] = ObjectRef 'hi'
   [3] = DirectCall '#lib::A:: (constructor)', ArgDesc num-args 2, num-type-args 0, names []
   [4] = Reserved
   [5] = Class #lib::B
-  [6] = ObjectRef < dart:core::List < dart:core::int >, dart:core::String, dart:core::int >
+  [6] = ObjectRef < dart:core::List < dart:core::int* >*, dart:core::String*, dart:core::int* >
   [7] = DirectCall '#lib::B:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
   [8] = Reserved
 }
 
 
 Function 'foo3', static, reflectable, debuggable
-    type-params <dart:core::Object T>
+    type-params <dart:core::Object* T>
     parameters [] (required: 0)
     return-type void
 
@@ -97,7 +97,7 @@
 }
 ConstantPool {
   [0] = Class #lib::B
-  [1] = ObjectRef < dart:core::List < dart:core::List < #lib::foo3::TypeParam/0 > >, dart:core::String, dart:core::List < #lib::foo3::TypeParam/0 > >
+  [1] = ObjectRef < dart:core::List < dart:core::List < #lib::foo3::TypeParam/0* >* >*, dart:core::String*, dart:core::List < #lib::foo3::TypeParam/0* >* >
   [2] = DirectCall '#lib::B:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
   [3] = Reserved
 }
@@ -117,7 +117,7 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = ObjectRef < dart:core::int, dart:core::List < dart:core::String > >
+  [0] = ObjectRef < dart:core::int*, dart:core::List < dart:core::String* >* >
   [1] = DirectCall '#lib::G::test_factory (constructor)', ArgDesc num-args 1, num-type-args 0, names []
   [2] = Reserved
 }
@@ -161,14 +161,14 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = ObjectRef < dart:core::String >
+  [0] = ObjectRef < dart:core::String* >
   [1] = DirectCall 'dart:core::_GrowableList:: (constructor)', ArgDesc num-args 2, num-type-args 0, names []
   [2] = Reserved
 }
 
 
 Function 'foo7', static, reflectable, debuggable
-    parameters [dart:core::int 'n'] (required: 1)
+    parameters [dart:core::int* 'n'] (required: 1)
     return-type dynamic
 
 Bytecode {
@@ -180,7 +180,7 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = ObjectRef < dart:core::int >
+  [0] = ObjectRef < dart:core::int* >
   [1] = DirectCall 'dart:core::_List:: (constructor)', ArgDesc num-args 2, num-type-args 0, names []
   [2] = Reserved
 }
@@ -208,24 +208,24 @@
   [1] = Reserved
   [2] = DirectCall '#lib::foo2', ArgDesc num-args 0, num-type-args 0, names []
   [3] = Reserved
-  [4] = ObjectRef < dart:core::String >
+  [4] = ObjectRef < dart:core::String* >
   [5] = DirectCall '#lib::foo3', ArgDesc num-args 0, num-type-args 1, names []
   [6] = Reserved
 }
 
 Class 'Base', script = '#lib'
-    type-params <dart:core::Object T1, dart:core::Object T2> (args: 2)
-    extends dart:core::Object
+    type-params <dart:core::Object* T1, dart:core::Object* T2> (args: 2)
+    extends dart:core::Object*
 
-Field 't1', type = #lib::Base::TypeParam/0, getter = 'get:t1', setter = 'set:t1', reflectable, has-initializer
+Field 't1', type = #lib::Base::TypeParam/0*, getter = 'get:t1', setter = 'set:t1', reflectable, has-initializer
     value = null
 
-Field 't2', type = #lib::Base::TypeParam/1, getter = 'get:t2', setter = 'set:t2', reflectable, has-initializer
+Field 't2', type = #lib::Base::TypeParam/1*, getter = 'get:t2', setter = 'set:t2', reflectable, has-initializer
     value = null
 
 Function '', constructor, reflectable, debuggable
     parameters [] (required: 0)
-    return-type #lib::Base < #lib::Base::TypeParam/0, #lib::Base::TypeParam/1 >
+    return-type #lib::Base < #lib::Base::TypeParam/0*, #lib::Base::TypeParam/1* >*
 
 Bytecode {
   Entry                1
@@ -270,10 +270,10 @@
   [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
   [1] = Reserved
   [2] = ObjectRef 'Base: '
-  [3] = Type #lib::Base::TypeParam/0
+  [3] = Type #lib::Base::TypeParam/0*
   [4] = TypeArgumentsField #lib::Base
   [5] = ObjectRef ', '
-  [6] = Type #lib::Base::TypeParam/1
+  [6] = Type #lib::Base::TypeParam/1*
   [7] = DirectCall 'dart:core::_StringBase::_interpolate', ArgDesc num-args 1, num-type-args 0, names []
   [8] = Reserved
   [9] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
@@ -283,50 +283,50 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'A', script = '#lib'
-    extends #lib::Base < dart:core::int, dart:core::String >
+    extends #lib::Base < dart:core::int*, dart:core::String* >*
 
 
 Function '', constructor, reflectable, debuggable
-    parameters [dart:core::String 's'] (required: 1)
-    return-type #lib::A < dart:core::int, dart:core::String >
+    parameters [dart:core::String* 's'] (required: 1)
+    return-type #lib::A < dart:core::int*, dart:core::String* >*
 
 Bytecode {
   Entry                0
@@ -343,13 +343,13 @@
 }
 
 Class 'B', script = '#lib'
-    type-params <dart:core::Object T> (args: 3)
-    extends #lib::Base < dart:core::List < #lib::B::TypeParam/0 >, dart:core::String >
+    type-params <dart:core::Object* T> (args: 3)
+    extends #lib::Base < dart:core::List < #lib::B::TypeParam/0* >*, dart:core::String* >*
 
 
 Function '', constructor, reflectable, debuggable
     parameters [] (required: 0)
-    return-type #lib::B < dart:core::List < #lib::B::TypeParam/0 >, dart:core::String, #lib::B::TypeParam/0 >
+    return-type #lib::B < dart:core::List < #lib::B::TypeParam/0* >*, dart:core::String*, #lib::B::TypeParam/0* >*
 
 Bytecode {
   Entry                1
@@ -382,7 +382,7 @@
   [0] = DirectCall '#lib::Base:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
   [1] = Reserved
   [2] = ObjectRef 'B: '
-  [3] = Type #lib::B::TypeParam/0
+  [3] = Type #lib::B::TypeParam/0*
   [4] = TypeArgumentsField #lib::B
   [5] = DirectCall 'dart:core::_StringBase::_interpolate', ArgDesc num-args 1, num-type-args 0, names []
   [6] = Reserved
@@ -391,12 +391,12 @@
 }
 
 Class 'C', script = '#lib'
-    extends dart:core::Object
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable, debuggable
-    parameters [dart:core::String 's'] (required: 1)
-    return-type #lib::C
+    parameters [dart:core::String* 's'] (required: 1)
+    return-type #lib::C*
 
 Bytecode {
   Entry                1
@@ -435,51 +435,51 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'E', script = '#lib'
-    type-params <dart:core::Object K, dart:core::Object V> (args: 2)
-    extends dart:core::Object
+    type-params <dart:core::Object* K, dart:core::Object* V> (args: 2)
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::E < #lib::E::TypeParam/0, #lib::E::TypeParam/1 >
+    return-type #lib::E < #lib::E::TypeParam/0*, #lib::E::TypeParam/1* >*
 
 Bytecode {
   Entry                0
@@ -517,51 +517,51 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'F', script = '#lib'
-    type-params <dart:core::Object K, dart:core::Object V> (args: 4)
-    extends #lib::E < dart:core::String, dart:core::List < #lib::F::TypeParam/1 > >
+    type-params <dart:core::Object* K, dart:core::Object* V> (args: 4)
+    extends #lib::E < dart:core::String*, dart:core::List < #lib::F::TypeParam/1* >* >*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::F < dart:core::String, dart:core::List < #lib::F::TypeParam/1 >, #lib::F::TypeParam/0, #lib::F::TypeParam/1 >
+    return-type #lib::F < dart:core::String*, dart:core::List < #lib::F::TypeParam/1* >*, #lib::F::TypeParam/0*, #lib::F::TypeParam/1* >*
 
 Bytecode {
   Entry                0
@@ -597,13 +597,13 @@
 }
 
 Class 'G', script = '#lib'
-    type-params <dart:core::Object K, dart:core::Object V> (args: 2)
-    extends dart:core::Object
+    type-params <dart:core::Object* K, dart:core::Object* V> (args: 2)
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable, debuggable
     parameters [] (required: 0)
-    return-type #lib::G < #lib::G::TypeParam/0, #lib::G::TypeParam/1 >
+    return-type #lib::G < #lib::G::TypeParam/0*, #lib::G::TypeParam/1* >*
 
 Bytecode {
   Entry                0
@@ -621,9 +621,9 @@
 
 
 Function 'test_factory', factory, static, reflectable, debuggable
-    type-params <dart:core::Object K, dart:core::Object V>
+    type-params <dart:core::Object* K, dart:core::Object* V>
     parameters [] (required: 0)
-    return-type #lib::G < #lib::G::test_factory (constructor)::TypeParam/0, #lib::G::test_factory (constructor)::TypeParam/1 >
+    return-type #lib::G < #lib::G::test_factory (constructor)::TypeParam/0*, #lib::G::test_factory (constructor)::TypeParam/1* >*
 
 Bytecode {
   Entry                1
@@ -641,7 +641,7 @@
 }
 ConstantPool {
   [0] = Class #lib::H
-  [1] = ObjectRef < #lib::G::test_factory (constructor)::TypeParam/0, #lib::G::test_factory (constructor)::TypeParam/1, dart:core::String, #lib::G::test_factory (constructor)::TypeParam/0, #lib::G::test_factory (constructor)::TypeParam/1 >
+  [1] = ObjectRef < #lib::G::test_factory (constructor)::TypeParam/0*, #lib::G::test_factory (constructor)::TypeParam/1*, dart:core::String*, #lib::G::test_factory (constructor)::TypeParam/0*, #lib::G::test_factory (constructor)::TypeParam/1* >
   [2] = DirectCall '#lib::H:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
   [3] = Reserved
 }
@@ -649,51 +649,51 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'H', script = '#lib'
-    type-params <dart:core::Object P1, dart:core::Object P2, dart:core::Object P3> (args: 5)
-    extends #lib::G < #lib::H::TypeParam/1, #lib::H::TypeParam/2 >
+    type-params <dart:core::Object* P1, dart:core::Object* P2, dart:core::Object* P3> (args: 5)
+    extends #lib::G < #lib::H::TypeParam/1*, #lib::H::TypeParam/2* >*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::H < #lib::H::TypeParam/1, #lib::H::TypeParam/2, #lib::H::TypeParam/0, #lib::H::TypeParam/1, #lib::H::TypeParam/2 >
+    return-type #lib::H < #lib::H::TypeParam/1*, #lib::H::TypeParam/2*, #lib::H::TypeParam/0*, #lib::H::TypeParam/1*, #lib::H::TypeParam/2* >*
 
 Bytecode {
   Entry                0
@@ -710,12 +710,12 @@
 }
 
 Class 'I', script = '#lib'
-    extends dart:core::Object
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable, debuggable
     parameters [dynamic 'param'] (required: 1)
-    return-type #lib::I
+    return-type #lib::I*
 
 Bytecode {
   Entry                0
@@ -734,7 +734,7 @@
 
 Function 'test_factory2', factory, static, has-optional-named-params, reflectable, debuggable
     parameters [dynamic 'param'] (required: 0)
-    return-type #lib::I
+    return-type #lib::I*
 
 Bytecode {
   EntryOptional        1, 0, 1
@@ -761,50 +761,50 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'J', script = '#lib'
-    extends dart:core::Object
+    extends dart:core::Object*
 
 
 Function '', factory, static, reflectable, debuggable, native 'agent_J'
     parameters [] (required: 0)
-    return-type #lib::J
+    return-type #lib::J*
 
 Bytecode {
   Entry                0
@@ -820,52 +820,52 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'K', script = '#lib', abstract
-    type-params <dart:core::Object A, dart:core::Object B> (args: 2)
-    extends dart:core::Object
+    type-params <dart:core::Object* A, dart:core::Object* B> (args: 2)
+    extends dart:core::Object*
 
 
 Function '', factory, static, reflectable, debuggable
-    type-params <dart:core::Object A, dart:core::Object B>
+    type-params <dart:core::Object* A, dart:core::Object* B>
     parameters [] (required: 0)
-    return-type #lib::K < #lib::K:: (constructor)::TypeParam/0, #lib::K:: (constructor)::TypeParam/1 >
+    return-type #lib::K < #lib::K:: (constructor)::TypeParam/0*, #lib::K:: (constructor)::TypeParam/1* >*
 
 Bytecode {
   Entry                1
@@ -888,52 +888,52 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'TestTypeArgReuse', script = '#lib'
-    type-params <dart:core::Object P, dart:core::Object Q> (args: 2)
-    extends #lib::Base < #lib::TestTypeArgReuse::TypeParam/0, #lib::TestTypeArgReuse::TypeParam/1 >
-    implements [#lib::K < #lib::TestTypeArgReuse::TypeParam/0, #lib::TestTypeArgReuse::TypeParam/1 >]
+    type-params <dart:core::Object* P, dart:core::Object* Q> (args: 2)
+    extends #lib::Base < #lib::TestTypeArgReuse::TypeParam/0*, #lib::TestTypeArgReuse::TypeParam/1* >*
+    implements [#lib::K < #lib::TestTypeArgReuse::TypeParam/0*, #lib::TestTypeArgReuse::TypeParam/1* >*]
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::TestTypeArgReuse < #lib::TestTypeArgReuse::TypeParam/0, #lib::TestTypeArgReuse::TypeParam/1 >
+    return-type #lib::TestTypeArgReuse < #lib::TestTypeArgReuse::TypeParam/0*, #lib::TestTypeArgReuse::TypeParam/1* >*
 
 Bytecode {
   Entry                0
diff --git a/pkg/vm/testcases/bytecode/literals.dart.expect b/pkg/vm/testcases/bytecode/literals.dart.expect
index be92e6d..62c9981 100644
--- a/pkg/vm/testcases/bytecode/literals.dart.expect
+++ b/pkg/vm/testcases/bytecode/literals.dart.expect
@@ -9,7 +9,7 @@
 
 Class '', script = '#lib'
 
-Field 'c1', type = #lib::A, getter = 'get:c1', reflectable, static, const, final, has-initializer
+Field 'c1', type = #lib::A*, getter = 'get:c1', reflectable, static, const, final, has-initializer
     initializer
 Bytecode {
   Entry                0
@@ -18,17 +18,17 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = ObjectRef const #lib::A {#lib::A::index (field): const 2, #lib::A::_name (field): 'A.elem3'}
+  [0] = ObjectRef const #lib::A* {#lib::A::index (field): const 2, #lib::A::_name (field): 'A.elem3'}
 }
 
 
-Field 'c2', type = dart:core::String, reflectable, static, const, final, has-initializer
+Field 'c2', type = dart:core::String*, reflectable, static, const, final, has-initializer
     value = 'hello!'
 
-Field 'c3', type = dart:core::int, reflectable, static, const, final, has-initializer
+Field 'c3', type = dart:core::int*, reflectable, static, const, final, has-initializer
     value = const 6
 
-Field 'c4', type = #lib::C, getter = 'get:c4', reflectable, static, const, final, has-initializer
+Field 'c4', type = #lib::C*, getter = 'get:c4', reflectable, static, const, final, has-initializer
     initializer
 Bytecode {
   Entry                0
@@ -37,11 +37,11 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = ObjectRef const #lib::C {#lib::C::j (field): const 3, #lib::B::i (field): const 15}
+  [0] = ObjectRef const #lib::C* {#lib::C::j (field): const 3, #lib::B::i (field): const 15}
 }
 
 
-Field 'c5', type = #lib::D, getter = 'get:c5', reflectable, static, const, final, has-initializer
+Field 'c5', type = #lib::D*, getter = 'get:c5', reflectable, static, const, final, has-initializer
     initializer
 Bytecode {
   Entry                0
@@ -50,11 +50,11 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = ObjectRef const #lib::D {#lib::D::x (field): const #lib::B {#lib::B::i (field): const 4}, #lib::D::y (field): null}
+  [0] = ObjectRef const #lib::D* {#lib::D::x (field): const #lib::B* {#lib::B::i (field): const 4}, #lib::D::y (field): null}
 }
 
 
-Field 'fieldWithDoubleLiteralInitializer', type = dart:core::double, reflectable, static, has-initializer
+Field 'fieldWithDoubleLiteralInitializer', type = dart:core::double*, reflectable, static, has-initializer
     value = const 1.0
 
 Function 'test_constants1', static, reflectable, debuggable
@@ -83,12 +83,12 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = ObjectRef const #lib::A {#lib::A::index (field): const 2, #lib::A::_name (field): 'A.elem3'}
+  [0] = ObjectRef const #lib::A* {#lib::A::index (field): const 2, #lib::A::_name (field): 'A.elem3'}
   [1] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
   [2] = Reserved
   [3] = ObjectRef 'hello!'
-  [4] = ObjectRef const #lib::C {#lib::C::j (field): const 3, #lib::B::i (field): const 15}
-  [5] = ObjectRef const #lib::D {#lib::D::x (field): const #lib::B {#lib::B::i (field): const 4}, #lib::D::y (field): null}
+  [4] = ObjectRef const #lib::C* {#lib::C::j (field): const 3, #lib::B::i (field): const 15}
+  [5] = ObjectRef const #lib::D* {#lib::D::x (field): const #lib::B* {#lib::B::i (field): const 4}, #lib::D::y (field): null}
 }
 
 
@@ -124,15 +124,15 @@
   [0] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
   [1] = Reserved
   [2] = ObjectRef 'foo'
-  [3] = ObjectRef const #lib::A {#lib::A::index (field): const 1, #lib::A::_name (field): 'A.elem2'}
-  [4] = ObjectRef const <dart:core::Object> [const 42, 'foo', dart:core::int]
-  [5] = ObjectRef const dart:core::_ImmutableMap < dart:core::String, #lib::A > {dart:core::_ImmutableMap::_kvPairs (field): const <dynamic> ['E2', const #lib::A {#lib::A::index (field): const 1, #lib::A::_name (field): 'A.elem2'}, 'E4', const #lib::A {#lib::A::index (field): const 3, #lib::A::_name (field): 'A.elem4'}]}
-  [6] = ObjectRef const #lib::D {#lib::D::x (field): const #lib::C {#lib::C::j (field): const 9, #lib::B::i (field): const 30}, #lib::D::y (field): const dart:core::_ImmutableMap < dart:core::String, dart:core::Object > {dart:core::_ImmutableMap::_kvPairs (field): const <dynamic> ['foo', const 42, 'bar', const #lib::B {#lib::B::i (field): const 6}]}}
+  [3] = ObjectRef const #lib::A* {#lib::A::index (field): const 1, #lib::A::_name (field): 'A.elem2'}
+  [4] = ObjectRef const <dart:core::Object*> [const 42, 'foo', dart:core::int*]
+  [5] = ObjectRef const dart:core::_ImmutableMap < dart:core::String*, #lib::A* >* {dart:core::_ImmutableMap::_kvPairs (field): const <dynamic> ['E2', const #lib::A* {#lib::A::index (field): const 1, #lib::A::_name (field): 'A.elem2'}, 'E4', const #lib::A* {#lib::A::index (field): const 3, #lib::A::_name (field): 'A.elem4'}]}
+  [6] = ObjectRef const #lib::D* {#lib::D::x (field): const #lib::C* {#lib::C::j (field): const 9, #lib::B::i (field): const 30}, #lib::D::y (field): const dart:core::_ImmutableMap < dart:core::String*, dart:core::Object* >* {dart:core::_ImmutableMap::_kvPairs (field): const <dynamic> ['foo', const 42, 'bar', const #lib::B* {#lib::B::i (field): const 6}]}}
 }
 
 
 Function 'test_list_literal', static, reflectable, debuggable
-    parameters [dart:core::int 'a'] (required: 1)
+    parameters [dart:core::int* 'a'] (required: 1)
     return-type void
 
 Bytecode {
@@ -185,12 +185,12 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = ObjectRef < dart:core::int >
+  [0] = ObjectRef < dart:core::int* >
   [1] = DirectCall 'dart:core::List::_fromLiteral (constructor)', ArgDesc num-args 2, num-type-args 0, names []
   [2] = Reserved
   [3] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
   [4] = Reserved
-  [5] = ObjectRef < dart:core::String >
+  [5] = ObjectRef < dart:core::String* >
   [6] = ObjectRef 'a'
   [7] = InterfaceCall 'dart:core::int::toString', ArgDesc num-args 1, num-type-args 0, names []
   [8] = Reserved
@@ -199,8 +199,8 @@
 
 
 Function 'test_map_literal', static, reflectable, debuggable
-    type-params <dart:core::Object T>
-    parameters [dart:core::int 'a', dart:core::int 'b', #lib::test_map_literal::TypeParam/0 'c'] (required: 3)
+    type-params <dart:core::Object* T>
+    parameters [dart:core::int* 'a', dart:core::int* 'b', #lib::test_map_literal::TypeParam/0* 'c'] (required: 3)
     return-type void
 
 Bytecode {
@@ -285,19 +285,19 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = ObjectRef < dart:core::int, dart:core::int >
+  [0] = ObjectRef < dart:core::int*, dart:core::int* >
   [1] = ObjectRef < dynamic >
   [2] = DirectCall 'dart:core::Map::_fromLiteral (constructor)', ArgDesc num-args 2, num-type-args 0, names []
   [3] = Reserved
   [4] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
   [5] = Reserved
-  [6] = ObjectRef < dart:core::String, dart:core::int >
+  [6] = ObjectRef < dart:core::String*, dart:core::int* >
   [7] = ObjectRef 'foo'
   [8] = InterfaceCall 'dart:core::int::toString', ArgDesc num-args 1, num-type-args 0, names []
   [9] = Reserved
-  [10] = ObjectRef < dart:core::String, #lib::test_map_literal::TypeParam/0 >
+  [10] = ObjectRef < dart:core::String*, #lib::test_map_literal::TypeParam/0* >
   [11] = ObjectRef const <dynamic> []
-  [12] = ObjectRef < #lib::test_map_literal::TypeParam/0, dart:core::int >
+  [12] = ObjectRef < #lib::test_map_literal::TypeParam/0*, dart:core::int* >
 }
 
 
@@ -326,7 +326,7 @@
 
 
 Function 'test_type_literal', static, reflectable, debuggable
-    type-params <dart:core::Object T>
+    type-params <dart:core::Object* T>
     parameters [] (required: 0)
     return-type void
 
@@ -346,10 +346,10 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = Type dart:core::String
+  [0] = Type dart:core::String*
   [1] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
   [2] = Reserved
-  [3] = Type #lib::test_type_literal::TypeParam/0
+  [3] = Type #lib::test_type_literal::TypeParam/0*
 }
 
 
@@ -364,7 +364,7 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = ObjectRef const #lib::F < dart:core::Map < dart:core::int, dart:core::String >, dart:core::int, dart:core::String > {}
+  [0] = ObjectRef const #lib::F < dart:core::Map < dart:core::int*, dart:core::String* >*, dart:core::int*, dart:core::String* >* {}
 }
 
 
@@ -379,7 +379,7 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = Type FunctionType <dart:core::Object X> (null::TypeParam/0) -> null::TypeParam/0
+  [0] = Type FunctionType <dart:core::Object* X> (null::TypeParam/0*)* -> null::TypeParam/0*
 }
 
 
@@ -412,15 +412,15 @@
 }
 
 Class 'A', script = '#lib', enum
-    extends dart:core::Object
+    extends dart:core::Object*
 
-Field 'index', type = dart:core::int, getter = 'get:index', reflectable, final
+Field 'index', type = dart:core::int*, getter = 'get:index', reflectable, final
     value = null
 
-Field '_name', type = dart:core::String, getter = 'get:_name', reflectable, final
+Field '_name', type = dart:core::String*, getter = 'get:_name', reflectable, final
     value = null
 
-Field 'values', type = dart:core::List < #lib::A >, getter = 'get:values', reflectable, static, const, final, has-initializer
+Field 'values', type = dart:core::List < #lib::A* >*, getter = 'get:values', reflectable, static, const, final, has-initializer
     initializer
 Bytecode {
   Entry                0
@@ -429,11 +429,11 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = ObjectRef const <#lib::A> [const #lib::A {#lib::A::index (field): const 0, #lib::A::_name (field): 'A.elem1'}, const #lib::A {#lib::A::index (field): const 1, #lib::A::_name (field): 'A.elem2'}, const #lib::A {#lib::A::index (field): const 2, #lib::A::_name (field): 'A.elem3'}, const #lib::A {#lib::A::index (field): const 3, #lib::A::_name (field): 'A.elem4'}]
+  [0] = ObjectRef const <#lib::A*> [const #lib::A* {#lib::A::index (field): const 0, #lib::A::_name (field): 'A.elem1'}, const #lib::A* {#lib::A::index (field): const 1, #lib::A::_name (field): 'A.elem2'}, const #lib::A* {#lib::A::index (field): const 2, #lib::A::_name (field): 'A.elem3'}, const #lib::A* {#lib::A::index (field): const 3, #lib::A::_name (field): 'A.elem4'}]
 }
 
 
-Field 'elem1', type = #lib::A, getter = 'get:elem1', reflectable, static, const, final, has-initializer
+Field 'elem1', type = #lib::A*, getter = 'get:elem1', reflectable, static, const, final, has-initializer
     initializer
 Bytecode {
   Entry                0
@@ -442,11 +442,11 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = ObjectRef const #lib::A {#lib::A::index (field): const 0, #lib::A::_name (field): 'A.elem1'}
+  [0] = ObjectRef const #lib::A* {#lib::A::index (field): const 0, #lib::A::_name (field): 'A.elem1'}
 }
 
 
-Field 'elem2', type = #lib::A, getter = 'get:elem2', reflectable, static, const, final, has-initializer
+Field 'elem2', type = #lib::A*, getter = 'get:elem2', reflectable, static, const, final, has-initializer
     initializer
 Bytecode {
   Entry                0
@@ -455,11 +455,11 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = ObjectRef const #lib::A {#lib::A::index (field): const 1, #lib::A::_name (field): 'A.elem2'}
+  [0] = ObjectRef const #lib::A* {#lib::A::index (field): const 1, #lib::A::_name (field): 'A.elem2'}
 }
 
 
-Field 'elem3', type = #lib::A, getter = 'get:elem3', reflectable, static, const, final, has-initializer
+Field 'elem3', type = #lib::A*, getter = 'get:elem3', reflectable, static, const, final, has-initializer
     initializer
 Bytecode {
   Entry                0
@@ -468,11 +468,11 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = ObjectRef const #lib::A {#lib::A::index (field): const 2, #lib::A::_name (field): 'A.elem3'}
+  [0] = ObjectRef const #lib::A* {#lib::A::index (field): const 2, #lib::A::_name (field): 'A.elem3'}
 }
 
 
-Field 'elem4', type = #lib::A, getter = 'get:elem4', reflectable, static, const, final, has-initializer
+Field 'elem4', type = #lib::A*, getter = 'get:elem4', reflectable, static, const, final, has-initializer
     initializer
 Bytecode {
   Entry                0
@@ -481,13 +481,13 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = ObjectRef const #lib::A {#lib::A::index (field): const 3, #lib::A::_name (field): 'A.elem4'}
+  [0] = ObjectRef const #lib::A* {#lib::A::index (field): const 3, #lib::A::_name (field): 'A.elem4'}
 }
 
 
 Function '', constructor, const, reflectable, debuggable
-    parameters [dart:core::int 'index', dart:core::String '_name'] (required: 2)
-    return-type #lib::A
+    parameters [dart:core::int* 'index', dart:core::String* '_name'] (required: 2)
+    return-type #lib::A*
 
 Bytecode {
   Entry                0
@@ -516,7 +516,7 @@
 
 Function 'toString', reflectable, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Bytecode {
   Entry                0
@@ -533,48 +533,48 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'B', script = '#lib'
-    extends dart:core::Object
+    extends dart:core::Object*
 
-Field 'i', type = dart:core::int, getter = 'get:i', reflectable, final
+Field 'i', type = dart:core::int*, getter = 'get:i', reflectable, final
     value = null
 
 Function '', constructor, const, reflectable, debuggable
-    parameters [dart:core::int 'i'] (required: 1)
-    return-type #lib::B
+    parameters [dart:core::int* 'i'] (required: 1)
+    return-type #lib::B*
 
 Bytecode {
   Entry                0
@@ -598,52 +598,52 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'C', script = '#lib'
-    extends #lib::B
+    extends #lib::B*
 
-Field 'j', type = dart:core::int, getter = 'get:j', reflectable, final
+Field 'j', type = dart:core::int*, getter = 'get:j', reflectable, final
     value = null
 
 Function '', constructor, const, reflectable, debuggable
-    parameters [dart:core::int 'a', dart:core::int 'b', dart:core::int 'c'] (required: 3)
-    return-type #lib::C
+    parameters [dart:core::int* 'a', dart:core::int* 'b', dart:core::int* 'c'] (required: 3)
+    return-type #lib::C*
 
 Bytecode {
   Entry                0
@@ -670,7 +670,7 @@
 }
 
 Class 'D', script = '#lib'
-    extends dart:core::Object
+    extends dart:core::Object*
 
 Field 'x', type = dynamic, getter = 'get:x', reflectable, final
     value = null
@@ -680,7 +680,7 @@
 
 Function '', constructor, const, has-optional-positional-params, reflectable, debuggable
     parameters [dynamic 'x', dynamic 'y'] (required: 1)
-    return-type #lib::D
+    return-type #lib::D*
 
 Bytecode {
   EntryOptional        2, 1, 0
@@ -712,51 +712,51 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'E', script = '#lib'
-    type-params <dart:core::Object T> (args: 1)
-    extends dart:core::Object
+    type-params <dart:core::Object* T> (args: 1)
+    extends dart:core::Object*
 
 
 Function '', constructor, const, reflectable, debuggable
     parameters [] (required: 0)
-    return-type #lib::E < #lib::E::TypeParam/0 >
+    return-type #lib::E < #lib::E::TypeParam/0* >*
 
 Bytecode {
   Entry                0
@@ -775,51 +775,51 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'F', script = '#lib'
-    type-params <dart:core::Object P, dart:core::Object Q> (args: 3)
-    extends #lib::E < dart:core::Map < #lib::F::TypeParam/0, #lib::F::TypeParam/1 > >
+    type-params <dart:core::Object* P, dart:core::Object* Q> (args: 3)
+    extends #lib::E < dart:core::Map < #lib::F::TypeParam/0*, #lib::F::TypeParam/1* >* >*
 
 
 Function '', constructor, const, reflectable, debuggable
     parameters [] (required: 0)
-    return-type #lib::F < dart:core::Map < #lib::F::TypeParam/0, #lib::F::TypeParam/1 >, #lib::F::TypeParam/0, #lib::F::TypeParam/1 >
+    return-type #lib::F < dart:core::Map < #lib::F::TypeParam/0*, #lib::F::TypeParam/1* >*, #lib::F::TypeParam/0*, #lib::F::TypeParam/1* >*
 
 Bytecode {
   Entry                0
diff --git a/pkg/vm/testcases/bytecode/loops.dart.expect b/pkg/vm/testcases/bytecode/loops.dart.expect
index 4b4932f..11d1d08 100644
--- a/pkg/vm/testcases/bytecode/loops.dart.expect
+++ b/pkg/vm/testcases/bytecode/loops.dart.expect
@@ -11,8 +11,8 @@
 
 
 Function 'test_for', static, reflectable, debuggable
-    parameters [dart:core::List < dart:core::int > 'list'] (required: 1)
-    return-type dart:core::int
+    parameters [dart:core::List < dart:core::int* >* 'list'] (required: 1)
+    return-type dart:core::int*
 
 Bytecode {
   Entry                2
@@ -56,8 +56,8 @@
 
 
 Function 'test_for_break', static, reflectable, debuggable
-    parameters [dart:core::List < dart:core::int > 'list'] (required: 1)
-    return-type dart:core::int
+    parameters [dart:core::List < dart:core::int* >* 'list'] (required: 1)
+    return-type dart:core::int*
 
 Bytecode {
   Entry                2
@@ -107,8 +107,8 @@
 
 
 Function 'test_for_continue', static, reflectable, debuggable
-    parameters [dart:core::List < dart:core::int > 'list'] (required: 1)
-    return-type dart:core::int
+    parameters [dart:core::List < dart:core::int* >* 'list'] (required: 1)
+    return-type dart:core::int*
 
 Bytecode {
   Entry                2
@@ -160,8 +160,8 @@
 
 
 Function 'test_while', static, reflectable, debuggable
-    parameters [dart:core::List < dart:core::int > 'list'] (required: 1)
-    return-type dart:core::int
+    parameters [dart:core::List < dart:core::int* >* 'list'] (required: 1)
+    return-type dart:core::int*
 
 Bytecode {
   Entry                4
@@ -207,8 +207,8 @@
 
 
 Function 'test_do_while', static, reflectable, debuggable
-    parameters [dart:core::List < dart:core::int > 'list'] (required: 1)
-    return-type dart:core::int
+    parameters [dart:core::List < dart:core::int* >* 'list'] (required: 1)
+    return-type dart:core::int*
 
 Bytecode {
   Entry                2
@@ -249,8 +249,8 @@
 
 
 Function 'test_for_in', static, reflectable, debuggable
-    parameters [dart:core::List < dart:core::int > 'list'] (required: 1)
-    return-type dart:core::int
+    parameters [dart:core::List < dart:core::int* >* 'list'] (required: 1)
+    return-type dart:core::int*
 
 Bytecode {
   Entry                3
@@ -289,8 +289,8 @@
 
 
 Function 'test_for_in_with_outer_var', static, reflectable, debuggable
-    parameters [dart:core::List < dart:core::int > 'list'] (required: 1)
-    return-type dart:core::int
+    parameters [dart:core::List < dart:core::int* >* 'list'] (required: 1)
+    return-type dart:core::int*
 
 Bytecode {
   Entry                4
diff --git a/pkg/vm/testcases/bytecode/optional_params.dart.expect b/pkg/vm/testcases/bytecode/optional_params.dart.expect
index 09d42e2..5e959bc 100644
--- a/pkg/vm/testcases/bytecode/optional_params.dart.expect
+++ b/pkg/vm/testcases/bytecode/optional_params.dart.expect
@@ -177,7 +177,7 @@
   [0] = ObjectRef 'a'
   [1] = ObjectRef const 42
   [2] = ObjectRef 'b'
-  [3] = ObjectRef const <dart:core::String> ['default_b']
+  [3] = ObjectRef const <dart:core::String*> ['default_b']
   [4] = ObjectRef 'c'
   [5] = ObjectRef 'default_c'
   [6] = ObjectRef 'y = '
@@ -193,8 +193,8 @@
 
 
 Function 'foo3', static, has-optional-named-params, reflectable, debuggable
-    type-params <dart:core::Object P, dart:core::Object Q>
-    parameters [dynamic 'z', dynamic 'y', dart:core::bool 'a', dart:core::Map < #lib::foo3::TypeParam/0, #lib::foo3::TypeParam/1 > 'b'] (required: 2)
+    type-params <dart:core::Object* P, dart:core::Object* Q>
+    parameters [dynamic 'z', dynamic 'y', dart:core::bool* 'a', dart:core::Map < #lib::foo3::TypeParam/0*, #lib::foo3::TypeParam/1* >* 'b'] (required: 2)
     return-type void
 
 Bytecode {
@@ -225,7 +225,7 @@
   [1] = ObjectRef const false
   [2] = ObjectRef 'b'
   [3] = ObjectRef null
-  [4] = Type #lib::foo3::TypeParam/0
+  [4] = Type #lib::foo3::TypeParam/0*
   [5] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
   [6] = Reserved
 }
diff --git a/pkg/vm/testcases/bytecode/super_calls.dart.expect b/pkg/vm/testcases/bytecode/super_calls.dart.expect
index 0d2d233..18ea65f 100644
--- a/pkg/vm/testcases/bytecode/super_calls.dart.expect
+++ b/pkg/vm/testcases/bytecode/super_calls.dart.expect
@@ -24,12 +24,12 @@
 }
 
 Class 'Base1', script = '#lib'
-    extends dart:core::Object
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::Base1
+    return-type #lib::Base1*
 
 Bytecode {
   Entry                0
@@ -47,8 +47,8 @@
 
 
 Function 'foo', reflectable, debuggable
-    type-params <dart:core::Object T>
-    parameters [#lib::Base1::foo::TypeParam/0 'a1', dart:core::int 'a2'] (required: 2)
+    type-params <dart:core::Object* T>
+    parameters [#lib::Base1::foo::TypeParam/0* 'a1', dart:core::int* 'a2'] (required: 2)
     return-type void
 
 Bytecode {
@@ -77,7 +77,7 @@
 
 
 Function 'set:bazz', setter, reflectable, debuggable
-    parameters [dart:core::int 'x'] (required: 1)
+    parameters [dart:core::int* 'x'] (required: 1)
     return-type void
 
 Bytecode {
@@ -92,50 +92,50 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'A', script = '#lib'
-    extends #lib::Base1
+    extends #lib::Base1*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::A
+    return-type #lib::A*
 
 Bytecode {
   Entry                0
@@ -153,7 +153,7 @@
 
 
 Function 'testSuperCall', reflectable, debuggable
-    parameters [dart:core::int 'x'] (required: 1)
+    parameters [dart:core::int* 'x'] (required: 1)
     return-type dynamic
 
 Bytecode {
@@ -167,7 +167,7 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = ObjectRef < dart:core::String >
+  [0] = ObjectRef < dart:core::String* >
   [1] = ObjectRef 'a1'
   [2] = DirectCall '#lib::Base1::foo', ArgDesc num-args 3, num-type-args 1, names []
   [3] = Reserved
@@ -223,7 +223,7 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = ObjectRef < dart:core::int >
+  [0] = ObjectRef < dart:core::int* >
   [1] = DirectCall '#lib::Base1::get:bar', ArgDesc num-args 1, num-type-args 0, names []
   [2] = Reserved
   [3] = ObjectRef 'param'
@@ -252,12 +252,12 @@
 }
 
 Class 'Base2', script = '#lib', abstract
-    extends dart:core::Object
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::Base2
+    return-type #lib::Base2*
 
 Bytecode {
   Entry                0
@@ -275,8 +275,8 @@
 
 
 Function 'foo', abstract, reflectable, debuggable
-    type-params <dart:core::Object T>
-    parameters [dart:core::String 'a1', #lib::Base2::foo::TypeParam/0 'a2', dart:core::int 'a3'] (required: 3)
+    type-params <dart:core::Object* T>
+    parameters [dart:core::String* 'a1', #lib::Base2::foo::TypeParam/0* 'a2', dart:core::int* 'a3'] (required: 3)
     return-type void
 
 Function 'get:bar', getter, abstract, reflectable, debuggable
@@ -284,55 +284,55 @@
     return-type dynamic
 
 Function 'set:bazz', setter, abstract, reflectable, debuggable
-    parameters [dart:core::int 'x'] (required: 1)
+    parameters [dart:core::int* 'x'] (required: 1)
     return-type void
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'B', script = '#lib', abstract
-    extends #lib::Base2
+    extends #lib::Base2*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::B
+    return-type #lib::B*
 
 Bytecode {
   Entry                0
@@ -350,7 +350,7 @@
 
 
 Function 'testSuperCall', reflectable, debuggable
-    parameters [dart:core::int 'x'] (required: 1)
+    parameters [dart:core::int* 'x'] (required: 1)
     return-type dynamic
 
 Bytecode {
@@ -392,7 +392,7 @@
   [0] = ObjectRef ArgDesc num-args 4, num-type-args 1, names []
   [1] = ObjectRef 'foo'
   [2] = ObjectRef < dynamic >
-  [3] = ObjectRef < dart:core::double >
+  [3] = ObjectRef < dart:core::double* >
   [4] = ObjectRef 'a1'
   [5] = ObjectRef const 3.14
   [6] = DirectCall 'dart:core::_InvocationMirror::_allocateInvocationMirror', ArgDesc num-args 4, num-type-args 0, names []
@@ -497,7 +497,7 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = ObjectRef < dart:core::int >
+  [0] = ObjectRef < dart:core::int* >
   [1] = ObjectRef ArgDesc num-args 1, num-type-args 0, names []
   [2] = ObjectRef 'bar'
   [3] = ObjectRef < dynamic >
diff --git a/pkg/vm/testcases/bytecode/switch.dart.expect b/pkg/vm/testcases/bytecode/switch.dart.expect
index 9ce3651..555f7a8 100644
--- a/pkg/vm/testcases/bytecode/switch.dart.expect
+++ b/pkg/vm/testcases/bytecode/switch.dart.expect
@@ -11,8 +11,8 @@
 
 
 Function 'foo1', static, reflectable, debuggable
-    parameters [dart:core::int 'x'] (required: 1)
-    return-type dart:core::int
+    parameters [dart:core::int* 'x'] (required: 1)
+    return-type dart:core::int*
 
 Bytecode {
   Entry                2
@@ -57,8 +57,8 @@
 
 
 Function 'foo2', static, reflectable, debuggable
-    parameters [dart:core::int 'x'] (required: 1)
-    return-type dart:core::int
+    parameters [dart:core::int* 'x'] (required: 1)
+    return-type dart:core::int*
 
 Bytecode {
   Entry                2
@@ -114,8 +114,8 @@
 
 
 Function 'foo3', static, reflectable, debuggable
-    parameters [dart:core::int 'x'] (required: 1)
-    return-type dart:core::int
+    parameters [dart:core::int* 'x'] (required: 1)
+    return-type dart:core::int*
 
 Bytecode {
   Entry                2
diff --git a/pkg/vm/testcases/bytecode/try_blocks.dart.expect b/pkg/vm/testcases/bytecode/try_blocks.dart.expect
index 20f7426..ecb97c5 100644
--- a/pkg/vm/testcases/bytecode/try_blocks.dart.expect
+++ b/pkg/vm/testcases/bytecode/try_blocks.dart.expect
@@ -184,15 +184,15 @@
   [0] = ObjectRef 'danger!'
   [1] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
   [2] = Reserved
-  [3] = Type dart:core::TypeError
+  [3] = Type dart:core::TypeError*
   [4] = InterfaceCall 'dart:core::Object::_simpleInstanceOf', ArgDesc num-args 2, num-type-args 0, names []
   [5] = Reserved
   [6] = ObjectRef 'caught type error'
-  [7] = Type dart:core::AssertionError
+  [7] = Type dart:core::AssertionError*
   [8] = ObjectRef 'caught assertion error '
   [9] = DirectCall 'dart:core::_StringBase::_interpolate', ArgDesc num-args 1, num-type-args 0, names []
   [10] = Reserved
-  [11] = Type dart:core::Error
+  [11] = Type dart:core::Error*
   [12] = ObjectRef 'caught error '
   [13] = ObjectRef ' '
   [14] = Type dynamic
@@ -328,7 +328,7 @@
   [18] = Reserved
   [19] = ClosureFunction 1
   [20] = ObjectRef 'danger bar'
-  [21] = Type dart:core::Error
+  [21] = Type dart:core::Error*
   [22] = InterfaceCall 'dart:core::Object::_simpleInstanceOf', ArgDesc num-args 2, num-type-args 0, names []
   [23] = Reserved
   [24] = ObjectRef 'error '
@@ -436,7 +436,7 @@
 
 
 Function 'testRethrow', static, reflectable, debuggable
-    parameters [dart:core::bool 'cond'] (required: 1)
+    parameters [dart:core::bool* 'cond'] (required: 1)
     return-type dynamic
 
 Bytecode {
@@ -582,7 +582,7 @@
 
 
 Function 'testTryFinally2', static, reflectable, debuggable
-    parameters [dart:core::int 'x'] (required: 1)
+    parameters [dart:core::int* 'x'] (required: 1)
     return-type dynamic
 
 Bytecode {
@@ -828,7 +828,7 @@
   [15] = DynamicCall 'call', ArgDesc num-args 1, num-type-args 0, names []
   [16] = Reserved
 }
-Closure #lib::testTryFinally3::'<anonymous closure>' () -> dart:core::int
+Closure #lib::testTryFinally3::'<anonymous closure>' () -> dart:core::int*
 ClosureCode {
   EntryFixed           1, 6
   Push                 FP[-5]
diff --git a/pkg/vm/testcases/bytecode/type_ops.dart.expect b/pkg/vm/testcases/bytecode/type_ops.dart.expect
index 0036353..ed3f0ce 100644
--- a/pkg/vm/testcases/bytecode/type_ops.dart.expect
+++ b/pkg/vm/testcases/bytecode/type_ops.dart.expect
@@ -9,7 +9,7 @@
 
 Class '', script = '#lib'
 
-Field 'globalVar', type = dart:core::List < dart:core::Iterable null >, reflectable, static
+Field 'globalVar', type = dart:core::List < dart:core::Iterable null* >*, reflectable, static
     value = null
 
 Function 'foo1', static, reflectable, debuggable
@@ -46,17 +46,17 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = Type #lib::B < dart:core::String >
+  [0] = Type #lib::B < dart:core::String* >*
   [1] = InterfaceCall 'dart:core::Object::_simpleInstanceOf', ArgDesc num-args 2, num-type-args 0, names []
   [2] = Reserved
   [3] = ObjectRef '11'
   [4] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
   [5] = Reserved
-  [6] = Type #lib::C < dart:core::String, dart:core::int, dart:core::Object, dynamic >
+  [6] = Type #lib::C < dart:core::String*, dart:core::int*, dart:core::Object*, dynamic >*
   [7] = InterfaceCall 'dart:core::Object::_instanceOf', ArgDesc num-args 4, num-type-args 0, names []
   [8] = Reserved
   [9] = ObjectRef '12'
-  [10] = Type #lib::A < dart:core::int >
+  [10] = Type #lib::A < dart:core::int* >*
   [11] = ObjectRef ' in type cast'
   [12] = SubtypeTestCache
 }
@@ -80,7 +80,7 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = Type dart:core::List < dart:core::Iterable null >
+  [0] = Type dart:core::List < dart:core::Iterable null* >*
   [1] = ObjectRef ''
   [2] = SubtypeTestCache
   [3] = StaticField #lib::globalVar (field)
@@ -101,13 +101,13 @@
 }
 
 Class 'A', script = '#lib'
-    type-params <dart:core::Object T> (args: 1)
-    extends dart:core::Object
+    type-params <dart:core::Object* T> (args: 1)
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::A < #lib::A::TypeParam/0 >
+    return-type #lib::A < #lib::A::TypeParam/0* >*
 
 Bytecode {
   Entry                0
@@ -126,50 +126,50 @@
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'B', script = '#lib'
-    extends #lib::A < dart:core::String >
+    extends #lib::A < dart:core::String* >*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::B < dart:core::String >
+    return-type #lib::B < dart:core::String* >*
 
 Bytecode {
   Entry                0
@@ -186,13 +186,13 @@
 }
 
 Class 'C', script = '#lib'
-    type-params <dart:core::Object T1, dart:core::Object T2, dart:core::Object T3> (args: 4)
-    extends #lib::B < dart:core::String >
+    type-params <dart:core::Object* T1, dart:core::Object* T2, dart:core::Object* T3> (args: 4)
+    extends #lib::B < dart:core::String* >*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::C < dart:core::String, #lib::C::TypeParam/0, #lib::C::TypeParam/1, #lib::C::TypeParam/2 >
+    return-type #lib::C < dart:core::String*, #lib::C::TypeParam/0*, #lib::C::TypeParam/1*, #lib::C::TypeParam/2* >*
 
 Bytecode {
   Entry                0
@@ -209,15 +209,15 @@
 }
 
 Class 'D', script = '#lib'
-    type-params <dart:core::Object P, dart:core::Object Q> (args: 5)
-    extends #lib::C < dart:core::String, dart:core::int, #lib::D::TypeParam/1, #lib::D::TypeParam/0 >
+    type-params <dart:core::Object* P, dart:core::Object* Q> (args: 5)
+    extends #lib::C < dart:core::String*, dart:core::int*, #lib::D::TypeParam/1*, #lib::D::TypeParam/0* >*
 
-Field 'foo', type = dart:core::Map < #lib::D::TypeParam/0, #lib::D::TypeParam/1 >, getter = 'get:foo', setter = 'set:foo', reflectable
+Field 'foo', type = dart:core::Map < #lib::D::TypeParam/0*, #lib::D::TypeParam/1* >*, getter = 'get:foo', setter = 'set:foo', reflectable
     value = null
 
 Function '', constructor, reflectable, debuggable
     parameters [dynamic 'tt'] (required: 1)
-    return-type #lib::D < dart:core::String, dart:core::int, #lib::D::TypeParam/1, #lib::D::TypeParam/0, #lib::D::TypeParam/1 >
+    return-type #lib::D < dart:core::String*, dart:core::int*, #lib::D::TypeParam/1*, #lib::D::TypeParam/0*, #lib::D::TypeParam/1* >*
 
 Bytecode {
   Entry                0
@@ -238,7 +238,7 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = Type dart:core::Map < #lib::D::TypeParam/0, #lib::D::TypeParam/1 >
+  [0] = Type dart:core::Map < #lib::D::TypeParam/0*, #lib::D::TypeParam/1* >*
   [1] = TypeArgumentsField #lib::D
   [2] = ObjectRef ''
   [3] = SubtypeTestCache
@@ -293,15 +293,15 @@
 }
 ConstantPool {
   [0] = TypeArgumentsField #lib::D
-  [1] = Type #lib::A < #lib::D::TypeParam/0 >
+  [1] = Type #lib::A < #lib::D::TypeParam/0* >*
   [2] = InterfaceCall 'dart:core::Object::_instanceOf', ArgDesc num-args 4, num-type-args 0, names []
   [3] = Reserved
   [4] = ObjectRef '21'
   [5] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
   [6] = Reserved
-  [7] = Type #lib::C < dart:core::String, dynamic, #lib::D::TypeParam/1, dart:core::List < #lib::D::TypeParam/0 > >
+  [7] = Type #lib::C < dart:core::String*, dynamic, #lib::D::TypeParam/1*, dart:core::List < #lib::D::TypeParam/0* >* >*
   [8] = ObjectRef '22'
-  [9] = Type dart:core::Map < #lib::D::TypeParam/0, #lib::D::TypeParam/1 >
+  [9] = Type dart:core::Map < #lib::D::TypeParam/0*, #lib::D::TypeParam/1* >*
   [10] = ObjectRef ''
   [11] = SubtypeTestCache
   [12] = InterfaceCall '#lib::D::set:foo', ArgDesc num-args 2, num-type-args 0, names []
@@ -310,7 +310,7 @@
 
 
 Function 'foo3', reflectable, debuggable
-    type-params <dart:core::Object T1, dart:core::Object T2>
+    type-params <dart:core::Object* T1, dart:core::Object* T2>
     parameters [dynamic 'z'] (required: 1)
     return-type dynamic
 
@@ -350,16 +350,16 @@
   ReturnTOS
 }
 ConstantPool {
-  [0] = Type #lib::A < #lib::D::foo3::TypeParam/0 >
+  [0] = Type #lib::A < #lib::D::foo3::TypeParam/0* >*
   [1] = InterfaceCall 'dart:core::Object::_instanceOf', ArgDesc num-args 4, num-type-args 0, names []
   [2] = Reserved
   [3] = ObjectRef '31'
   [4] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
   [5] = Reserved
   [6] = TypeArgumentsField #lib::D
-  [7] = Type #lib::C < dart:core::String, dart:core::Map < #lib::D::foo3::TypeParam/0, #lib::D::TypeParam/0 >, dart:core::List < #lib::D::foo3::TypeParam/1 >, #lib::D::TypeParam/1 >
+  [7] = Type #lib::C < dart:core::String*, dart:core::Map < #lib::D::foo3::TypeParam/0*, #lib::D::TypeParam/0* >*, dart:core::List < #lib::D::foo3::TypeParam/1* >*, #lib::D::TypeParam/1* >*
   [8] = ObjectRef '32'
-  [9] = Type dart:core::Map < #lib::D::foo3::TypeParam/1, #lib::D::TypeParam/1 >
+  [9] = Type dart:core::Map < #lib::D::foo3::TypeParam/1*, #lib::D::TypeParam/1* >*
   [10] = ObjectRef ' in type cast'
   [11] = SubtypeTestCache
   [12] = InterfaceCall 'dart:core::Map::get:values', ArgDesc num-args 1, num-type-args 0, names []
@@ -369,7 +369,7 @@
 
 Function 'foo4', reflectable, debuggable
     parameters [dynamic 'w'] (required: 1)
-    return-type dart:core::Map < #lib::D::TypeParam/0, #lib::D::TypeParam/1 >
+    return-type dart:core::Map < #lib::D::TypeParam/0*, #lib::D::TypeParam/1* >*
 
 Bytecode {
   Entry                2
@@ -406,8 +406,8 @@
 }
 ConstantPool {
   [0] = TypeArgumentsField #lib::D
-  [1] = ObjectRef < dart:core::Map < #lib::D::TypeParam/0, #lib::D::TypeParam/1 > >
-  [2] = Type dart:core::Map < #lib::D::TypeParam/0, #lib::D::TypeParam/1 >
+  [1] = ObjectRef < dart:core::Map < #lib::D::TypeParam/0*, #lib::D::TypeParam/1* >* >
+  [2] = Type dart:core::Map < #lib::D::TypeParam/0*, #lib::D::TypeParam/1* >*
   [3] = ObjectRef ''
   [4] = SubtypeTestCache
   [5] = DirectCall 'dart:core::List::_fromLiteral (constructor)', ArgDesc num-args 2, num-type-args 0, names []
@@ -416,14 +416,14 @@
 }
 
 Class 'E', script = '#lib'
-    type-params <dart:core::String P> (args: 1)
-    extends dart:core::Object
+    type-params <dart:core::String* P> (args: 1)
+    extends dart:core::Object*
 
 
 Function '', factory, static, reflectable, debuggable
-    type-params <dart:core::String P>
+    type-params <dart:core::String* P>
     parameters [] (required: 0)
-    return-type #lib::E < #lib::E:: (constructor)::TypeParam/0 >
+    return-type #lib::E < #lib::E:: (constructor)::TypeParam/0* >*
 
 Bytecode {
   Entry                0
@@ -436,8 +436,8 @@
 
 
 Function 'foo6', reflectable, debuggable
-    type-params <#lib::E::TypeParam/0 T, dart:core::List < #lib::E::foo6::TypeParam/0 > U>
-    parameters [dart:core::Map < #lib::E::foo6::TypeParam/0, #lib::E::foo6::TypeParam/1 > 'map'] (required: 1)
+    type-params <#lib::E::TypeParam/0* T, dart:core::List < #lib::E::foo6::TypeParam/0* >* U>
+    parameters [dart:core::Map < #lib::E::foo6::TypeParam/0*, #lib::E::foo6::TypeParam/1* >* 'map'] (required: 1)
     return-type void
 
 Bytecode {
@@ -466,60 +466,60 @@
 Default function type arguments: CP#1
 ConstantPool {
   [0] = TypeArgumentsField #lib::E
-  [1] = ObjectRef < #lib::E::TypeParam/0, dart:core::List < #lib::E::TypeParam/0 > >
-  [2] = Type #lib::E::foo6::TypeParam/0
-  [3] = Type #lib::E::TypeParam/0
+  [1] = ObjectRef < #lib::E::TypeParam/0*, dart:core::List < #lib::E::TypeParam/0* >* >
+  [2] = Type #lib::E::foo6::TypeParam/0*
+  [3] = Type #lib::E::TypeParam/0*
   [4] = ObjectRef 'T'
 }
 
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'F', script = '#lib', abstract
-    type-params <dart:core::Object T> (args: 1)
-    extends dart:core::Object
+    type-params <dart:core::Object* T> (args: 1)
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::F < #lib::F::TypeParam/0 >
+    return-type #lib::F < #lib::F::TypeParam/0* >*
 
 Bytecode {
   Entry                0
@@ -537,62 +537,62 @@
 
 
 Function 'foo7', abstract, reflectable, debuggable
-    type-params <#lib::F::TypeParam/0 Q>
-    parameters [#lib::F::foo7::TypeParam/0 'a', dart:core::num 'b', #lib::F::TypeParam/0 'c'] (required: 3)
+    type-params <#lib::F::TypeParam/0* Q>
+    parameters [#lib::F::foo7::TypeParam/0* 'a', dart:core::num* 'b', #lib::F::TypeParam/0* 'c'] (required: 3)
     return-type void
 
 Function 'foo8', abstract, reflectable, debuggable
-    type-params <#lib::F::TypeParam/0 Q>
-    parameters [#lib::F::foo8::TypeParam/0 'a', dart:core::num 'b', #lib::F::TypeParam/0 'c'] (required: 3)
+    type-params <#lib::F::TypeParam/0* Q>
+    parameters [#lib::F::foo8::TypeParam/0* 'a', dart:core::num* 'b', #lib::F::TypeParam/0* 'c'] (required: 3)
     return-type void
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'G', script = '#lib'
-    type-params <dart:core::Object T> (args: 1)
-    extends dart:core::Object
+    type-params <dart:core::Object* T> (args: 1)
+    extends dart:core::Object*
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::G < #lib::G::TypeParam/0 >
+    return-type #lib::G < #lib::G::TypeParam/0* >*
 
 Bytecode {
   Entry                0
@@ -610,8 +610,8 @@
 
 
 Function 'foo7', reflectable, debuggable
-    type-params <#lib::G::TypeParam/0 Q>
-    parameters [#lib::G::foo7::TypeParam/0 'a', dart:core::int 'b', #lib::G::TypeParam/0 'c'] (required: 3)
+    type-params <#lib::G::TypeParam/0* Q>
+    parameters [#lib::G::foo7::TypeParam/0* 'a', dart:core::int* 'b', #lib::G::TypeParam/0* 'c'] (required: 3)
     return-type void
 
 Bytecode {
@@ -647,63 +647,63 @@
 Default function type arguments: CP#6
 ConstantPool {
   [0] = TypeArgumentsField #lib::G
-  [1] = Type #lib::G::foo7::TypeParam/0
-  [2] = Type #lib::G::TypeParam/0
+  [1] = Type #lib::G::foo7::TypeParam/0*
+  [2] = Type #lib::G::TypeParam/0*
   [3] = ObjectRef 'Q'
   [4] = ObjectRef 'c'
   [5] = SubtypeTestCache
-  [6] = ObjectRef < #lib::G::TypeParam/0 >
+  [6] = ObjectRef < #lib::G::TypeParam/0* >
 }
 
 
 Function 'get:_identityHashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function '_instanceOf', abstract, debuggable
     parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOf', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfTrue', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '_simpleInstanceOfFalse', abstract, debuggable
     parameters [dynamic 'type'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function '==', abstract, debuggable
     parameters [dynamic 'other'] (required: 1)
-    return-type dart:core::bool
+    return-type dart:core::bool*
 
 Function 'get:hashCode', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::int
+    return-type dart:core::int*
 
 Function 'toString', abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::String
+    return-type dart:core::String*
 
 Function 'noSuchMethod', abstract, debuggable
-    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    parameters [dart:core::Invocation* 'invocation'] (required: 1)
     return-type dynamic
 
 Function 'get:runtimeType', getter, abstract, debuggable
     parameters [] (required: 0)
-    return-type dart:core::Type
+    return-type dart:core::Type*
 Class 'H', script = '#lib'
-    type-params <dart:core::Object T> (args: 1)
-    extends #lib::G < #lib::H::TypeParam/0 >
-    implements [#lib::F < #lib::H::TypeParam/0 >]
+    type-params <dart:core::Object* T> (args: 1)
+    extends #lib::G < #lib::H::TypeParam/0* >*
+    implements [#lib::F < #lib::H::TypeParam/0* >*]
 
 
 Function '', constructor, reflectable
     parameters [] (required: 0)
-    return-type #lib::H < #lib::H::TypeParam/0 >
+    return-type #lib::H < #lib::H::TypeParam/0* >*
 
 Bytecode {
   Entry                0
@@ -721,8 +721,8 @@
 
 
 Function 'foo8', reflectable, debuggable
-    type-params <#lib::H::TypeParam/0 Q>
-    parameters [#lib::H::foo8::TypeParam/0 'a', dart:core::int 'b', #lib::H::TypeParam/0 'c'] (required: 3)
+    type-params <#lib::H::TypeParam/0* Q>
+    parameters [#lib::H::foo8::TypeParam/0* 'a', dart:core::int* 'b', #lib::H::TypeParam/0* 'c'] (required: 3)
     return-type void
 
 Bytecode {
@@ -765,21 +765,21 @@
 Default function type arguments: CP#9
 ConstantPool {
   [0] = TypeArgumentsField #lib::H
-  [1] = Type #lib::H::foo8::TypeParam/0
-  [2] = Type #lib::H::TypeParam/0
+  [1] = Type #lib::H::foo8::TypeParam/0*
+  [2] = Type #lib::H::TypeParam/0*
   [3] = ObjectRef 'Q'
   [4] = ObjectRef 'c'
   [5] = SubtypeTestCache
-  [6] = Type dart:core::int
+  [6] = Type dart:core::int*
   [7] = ObjectRef 'b'
   [8] = SubtypeTestCache
-  [9] = ObjectRef < #lib::H::TypeParam/0 >
+  [9] = ObjectRef < #lib::H::TypeParam/0* >
 }
 
 
 Function 'foo7', reflectable, debuggable, forwarding-stub
-    type-params <#lib::H::TypeParam/0 Q>
-    parameters [#lib::H::foo7::TypeParam/0 'a', dart:core::num 'b', #lib::H::TypeParam/0 'c'] (required: 3)
+    type-params <#lib::H::TypeParam/0* Q>
+    parameters [#lib::H::foo7::TypeParam/0* 'a', dart:core::num* 'b', #lib::H::TypeParam/0* 'c'] (required: 3)
     return-type void
 
 Bytecode {
@@ -815,31 +815,34 @@
   PushConstant         CP#7
   AssertAssignable     1, CP#8
   Drop1
+  PushNull
   Push                 r0
+  InstantiateTypeArgumentsTOS 0, CP#9
   Push                 FP[-8]
   Push                 FP[-7]
   Push                 FP[-6]
   Push                 FP[-5]
-  UncheckedDirectCall  CP#9, 5
+  UncheckedDirectCall  CP#10, 5
   ReturnTOS
 }
 Parameter flags: [0, 1, 2]
-Forwarding stub target: CP#11
-Default function type arguments: CP#12
+Forwarding stub target: CP#12
+Default function type arguments: CP#13
 ConstantPool {
   [0] = TypeArgumentsField #lib::H
-  [1] = Type #lib::H::foo7::TypeParam/0
-  [2] = Type #lib::H::TypeParam/0
+  [1] = Type #lib::H::foo7::TypeParam/0*
+  [2] = Type #lib::H::TypeParam/0*
   [3] = ObjectRef 'Q'
   [4] = ObjectRef 'c'
   [5] = SubtypeTestCache
-  [6] = Type dart:core::int
+  [6] = Type dart:core::int*
   [7] = ObjectRef 'b'
   [8] = SubtypeTestCache
-  [9] = DirectCall '#lib::G::foo7', ArgDesc num-args 4, num-type-args 1, names []
-  [10] = Reserved
-  [11] = ObjectRef #lib::G::foo7
-  [12] = ObjectRef < #lib::H::TypeParam/0 >
+  [9] = ObjectRef < #lib::H::foo7::TypeParam/0* >
+  [10] = DirectCall '#lib::G::foo7', ArgDesc num-args 4, num-type-args 1, names []
+  [11] = Reserved
+  [12] = ObjectRef #lib::G::foo7
+  [13] = ObjectRef < #lib::H::TypeParam/0* >
 }
 
 
diff --git a/pkg/vm_service/lib/src/vm_service.dart b/pkg/vm_service/lib/src/vm_service.dart
index c3bc86a..7f843c3 100644
--- a/pkg/vm_service/lib/src/vm_service.dart
+++ b/pkg/vm_service/lib/src/vm_service.dart
@@ -5430,10 +5430,11 @@
 
   /// The amount of non-Dart memory that is retained by Dart objects. For
   /// example, memory associated with Dart objects through APIs such as
-  /// Dart_NewWeakPersistentHandle and Dart_NewExternalTypedData.  This usage is
-  /// only as accurate as the values supplied to these APIs from the VM embedder
-  /// or native extensions. This external memory applies GC pressure, but is
-  /// separate from heapUsage and heapCapacity.
+  /// Dart_NewFinalizableHandle, Dart_NewWeakPersistentHandle and
+  /// Dart_NewExternalTypedData.  This usage is only as accurate as the values
+  /// supplied to these APIs from the VM embedder or native extensions. This
+  /// external memory applies GC pressure, but is separate from heapUsage and
+  /// heapCapacity.
   int externalUsage;
 
   /// The total capacity of the heap in bytes. This is the amount of memory used
diff --git a/runtime/bin/BUILD.gn b/runtime/bin/BUILD.gn
index 609fa42..fb682c0 100644
--- a/runtime/bin/BUILD.gn
+++ b/runtime/bin/BUILD.gn
@@ -199,7 +199,7 @@
     }
 
     if (is_mac) {
-      libs = [
+      frameworks = [
         "CoreFoundation.framework",
         "CoreServices.framework",
       ]
@@ -445,13 +445,13 @@
     defines = []
     deps = [ "//third_party/zlib" ] + extra_deps
     if (is_mac || is_ios) {
-      libs = [
+      frameworks = [
         "CoreFoundation.framework",
         "Security.framework",
       ]
 
       if (is_mac) {
-        libs += [ "CoreServices.framework" ]
+        frameworks += [ "CoreServices.framework" ]
       }
     }
 
diff --git a/runtime/bin/dartdev_isolate.cc b/runtime/bin/dartdev_isolate.cc
index f87dc6f..6e0ed3d 100644
--- a/runtime/bin/dartdev_isolate.cc
+++ b/runtime/bin/dartdev_isolate.cc
@@ -173,13 +173,23 @@
 void DartDevIsolate::DartDevRunner::RunCallback(uword args) {
   MonitorLocker locker_(DartDevRunner::monitor_);
   DartDevRunner* runner = reinterpret_cast<DartDevRunner*>(args);
+
+  // TODO(bkonyi): bring up DartDev from kernel instead of a app-jit snapshot.
+  // See https://github.com/dart-lang/sdk/issues/42804
   const char* dartdev_path = DartDevIsolate::TryResolveDartDevSnapshotPath();
   if (dartdev_path == nullptr) {
     ProcessError("Failed to find DartDev snapshot.", kErrorExitCode);
     return;
   }
+
+  // Hardcode flags to match those used to generate the DartDev snapshot.
   Dart_IsolateFlags flags;
   Dart_IsolateFlagsInitialize(&flags);
+  flags.enable_asserts = false;
+  flags.null_safety = false;
+  flags.use_field_guards = true;
+  flags.use_osr = true;
+
   char* error;
   Dart_Isolate dartdev_isolate = runner->create_isolate_(
       dartdev_path, "dartdev", nullptr, runner->packages_file_, &flags,
diff --git a/runtime/bin/directory.cc b/runtime/bin/directory.cc
index 4a5629e..9920d0f 100644
--- a/runtime/bin/directory.cc
+++ b/runtime/bin/directory.cc
@@ -232,9 +232,7 @@
   }
 }
 
-static void ReleaseListing(void* isolate_callback_data,
-                           Dart_WeakPersistentHandle handle,
-                           void* peer) {
+static void ReleaseListing(void* isolate_callback_data, void* peer) {
   AsyncDirectoryListing* listing =
       reinterpret_cast<AsyncDirectoryListing*>(peer);
   listing->Release();
@@ -247,8 +245,8 @@
       DartUtils::GetIntptrValue(Dart_GetNativeArgument(args, 1));
   AsyncDirectoryListing* listing =
       reinterpret_cast<AsyncDirectoryListing*>(listing_pointer);
-  Dart_NewWeakPersistentHandle(dart_this, reinterpret_cast<void*>(listing),
-                               sizeof(*listing), ReleaseListing);
+  Dart_NewFinalizableHandle(dart_this, reinterpret_cast<void*>(listing),
+                            sizeof(*listing), ReleaseListing);
   Dart_Handle result = Dart_SetNativeInstanceField(
       dart_this, kAsyncDirectoryListerFieldIndex, listing_pointer);
   ThrowIfError(result);
diff --git a/runtime/bin/file.cc b/runtime/bin/file.cc
index 886970e..29a7c11 100644
--- a/runtime/bin/file.cc
+++ b/runtime/bin/file.cc
@@ -68,9 +68,7 @@
   Dart_SetIntegerReturnValue(args, file_pointer);
 }
 
-static void ReleaseFile(void* isolate_callback_data,
-                        Dart_WeakPersistentHandle handle,
-                        void* peer) {
+static void ReleaseFile(void* isolate_callback_data, void* peer) {
   File* file = reinterpret_cast<File*>(peer);
   file->Release();
 }
@@ -79,9 +77,9 @@
   Dart_Handle dart_this = ThrowIfError(Dart_GetNativeArgument(args, 0));
   intptr_t file_pointer = DartUtils::GetNativeIntptrArgument(args, 1);
   File* file = reinterpret_cast<File*>(file_pointer);
-  Dart_WeakPersistentHandle handle = Dart_NewWeakPersistentHandle(
+  Dart_FinalizableHandle handle = Dart_NewFinalizableHandle(
       dart_this, reinterpret_cast<void*>(file), sizeof(*file), ReleaseFile);
-  file->SetWeakHandle(handle);
+  file->SetFinalizableHandle(handle);
   SetFile(dart_this, file_pointer);
 }
 
@@ -148,7 +146,7 @@
     return;
   }
   file->Close();
-  file->DeleteWeakHandle(Dart_CurrentIsolate());
+  file->DeleteFinalizableHandle(Dart_CurrentIsolate(), dart_this);
   file->Release();
 
   ThrowIfError(
diff --git a/runtime/bin/file.h b/runtime/bin/file.h
index 9e68346..98d3748 100644
--- a/runtime/bin/file.h
+++ b/runtime/bin/file.h
@@ -184,21 +184,23 @@
   // Calls the platform-specific functions to close the file.
   void Close();
 
-  // Returns the weak persistent handle for the File's Dart wrapper.
-  Dart_WeakPersistentHandle WeakHandle() const { return weak_handle_; }
-
-  // Set the weak persistent handle for the File's Dart wrapper.
-  void SetWeakHandle(Dart_WeakPersistentHandle handle) {
-    ASSERT(weak_handle_ == NULL);
-    weak_handle_ = handle;
+  // Returns the finalizable handle for the File's Dart wrapper.
+  Dart_FinalizableHandle FinalizableHandle() const {
+    return finalizable_handle_;
   }
 
-  // Deletes the weak persistent handle for the File's Dart wrapper. Call
+  // Set the finalizable handle for the File's Dart wrapper.
+  void SetFinalizableHandle(Dart_FinalizableHandle handle) {
+    ASSERT(finalizable_handle_ == NULL);
+    finalizable_handle_ = handle;
+  }
+
+  // Deletes the finalizable handle for the File's Dart wrapper. Call
   // when the file is explicitly closed and the finalizer is no longer
   // needed.
-  void DeleteWeakHandle(Dart_Isolate isolate) {
-    Dart_DeleteWeakPersistentHandle(weak_handle_);
-    weak_handle_ = NULL;
+  void DeleteFinalizableHandle(Dart_Isolate isolate, Dart_Handle strong_ref) {
+    Dart_DeleteFinalizableHandle(finalizable_handle_, strong_ref);
+    finalizable_handle_ = NULL;
   }
 
   // Open the file with the given path. The file is always opened for
@@ -319,7 +321,7 @@
 
  private:
   explicit File(FileHandle* handle)
-      : ReferenceCounted(), handle_(handle), weak_handle_(NULL) {}
+      : ReferenceCounted(), handle_(handle), finalizable_handle_(NULL) {}
 
   ~File();
 
@@ -330,10 +332,10 @@
   // FileHandle is an OS specific class which stores data about the file.
   FileHandle* handle_;  // OS specific handle for the file.
 
-  // We retain the weak handle because we can do cleanup eagerly when Dart code
-  // calls closeSync(). In that case, we delete the weak handle so that the
-  // finalizer doesn't run.
-  Dart_WeakPersistentHandle weak_handle_;
+  // We retain the finalizable handle because we can do cleanup eagerly when
+  // Dart code calls closeSync(). In that case, we delete the finalizable
+  // handle so that the finalizer doesn't run.
+  Dart_FinalizableHandle finalizable_handle_;
 
   friend class ReferenceCounted<File>;
   DISALLOW_COPY_AND_ASSIGN(File);
diff --git a/runtime/bin/file_win.cc b/runtime/bin/file_win.cc
index 8023814..848036a 100644
--- a/runtime/bin/file_win.cc
+++ b/runtime/bin/file_win.cc
@@ -796,13 +796,18 @@
   return _wutime64(system_name.wide(), &times) == 0;
 }
 
+// Keep this function synchronized with the behavior
+// of `FileSystemEntity.isAbsolute` in file_system_entity.dart.
 bool File::IsAbsolutePath(const char* pathname) {
-  // Should we consider network paths?
-  if (pathname == NULL) {
-    return false;
-  }
-  return ((strlen(pathname) > 2) && (pathname[1] == ':') &&
-          ((pathname[2] == '\\') || (pathname[2] == '/')));
+  if (pathname == NULL) return false;
+  char first = pathname[0];
+  if (pathname == 0) return false;
+  char second = pathname[1];
+  if (first == '\\' && second == '\\') return true;
+  if (second != ':') return false;
+  first |= 0x20;
+  char third = pathname[2];
+  return (first >= 'a') && (first <= 'z') && (third == '\\' || third == '/');
 }
 
 const char* File::GetCanonicalPath(Namespace* namespc,
diff --git a/runtime/bin/filter.cc b/runtime/bin/filter.cc
index c7eb4db..53f6967 100644
--- a/runtime/bin/filter.cc
+++ b/runtime/bin/filter.cc
@@ -256,9 +256,7 @@
   }
 }
 
-static void DeleteFilter(void* isolate_data,
-                         Dart_WeakPersistentHandle handle,
-                         void* filter_pointer) {
+static void DeleteFilter(void* isolate_data, void* filter_pointer) {
   Filter* filter = reinterpret_cast<Filter*>(filter_pointer);
   delete filter;
 }
@@ -272,8 +270,8 @@
   if (Dart_IsError(err)) {
     return err;
   }
-  Dart_NewWeakPersistentHandle(filter, reinterpret_cast<void*>(filter_pointer),
-                               size, DeleteFilter);
+  Dart_NewFinalizableHandle(filter, reinterpret_cast<void*>(filter_pointer),
+                            size, DeleteFilter);
   return err;
 }
 
diff --git a/runtime/bin/io_natives.cc b/runtime/bin/io_natives.cc
index 6ee986d..6c36240 100644
--- a/runtime/bin/io_natives.cc
+++ b/runtime/bin/io_natives.cc
@@ -82,6 +82,7 @@
   V(Filter_Process, 4)                                                         \
   V(Filter_Processed, 3)                                                       \
   V(InternetAddress_Parse, 1)                                                  \
+  V(InternetAddress_ParseScopedLinkLocalAddress, 1)                            \
   V(InternetAddress_RawAddrToString, 1)                                        \
   V(IOService_NewServicePort, 0)                                               \
   V(Namespace_Create, 2)                                                       \
diff --git a/runtime/bin/loader.cc b/runtime/bin/loader.cc
index e5c869a..a058ebb 100644
--- a/runtime/bin/loader.cc
+++ b/runtime/bin/loader.cc
@@ -145,9 +145,7 @@
   return Dart_Null();
 }
 #else
-static void MallocFinalizer(void* isolate_callback_data,
-                            Dart_WeakPersistentHandle handle,
-                            void* peer) {
+static void MallocFinalizer(void* isolate_callback_data, void* peer) {
   free(peer);
 }
 
@@ -185,8 +183,8 @@
     }
     result = Dart_NewExternalTypedData(Dart_TypedData_kUint8, kernel_buffer,
                                        kernel_buffer_size);
-    Dart_NewWeakPersistentHandle(result, kernel_buffer, kernel_buffer_size,
-                                 MallocFinalizer);
+    Dart_NewFinalizableHandle(result, kernel_buffer, kernel_buffer_size,
+                              MallocFinalizer);
     return result;
   }
   if (tag == Dart_kImportExtensionTag) {
diff --git a/runtime/bin/namespace.cc b/runtime/bin/namespace.cc
index c322c52..fd5a091 100644
--- a/runtime/bin/namespace.cc
+++ b/runtime/bin/namespace.cc
@@ -16,9 +16,7 @@
 
 static const int kNamespaceNativeFieldIndex = 0;
 
-static void ReleaseNamespace(void* isolate_callback_data,
-                             Dart_WeakPersistentHandle handle,
-                             void* peer) {
+static void ReleaseNamespace(void* isolate_callback_data, void* peer) {
   Namespace* namespc = reinterpret_cast<Namespace*>(peer);
   ASSERT(namespc != NULL);
   namespc->Release();
@@ -84,8 +82,8 @@
 
   // Set up a finalizer for the Dart object so that we can do any necessary
   // platform-specific cleanup for the namespc.
-  Dart_NewWeakPersistentHandle(namespc_obj, reinterpret_cast<void*>(namespc),
-                               sizeof(*namespc), ReleaseNamespace);
+  Dart_NewFinalizableHandle(namespc_obj, reinterpret_cast<void*>(namespc),
+                            sizeof(*namespc), ReleaseNamespace);
   Dart_SetReturnValue(args, namespc_obj);
 }
 
diff --git a/runtime/bin/secure_socket_filter.cc b/runtime/bin/secure_socket_filter.cc
index 56060ba..a21bc8e 100644
--- a/runtime/bin/secure_socket_filter.cc
+++ b/runtime/bin/secure_socket_filter.cc
@@ -62,9 +62,7 @@
   return filter;
 }
 
-static void DeleteFilter(void* isolate_data,
-                         Dart_WeakPersistentHandle handle,
-                         void* context_pointer) {
+static void DeleteFilter(void* isolate_data, void* context_pointer) {
   SSLFilter* filter = reinterpret_cast<SSLFilter*>(context_pointer);
   filter->Release();
 }
@@ -78,8 +76,8 @@
       dart_this, SSLFilter::kSSLFilterNativeFieldIndex,
       reinterpret_cast<intptr_t>(filter));
   RETURN_IF_ERROR(err);
-  Dart_NewWeakPersistentHandle(dart_this, reinterpret_cast<void*>(filter),
-                               SSLFilter::kApproximateSize, DeleteFilter);
+  Dart_NewFinalizableHandle(dart_this, reinterpret_cast<void*>(filter),
+                            SSLFilter::kApproximateSize, DeleteFilter);
   return Dart_Null();
 }
 
diff --git a/runtime/bin/security_context.cc b/runtime/bin/security_context.cc
index 5d649df..3b98b30 100644
--- a/runtime/bin/security_context.cc
+++ b/runtime/bin/security_context.cc
@@ -93,9 +93,7 @@
   return context;
 }
 
-static void DeleteSecurityContext(void* isolate_data,
-                                  Dart_WeakPersistentHandle handle,
-                                  void* context_pointer) {
+static void DeleteSecurityContext(void* isolate_data, void* context_pointer) {
   SSLCertContext* context = static_cast<SSLCertContext*>(context_pointer);
   context->Release();
 }
@@ -109,15 +107,13 @@
       dart_this, SSLCertContext::kSecurityContextNativeFieldIndex,
       reinterpret_cast<intptr_t>(context));
   RETURN_IF_ERROR(err);
-  Dart_NewWeakPersistentHandle(dart_this, context,
-                               SSLCertContext::kApproximateSize,
-                               DeleteSecurityContext);
+  Dart_NewFinalizableHandle(dart_this, context,
+                            SSLCertContext::kApproximateSize,
+                            DeleteSecurityContext);
   return Dart_Null();
 }
 
-static void ReleaseCertificate(void* isolate_data,
-                               Dart_WeakPersistentHandle handle,
-                               void* context_pointer) {
+static void ReleaseCertificate(void* isolate_data, void* context_pointer) {
   X509* cert = reinterpret_cast<X509*>(context_pointer);
   X509_free(cert);
 }
@@ -158,9 +154,9 @@
   const intptr_t approximate_size_of_certificate =
       sizeof(*certificate) + EstimateX509Size(certificate);
   ASSERT(approximate_size_of_certificate > 0);
-  Dart_NewWeakPersistentHandle(result, reinterpret_cast<void*>(certificate),
-                               approximate_size_of_certificate,
-                               ReleaseCertificate);
+  Dart_NewFinalizableHandle(result, reinterpret_cast<void*>(certificate),
+                            approximate_size_of_certificate,
+                            ReleaseCertificate);
   return result;
 }
 
diff --git a/runtime/bin/socket.cc b/runtime/bin/socket.cc
index ac3814f..ec90206 100644
--- a/runtime/bin/socket.cc
+++ b/runtime/bin/socket.cc
@@ -1253,9 +1253,7 @@
   Dart_SetBooleanReturnValue(args, available);
 }
 
-static void NormalSocketFinalizer(void* isolate_data,
-                                  Dart_WeakPersistentHandle handle,
-                                  void* data) {
+static void NormalSocketFinalizer(void* isolate_data, void* data) {
   Socket* socket = reinterpret_cast<Socket*>(data);
   if (socket->fd() >= 0) {
     const int64_t flags = 1 << kCloseCommand;
@@ -1266,9 +1264,7 @@
   socket->Release();
 }
 
-static void ListeningSocketFinalizer(void* isolate_data,
-                                     Dart_WeakPersistentHandle handle,
-                                     void* data) {
+static void ListeningSocketFinalizer(void* isolate_data, void* data) {
   Socket* socket = reinterpret_cast<Socket*>(data);
   if (socket->fd() >= 0) {
     const int64_t flags = (1 << kListeningSocket) | (1 << kCloseCommand);
@@ -1279,9 +1275,7 @@
   socket->Release();
 }
 
-static void StdioSocketFinalizer(void* isolate_data,
-                                 Dart_WeakPersistentHandle handle,
-                                 void* data) {
+static void StdioSocketFinalizer(void* isolate_data, void* data) {
   Socket* socket = reinterpret_cast<Socket*>(data);
   if (socket->fd() >= 0) {
     socket->CloseFd();
@@ -1289,9 +1283,7 @@
   socket->Release();
 }
 
-static void SignalSocketFinalizer(void* isolate_data,
-                                  Dart_WeakPersistentHandle handle,
-                                  void* data) {
+static void SignalSocketFinalizer(void* isolate_data, void* data) {
   Socket* socket = reinterpret_cast<Socket*>(data);
   if (socket->fd() >= 0) {
     Process::ClearSignalHandlerByFd(socket->fd(), socket->isolate_port());
@@ -1312,7 +1304,7 @@
   if (Dart_IsError(err)) {
     Dart_PropagateError(err);
   }
-  Dart_WeakPersistentHandleFinalizer callback;
+  Dart_HandleFinalizer callback;
   switch (finalizer) {
     case kFinalizerNormal:
       callback = NormalSocketFinalizer;
@@ -1332,8 +1324,8 @@
       break;
   }
   if (callback != NULL) {
-    Dart_NewWeakPersistentHandle(handle, reinterpret_cast<void*>(socket),
-                                 sizeof(Socket), callback);
+    Dart_NewFinalizableHandle(handle, reinterpret_cast<void*>(socket),
+                              sizeof(Socket), callback);
   }
 }
 
diff --git a/runtime/bin/socket_base.cc b/runtime/bin/socket_base.cc
index 9fdd8ba..4e61ce4 100644
--- a/runtime/bin/socket_base.cc
+++ b/runtime/bin/socket_base.cc
@@ -243,6 +243,31 @@
   }
 }
 
+void FUNCTION_NAME(InternetAddress_ParseScopedLinkLocalAddress)(
+    Dart_NativeArguments args) {
+  const char* address =
+      DartUtils::GetStringValue(Dart_GetNativeArgument(args, 0));
+  // This must be an IPv6 address.
+  intptr_t type = 1;
+  ASSERT(address != NULL);
+  OSError* os_error = NULL;
+  AddressList<SocketAddress>* addresses =
+      SocketBase::LookupAddress(address, type, &os_error);
+  if (addresses != NULL) {
+    Dart_Handle list = Dart_NewList(addresses->count());
+    for (intptr_t i = 0; i < addresses->count(); i++) {
+      SocketAddress* addr = addresses->GetAt(i);
+      Dart_ListSetAt(
+          list, i, Dart_NewInteger(SocketAddress::GetAddrScope(addr->addr())));
+    }
+    delete addresses;
+    Dart_SetReturnValue(args, list);
+  } else {
+    Dart_SetReturnValue(args, DartUtils::NewDartOSError(os_error));
+    delete os_error;
+  }
+}
+
 void FUNCTION_NAME(InternetAddress_RawAddrToString)(Dart_NativeArguments args) {
   RawAddr addr;
   SocketAddress::GetSockAddr(Dart_GetNativeArgument(args, 0), &addr);
diff --git a/runtime/bin/sync_socket.cc b/runtime/bin/sync_socket.cc
index 99cf792..c8e7714 100644
--- a/runtime/bin/sync_socket.cc
+++ b/runtime/bin/sync_socket.cc
@@ -313,9 +313,7 @@
   delete addr;
 }
 
-static void SynchronousSocketFinalizer(void* isolate_data,
-                                       Dart_WeakPersistentHandle handle,
-                                       void* data) {
+static void SynchronousSocketFinalizer(void* isolate_data, void* data) {
   SynchronousSocket* socket = reinterpret_cast<SynchronousSocket*>(data);
   if (socket->fd() >= 0) {
     SynchronousSocket::Close(socket->fd());
@@ -334,9 +332,9 @@
     return error;
   }
 
-  Dart_NewWeakPersistentHandle(handle, reinterpret_cast<void*>(socket),
-                               sizeof(SynchronousSocket),
-                               SynchronousSocketFinalizer);
+  Dart_NewFinalizableHandle(handle, reinterpret_cast<void*>(socket),
+                            sizeof(SynchronousSocket),
+                            SynchronousSocketFinalizer);
   return error;
 }
 
diff --git a/runtime/include/dart_api.h b/runtime/include/dart_api.h
index 8c6afd4..978d67b 100644
--- a/runtime/include/dart_api.h
+++ b/runtime/include/dart_api.h
@@ -239,17 +239,26 @@
  * The type Dart_PersistentHandle is a Dart_Handle and it is used to
  * document that a persistent handle is expected as a parameter to a call
  * or the return value from a call is a persistent handle.
+ *
+ * FinalizableHandles are persistent handles which are auto deleted when
+ * the object is garbage collected. It is never safe to use these handles
+ * unless you know the object is still reachable.
+ *
+ * WeakPersistentHandles are persistent handles which are auto deleted
+ * when the object is garbage collected.
  */
 typedef struct _Dart_Handle* Dart_Handle;
 typedef Dart_Handle Dart_PersistentHandle;
 typedef struct _Dart_WeakPersistentHandle* Dart_WeakPersistentHandle;
-// These three structs are versioned by DART_API_DL_MAJOR_VERSION, bump the
+typedef struct _Dart_FinalizableHandle* Dart_FinalizableHandle;
+// These structs are versioned by DART_API_DL_MAJOR_VERSION, bump the
 // version when changing this struct.
 
 typedef void (*Dart_WeakPersistentHandleFinalizer)(
     void* isolate_callback_data,
     Dart_WeakPersistentHandle handle,
     void* peer);
+typedef void (*Dart_HandleFinalizer)(void* isolate_callback_data, void* peer);
 
 /**
  * Is this an error handle?
@@ -444,6 +453,8 @@
 
 /**
  * Deallocates a persistent handle.
+ *
+ * Requires there to be a current isolate group.
  */
 DART_EXPORT void Dart_DeletePersistentHandle(Dart_PersistentHandle object);
 
@@ -457,16 +468,17 @@
  * calling Dart_DeleteWeakPersistentHandle.
  *
  * If the object becomes unreachable the callback is invoked with the weak
- * persistent handle and the peer as arguments. The callback can be executed
- * on any thread, will not have a current isolate, and can only call
- * Dart_DeletePersistentHandle or Dart_DeleteWeakPersistentHandle. The callback
- * must not call Dart_DeleteWeakPersistentHandle for the handle being finalized,
- * as it is automatically deleted by the VM after the callback returns.
- * This gives the embedder the ability to cleanup data associated with the
- * object and clear out any cached references to the handle. All references to
- * this handle after the callback will be invalid. It is illegal to call into
- * the VM from the callback. If the handle is deleted before the object becomes
- * unreachable, the callback is never invoked.
+ * persistent handle and the peer as arguments. The callback can be executed on
+ * any thread, will have an isolate group, but will not have a current isolate.
+ * The callback can only call Dart_DeletePersistentHandle or
+ * Dart_DeleteWeakPersistentHandle. The callback must not call
+ * Dart_DeleteWeakPersistentHandle for the handle being finalized, as it is
+ * automatically deleted by the VM after the callback returns. This gives the
+ * embedder the ability to cleanup data associated with the object and clear
+ * out any cached references to the handle. All references to this handle after
+ * the callback will be invalid. It is illegal to call into the VM with any
+ * other Dart_* functions from the callback. If the handle is deleted before
+ * the object becomes unreachable, the callback is never invoked.
  *
  * Requires there to be a current isolate.
  *
@@ -488,12 +500,86 @@
                              intptr_t external_allocation_size,
                              Dart_WeakPersistentHandleFinalizer callback);
 
+/**
+ * Deletes the given weak persistent [object] handle.
+ *
+ * Requires there to be a current isolate group.
+ */
 DART_EXPORT void Dart_DeleteWeakPersistentHandle(
     Dart_WeakPersistentHandle object);
 
+/**
+ * Updates the external memory size for the given weak persistent handle.
+ *
+ * May trigger garbage collection.
+ */
 DART_EXPORT void Dart_UpdateExternalSize(Dart_WeakPersistentHandle object,
                                          intptr_t external_allocation_size);
 
+/**
+ * Allocates a finalizable handle for an object.
+ *
+ * This handle has the lifetime of the current isolate group unless the object
+ * pointed to by the handle is garbage collected, in this case the VM
+ * automatically deletes the handle after invoking the callback associated
+ * with the handle. The handle can also be explicitly deallocated by
+ * calling Dart_DeleteFinalizableHandle.
+ *
+ * If the object becomes unreachable the callback is invoked with the
+ * the peer as argument. The callback can be executed on any thread, will have
+ * an isolate group, but will not have a current isolate. The callback can only
+ * call Dart_DeletePersistentHandle or Dart_DeleteWeakPersistentHandle.
+ * This gives the embedder the ability to cleanup data associated with the
+ * object and clear out any cached references to the handle. All references to
+ * this handle after the callback will be invalid. It is illegal to call into
+ * the VM with any other Dart_* functions from the callback. If the handle is
+ * deleted before the object becomes unreachable, the callback is never
+ * invoked.
+ *
+ * Requires there to be a current isolate.
+ *
+ * \param object An object.
+ * \param peer A pointer to a native object or NULL.  This value is
+ *   provided to callback when it is invoked.
+ * \param external_allocation_size The number of externally allocated
+ *   bytes for peer. Used to inform the garbage collector.
+ * \param callback A function pointer that will be invoked sometime
+ *   after the object is garbage collected, unless the handle has been deleted.
+ *   A valid callback needs to be specified it cannot be NULL.
+ *
+ * \return The finalizable handle or NULL. NULL is returned in case of bad
+ *   parameters.
+ */
+DART_EXPORT Dart_FinalizableHandle
+Dart_NewFinalizableHandle(Dart_Handle object,
+                          void* peer,
+                          intptr_t external_allocation_size,
+                          Dart_HandleFinalizer callback);
+
+/**
+ * Deletes the given finalizable [object] handle.
+ *
+ * The caller has to provide the actual Dart object the handle was created from
+ * to prove the object (and therefore the finalizable handle) is still alive.
+ *
+ * Requires there to be a current isolate.
+ */
+DART_EXPORT void Dart_DeleteFinalizableHandle(Dart_FinalizableHandle object,
+                                              Dart_Handle strong_ref_to_object);
+
+/**
+ * Updates the external memory size for the given finalizable handle.
+ *
+ * The caller has to provide the actual Dart object the handle was created from
+ * to prove the object (and therefore the finalizable handle) is still alive.
+ *
+ * May trigger garbage collection.
+ */
+DART_EXPORT void Dart_UpdateFinalizableExternalSize(
+    Dart_FinalizableHandle object,
+    Dart_Handle strong_ref_to_object,
+    intptr_t external_allocation_size);
+
 /*
  * ==========================
  * Initialization and Globals
diff --git a/runtime/include/dart_api_dl.h b/runtime/include/dart_api_dl.h
index ba8424d..19fd0f3 100644
--- a/runtime/include/dart_api_dl.h
+++ b/runtime/include/dart_api_dl.h
@@ -108,6 +108,25 @@
 DART_EXTERN_C void (*Dart_DeleteWeakPersistentHandle_DL)(
     Dart_WeakPersistentHandle object);
 
+DART_EXTERN_C void (*Dart_UpdateExternalSize_DL)(
+    Dart_WeakPersistentHandle object,
+    intptr_t external_allocation_size);
+
+DART_EXTERN_C Dart_FinalizableHandle (*Dart_NewFinalizableHandle_DL)(
+    Dart_Handle object,
+    void* peer,
+    intptr_t external_allocation_size,
+    Dart_HandleFinalizer callback);
+
+DART_EXTERN_C void (*Dart_DeleteFinalizableHandle_DL)(
+    Dart_FinalizableHandle object,
+    Dart_Handle strong_ref_to_object);
+
+DART_EXTERN_C void (*Dart_UpdateFinalizableExternalSize_DL)(
+    Dart_FinalizableHandle object,
+    Dart_Handle strong_ref_to_object,
+    intptr_t external_allocation_size);
+
 DART_EXTERN_C bool (*Dart_Post_DL)(Dart_Port_DL port_id, Dart_Handle object);
 
 DART_EXTERN_C Dart_Handle (*Dart_NewSendPort_DL)(Dart_Port_DL port_id);
@@ -123,4 +142,4 @@
 //
 // End of verbatim copy.
 
-#endif /* RUNTIME_INCLUDE_DART_API_DL_H_ */ /* NOLINT */
\ No newline at end of file
+#endif /* RUNTIME_INCLUDE_DART_API_DL_H_ */ /* NOLINT */
diff --git a/runtime/include/dart_version.h b/runtime/include/dart_version.h
index 777620b..d2d904d 100644
--- a/runtime/include/dart_version.h
+++ b/runtime/include/dart_version.h
@@ -11,6 +11,6 @@
 // On backwards compatible changes the minor version is increased.
 // The versioning covers the symbols exposed in dart_api_dl.h
 #define DART_API_DL_MAJOR_VERSION 1
-#define DART_API_DL_MINOR_VERSION 0
+#define DART_API_DL_MINOR_VERSION 1
 
 #endif /* RUNTIME_INCLUDE_DART_VERSION_H_ */ /* NOLINT */
diff --git a/runtime/include/internal/dart_api_dl_impl.h b/runtime/include/internal/dart_api_dl_impl.h
index f77063d..a306e2d 100644
--- a/runtime/include/internal/dart_api_dl_impl.h
+++ b/runtime/include/internal/dart_api_dl_impl.h
@@ -41,6 +41,10 @@
   F(Dart_NewWeakPersistentHandle)                                              \
   F(Dart_HandleFromWeakPersistent)                                             \
   F(Dart_DeleteWeakPersistentHandle)                                           \
+  F(Dart_UpdateExternalSize)                                                   \
+  F(Dart_NewFinalizableHandle)                                                 \
+  F(Dart_DeleteFinalizableHandle)                                              \
+  F(Dart_UpdateFinalizableExternalSize)                                        \
   /* Dart_Port */                                                              \
   F(Dart_Post)                                                                 \
   F(Dart_NewSendPort)                                                          \
diff --git a/runtime/lib/isolate.cc b/runtime/lib/isolate.cc
index fe943ae..4ed6bfe 100644
--- a/runtime/lib/isolate.cc
+++ b/runtime/lib/isolate.cc
@@ -615,7 +615,6 @@
 }
 
 static void ExternalTypedDataFinalizer(void* isolate_callback_data,
-                                       Dart_WeakPersistentHandle handle,
                                        void* peer) {
   free(peer);
 }
@@ -725,7 +724,8 @@
                              thread->heap()->SpaceForExternal(length)));
   FinalizablePersistentHandle::New(thread->isolate(), typed_data,
                                    /* peer= */ data,
-                                   &ExternalTypedDataFinalizer, length);
+                                   &ExternalTypedDataFinalizer, length,
+                                   /*auto_delete=*/true);
   return typed_data.raw();
 }
 
diff --git a/runtime/observatory/lib/object_graph.dart b/runtime/observatory/lib/object_graph.dart
index 6e44872..0e891ce 100644
--- a/runtime/observatory/lib/object_graph.dart
+++ b/runtime/observatory/lib/object_graph.dart
@@ -218,7 +218,7 @@
   int get internalSize;
 
   /// The sum of all external allocations associated with this object.
-  /// See Dart_NewWeakPersistentHandle.
+  /// See Dart_NewFinalizableHandle and Dart_NewWeakPersistentHandle.
   int get externalSize;
 
   /// The [shallowSize] of this object, plus the retainedSize of all its
diff --git a/runtime/observatory/tests/service/bad_web_socket_address_test.dart b/runtime/observatory/tests/service/bad_web_socket_address_test.dart
index 8f83fd8..b0a3bbb 100644
--- a/runtime/observatory/tests/service/bad_web_socket_address_test.dart
+++ b/runtime/observatory/tests/service/bad_web_socket_address_test.dart
@@ -15,7 +15,7 @@
   } catch (e) {
     error = e;
   }
-  expect(error, new isInstanceOf<NetworkRpcException>());
+  expect(error, isA<NetworkRpcException>());
 }
 
 main() async {
diff --git a/runtime/observatory/tests/service/dev_fs_http_put_test.dart b/runtime/observatory/tests/service/dev_fs_http_put_test.dart
index 107778d..a9bed79 100644
--- a/runtime/observatory/tests/service/dev_fs_http_put_test.dart
+++ b/runtime/observatory/tests/service/dev_fs_http_put_test.dart
@@ -31,7 +31,7 @@
     result = await vm.invokeRpcNoUpgrade('_createDevFS', {'fsName': fsId});
     expect(result['type'], equals('FileSystem'));
     expect(result['name'], equals(fsId));
-    expect(result['uri'], new isInstanceOf<String>());
+    expect(result['uri'], isA<String>());
 
     // Write the file by issuing an HTTP PUT.
     HttpClient client = new HttpClient();
diff --git a/runtime/observatory/tests/service/dev_fs_http_put_weird_char_test.dart b/runtime/observatory/tests/service/dev_fs_http_put_weird_char_test.dart
index 7801775..a2c758c 100644
--- a/runtime/observatory/tests/service/dev_fs_http_put_weird_char_test.dart
+++ b/runtime/observatory/tests/service/dev_fs_http_put_weird_char_test.dart
@@ -32,7 +32,7 @@
     result = await vm.invokeRpcNoUpgrade('_createDevFS', {'fsName': fsId});
     expect(result['type'], equals('FileSystem'));
     expect(result['name'], equals(fsId));
-    expect(result['uri'], new isInstanceOf<String>());
+    expect(result['uri'], isA<String>());
 
     // Write the file by issuing an HTTP PUT.
     HttpClient client = new HttpClient();
diff --git a/runtime/observatory/tests/service/dev_fs_test.dart b/runtime/observatory/tests/service/dev_fs_test.dart
index 920a152..cf4ca71 100644
--- a/runtime/observatory/tests/service/dev_fs_test.dart
+++ b/runtime/observatory/tests/service/dev_fs_test.dart
@@ -17,7 +17,7 @@
     result = await vm.invokeRpcNoUpgrade('_createDevFS', params);
     expect(result['type'], equals('FileSystem'));
     expect(result['name'], equals('alpha'));
-    expect(result['uri'], new isInstanceOf<String>());
+    expect(result['uri'], isA<String>());
 
     result = await vm.invokeRpcNoUpgrade('_listDevFS', {});
     expect(result['type'], equals('FileSystemList'));
@@ -62,7 +62,7 @@
     result = await vm.invokeRpcNoUpgrade('_createDevFS', {'fsName': fsId});
     expect(result['type'], equals('FileSystem'));
     expect(result['name'], equals(fsId));
-    expect(result['uri'], new isInstanceOf<String>());
+    expect(result['uri'], isA<String>());
 
     bool caughtException = false;
     try {
diff --git a/runtime/observatory/tests/service/dev_fs_uri_test.dart b/runtime/observatory/tests/service/dev_fs_uri_test.dart
index 42e5150..13b4af4 100644
--- a/runtime/observatory/tests/service/dev_fs_uri_test.dart
+++ b/runtime/observatory/tests/service/dev_fs_uri_test.dart
@@ -37,7 +37,7 @@
     result = await vm.invokeRpcNoUpgrade('_createDevFS', {'fsName': fsId});
     expect(result['type'], equals('FileSystem'));
     expect(result['name'], equals(fsId));
-    expect(result['uri'], new isInstanceOf<String>());
+    expect(result['uri'], isA<String>());
 
     // Write the file by issuing an HTTP PUT.
     HttpClient client = new HttpClient();
diff --git a/runtime/observatory/tests/service/dev_fs_weird_char_test.dart b/runtime/observatory/tests/service/dev_fs_weird_char_test.dart
index f2fddce..e8277a6 100644
--- a/runtime/observatory/tests/service/dev_fs_weird_char_test.dart
+++ b/runtime/observatory/tests/service/dev_fs_weird_char_test.dart
@@ -19,7 +19,7 @@
     result = await vm.invokeRpcNoUpgrade('_createDevFS', {'fsName': fsId});
     expect(result['type'], equals('FileSystem'));
     expect(result['name'], equals(fsId));
-    expect(result['uri'], new isInstanceOf<String>());
+    expect(result['uri'], isA<String>());
 
     // Write the file.
     result = await vm.invokeRpcNoUpgrade('_writeDevFSFile',
diff --git a/runtime/observatory/tests/service/developer_extension_test.dart b/runtime/observatory/tests/service/developer_extension_test.dart
index 30ca38d..c5226de 100644
--- a/runtime/observatory/tests/service/developer_extension_test.dart
+++ b/runtime/observatory/tests/service/developer_extension_test.dart
@@ -73,7 +73,7 @@
   resumeIsolateAndAwaitEvent(Isolate.kExtensionStream, (ServiceEvent event) {
     expect(event.kind, equals(ServiceEvent.kExtension));
     expect(event.extensionKind, equals('ALPHA'));
-    expect(event.extensionData, new isInstanceOf<Map>());
+    expect(event.extensionData, isA<Map>());
     expect(event.extensionData['cat'], equals('dog'));
   }),
   hasStoppedAtBreakpoint,
diff --git a/runtime/observatory/tests/service/evaluate_in_frame_with_scope_test.dart b/runtime/observatory/tests/service/evaluate_in_frame_with_scope_test.dart
index fecc245..8eb463a 100644
--- a/runtime/observatory/tests/service/evaluate_in_frame_with_scope_test.dart
+++ b/runtime/observatory/tests/service/evaluate_in_frame_with_scope_test.dart
@@ -44,24 +44,22 @@
     var thing2 = thing2Field.staticValue;
     print(thing2);
 
-    final isInstanceOf<Instance> isInstanceOfInstance =
-        new isInstanceOf<Instance>();
     ServiceObject result = await isolate.evalFrame(0, "x + y + a + b",
         scope: <String, ServiceObject>{"a": thing1, "b": thing2});
-    expect(result, isInstanceOfInstance);
+    expect(result, isA<Instance>());
     print(result);
     expect((result as Instance).valueAsString, equals('2033'));
 
     result = await isolate.evalFrame(0, "local + a + b",
         scope: <String, ServiceObject>{"a": thing1, "b": thing2});
-    expect(result, isInstanceOfInstance);
+    expect(result, isA<Instance>());
     print(result);
     expect((result as Instance).valueAsString, equals('2033'));
 
     // Note the eval's scope is shadowing the locals' scope.
     result = await isolate.evalFrame(0, "x + y",
         scope: <String, ServiceObject>{"x": thing1, "y": thing2});
-    expect(result, isInstanceOfInstance);
+    expect(result, isA<Instance>());
     print(result);
     expect((result as Instance).valueAsString, equals('7'));
 
diff --git a/runtime/observatory/tests/service/get_allocation_profile_public_rpc_test.dart b/runtime/observatory/tests/service/get_allocation_profile_public_rpc_test.dart
index d1c81e0..137d44a 100644
--- a/runtime/observatory/tests/service/get_allocation_profile_public_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_allocation_profile_public_rpc_test.dart
@@ -44,7 +44,7 @@
     result = await isolate.invokeRpcNoUpgrade('getAllocationProfile', params);
     expect(result['type'], equals('AllocationProfile'));
     var firstReset = result['dateLastAccumulatorReset'];
-    expect(firstReset, new isInstanceOf<String>());
+    expect(firstReset, isA<String>());
     expect(result.containsKey('dateLastServiceGC'), isFalse);
     expect(result.containsKey('_heaps'), isFalse);
     expect(result['members'].length, isPositive);
@@ -74,7 +74,7 @@
     expect(result['type'], equals('AllocationProfile'));
     expect(result['dateLastAccumulatorReset'], equals(secondReset));
     var firstGC = result['dateLastServiceGC'];
-    expect(firstGC, new isInstanceOf<String>());
+    expect(firstGC, isA<String>());
     expect(result.containsKey('_heaps'), isFalse);
     expect(result['members'].length, isPositive);
 
diff --git a/runtime/observatory/tests/service/get_allocation_profile_rpc_test.dart b/runtime/observatory/tests/service/get_allocation_profile_rpc_test.dart
index 05ab7c8..6021980 100644
--- a/runtime/observatory/tests/service/get_allocation_profile_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_allocation_profile_rpc_test.dart
@@ -44,7 +44,7 @@
     result = await isolate.invokeRpcNoUpgrade('_getAllocationProfile', params);
     expect(result['type'], equals('AllocationProfile'));
     var firstReset = result['dateLastAccumulatorReset'];
-    expect(firstReset, new isInstanceOf<String>());
+    expect(firstReset, isA<String>());
     expect(result.containsKey('dateLastServiceGC'), isFalse);
     expect(result['_heaps'].length, isPositive);
     expect(result['_heaps']['new']['type'], equals('HeapSpace'));
@@ -74,7 +74,7 @@
     expect(result['type'], equals('AllocationProfile'));
     expect(result['dateLastAccumulatorReset'], equals(secondReset));
     var firstGC = result['dateLastServiceGC'];
-    expect(firstGC, new isInstanceOf<String>());
+    expect(firstGC, isA<String>());
     expect(result['_heaps'].length, isPositive);
     expect(result['_heaps']['new']['type'], equals('HeapSpace'));
     expect(result['_heaps']['old']['type'], equals('HeapSpace'));
diff --git a/runtime/observatory/tests/service/get_cpu_profile_timeline_rpc_test.dart b/runtime/observatory/tests/service/get_cpu_profile_timeline_rpc_test.dart
index db43578..2bbf22f 100644
--- a/runtime/observatory/tests/service/get_cpu_profile_timeline_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_cpu_profile_timeline_rpc_test.dart
@@ -22,8 +22,8 @@
 
 Future checkTimeline(VM vm) async {
   var result = await TimelineRepositoryBase().getCpuProfileTimeline(vm);
-  var isString = new isInstanceOf<String>();
-  var isInt = new isInstanceOf<int>();
+  var isString = isA<String>();
+  var isInt = isA<int>();
   Map frames = result['stackFrames'];
   expect(frames.length, greaterThan(10), reason: "Should have many samples");
   for (Map frame in frames.values) {
diff --git a/runtime/observatory/tests/service/get_cpu_samples_rpc_test.dart b/runtime/observatory/tests/service/get_cpu_samples_rpc_test.dart
index 93a7353..8d7bbb9 100644
--- a/runtime/observatory/tests/service/get_cpu_samples_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_cpu_samples_rpc_test.dart
@@ -24,9 +24,9 @@
       await isolate.invokeRpcNoUpgrade('getCpuSamples', {'_code': true});
   expect(result['type'], equals('CpuSamples'));
 
-  final isString = isInstanceOf<String>();
-  final isInt = isInstanceOf<int>();
-  final isList = isInstanceOf<List>();
+  final isString = isA<String>();
+  final isInt = isA<int>();
+  final isList = isA<List>();
   final functions = result['functions'];
   expect(functions.length, greaterThan(10),
       reason: "Should have many functions");
diff --git a/runtime/observatory/tests/service/get_heap_map_rpc_test.dart b/runtime/observatory/tests/service/get_heap_map_rpc_test.dart
index c85a561..26949bc 100644
--- a/runtime/observatory/tests/service/get_heap_map_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_heap_map_rpc_test.dart
@@ -17,7 +17,7 @@
     expect(result['pageSizeBytes'], isPositive);
     expect(result['classList'], isNotNull);
     expect(result['pages'].length, isPositive);
-    expect(result['pages'][0]['objectStart'], new isInstanceOf<String>());
+    expect(result['pages'][0]['objectStart'], isA<String>());
     expect(result['pages'][0]['objects'].length, isPositive);
     expect(result['pages'][0]['objects'][0], isPositive);
   },
@@ -30,7 +30,7 @@
     expect(result['pageSizeBytes'], isPositive);
     expect(result['classList'], isNotNull);
     expect(result['pages'].length, isPositive);
-    expect(result['pages'][0]['objectStart'], new isInstanceOf<String>());
+    expect(result['pages'][0]['objectStart'], isA<String>());
     expect(result['pages'][0]['objects'].length, isPositive);
     expect(result['pages'][0]['objects'][0], isPositive);
   },
@@ -43,7 +43,7 @@
     expect(result['pageSizeBytes'], isPositive);
     expect(result['classList'], isNotNull);
     expect(result['pages'].length, isPositive);
-    expect(result['pages'][0]['objectStart'], new isInstanceOf<String>());
+    expect(result['pages'][0]['objectStart'], isA<String>());
     expect(result['pages'][0]['objects'].length, isPositive);
     expect(result['pages'][0]['objects'][0], isPositive);
   },
@@ -56,7 +56,7 @@
     expect(result['pageSizeBytes'], isPositive);
     expect(result['classList'], isNotNull);
     expect(result['pages'].length, isPositive);
-    expect(result['pages'][0]['objectStart'], new isInstanceOf<String>());
+    expect(result['pages'][0]['objectStart'], isA<String>());
     expect(result['pages'][0]['objects'].length, isPositive);
     expect(result['pages'][0]['objects'][0], isPositive);
   },
diff --git a/runtime/observatory/tests/service/get_isolate_rpc_test.dart b/runtime/observatory/tests/service/get_isolate_rpc_test.dart
index 2346282..293b0d3 100644
--- a/runtime/observatory/tests/service/get_isolate_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_isolate_rpc_test.dart
@@ -15,7 +15,7 @@
     var result = await vm.invokeRpcNoUpgrade('getIsolate', params);
     expect(result['type'], equals('Isolate'));
     expect(result['id'], startsWith('isolates/'));
-    expect(result['number'], new isInstanceOf<String>());
+    expect(result['number'], isA<String>());
     expect(result['_originNumber'], equals(result['number']));
     expect(result['startTime'], isPositive);
     expect(result['livePorts'], isPositive);
diff --git a/runtime/observatory/tests/service/get_object_rpc_test.dart b/runtime/observatory/tests/service/get_object_rpc_test.dart
index faf5eca..e9e508b 100644
--- a/runtime/observatory/tests/service/get_object_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_object_rpc_test.dart
@@ -726,9 +726,9 @@
     expect(result['library']['type'], equals('@Library'));
     expect(result['source'], startsWith('// Copyright (c)'));
     expect(result['tokenPosTable'].length, isPositive);
-    expect(result['tokenPosTable'][0], new isInstanceOf<List>());
+    expect(result['tokenPosTable'][0], isA<List>());
     expect(result['tokenPosTable'][0].length, isPositive);
-    expect(result['tokenPosTable'][0][0], new isInstanceOf<int>());
+    expect(result['tokenPosTable'][0][0], isA<int>());
   },
 
   // invalid script.
@@ -974,17 +974,15 @@
     expect(result['name'], endsWith('_DummyClass.dummyFunction'));
     expect(result['_vmName'], endsWith('dummyFunction'));
     expect(result['kind'], equals('Dart'));
-    expect(result['_optimized'], new isInstanceOf<bool>());
+    expect(result['_optimized'], isA<bool>());
     expect(result['function']['type'], equals('@Function'));
-    expect(result['_startAddress'], new isInstanceOf<String>());
-    expect(result['_endAddress'], new isInstanceOf<String>());
+    expect(result['_startAddress'], isA<String>());
+    expect(result['_endAddress'], isA<String>());
     expect(result['_objectPool'], isNotNull);
     expect(result['_disassembly'], isNotNull);
     expect(result['_descriptors'], isNotNull);
-    expect(
-        result['_inlinedFunctions'], anyOf([isNull, new isInstanceOf<List>()]));
-    expect(
-        result['_inlinedIntervals'], anyOf([isNull, new isInstanceOf<List>()]));
+    expect(result['_inlinedFunctions'], anyOf([isNull, isA<List>()]));
+    expect(result['_inlinedIntervals'], anyOf([isNull, isA<List>()]));
   },
 
   // invalid code.
diff --git a/runtime/observatory/tests/service/get_process_memory_usage_rpc_test.dart b/runtime/observatory/tests/service/get_process_memory_usage_rpc_test.dart
index 0d97607..6dcfe36 100644
--- a/runtime/observatory/tests/service/get_process_memory_usage_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_process_memory_usage_rpc_test.dart
@@ -12,9 +12,9 @@
     var result = await vm.invokeRpcNoUpgrade("getProcessMemoryUsage", {});
     expect(result['type'], equals('ProcessMemoryUsage'));
     checkProcessMemoryItem(item) {
-      expect(item['name'], isInstanceOf<String>());
-      expect(item['description'], isInstanceOf<String>());
-      expect(item['size'], isInstanceOf<int>());
+      expect(item['name'], isA<String>());
+      expect(item['description'], isA<String>());
+      expect(item['size'], isA<int>());
       expect(item['size'], greaterThanOrEqualTo(0));
       for (var child in item['children']) {
         checkProcessMemoryItem(child);
diff --git a/runtime/observatory/tests/service/get_vm_rpc_test.dart b/runtime/observatory/tests/service/get_vm_rpc_test.dart
index 97f973a..0291ff3 100644
--- a/runtime/observatory/tests/service/get_vm_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_vm_rpc_test.dart
@@ -16,11 +16,11 @@
     expect(result['type'], equals('VM'));
     expect(result['name'], equals('Walter'));
     expect(result['architectureBits'], isPositive);
-    expect(result['targetCPU'], new isInstanceOf<String>());
-    expect(result['hostCPU'], new isInstanceOf<String>());
+    expect(result['targetCPU'], isA<String>());
+    expect(result['hostCPU'], isA<String>());
     expect(result['operatingSystem'], Platform.operatingSystem);
-    expect(result['version'], new isInstanceOf<String>());
-    expect(result['pid'], new isInstanceOf<int>());
+    expect(result['version'], isA<String>());
+    expect(result['pid'], isA<int>());
     expect(result['startTime'], isPositive);
     expect(result['isolates'].length, isPositive);
     expect(result['isolates'][0]['type'], equals('@Isolate'));
diff --git a/runtime/observatory/tests/service/get_vm_timeline_rpc_test.dart b/runtime/observatory/tests/service/get_vm_timeline_rpc_test.dart
index b149a7e..71a8b61a 100644
--- a/runtime/observatory/tests/service/get_vm_timeline_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_vm_timeline_rpc_test.dart
@@ -109,10 +109,10 @@
       continue;
     }
     Map arguments = event['args'];
-    expect(arguments, new isInstanceOf<Map>());
-    expect(arguments['isolateGroupId'], new isInstanceOf<String>());
+    expect(arguments, isA<Map>());
+    expect(arguments['isolateGroupId'], isA<String>());
     if (event['cat'] != 'GC') {
-      expect(arguments['isolateId'], new isInstanceOf<String>());
+      expect(arguments['isolateId'], isA<String>());
     }
   }
 }
@@ -121,7 +121,7 @@
   (VM vm) async {
     Map result = await vm.invokeRpcNoUpgrade('getVMTimeline', {});
     expect(result['type'], equals('Timeline'));
-    expect(result['traceEvents'], new isInstanceOf<List>());
+    expect(result['traceEvents'], isA<List>());
     final int numEvents = result['traceEvents'].length;
     List dartEvents = filterForDartEvents(result['traceEvents']);
     expect(dartEvents.length, greaterThanOrEqualTo(11));
diff --git a/runtime/observatory/tests/service/get_zone_memory_info_rpc_test.dart b/runtime/observatory/tests/service/get_zone_memory_info_rpc_test.dart
index 428c42e..3de0b1d 100644
--- a/runtime/observatory/tests/service/get_zone_memory_info_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_zone_memory_info_rpc_test.dart
@@ -9,12 +9,11 @@
 
 var tests = <VMTest>[
   (VM vm) async {
-    isInstanceOf<int> isInt = new isInstanceOf<int>();
     // Just iterate over all the isolates to confirm they have
     // the correct fields needed to examine zone memory usage.
     for (Isolate isolate in new List.from(vm.isolates)) {
       await isolate.reload();
-      expect(isolate.zoneHighWatermark, isInt);
+      expect(isolate.zoneHighWatermark, isA<int>());
       expect(isolate.threads, isNotNull);
       List<Thread> threads = isolate.threads;
 
@@ -22,8 +21,8 @@
         expect(thread.type, equals('_Thread'));
         expect(thread.id, isNotNull);
         expect(thread.kind, isNotNull);
-        expect(thread.zoneHighWatermark, isInt);
-        expect(thread.zoneCapacity, isInt);
+        expect(thread.zoneHighWatermark, isA<int>());
+        expect(thread.zoneCapacity, isA<int>());
       }
     }
   },
diff --git a/runtime/observatory/tests/service/logging_test.dart b/runtime/observatory/tests/service/logging_test.dart
index 4acf8b0..84fa6b1 100644
--- a/runtime/observatory/tests/service/logging_test.dart
+++ b/runtime/observatory/tests/service/logging_test.dart
@@ -37,7 +37,7 @@
     expect(event.logRecord['sequenceNumber'], equals(0));
     expect(event.logRecord['message'].valueAsString, equals('Hey Buddy!'));
     expect(event.logRecord['level'], equals(Level.FINE));
-    expect(event.logRecord['time'], new isInstanceOf<DateTime>());
+    expect(event.logRecord['time'], isA<DateTime>());
   }),
   hasStoppedAtBreakpoint,
   resumeIsolateAndAwaitEvent(Isolate.kLoggingStream, (ServiceEvent event) {
@@ -45,7 +45,7 @@
     expect(event.logRecord['sequenceNumber'], equals(1));
     expect(event.logRecord['level'], equals(Level.INFO));
     expect(event.logRecord['message'].valueAsString, equals('YES'));
-    expect(event.logRecord['time'], new isInstanceOf<DateTime>());
+    expect(event.logRecord['time'], isA<DateTime>());
   }),
 ];
 
diff --git a/runtime/observatory/tests/service/network_profiling_test.dart b/runtime/observatory/tests/service/network_profiling_test.dart
index 4da5995..352d1b2 100644
--- a/runtime/observatory/tests/service/network_profiling_test.dart
+++ b/runtime/observatory/tests/service/network_profiling_test.dart
@@ -59,7 +59,7 @@
 Future<void> checkFinishEvent(ServiceEvent event) {
   expect(event.kind, equals(ServiceEvent.kExtension));
   expect(event.extensionKind, equals('socketTest'));
-  expect(event.extensionData, isInstanceOf<Map>());
+  expect(event.extensionData, isA<Map>());
   expect(event.extensionData['socket'], equals('test'));
 }
 
diff --git a/runtime/observatory/tests/service/vm_timeline_flags_test.dart b/runtime/observatory/tests/service/vm_timeline_flags_test.dart
index 72608f6..9553054 100644
--- a/runtime/observatory/tests/service/vm_timeline_flags_test.dart
+++ b/runtime/observatory/tests/service/vm_timeline_flags_test.dart
@@ -43,7 +43,7 @@
     // Get the timeline.
     Map result = await isolate.vm.invokeRpcNoUpgrade('getVMTimeline', {});
     expect(result['type'], equals('Timeline'));
-    expect(result['traceEvents'], new isInstanceOf<List>());
+    expect(result['traceEvents'], isA<List>());
     // Confirm that it as no non-meta data events.
     expect(filterEvents(result['traceEvents'], isNotMetaData).length, 0);
   },
@@ -77,7 +77,7 @@
     // Get the timeline.
     Map result = await isolate.vm.invokeRpcNoUpgrade('getVMTimeline', {});
     expect(result['type'], equals('Timeline'));
-    expect(result['traceEvents'], new isInstanceOf<List>());
+    expect(result['traceEvents'], isA<List>());
     print(result['traceEvents']);
     // Confirm that Dart events are added.
     expect(filterEvents(result['traceEvents'], isDart).length, greaterThan(0));
@@ -101,7 +101,7 @@
     // Grab the timeline and remember the number of Dart events.
     Map result = await isolate.vm.invokeRpcNoUpgrade('getVMTimeline', {});
     expect(result['type'], equals('Timeline'));
-    expect(result['traceEvents'], new isInstanceOf<List>());
+    expect(result['traceEvents'], isA<List>());
     dartEventCount = filterEvents(result['traceEvents'], isDart).length;
 
     await completer.future;
@@ -119,7 +119,7 @@
     // Grab the timeline and verify that we haven't added any new Dart events.
     Map result = await isolate.vm.invokeRpcNoUpgrade('getVMTimeline', {});
     expect(result['type'], equals('Timeline'));
-    expect(result['traceEvents'], new isInstanceOf<List>());
+    expect(result['traceEvents'], isA<List>());
     expect(filterEvents(result['traceEvents'], isDart).length, dartEventCount);
     // Confirm that zero non-Dart events are added.
     expect(filterEvents(result['traceEvents'], isNotDartAndMetaData).length,
diff --git a/runtime/tests/vm/dart/sdk_hash_test.dart b/runtime/tests/vm/dart/sdk_hash_test.dart
index 855e007..8e31050 100644
--- a/runtime/tests/vm/dart/sdk_hash_test.dart
+++ b/runtime/tests/vm/dart/sdk_hash_test.dart
@@ -14,7 +14,6 @@
 
 // Keep in sync with pkg/kernel/lib/binary/tag.dart:
 const tagComponentFile = [0x90, 0xAB, 0xCD, 0xEF];
-const tagBinaryFormatVersion = [0x00, 0x00, 0x00, 43];
 
 Future<void> main(List<String> args) async {
   if (args.length == 1 && args[0] == '--child') {
@@ -53,7 +52,6 @@
       // The SDK Hash is located after the ComponentFile and BinaryFormatVersion
       // tags (both UInt32).
       Expect.listEquals(tagComponentFile, bytes.sublist(0, 4));
-      Expect.listEquals(tagBinaryFormatVersion, bytes.sublist(4, 8));
       Expect.notEquals('0000000000', ascii.decode(bytes.sublist(8, 10)));
       // Flip the first byte in the hash:
       bytes[8] = ~bytes[8];
diff --git a/runtime/tests/vm/dart_2/sdk_hash_test.dart b/runtime/tests/vm/dart_2/sdk_hash_test.dart
index b6f166c..c73dc03 100644
--- a/runtime/tests/vm/dart_2/sdk_hash_test.dart
+++ b/runtime/tests/vm/dart_2/sdk_hash_test.dart
@@ -14,7 +14,6 @@
 
 // Keep in sync with pkg/kernel/lib/binary/tag.dart:
 const tagComponentFile = [0x90, 0xAB, 0xCD, 0xEF];
-const tagBinaryFormatVersion = [0x00, 0x00, 0x00, 43];
 
 Future<void> main(List<String> args) async {
   if (args.length == 1 && args[0] == '--child') {
@@ -53,7 +52,6 @@
       // The SDK Hash is located after the ComponentFile and BinaryFormatVersion
       // tags (both UInt32).
       Expect.listEquals(tagComponentFile, bytes.sublist(0, 4));
-      Expect.listEquals(tagBinaryFormatVersion, bytes.sublist(4, 8));
       Expect.notEquals('0000000000', ascii.decode(bytes.sublist(8, 18)));
       // Flip the first byte in the hash:
       bytes[8] = ~bytes[8];
diff --git a/runtime/vm/BUILD.gn b/runtime/vm/BUILD.gn
index 3c042b1..0d1d129f 100644
--- a/runtime/vm/BUILD.gn
+++ b/runtime/vm/BUILD.gn
@@ -74,7 +74,7 @@
   if (is_fuchsia) {
     if (using_fuchsia_gn_sdk) {
       extra_deps = [
-        "$fuchsia_sdk_root/fidl/fuchsia.intl",
+        "$fuchsia_sdk_root/fidl/fuchsia.deprecatedtimezone",
         "$fuchsia_sdk_root/pkg/async",
         "$fuchsia_sdk_root/pkg/async-default",
         "$fuchsia_sdk_root/pkg/async-loop",
@@ -87,7 +87,7 @@
       ]
     } else if (using_fuchsia_sdk) {
       extra_deps = [
-        "$fuchsia_sdk_root/fidl:fuchsia.intl",
+        "$fuchsia_sdk_root/fidl:fuchsia.deprecatedtimezone",
         "$fuchsia_sdk_root/pkg:async-loop",
         "$fuchsia_sdk_root/pkg:async-loop-default",
         "$fuchsia_sdk_root/pkg:inspect",
@@ -98,7 +98,9 @@
       ]
     } else {
       extra_deps = [
-        "//sdk/fidl/fuchsia.intl",
+        # TODO(US-399): Remove time_service specific code when it is no longer
+        # necessary.
+        "//sdk/fidl/fuchsia.deprecatedtimezone",
         "//sdk/lib/sys/cpp",
         "//sdk/lib/sys/inspect/cpp",
         "//zircon/public/lib/fbl",
diff --git a/runtime/vm/compiler/backend/constant_propagator.cc b/runtime/vm/compiler/backend/constant_propagator.cc
index d412104..4fc79f6 100644
--- a/runtime/vm/compiler/backend/constant_propagator.cc
+++ b/runtime/vm/compiler/backend/constant_propagator.cc
@@ -1024,6 +1024,9 @@
   AbstractType& result = AbstractType::Handle(
       Z, instr->type().InstantiateFrom(
              instantiator_type_args, function_type_args, kAllFree, Heap::kOld));
+  if (result.IsTypeRef()) {
+    result = TypeRef::Cast(result).type();
+  }
   ASSERT(result.IsInstantiated());
   result = result.Canonicalize();
   SetValue(instr, result);
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
index a6c66f3..d77f84c 100644
--- a/runtime/vm/dart_api_impl.cc
+++ b/runtime/vm/dart_api_impl.cc
@@ -10,6 +10,7 @@
 
 #include "lib/stacktrace.h"
 #include "platform/assert.h"
+#include "platform/unicode.h"
 #include "vm/class_finalizer.h"
 #include "vm/clustered_snapshot.h"
 #include "vm/compilation_trace.h"
@@ -22,7 +23,6 @@
 #include "vm/debugger.h"
 #include "vm/dwarf.h"
 #include "vm/elf.h"
-#include "platform/unicode.h"
 #include "vm/exceptions.h"
 #include "vm/flags.h"
 #include "vm/growable_array.h"
@@ -690,6 +690,14 @@
 #endif
   return reinterpret_cast<FinalizablePersistentHandle*>(handle);
 }
+FinalizablePersistentHandle* FinalizablePersistentHandle::Cast(
+    Dart_FinalizableHandle handle) {
+#if defined(DEBUG)
+  ApiState* state = IsolateGroup::Current()->api_state();
+  ASSERT(state->IsValidFinalizableHandle(handle));
+#endif
+  return reinterpret_cast<FinalizablePersistentHandle*>(handle);
+}
 
 void FinalizablePersistentHandle::Finalize(
     IsolateGroup* isolate_group,
@@ -697,13 +705,24 @@
   if (!handle->raw()->IsHeapObject()) {
     return;  // Free handle.
   }
-  Dart_WeakPersistentHandleFinalizer callback = handle->callback();
-  ASSERT(callback != NULL);
   void* peer = handle->peer();
-  Dart_WeakPersistentHandle object = handle->apiHandle();
-  (*callback)(isolate_group->embedder_data(), object, peer);
   ApiState* state = isolate_group->api_state();
   ASSERT(state != NULL);
+
+  ASSERT(handle->auto_delete());
+
+  if (handle->callback_signature_ == CallbackSignature::kHandleFinalizer) {
+    Dart_HandleFinalizer callback = handle->callback();
+    ASSERT(callback != NULL);
+    (*callback)(isolate_group->embedder_data(), peer);
+  } else {
+    Dart_WeakPersistentHandleFinalizer callback =
+        handle->CallbackWeakFinalizer();
+    ASSERT(callback != NULL);
+    Dart_WeakPersistentHandle object = handle->ApiWeakPersistentHandle();
+    (*callback)(isolate_group->embedder_data(), object, peer);
+  }
+
   state->FreeWeakPersistentHandle(handle);
 }
 
@@ -920,6 +939,19 @@
   return Api::NewHandle(thread, weak_ref->raw());
 }
 
+static Dart_Handle HandleFromFinalizable(Dart_FinalizableHandle object) {
+  Thread* thread = Thread::Current();
+  Isolate* isolate = thread->isolate();
+  CHECK_ISOLATE(isolate);
+  ApiState* state = isolate->group()->api_state();
+  ASSERT(state != NULL);
+  TransitionNativeToVM transition(thread);
+  NoSafepointScope no_safepoint_scope;
+  FinalizablePersistentHandle* weak_ref =
+      FinalizablePersistentHandle::Cast(object);
+  return Api::NewHandle(thread, weak_ref->raw());
+}
+
 DART_EXPORT Dart_PersistentHandle Dart_NewPersistentHandle(Dart_Handle object) {
   DARTSCOPE(Thread::Current());
   Isolate* I = T->isolate();
@@ -943,7 +975,7 @@
   obj1_ref->set_raw(obj2_ref);
 }
 
-static Dart_WeakPersistentHandle AllocateFinalizableHandle(
+static Dart_WeakPersistentHandle AllocateWeakPersistentHandle(
     Thread* thread,
     const Object& ref,
     void* peer,
@@ -954,11 +986,12 @@
   }
   FinalizablePersistentHandle* finalizable_ref =
       FinalizablePersistentHandle::New(thread->isolate(), ref, peer, callback,
-                                       external_allocation_size);
-  return finalizable_ref->apiHandle();
+                                       external_allocation_size,
+                                       /*auto_delete=*/true);
+  return finalizable_ref->ApiWeakPersistentHandle();
 }
 
-static Dart_WeakPersistentHandle AllocateFinalizableHandle(
+static Dart_WeakPersistentHandle AllocateWeakPersistentHandle(
     Thread* thread,
     Dart_Handle object,
     void* peer,
@@ -967,6 +1000,36 @@
   REUSABLE_OBJECT_HANDLESCOPE(thread);
   Object& ref = thread->ObjectHandle();
   ref = Api::UnwrapHandle(object);
+  return AllocateWeakPersistentHandle(thread, ref, peer,
+                                      external_allocation_size, callback);
+}
+
+static Dart_FinalizableHandle AllocateFinalizableHandle(
+    Thread* thread,
+    const Object& ref,
+    void* peer,
+    intptr_t external_allocation_size,
+    Dart_HandleFinalizer callback) {
+  if (!ref.raw()->IsHeapObject()) {
+    return NULL;
+  }
+
+  FinalizablePersistentHandle* finalizable_ref =
+      FinalizablePersistentHandle::New(thread->isolate(), ref, peer, callback,
+                                       external_allocation_size,
+                                       /*auto_delete=*/true);
+  return finalizable_ref->ApiFinalizableHandle();
+}
+
+static Dart_FinalizableHandle AllocateFinalizableHandle(
+    Thread* thread,
+    Dart_Handle object,
+    void* peer,
+    intptr_t external_allocation_size,
+    Dart_HandleFinalizer callback) {
+  REUSABLE_OBJECT_HANDLESCOPE(thread);
+  Object& ref = thread->ObjectHandle();
+  ref = Api::UnwrapHandle(object);
   return AllocateFinalizableHandle(thread, ref, peer, external_allocation_size,
                                    callback);
 }
@@ -982,6 +1045,22 @@
     return NULL;
   }
   TransitionNativeToVM transition(thread);
+
+  return AllocateWeakPersistentHandle(thread, object, peer,
+                                      external_allocation_size, callback);
+}
+
+DART_EXPORT Dart_FinalizableHandle
+Dart_NewFinalizableHandle(Dart_Handle object,
+                          void* peer,
+                          intptr_t external_allocation_size,
+                          Dart_HandleFinalizer callback) {
+  Thread* thread = Thread::Current();
+  CHECK_ISOLATE(thread->isolate());
+  if (callback == nullptr) {
+    return nullptr;
+  }
+  TransitionNativeToVM transition(thread);
   return AllocateFinalizableHandle(thread, object, peer,
                                    external_allocation_size, callback);
 }
@@ -998,6 +1077,21 @@
   weak_ref->UpdateExternalSize(external_size, isolate_group);
 }
 
+DART_EXPORT void Dart_UpdateFinalizableExternalSize(
+    Dart_FinalizableHandle object,
+    Dart_Handle strong_ref_to_object,
+    intptr_t external_allocation_size) {
+  if (!Dart_IdentityEquals(strong_ref_to_object,
+                           HandleFromFinalizable(object))) {
+    FATAL1(
+        "%s expects arguments 'object' and 'strong_ref_to_object' to point to "
+        "the same object.",
+        CURRENT_FUNC);
+  }
+  auto wph_object = reinterpret_cast<Dart_WeakPersistentHandle>(object);
+  Dart_UpdateExternalSize(wph_object, external_allocation_size);
+}
+
 DART_EXPORT void Dart_DeletePersistentHandle(Dart_PersistentHandle object) {
   IsolateGroup* isolate_group = IsolateGroup::Current();
   CHECK_ISOLATE_GROUP(isolate_group);
@@ -1025,6 +1119,22 @@
   state->FreeWeakPersistentHandle(weak_ref);
 }
 
+DART_EXPORT void Dart_DeleteFinalizableHandle(
+    Dart_FinalizableHandle object,
+    Dart_Handle strong_ref_to_object) {
+  if (!Dart_IdentityEquals(strong_ref_to_object,
+                           HandleFromFinalizable(object))) {
+    FATAL1(
+        "%s expects arguments 'object' and 'strong_ref_to_object' to point to "
+        "the same object.",
+        CURRENT_FUNC);
+  }
+
+  auto wph_object = reinterpret_cast<Dart_WeakPersistentHandle>(object);
+
+  return Dart_DeleteWeakPersistentHandle(wph_object);
+}
+
 // --- Initialization and Globals ---
 
 DART_EXPORT const char* Dart_VersionString() {
@@ -3814,8 +3924,8 @@
   result = ExternalTypedData::New(cid, reinterpret_cast<uint8_t*>(data), length,
                                   thread->heap()->SpaceForExternal(bytes));
   if (callback != nullptr) {
-    AllocateFinalizableHandle(thread, result, peer, external_allocation_size,
-                              callback);
+    AllocateWeakPersistentHandle(thread, result, peer, external_allocation_size,
+                                 callback);
   }
   return Api::NewHandle(thread, result.raw());
 }
diff --git a/runtime/vm/dart_api_impl_test.cc b/runtime/vm/dart_api_impl_test.cc
index 7063353..84681a8 100644
--- a/runtime/vm/dart_api_impl_test.cc
+++ b/runtime/vm/dart_api_impl_test.cc
@@ -2792,12 +2792,16 @@
 static void NopCallback(void* isolate_callback_data,
                         Dart_WeakPersistentHandle handle,
                         void* peer) {}
+static void NopCallback(void* isolate_callback_data, void* peer) {}
 
 static void UnreachedCallback(void* isolate_callback_data,
                               Dart_WeakPersistentHandle handle,
                               void* peer) {
   UNREACHABLE();
 }
+static void UnreachedCallback(void* isolate_callback_data, void* peer) {
+  UNREACHABLE();
+}
 
 static void ExternalTypedDataFinalizer(void* isolate_callback_data,
                                        Dart_WeakPersistentHandle handle,
@@ -2826,9 +2830,7 @@
   }
 }
 
-static void SlowFinalizer(void* isolate_callback_data,
-                          Dart_WeakPersistentHandle handle,
-                          void* peer) {
+static void SlowFinalizer(void* isolate_callback_data, void* peer) {
   OS::Sleep(10);
   intptr_t* count = reinterpret_cast<intptr_t*>(peer);
   (*count)++;
@@ -2839,9 +2841,36 @@
   for (intptr_t i = 0; i < 10; i++) {
     Dart_EnterScope();
     Dart_Handle str1 = Dart_NewStringFromCString("Live fast");
-    Dart_NewWeakPersistentHandle(str1, &count, 0, SlowFinalizer);
+    Dart_NewFinalizableHandle(str1, &count, 0, SlowFinalizer);
     Dart_Handle str2 = Dart_NewStringFromCString("Die young");
-    Dart_NewWeakPersistentHandle(str2, &count, 0, SlowFinalizer);
+    Dart_NewFinalizableHandle(str2, &count, 0, SlowFinalizer);
+    Dart_ExitScope();
+
+    {
+      TransitionNativeToVM transition(thread);
+      GCTestHelper::CollectAllGarbage();
+    }
+  }
+
+  EXPECT_EQ(20, count);
+}
+
+static void SlowWeakPersistentHandle(void* isolate_callback_data,
+                                     Dart_WeakPersistentHandle handle,
+                                     void* peer) {
+  OS::Sleep(10);
+  intptr_t* count = reinterpret_cast<intptr_t*>(peer);
+  (*count)++;
+}
+
+TEST_CASE(DartAPI_SlowWeakPersistenhandle) {
+  intptr_t count = 0;
+  for (intptr_t i = 0; i < 10; i++) {
+    Dart_EnterScope();
+    Dart_Handle str1 = Dart_NewStringFromCString("Live fast");
+    Dart_NewWeakPersistentHandle(str1, &count, 0, SlowWeakPersistentHandle);
+    Dart_Handle str2 = Dart_NewStringFromCString("Die young");
+    Dart_NewWeakPersistentHandle(str2, &count, 0, SlowWeakPersistentHandle);
     Dart_ExitScope();
 
     {
@@ -3219,6 +3248,122 @@
   }
 }
 
+static Dart_FinalizableHandle finalizable_new_ref = nullptr;
+static void* finalizable_new_ref_peer = 0;
+static Dart_FinalizableHandle finalizable_old_ref = nullptr;
+static void* finalizable_old_ref_peer = 0;
+
+static void FinalizableHandleCallback(void* isolate_callback_data, void* peer) {
+  if (peer == finalizable_new_ref_peer) {
+    finalizable_new_ref_peer = 0;
+    finalizable_new_ref = nullptr;
+  } else if (peer == finalizable_old_ref_peer) {
+    finalizable_old_ref_peer = 0;
+    finalizable_old_ref = nullptr;
+  }
+}
+
+TEST_CASE(DartAPI_FinalizableHandle) {
+  // GCs due to allocations or weak handle creation can cause early promotion
+  // and interfer with the scenario this test is verifying.
+  NoHeapGrowthControlScope force_growth;
+
+  void* peer = reinterpret_cast<void*>(0);
+  Dart_Handle local_new_ref = Dart_Null();
+  finalizable_new_ref = Dart_NewFinalizableHandle(local_new_ref, peer, 0,
+                                                  FinalizableHandleCallback);
+  finalizable_new_ref_peer = peer;
+
+  peer = reinterpret_cast<void*>(1);
+  Dart_Handle local_old_ref = Dart_Null();
+  finalizable_old_ref = Dart_NewFinalizableHandle(local_old_ref, peer, 0,
+                                                  FinalizableHandleCallback);
+  finalizable_old_ref_peer = peer;
+
+  {
+    Dart_EnterScope();
+
+    // Create an object in new space.
+    Dart_Handle new_ref = AllocateNewString("new string");
+    EXPECT_VALID(new_ref);
+
+    // Create an object in old space.
+    Dart_Handle old_ref = AllocateOldString("old string");
+    EXPECT_VALID(old_ref);
+
+    // Create a weak ref to the new space object.
+    peer = reinterpret_cast<void*>(2);
+    finalizable_new_ref =
+        Dart_NewFinalizableHandle(new_ref, peer, 0, FinalizableHandleCallback);
+    finalizable_new_ref_peer = peer;
+
+    // Create a weak ref to the old space object.
+    peer = reinterpret_cast<void*>(3);
+    finalizable_old_ref =
+        Dart_NewFinalizableHandle(old_ref, peer, 0, FinalizableHandleCallback);
+    finalizable_old_ref_peer = peer;
+
+    {
+      TransitionNativeToVM transition(thread);
+      // Garbage collect new space.
+      GCTestHelper::CollectNewSpace();
+    }
+
+    // Nothing should be invalidated or cleared.
+    EXPECT_VALID(new_ref);
+    EXPECT(!Dart_IsNull(new_ref));
+    EXPECT_VALID(old_ref);
+    EXPECT(!Dart_IsNull(old_ref));
+
+    {
+      TransitionNativeToVM transition(thread);
+      // Garbage collect old space.
+      GCTestHelper::CollectOldSpace();
+    }
+
+    // Nothing should be invalidated or cleared.
+    EXPECT_VALID(new_ref);
+    EXPECT(!Dart_IsNull(new_ref));
+    EXPECT_VALID(old_ref);
+    EXPECT(!Dart_IsNull(old_ref));
+
+    // Delete local (strong) references.
+    Dart_ExitScope();
+  }
+
+  {
+    TransitionNativeToVM transition(thread);
+    // Garbage collect new space again.
+    GCTestHelper::CollectNewSpace();
+  }
+
+  {
+    Dart_EnterScope();
+    // Weak ref to new space object should now be cleared.
+    EXPECT(finalizable_new_ref == nullptr);
+    Dart_ExitScope();
+  }
+
+  {
+    TransitionNativeToVM transition(thread);
+    // Garbage collect old space again.
+    GCTestHelper::CollectOldSpace();
+  }
+
+  {
+    Dart_EnterScope();
+    // Weak ref to old space object should now be cleared.
+    EXPECT(finalizable_new_ref == nullptr);
+    EXPECT(finalizable_old_ref == nullptr);
+    Dart_ExitScope();
+  }
+
+  {
+    TransitionNativeToVM transition(thread);
+    GCTestHelper::CollectAllGarbage();
+  }
+}
+
 TEST_CASE(DartAPI_WeakPersistentHandleErrors) {
   Dart_EnterScope();
 
@@ -3239,6 +3384,26 @@
   Dart_ExitScope();
 }
 
+TEST_CASE(DartAPI_FinalizableHandleErrors) {
+  Dart_EnterScope();
+
+  // NULL callback.
+  Dart_Handle obj1 = NewString("new string");
+  EXPECT_VALID(obj1);
+  Dart_FinalizableHandle ref1 =
+      Dart_NewFinalizableHandle(obj1, nullptr, 0, nullptr);
+  EXPECT_EQ(ref1, static_cast<void*>(nullptr));
+
+  // Immediate object.
+  Dart_Handle obj2 = Dart_NewInteger(0);
+  EXPECT_VALID(obj2);
+  Dart_FinalizableHandle ref2 =
+      Dart_NewFinalizableHandle(obj2, nullptr, 0, FinalizableHandleCallback);
+  EXPECT_EQ(ref2, static_cast<void*>(nullptr));
+
+  Dart_ExitScope();
+}
+
 static Dart_PersistentHandle persistent_handle1;
 static Dart_WeakPersistentHandle weak_persistent_handle2;
 static Dart_WeakPersistentHandle weak_persistent_handle3;
@@ -3285,6 +3450,44 @@
   Dart_ExitScope();
 }
 
+static Dart_FinalizableHandle finalizable_handle3;
+
+static void FinalizableHandlePeerCleanupFinalizer(void* isolate_callback_data,
+                                                  void* peer) {
+  Dart_DeletePersistentHandle(persistent_handle1);
+  Dart_DeleteWeakPersistentHandle(weak_persistent_handle2);
+  *static_cast<int*>(peer) = 42;
+}
+
+TEST_CASE(DartAPI_FinalizableHandleCleanupFinalizer) {
+  Heap* heap = Isolate::Current()->heap();
+
+  const char* kTestString1 = "Test String1";
+  Dart_EnterScope();
+  CHECK_API_SCOPE(thread);
+  Dart_Handle ref1 = Dart_NewStringFromCString(kTestString1);
+  persistent_handle1 = Dart_NewPersistentHandle(ref1);
+  Dart_Handle ref2 = Dart_NewStringFromCString(kTestString1);
+  int peer2 = 0;
+  weak_persistent_handle2 =
+      Dart_NewWeakPersistentHandle(ref2, &peer2, 0, NopCallback);
+  int peer3 = 0;
+  {
+    Dart_EnterScope();
+    Dart_Handle ref3 = Dart_NewStringFromCString(kTestString1);
+    finalizable_handle3 = Dart_NewFinalizableHandle(
+        ref3, &peer3, 0, FinalizableHandlePeerCleanupFinalizer);
+    Dart_ExitScope();
+  }
+  {
+    TransitionNativeToVM transition(thread);
+    GCTestHelper::CollectAllGarbage();
+    EXPECT(heap->ExternalInWords(Heap::kOld) == 0);
+    EXPECT(peer3 == 42);
+  }
+  Dart_ExitScope();
+}
+
 static void WeakPersistentHandlePeerFinalizer(void* isolate_callback_data,
                                               Dart_WeakPersistentHandle handle,
                                               void* peer) {
@@ -3313,6 +3516,32 @@
   }
 }
 
+static void FinalizableHandlePeerFinalizer(void* isolate_callback_data,
+                                           void* peer) {
+  *static_cast<int*>(peer) = 42;
+}
+
+TEST_CASE(DartAPI_FinalizableHandleCallback) {
+  Dart_FinalizableHandle weak_ref = nullptr;
+  int peer = 0;
+  {
+    Dart_EnterScope();
+    Dart_Handle obj = NewString("new string");
+    EXPECT_VALID(obj);
+    weak_ref = Dart_NewFinalizableHandle(obj, &peer, 0,
+                                         FinalizableHandlePeerFinalizer);
+    EXPECT(peer == 0);
+    Dart_ExitScope();
+  }
+  {
+    TransitionNativeToVM transition(thread);
+    GCTestHelper::CollectOldSpace();
+    EXPECT(peer == 0);
+    GCTestHelper::CollectNewSpace();
+    EXPECT(peer == 42);
+  }
+}
+
 TEST_CASE(DartAPI_WeakPersistentHandleNoCallback) {
   Dart_WeakPersistentHandle weak_ref = NULL;
   int peer = 0;
@@ -3337,6 +3566,35 @@
   }
 }
 
+TEST_CASE(DartAPI_FinalizableHandleNoCallback) {
+  Dart_FinalizableHandle weak_ref = nullptr;
+  Dart_PersistentHandle strong_ref = nullptr;
+  int peer = 0;
+  {
+    Dart_EnterScope();
+    Dart_Handle obj = NewString("new string");
+    EXPECT_VALID(obj);
+    weak_ref = Dart_NewFinalizableHandle(obj, &peer, 0,
+                                         FinalizableHandlePeerFinalizer);
+    strong_ref = Dart_NewPersistentHandle(obj);
+    Dart_ExitScope();
+  }
+  // A finalizer is not invoked on a deleted handle.  Therefore, the
+  // peer value should not change after the referent is collected.
+  Dart_DeleteFinalizableHandle(weak_ref, strong_ref);
+  Dart_DeletePersistentHandle(strong_ref);
+  EXPECT(peer == 0);
+  {
+    TransitionNativeToVM transition(thread);
+    GCTestHelper::CollectOldSpace();
+    EXPECT(peer == 0);
+    GCTestHelper::CollectNewSpace();
+    EXPECT(peer == 0);
+  }
+}
+
+Dart_WeakPersistentHandle delete_on_finalization;
+
 VM_UNIT_TEST_CASE(DartAPI_WeakPersistentHandlesCallbackShutdown) {
   TestCase::CreateTestIsolate();
   Dart_EnterScope();
@@ -3349,6 +3607,17 @@
   EXPECT(peer == 42);
 }
 
+VM_UNIT_TEST_CASE(DartAPI_FinalizableHandlesCallbackShutdown) {
+  TestCase::CreateTestIsolate();
+  Dart_EnterScope();
+  Dart_Handle ref = Dart_True();
+  int peer = 1234;
+  Dart_NewFinalizableHandle(ref, &peer, 0, FinalizableHandlePeerFinalizer);
+  Dart_ExitScope();
+  Dart_ShutdownIsolate();
+  EXPECT(peer == 42);
+}
+
 TEST_CASE(DartAPI_WeakPersistentHandleExternalAllocationSize) {
   Heap* heap = Isolate::Current()->heap();
   EXPECT(heap->ExternalInWords(Heap::kNew) == 0);
@@ -3397,6 +3666,52 @@
   }
 }
 
+TEST_CASE(DartAPI_FinalizableHandleExternalAllocationSize) {
+  Heap* heap = Isolate::Current()->heap();
+  EXPECT(heap->ExternalInWords(Heap::kNew) == 0);
+  EXPECT(heap->ExternalInWords(Heap::kOld) == 0);
+  Dart_FinalizableHandle weak1 = nullptr;
+  static const intptr_t kWeak1ExternalSize = 1 * KB;
+  {
+    Dart_EnterScope();
+    Dart_Handle obj = NewString("weakly referenced string");
+    EXPECT_VALID(obj);
+    weak1 = Dart_NewFinalizableHandle(obj, nullptr, kWeak1ExternalSize,
+                                      NopCallback);
+    Dart_ExitScope();
+  }
+  Dart_PersistentHandle strong_ref = nullptr;
+  Dart_FinalizableHandle weak2 = nullptr;
+  static const intptr_t kWeak2ExternalSize = 2 * KB;
+  {
+    Dart_EnterScope();
+    Dart_Handle obj = NewString("strongly referenced string");
+    EXPECT_VALID(obj);
+    strong_ref = Dart_NewPersistentHandle(obj);
+    weak2 = Dart_NewFinalizableHandle(obj, nullptr, kWeak2ExternalSize,
+                                      NopCallback);
+    EXPECT_VALID(AsHandle(strong_ref));
+    Dart_ExitScope();
+  }
+  {
+    TransitionNativeToVM transition(thread);
+    GCTestHelper::CollectOldSpace();
+    EXPECT(heap->ExternalInWords(Heap::kNew) ==
+           (kWeak1ExternalSize + kWeak2ExternalSize) / kWordSize);
+    // Collect weakly referenced string, and promote strongly referenced string.
+    GCTestHelper::CollectNewSpace();
+    GCTestHelper::CollectNewSpace();
+    EXPECT(heap->ExternalInWords(Heap::kNew) == 0);
+    EXPECT(heap->ExternalInWords(Heap::kOld) == kWeak2ExternalSize / kWordSize);
+  }
+  Dart_DeletePersistentHandle(strong_ref);
+  {
+    TransitionNativeToVM transition(thread);
+    GCTestHelper::CollectOldSpace();
+    EXPECT(heap->ExternalInWords(Heap::kOld) == 0);
+  }
+}
+
 TEST_CASE(DartAPI_WeakPersistentHandleExternalAllocationSizeNewspaceGC) {
   Heap* heap = Isolate::Current()->heap();
   Dart_WeakPersistentHandle weak1 = NULL;
@@ -3439,6 +3754,49 @@
   }
 }
 
+TEST_CASE(DartAPI_FinalizableHandleExternalAllocationSizeNewspaceGC) {
+  Heap* heap = Isolate::Current()->heap();
+  Dart_FinalizableHandle weak1 = nullptr;
+  Dart_PersistentHandle strong1 = nullptr;
+  // Large enough to exceed any new space limit. Not actually allocated.
+  const intptr_t kWeak1ExternalSize = 500 * MB;
+  {
+    Dart_EnterScope();
+    Dart_Handle obj = NewString("weakly referenced string");
+    EXPECT_VALID(obj);
+    // Triggers a scavenge immediately, since kWeak1ExternalSize is above limit.
+    weak1 = Dart_NewFinalizableHandle(obj, nullptr, kWeak1ExternalSize,
+                                      NopCallback);
+    strong1 = Dart_NewPersistentHandle(obj);
+    // ... but the object is still alive and not yet promoted, so external size
+    // in new space is still above the limit. Thus, even the following tiny
+    // external allocation will trigger another scavenge.
+    Dart_FinalizableHandle trigger =
+        Dart_NewFinalizableHandle(obj, nullptr, 1, NopCallback);
+    Dart_DeleteFinalizableHandle(trigger, obj);
+    // After the two scavenges above, 'obj' should now be promoted, hence its
+    // external size charged to old space.
+    {
+      CHECK_API_SCOPE(thread);
+      TransitionNativeToVM transition(thread);
+      HANDLESCOPE(thread);
+      String& handle = String::Handle(thread->zone());
+      handle ^= Api::UnwrapHandle(obj);
+      EXPECT(handle.IsOld());
+    }
+    EXPECT(heap->ExternalInWords(Heap::kNew) == 0);
+    EXPECT(heap->ExternalInWords(Heap::kOld) == kWeak1ExternalSize / kWordSize);
+    Dart_ExitScope();
+  }
+  Dart_DeleteFinalizableHandle(weak1, strong1);
+  Dart_DeletePersistentHandle(strong1);
+  {
+    TransitionNativeToVM transition(thread);
+    GCTestHelper::CollectOldSpace();
+    EXPECT_EQ(0, heap->ExternalInWords(Heap::kOld));
+  }
+}
+
 TEST_CASE(DartAPI_WeakPersistentHandleExternalAllocationSizeOldspaceGC) {
   // Check that external allocation in old space can trigger GC.
   Isolate* isolate = Isolate::Current();
@@ -3446,6 +3804,7 @@
   Dart_Handle live = AllocateOldString("live");
   EXPECT_VALID(live);
   Dart_WeakPersistentHandle weak = NULL;
+  Dart_WeakPersistentHandle weak2 = NULL;
   {
     TransitionNativeToVM transition(thread);
     GCTestHelper::WaitForGCTasks();  // Finalize GC for accurate live size.
@@ -3469,7 +3828,48 @@
   }
   // Large enough to trigger GC in old space. Not actually allocated.
   const intptr_t kHugeExternalSize = (kWordSize == 4) ? 513 * MB : 1025 * MB;
-  Dart_NewWeakPersistentHandle(live, NULL, kHugeExternalSize, NopCallback);
+  weak2 =
+      Dart_NewWeakPersistentHandle(live, NULL, kHugeExternalSize, NopCallback);
+  {
+    TransitionNativeToVM transition(thread);
+    GCTestHelper::WaitForGCTasks();  // Finalize GC for accurate live size.
+    // Expect small garbage to be collected.
+    EXPECT_EQ(kHugeExternalSize,
+              isolate->heap()->ExternalInWords(Heap::kOld) * kWordSize);
+  }
+  Dart_ExitScope();
+}
+
+TEST_CASE(DartAPI_FinalizableHandleExternalAllocationSizeOldspaceGC) {
+  // Check that external allocation in old space can trigger GC.
+  Isolate* isolate = Isolate::Current();
+  Dart_EnterScope();
+  Dart_Handle live = AllocateOldString("live");
+  EXPECT_VALID(live);
+  Dart_FinalizableHandle weak = NULL;
+  {
+    TransitionNativeToVM transition(thread);
+    GCTestHelper::WaitForGCTasks();  // Finalize GC for accurate live size.
+    EXPECT_EQ(0, isolate->heap()->ExternalInWords(Heap::kOld));
+  }
+  const intptr_t kSmallExternalSize = 1 * KB;
+  {
+    Dart_EnterScope();
+    Dart_Handle dead = AllocateOldString("dead");
+    EXPECT_VALID(dead);
+    weak = Dart_NewFinalizableHandle(dead, nullptr, kSmallExternalSize,
+                                     NopCallback);
+    Dart_ExitScope();
+  }
+  {
+    TransitionNativeToVM transition(thread);
+    GCTestHelper::WaitForGCTasks();  // Finalize GC for accurate live size.
+    EXPECT_EQ(kSmallExternalSize,
+              isolate->heap()->ExternalInWords(Heap::kOld) * kWordSize);
+  }
+  // Large enough to trigger GC in old space. Not actually allocated.
+  const intptr_t kHugeExternalSize = (kWordSize == 4) ? 513 * MB : 1025 * MB;
+  Dart_NewFinalizableHandle(live, nullptr, kHugeExternalSize, NopCallback);
   {
     TransitionNativeToVM transition(thread);
     GCTestHelper::WaitForGCTasks();  // Finalize GC for accurate live size.
@@ -3514,6 +3914,44 @@
   }
 }
 
+TEST_CASE(DartAPI_FinalizableHandleExternalAllocationSizeOddReferents) {
+  Heap* heap = Isolate::Current()->heap();
+  Dart_FinalizableHandle weak1 = nullptr;
+  Dart_PersistentHandle strong1 = nullptr;
+  static const intptr_t kWeak1ExternalSize = 1 * KB;
+  Dart_FinalizableHandle weak2 = nullptr;
+  Dart_PersistentHandle strong2 = nullptr;
+  static const intptr_t kWeak2ExternalSize = 2 * KB;
+  EXPECT_EQ(0, heap->ExternalInWords(Heap::kOld));
+  {
+    Dart_EnterScope();
+    Dart_Handle dart_true = Dart_True();  // VM heap object.
+    EXPECT_VALID(dart_true);
+    weak1 = Dart_NewFinalizableHandle(dart_true, nullptr, kWeak1ExternalSize,
+                                      UnreachedCallback);
+    strong1 = Dart_NewPersistentHandle(dart_true);
+    Dart_Handle zero = Dart_False();  // VM heap object.
+    EXPECT_VALID(zero);
+    weak2 = Dart_NewFinalizableHandle(zero, nullptr, kWeak2ExternalSize,
+                                      UnreachedCallback);
+    strong2 = Dart_NewPersistentHandle(zero);
+    // Both should be charged to old space.
+    EXPECT(heap->ExternalInWords(Heap::kOld) ==
+           (kWeak1ExternalSize + kWeak2ExternalSize) / kWordSize);
+    Dart_ExitScope();
+  }
+  Dart_DeleteFinalizableHandle(weak1, strong1);
+  Dart_DeletePersistentHandle(strong1);
+  Dart_DeleteFinalizableHandle(weak2, strong2);
+  Dart_DeletePersistentHandle(strong2);
+  EXPECT_EQ(0, heap->ExternalInWords(Heap::kOld));
+  {
+    TransitionNativeToVM transition(thread);
+    GCTestHelper::CollectOldSpace();
+    EXPECT_EQ(0, heap->ExternalInWords(Heap::kOld));
+  }
+}
+
 #define EXAMPLE_RESOURCE_NATIVE_LIST(V)                                        \
   V(ExampleResource_Allocate, 1)                                               \
   V(ExampleResource_Use, 1)                                                    \
diff --git a/runtime/vm/dart_api_state.h b/runtime/vm/dart_api_state.h
index 5b22c93..7b52e98 100644
--- a/runtime/vm/dart_api_state.h
+++ b/runtime/vm/dart_api_state.h
@@ -190,12 +190,29 @@
 // dart API.
 class FinalizablePersistentHandle {
  public:
+  // TODO(http://dartbug.com/42312): Delete this on migrating signature
+  // Dart_NewWeakPersistentHandle to Dart_HandleFinalizer.
+  enum class CallbackSignature {
+    // Uses a Dart_WeakPersistentHandleFinalizer.
+    kWeakPersistentHandleFinalizer = 0,
+    // Uses a Dart_HandleFinalizer.
+    kHandleFinalizer = 1,
+  };
+
   static FinalizablePersistentHandle* New(
       Isolate* isolate,
       const Object& object,
       void* peer,
       Dart_WeakPersistentHandleFinalizer callback,
-      intptr_t external_size);
+      intptr_t external_size,
+      bool auto_delete);
+
+  static FinalizablePersistentHandle* New(Isolate* isolate,
+                                          const Object& object,
+                                          void* peer,
+                                          Dart_HandleFinalizer callback,
+                                          intptr_t external_size,
+                                          bool auto_delete);
 
   // Accessors.
   ObjectPtr raw() const { return raw_; }
@@ -204,10 +221,26 @@
     return OFFSET_OF(FinalizablePersistentHandle, raw_);
   }
   void* peer() const { return peer_; }
-  Dart_WeakPersistentHandleFinalizer callback() const { return callback_; }
-  Dart_WeakPersistentHandle apiHandle() {
+  Dart_WeakPersistentHandleFinalizer CallbackWeakFinalizer() const {
+    ASSERT(callback_signature_ ==
+           CallbackSignature::kWeakPersistentHandleFinalizer);
+    return callback_.weak_persistent;
+  }
+  Dart_HandleFinalizer callback() const {
+    ASSERT(callback_signature_ == CallbackSignature::kHandleFinalizer);
+    return callback_.finalizable;
+  }
+  uword callback_address() const {
+    return reinterpret_cast<uword>(callback_.finalizable);
+  }
+  Dart_WeakPersistentHandle ApiWeakPersistentHandle() {
     return reinterpret_cast<Dart_WeakPersistentHandle>(this);
   }
+  Dart_FinalizableHandle ApiFinalizableHandle() {
+    return reinterpret_cast<Dart_FinalizableHandle>(this);
+  }
+
+  bool auto_delete() const { return auto_delete_; }
 
   intptr_t external_size() const {
     return ExternalSizeInWordsBits::decode(external_data_) * kWordSize;
@@ -256,6 +289,7 @@
   }
 
   static FinalizablePersistentHandle* Cast(Dart_WeakPersistentHandle handle);
+  static FinalizablePersistentHandle* Cast(Dart_FinalizableHandle handle);
 
  private:
   enum {
@@ -264,6 +298,15 @@
     kExternalSizeBitsSize = (kBitsPerWord - 1),
   };
 
+  union HandleFinalizer {
+    Dart_HandleFinalizer finalizable;
+    Dart_WeakPersistentHandleFinalizer weak_persistent;
+    HandleFinalizer(Dart_HandleFinalizer finalizer) : finalizable(finalizer) {}
+    HandleFinalizer(Dart_WeakPersistentHandleFinalizer finalizer)
+        : weak_persistent(finalizer) {}
+    HandleFinalizer() : finalizable(nullptr) {}
+  };
+
   // This part of external_data_ is the number of externally allocated bytes.
   class ExternalSizeInWordsBits : public BitField<uword,
                                                   intptr_t,
@@ -277,7 +320,10 @@
   friend class FinalizablePersistentHandles;
 
   FinalizablePersistentHandle()
-      : raw_(nullptr), peer_(NULL), external_data_(0), callback_(NULL) {}
+      : raw_(nullptr),
+        peer_(NULL),
+        external_data_(0),
+        callback_(HandleFinalizer()) {}
   ~FinalizablePersistentHandle() {}
 
   static void Finalize(IsolateGroup* isolate_group,
@@ -293,6 +339,7 @@
     raw_ = static_cast<ObjectPtr>(reinterpret_cast<uword>(free_list));
     ASSERT(!raw_->IsHeapObject());
   }
+
   void FreeHandle(FinalizablePersistentHandle* free_list) {
     Clear();
     SetNext(free_list);
@@ -302,7 +349,9 @@
     raw_ = Object::null();
     peer_ = NULL;
     external_data_ = 0;
-    callback_ = NULL;
+    callback_ = HandleFinalizer();
+    auto_delete_ = false;
+    callback_signature_ = CallbackSignature::kWeakPersistentHandleFinalizer;
   }
 
   void set_raw(ObjectPtr raw) { raw_ = raw; }
@@ -311,10 +360,14 @@
 
   void set_peer(void* peer) { peer_ = peer; }
 
-  void set_callback(Dart_WeakPersistentHandleFinalizer callback) {
-    callback_ = callback;
+  void set_callback_signature(CallbackSignature callback_signature) {
+    callback_signature_ = callback_signature;
   }
 
+  void set_callback(HandleFinalizer callback) { callback_ = callback; }
+
+  void set_auto_delete(bool auto_delete) { auto_delete_ = auto_delete; }
+
   void set_external_size(intptr_t size) {
     intptr_t size_in_words = Utils::RoundUp(size, kObjectAlignment) / kWordSize;
     ASSERT(ExternalSizeInWordsBits::is_valid(size_in_words));
@@ -343,7 +396,9 @@
   ObjectPtr raw_;
   void* peer_;
   uword external_data_;
-  Dart_WeakPersistentHandleFinalizer callback_;
+  HandleFinalizer callback_;
+  bool auto_delete_;
+  CallbackSignature callback_signature_;
 
   DISALLOW_ALLOCATION();  // Allocated through AllocateHandle methods.
   DISALLOW_COPY_AND_ASSIGN(FinalizablePersistentHandle);
@@ -563,6 +618,10 @@
     return IsValidScopedHandle(reinterpret_cast<uword>(object));
   }
 
+  bool IsValidHandle(Dart_FinalizableHandle object) const {
+    return IsValidScopedHandle(reinterpret_cast<uword>(object));
+  }
+
   bool IsFreeHandle(Dart_WeakPersistentHandle object) const {
     FinalizablePersistentHandle* handle = free_list_;
     while (handle != NULL) {
@@ -746,6 +805,7 @@
     MutexLocker ml(&mutex_);
     return weak_persistent_handles_.AllocateHandle();
   }
+
   void FreeWeakPersistentHandle(FinalizablePersistentHandle* weak_ref) {
     MutexLocker ml(&mutex_);
     weak_persistent_handles_.FreeHandle(weak_ref);
@@ -767,6 +827,11 @@
     return weak_persistent_handles_.IsValidHandle(object);
   }
 
+  bool IsValidFinalizableHandle(Dart_FinalizableHandle object) {
+    MutexLocker ml(&mutex_);
+    return weak_persistent_handles_.IsValidHandle(object);
+  }
+
   bool IsActiveWeakPersistentHandle(Dart_WeakPersistentHandle object) {
     MutexLocker ml(&mutex_);
     return weak_persistent_handles_.IsValidHandle(object) &&
@@ -832,13 +897,38 @@
     const Object& object,
     void* peer,
     Dart_WeakPersistentHandleFinalizer callback,
-    intptr_t external_size) {
+    intptr_t external_size,
+    bool auto_delete) {
+  ApiState* state = isolate->group()->api_state();
+  ASSERT(state != NULL);
+  ASSERT(callback != NULL);
+  FinalizablePersistentHandle* ref = state->AllocateWeakPersistentHandle();
+  ref->set_raw(object);
+  ref->set_peer(peer);
+  ref->set_callback_signature(
+      CallbackSignature::kWeakPersistentHandleFinalizer);
+  ref->set_callback(HandleFinalizer(callback));
+  ref->set_auto_delete(auto_delete);
+  // This may trigger GC, so it must be called last.
+  ref->SetExternalSize(external_size, isolate->group());
+  return ref;
+}
+
+inline FinalizablePersistentHandle* FinalizablePersistentHandle::New(
+    Isolate* isolate,
+    const Object& object,
+    void* peer,
+    Dart_HandleFinalizer callback,
+    intptr_t external_size,
+    bool auto_delete) {
   ApiState* state = isolate->group()->api_state();
   ASSERT(state != NULL);
   FinalizablePersistentHandle* ref = state->AllocateWeakPersistentHandle();
   ref->set_raw(object);
   ref->set_peer(peer);
-  ref->set_callback(callback);
+  ref->set_callback_signature(CallbackSignature::kHandleFinalizer);
+  ref->set_callback(HandleFinalizer(callback));
+  ref->set_auto_delete(auto_delete);
   // This may trigger GC, so it must be called last.
   ref->SetExternalSize(external_size, isolate->group());
   return ref;
diff --git a/runtime/vm/heap/heap.cc b/runtime/vm/heap/heap.cc
index 1eb27bf..83ff8a8 100644
--- a/runtime/vm/heap/heap.cc
+++ b/runtime/vm/heap/heap.cc
@@ -595,7 +595,7 @@
   EvacuateNewSpace(thread, reason);
   if (thread->is_marking()) {
     // If incremental marking is happening, we need to finish the GC cycle
-    // and perform a follow-up GC to pruge any "floating garbage" that may be
+    // and perform a follow-up GC to purge any "floating garbage" that may be
     // retained by the incremental barrier.
     CollectOldSpaceGarbage(thread, kMarkSweep, reason);
   }
diff --git a/runtime/vm/heap/heap.h b/runtime/vm/heap/heap.h
index 841edb1..f780ea1 100644
--- a/runtime/vm/heap/heap.h
+++ b/runtime/vm/heap/heap.h
@@ -61,7 +61,7 @@
     kOldSpace,     // Old space limit crossed.
     kFinalize,     // Concurrent marking finished.
     kFull,         // Heap::CollectAllGarbage
-    kExternal,     // Dart_NewWeakPersistentHandle
+    kExternal,     // Dart_NewFinalizableHandle Dart_NewWeakPersistentHandle
     kIdle,         // Dart_NotifyIdle
     kLowMemory,    // Dart_NotifyLowMemory
     kDebugging,    // service request, etc.
diff --git a/runtime/vm/heap/heap_test.cc b/runtime/vm/heap/heap_test.cc
index cd2c0e8..f7201f1 100644
--- a/runtime/vm/heap/heap_test.cc
+++ b/runtime/vm/heap/heap_test.cc
@@ -571,9 +571,7 @@
   EXPECT(size_before < size_after);
 }
 
-static void NoopFinalizer(void* isolate_callback_data,
-                          Dart_WeakPersistentHandle handle,
-                          void* peer) {}
+static void NoopFinalizer(void* isolate_callback_data, void* peer) {}
 
 ISOLATE_UNIT_TEST_CASE(ExternalPromotion) {
   Isolate* isolate = Isolate::Current();
@@ -587,7 +585,8 @@
   Array& neu = Array::Handle();
   for (intptr_t i = 0; i < 100; i++) {
     neu = Array::New(1, Heap::kNew);
-    FinalizablePersistentHandle::New(isolate, neu, NULL, NoopFinalizer, 1 * MB);
+    FinalizablePersistentHandle::New(isolate, neu, NULL, NoopFinalizer, 1 * MB,
+                                     /*auto_delete=*/true);
     old.SetAt(i, neu);
   }
 
@@ -753,7 +752,8 @@
   Array& neu = Array::Handle();
   for (intptr_t i = 0; i < 100; i++) {
     neu = Array::New(1, Heap::kNew);
-    FinalizablePersistentHandle::New(isolate, neu, NULL, NoopFinalizer, 1 * MB);
+    FinalizablePersistentHandle::New(isolate, neu, NULL, NoopFinalizer, 1 * MB,
+                                     /*auto_delete=*/true);
     old.SetAt(i, neu);
 
     if ((i % 4) == 0) {
diff --git a/runtime/vm/kernel_binary.h b/runtime/vm/kernel_binary.h
index 33dc838..01e34ab 100644
--- a/runtime/vm/kernel_binary.h
+++ b/runtime/vm/kernel_binary.h
@@ -20,8 +20,8 @@
 static const uint32_t kMagicProgramFile = 0x90ABCDEFu;
 
 // Both version numbers are inclusive.
-static const uint32_t kMinSupportedKernelFormatVersion = 43;
-static const uint32_t kMaxSupportedKernelFormatVersion = 43;
+static const uint32_t kMinSupportedKernelFormatVersion = 44;
+static const uint32_t kMaxSupportedKernelFormatVersion = 44;
 
 // Keep in sync with package:kernel/lib/binary/tag.dart
 #define KERNEL_TAG_LIST(V)                                                     \
diff --git a/runtime/vm/kernel_loader.cc b/runtime/vm/kernel_loader.cc
index 184aa5b..092af49 100644
--- a/runtime/vm/kernel_loader.cc
+++ b/runtime/vm/kernel_loader.cc
@@ -376,7 +376,6 @@
   const intptr_t source_table_size = helper_.SourceTableSize();
   const Array& scripts =
       Array::Handle(Z, Array::New(source_table_size, Heap::kOld));
-  patch_classes_ = Array::New(source_table_size, Heap::kOld);
 
   // Copy the Kernel string offsets out of the binary and into the VM's heap.
   ASSERT(program_->string_table_offset() >= 0);
@@ -489,11 +488,7 @@
       expression_evaluation_library_(Library::Handle(Z)) {
   ASSERT(T.active_class_ == &active_class_);
   T.finalize_ = false;
-
-  const Array& scripts = Array::Handle(Z, kernel_program_info_.scripts());
-  patch_classes_ = Array::New(scripts.Length(), Heap::kOld);
   library_kernel_data_ = kernel_data.raw();
-
   H.InitFromKernelProgramInfo(kernel_program_info_);
 }
 
@@ -2107,6 +2102,13 @@
                                              intptr_t source_uri_index) {
   const Script& correct_script = Script::Handle(Z, ScriptAt(source_uri_index));
   if (klass.script() != correct_script.raw()) {
+    // Lazily create the [patch_classes_] array in case we need it.
+    if (patch_classes_.IsNull()) {
+      const Array& scripts = Array::Handle(Z, kernel_program_info_.scripts());
+      ASSERT(!scripts.IsNull());
+      patch_classes_ = Array::New(scripts.Length(), Heap::kOld);
+    }
+
     // Use cache for patch classes. This works best for in-order usages.
     PatchClass& patch_class = PatchClass::ZoneHandle(Z);
     patch_class ^= patch_classes_.At(source_uri_index);
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 64a51b7..9616065 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -22421,7 +22421,8 @@
     intptr_t external_size) {
   ASSERT(callback != NULL);
   return FinalizablePersistentHandle::New(Isolate::Current(), referent, peer,
-                                          callback, external_size);
+                                          callback, external_size,
+                                          /*auto_delete=*/true);
 }
 
 StringPtr String::Transform(int32_t (*mapping)(int32_t ch),
@@ -24052,7 +24053,6 @@
 }
 
 static void TransferableTypedDataFinalizer(void* isolate_callback_data,
-                                           Dart_WeakPersistentHandle handle,
                                            void* peer) {
   delete (reinterpret_cast<TransferableTypedDataPeer*>(peer));
 }
@@ -24075,8 +24075,8 @@
   // Set up finalizer so it frees allocated memory if handle is
   // garbage-collected.
   peer->set_handle(FinalizablePersistentHandle::New(
-      thread->isolate(), result, peer, &TransferableTypedDataFinalizer,
-      length));
+      thread->isolate(), result, peer, &TransferableTypedDataFinalizer, length,
+      /*auto_delete=*/true));
 
   return result.raw();
 }
diff --git a/runtime/vm/object_graph.cc b/runtime/vm/object_graph.cc
index 7e0ab00..901efba 100644
--- a/runtime/vm/object_graph.cc
+++ b/runtime/vm/object_graph.cc
@@ -982,7 +982,7 @@
     writer_->WriteUnsigned(weak_persistent_handle->external_size());
     // Attempt to include a native symbol name.
     auto const name = NativeSymbolResolver::LookupSymbolName(
-        reinterpret_cast<uword>(weak_persistent_handle->callback()), nullptr);
+        weak_persistent_handle->callback_address(), nullptr);
     writer_->WriteUtf8((name == nullptr) ? "Unknown native function" : name);
     if (name != nullptr) {
       NativeSymbolResolver::FreeSymbolName(name);
diff --git a/runtime/vm/os_fuchsia.cc b/runtime/vm/os_fuchsia.cc
index be98736..c30ee49 100644
--- a/runtime/vm/os_fuchsia.cc
+++ b/runtime/vm/os_fuchsia.cc
@@ -11,7 +11,7 @@
 #include <fcntl.h>
 #include <stdint.h>
 
-#include <fuchsia/intl/cpp/fidl.h>
+#include <fuchsia/deprecatedtimezone/cpp/fidl.h>
 #include <lib/async/default.h>
 #include <lib/async-loop/loop.h>
 #include <lib/async-loop/default.h>
@@ -24,31 +24,17 @@
 #include <zircon/syscalls/object.h>
 #include <zircon/types.h>
 
-#include "unicode/errorcode.h"
-#include "unicode/timezone.h"
-
 #include "platform/assert.h"
-#include "platform/syslog.h"
 #include "platform/utils.h"
 #include "vm/zone.h"
 
 namespace {
 
-static constexpr int32_t kMsPerSec = 1000;
-
 // The data directory containing ICU timezone data files.
 static constexpr char kICUTZDataDir[] = "/config/data/tzdata/icu/44/le";
 
-// This is the general OK status.
-static constexpr int32_t kOk = 0;
-
-// This status means that the error code is not initialized yet ("set" was not
-// yet called).  Error codes are usually either 0 (kOk), or negative.
-static constexpr int32_t kUninitialized = 1;
-
 // The status codes for tzdata file open and read.
 enum class TZDataStatus {
-  // The operation completed without error.
   OK = 0,
   // The open call for the tzdata file did not succeed.
   COULD_NOT_OPEN = -1,
@@ -58,8 +44,6 @@
 
 // Adds a facility for introspecting timezone data errors.  Allows insight into
 // the internal state of the VM even if error reporting facilities fail.
-//
-// Under normal operation, all metric values below should be zero.
 class InspectMetrics {
  public:
   // Does not take ownership of inspector.
@@ -67,14 +51,9 @@
       : inspector_(inspector),
         root_(inspector_->GetRoot()),
         metrics_(root_.CreateChild("os")),
-        dst_status_(metrics_.CreateInt("dst_status", kUninitialized)),
-        tz_data_status_(metrics_.CreateInt("tz_data_status", kUninitialized)),
-        tz_data_close_status_(
-            metrics_.CreateInt("tz_data_close_status", kUninitialized)),
-        get_profile_status_(
-            metrics_.CreateInt("get_profile_status", kUninitialized)),
-        profiles_timezone_content_status_(
-            metrics_.CreateInt("timezone_content_status", kOk)) {}
+        dst_status_(metrics_.CreateInt("dst_status", 0)),
+        tz_data_status_(metrics_.CreateInt("tz_data_status", 0)),
+        tz_data_close_status_(metrics_.CreateInt("tz_data_close_status", 0)) {}
 
   // Sets the last status code for DST offset calls.
   void SetDSTOffsetStatus(zx_status_t status) {
@@ -88,17 +67,6 @@
     tz_data_close_status_.Set(status);
   }
 
-  // Sets the last status code for the call to PropertyProvider::GetProfile.
-  void SetProfileStatus(zx_status_t status) {
-    get_profile_status_.Set(static_cast<int32_t>(status));
-  }
-
-  // Sets the last status seen while examining timezones returned from
-  // PropertyProvider::GetProfile.
-  void SetTimeZoneContentStatus(zx_status_t status) {
-    profiles_timezone_content_status_.Set(static_cast<int32_t>(status));
-  }
-
  private:
   // The inspector that all metrics are being reported into.
   inspect::Inspector* inspector_;
@@ -117,15 +85,6 @@
 
   // The return code for the close() call for tzdata files.
   inspect::IntProperty tz_data_close_status_;
-
-  // The return code of the GetProfile call in GetTimeZoneName.  If this is
-  // nonzero, then os_fuchsia.cc reported a default timezone as a fallback.
-  inspect::IntProperty get_profile_status_;
-
-  // U_ILLEGAL_ARGUMENT_ERROR(=1) if timezones read from ProfileProvider were
-  // incorrect. Otherwise 0.  If this metric reports U_ILLEGAL_ARGUMENT_ERROR,
-  // the os_fuchsia.cc module reported a default timezone as a fallback.
-  inspect::IntProperty profiles_timezone_content_status_;
 };
 
 // Initialized on OS:Init(), deinitialized on OS::Cleanup.
@@ -177,85 +136,50 @@
   return static_cast<intptr_t>(getpid());
 }
 
-// This is the default timezone returned if it could not be obtained.  For
-// Fuchsia, the default device timezone is always UTC.
-static const char kDefaultTimezone[] = "UTC";
-
 // TODO(FL-98): Change this to talk to fuchsia.dart to get timezone service to
 // directly get timezone.
 //
 // Putting this hack right now due to CP-120 as I need to remove
 // component:ConnectToEnvironmentServices and this is the only thing that is
 // blocking it and FL-98 will take time.
-static fuchsia::intl::PropertyProviderSyncPtr property_provider;
+static fuchsia::deprecatedtimezone::TimezoneSyncPtr tz;
 
 static zx_status_t GetLocalAndDstOffsetInSeconds(int64_t seconds_since_epoch,
                                                  int32_t* local_offset,
                                                  int32_t* dst_offset) {
-  const char* timezone_id = OS::GetTimeZoneName(seconds_since_epoch);
-  std::unique_ptr<icu::TimeZone> timezone(
-      icu::TimeZone::createTimeZone(timezone_id));
-  UErrorCode error = U_ZERO_ERROR;
-  const auto ms_since_epoch =
-      static_cast<UDate>(kMsPerSec * seconds_since_epoch);
-  // The units of time that local_offset and dst_offset are returned from this
-  // function is, usefully, not documented, but it seems that the units are
-  // milliseconds.  Add these variables here for clarity.
-  int32_t local_offset_ms = 0;
-  int32_t dst_offset_ms = 0;
-  timezone->getOffset(ms_since_epoch, /*local_time=*/false, local_offset_ms,
-                      dst_offset_ms, error);
-  metrics->SetDSTOffsetStatus(error);
-  if (error != U_ZERO_ERROR) {
-    icu::ErrorCode icu_error;
-    icu_error.set(error);
-    Syslog::PrintErr("could not get DST offset: %s\n", icu_error.errorName());
-    return ZX_ERR_INTERNAL;
+  zx_status_t status = tz->GetTimezoneOffsetMinutes(seconds_since_epoch * 1000,
+                                                    local_offset, dst_offset);
+  metrics->SetDSTOffsetStatus(status);
+  if (status != ZX_OK) {
+    return status;
   }
-  // We must return offset in seconds, so convert.
-  *local_offset = local_offset_ms / kMsPerSec;
-  *dst_offset = dst_offset_ms / kMsPerSec;
+  *local_offset *= 60;
+  *dst_offset *= 60;
   return ZX_OK;
 }
 
 const char* OS::GetTimeZoneName(int64_t seconds_since_epoch) {
   // TODO(abarth): Handle time zone changes.
-  static const std::unique_ptr<std::string> tz_name =
-      std::make_unique<std::string>([]() -> std::string {
-        fuchsia::intl::Profile profile;
-        const zx_status_t status = property_provider->GetProfile(&profile);
-        metrics->SetProfileStatus(status);
-        if (status != ZX_OK) {
-          return kDefaultTimezone;
-        }
-        const std::vector<fuchsia::intl::TimeZoneId>& timezones =
-            profile.time_zones();
-        if (timezones.empty()) {
-          metrics->SetTimeZoneContentStatus(U_ILLEGAL_ARGUMENT_ERROR);
-          // Empty timezone array is not up to fuchsia::intl spec.  The serving
-          // endpoint is broken and should be fixed.
-          Syslog::PrintErr("got empty timezone value\n");
-          return kDefaultTimezone;
-        }
-        return timezones[0].id;
-      }());
+  static const auto* tz_name = new std::string([] {
+    std::string result;
+    tz->GetTimezoneId(&result);
+    return result;
+  }());
   return tz_name->c_str();
 }
 
 int OS::GetTimeZoneOffsetInSeconds(int64_t seconds_since_epoch) {
-  int32_t local_offset = 0;
-  int32_t dst_offset = 0;
-  const zx_status_t status = GetLocalAndDstOffsetInSeconds(
+  int32_t local_offset, dst_offset;
+  zx_status_t status = GetLocalAndDstOffsetInSeconds(
       seconds_since_epoch, &local_offset, &dst_offset);
   return status == ZX_OK ? local_offset + dst_offset : 0;
 }
 
 int OS::GetLocalTimeZoneAdjustmentInSeconds() {
+  int32_t local_offset, dst_offset;
   zx_time_t now = 0;
   zx_clock_get(ZX_CLOCK_UTC, &now);
-  int32_t local_offset = 0;
-  int32_t dst_offset = 0;
-  const zx_status_t status = GetLocalAndDstOffsetInSeconds(
+  zx_status_t status = GetLocalAndDstOffsetInSeconds(
       now / ZX_SEC(1), &local_offset, &dst_offset);
   return status == ZX_OK ? local_offset : 0;
 }
@@ -279,7 +203,7 @@
 }
 
 int64_t OS::GetCurrentMonotonicMicros() {
-  const int64_t ticks = GetCurrentMonotonicTicks();
+  int64_t ticks = GetCurrentMonotonicTicks();
   ASSERT(GetCurrentMonotonicFrequency() == kNanosecondsPerSecond);
   return ticks / kNanosecondsPerMicrosecond;
 }
@@ -433,8 +357,7 @@
   metrics = std::make_unique<InspectMetrics>(component_inspector->inspector());
 
   InitializeTZData();
-  auto services = sys::ServiceDirectory::CreateFromNamespace();
-  services->Connect(property_provider.NewRequest());
+  context->svc()->Connect(tz.NewRequest());
 }
 
 void OS::Cleanup() {
diff --git a/runtime/vm/service.cc b/runtime/vm/service.cc
index a2a6128..9d6b227 100644
--- a/runtime/vm/service.cc
+++ b/runtime/vm/service.cc
@@ -4269,12 +4269,11 @@
     obj.AddPropertyF(
         "peer", "0x%" Px "",
         reinterpret_cast<uintptr_t>(weak_persistent_handle->peer()));
-    obj.AddPropertyF(
-        "callbackAddress", "0x%" Px "",
-        reinterpret_cast<uintptr_t>(weak_persistent_handle->callback()));
+    obj.AddPropertyF("callbackAddress", "0x%" Px "",
+                     weak_persistent_handle->callback_address());
     // Attempt to include a native symbol name.
     char* name = NativeSymbolResolver::LookupSymbolName(
-        reinterpret_cast<uword>(weak_persistent_handle->callback()), nullptr);
+        weak_persistent_handle->callback_address(), nullptr);
     obj.AddProperty("callbackSymbolName", (name == nullptr) ? "" : name);
     if (name != nullptr) {
       NativeSymbolResolver::FreeSymbolName(name);
diff --git a/runtime/vm/service/service.md b/runtime/vm/service/service.md
index b46ceac..39dfd7e 100644
--- a/runtime/vm/service/service.md
+++ b/runtime/vm/service/service.md
@@ -3098,10 +3098,11 @@
 class MemoryUsage extends Response {
   // The amount of non-Dart memory that is retained by Dart objects. For
   // example, memory associated with Dart objects through APIs such as
-  // Dart_NewWeakPersistentHandle and Dart_NewExternalTypedData.  This usage is
-  // only as accurate as the values supplied to these APIs from the VM embedder or
-  // native extensions. This external memory applies GC pressure, but is separate
-  // from heapUsage and heapCapacity.
+  // Dart_NewFinalizableHandle, Dart_NewWeakPersistentHandle and
+  // Dart_NewExternalTypedData.  This usage is only as accurate as the values
+  // supplied to these APIs from the VM embedder or native extensions. This
+  // external memory applies GC pressure, but is separate from heapUsage and
+  // heapCapacity.
   int externalUsage;
 
   // The total capacity of the heap in bytes. This is the amount of memory used
diff --git a/samples/ffi/async/sample_async_callback.dart b/samples/ffi/async/sample_async_callback.dart
index 432a2eb..06cbef3 100644
--- a/samples/ffi/async/sample_async_callback.dart
+++ b/samples/ffi/async/sample_async_callback.dart
@@ -27,7 +27,7 @@
   print("C    = C T1 or C T2.");
   print("Dart: Setup.");
   Expect.isTrue(NativeApi.majorVersion == 1);
-  Expect.isTrue(NativeApi.minorVersion >= 0);
+  Expect.isTrue(NativeApi.minorVersion >= 1);
   final initializeApi = dl.lookupFunction<IntPtr Function(Pointer<Void>),
       int Function(Pointer<Void>)>("InitDartApiDL");
   Expect.isTrue(initializeApi(NativeApi.initializeApiDLData) == 0);
diff --git a/samples/ffi/async/sample_native_port_call.dart b/samples/ffi/async/sample_native_port_call.dart
index aa4b48e..43891e2 100644
--- a/samples/ffi/async/sample_native_port_call.dart
+++ b/samples/ffi/async/sample_native_port_call.dart
@@ -36,7 +36,7 @@
   print("C    = C T1 or C T2.");
   print("Dart: Setup.");
   Expect.isTrue(NativeApi.majorVersion == 1);
-  Expect.isTrue(NativeApi.minorVersion >= 0);
+  Expect.isTrue(NativeApi.minorVersion >= 1);
   final initializeApi = dl.lookupFunction<IntPtr Function(Pointer<Void>),
       int Function(Pointer<Void>)>("InitDartApiDL");
   Expect.isTrue(initializeApi(NativeApi.initializeApiDLData) == 0);
diff --git a/samples/ffi/sample_ffi_functions_callbacks_closures.dart b/samples/ffi/sample_ffi_functions_callbacks_closures.dart
index ba876da..e5bb157 100644
--- a/samples/ffi/sample_ffi_functions_callbacks_closures.dart
+++ b/samples/ffi/sample_ffi_functions_callbacks_closures.dart
@@ -54,7 +54,7 @@
 
 void doDynamicLinking() {
   Expect.isTrue(NativeApi.majorVersion == 1);
-  Expect.isTrue(NativeApi.minorVersion >= 0);
+  Expect.isTrue(NativeApi.minorVersion >= 1);
   final initializeApi = testLibrary.lookupFunction<
       IntPtr Function(Pointer<Void>),
       int Function(Pointer<Void>)>("InitDartApiDL");
diff --git a/sdk/lib/_http/http_impl.dart b/sdk/lib/_http/http_impl.dart
index 162461c..4f51724 100644
--- a/sdk/lib/_http/http_impl.dart
+++ b/sdk/lib/_http/http_impl.dart
@@ -1091,7 +1091,7 @@
     }
 
     _responseCompleter.future.then((response) {
-      _timeline?.instant('Response receieved');
+      _timeline?.instant('Response received');
       Map formatConnectionInfo() => {
             'localPort': response.connectionInfo?.localPort,
             'remoteAddress': response.connectionInfo?.remoteAddress.address,
diff --git a/sdk/lib/_internal/vm/bin/common_patch.dart b/sdk/lib/_internal/vm/bin/common_patch.dart
index 9899f2e..cd9f149 100644
--- a/sdk/lib/_internal/vm/bin/common_patch.dart
+++ b/sdk/lib/_internal/vm/bin/common_patch.dart
@@ -33,7 +33,7 @@
 
 import "dart:nativewrappers" show NativeFieldWrapperClass1;
 
-import "dart:typed_data" show Uint8List;
+import "dart:typed_data" show Uint8List, BytesBuilder;
 
 /// These are the additional parts of this patch library:
 // part "directory_patch.dart";
diff --git a/sdk/lib/_internal/vm/bin/socket_patch.dart b/sdk/lib/_internal/vm/bin/socket_patch.dart
index e2bff2f..a4cd2f2 100644
--- a/sdk/lib/_internal/vm/bin/socket_patch.dart
+++ b/sdk/lib/_internal/vm/bin/socket_patch.dart
@@ -226,14 +226,36 @@
       return _InternetAddress(
           InternetAddressType.unix, address, null, rawAddress);
     } else {
-      var in_addr = _parse(address);
-      if (in_addr == null) {
-        throw ArgumentError("Invalid internet address $address");
+      int index = address.indexOf('%');
+      String originalAddress = address;
+      String? scopeID;
+      if (index > 0) {
+        scopeID = address.substring(index, address.length);
+        address = address.substring(0, index);
       }
-      InternetAddressType type = in_addr.length == _IPv4AddrLength
+      var inAddr = _parse(address);
+      if (inAddr == null) {
+        throw ArgumentError.value("Invalid internet address $address");
+      }
+      InternetAddressType type = inAddr.length == _IPv4AddrLength
           ? InternetAddressType.IPv4
           : InternetAddressType.IPv6;
-      return _InternetAddress(type, address, null, in_addr);
+      if (scopeID != null && scopeID.length > 0) {
+        if (type != InternetAddressType.IPv6) {
+          throw ArgumentError.value("IPv4 addresses cannot have a scope id");
+        }
+        // This is an IPv6 address with scope id.
+        var list = _parseScopedLinkLocalAddress(originalAddress);
+
+        if (list is! OSError && (list as List).isNotEmpty) {
+          return _InternetAddress(InternetAddressType.IPv6, originalAddress,
+              null, inAddr, list.first);
+        } else {
+          throw ArgumentError.value(
+              "Invalid IPv6 address $address with scope ID");
+        }
+      }
+      return _InternetAddress(type, originalAddress, null, inAddr, 0);
     }
   }
 
@@ -262,12 +284,11 @@
 
   static _InternetAddress? tryParse(String address) {
     checkNotNullable(address, "address");
-    var addressBytes = _parse(address);
-    if (addressBytes == null) return null;
-    var type = addressBytes.length == _IPv4AddrLength
-        ? InternetAddressType.IPv4
-        : InternetAddressType.IPv6;
-    return _InternetAddress(type, address, null, addressBytes);
+    try {
+      return _InternetAddress.fromString(address);
+    } catch (e) {
+      return null;
+    }
   }
 
   factory _InternetAddress.fixed(int id) {
@@ -297,7 +318,8 @@
 
   // Create a clone of this _InternetAddress replacing the host.
   _InternetAddress _cloneWithNewHost(String host) {
-    return _InternetAddress(type, address, host, Uint8List.fromList(_in_addr));
+    return _InternetAddress(
+        type, address, host, Uint8List.fromList(_in_addr), _scope_id);
   }
 
   bool operator ==(other) {
@@ -330,7 +352,8 @@
 
   static String _rawAddrToString(Uint8List address)
       native "InternetAddress_RawAddrToString";
-
+  static List _parseScopedLinkLocalAddress(String address)
+      native "InternetAddress_ParseScopedLinkLocalAddress";
   static Uint8List? _parse(String address) native "InternetAddress_Parse";
 }
 
diff --git a/sdk/lib/internal/bytes_builder.dart b/sdk/lib/internal/bytes_builder.dart
new file mode 100644
index 0000000..ea19576
--- /dev/null
+++ b/sdk/lib/internal/bytes_builder.dart
@@ -0,0 +1,240 @@
+// Copyright (c) 2013, 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.
+
+part of dart._internal;
+
+/// Builds a list of bytes, allowing bytes and lists of bytes to be added at the
+/// end.
+///
+/// Used to efficiently collect bytes and lists of bytes.
+abstract class BytesBuilder {
+  /// Construct a new empty [BytesBuilder].
+  ///
+  /// If [copy] is true (the default), the created builder is a *copying*
+  /// builder. A copying builder maintains its own internal buffer and copies
+  /// the bytes added to it eagerly.
+  ///
+  /// If [copy] set to false, the created builder assumes that lists added
+  /// to it will not change.
+  /// Any [Uint8List] added using [add] is kept until
+  /// [toBytes] or [takeBytes] is called,
+  /// and only then are their contents copied.
+  /// A non-[Uint8List] may be copied eagerly.
+  /// If only a single [Uint8List] is added to the builder,
+  /// that list is returned by [toBytes] or [takeBytes] directly, without any copying.
+  /// A list added to a non-copying builder *should not* change its content
+  /// after being added, and it *must not* change its length after being added.
+  /// (Normal [Uint8List]s are fixed length lists, but growing lists implementing
+  /// [Uint8List] exist.)
+  factory BytesBuilder({bool copy = true}) =>
+      copy ? _CopyingBytesBuilder() : _BytesBuilder();
+
+  /// Appends [bytes] to the current contents of this builder.
+  ///
+  /// Each value of [bytes] will be truncated
+  /// to an 8-bit value in the range 0 .. 255.
+  void add(List<int> bytes);
+
+  /// Appends [byte] to the current contents of this builder.
+  ///
+  /// The [byte] will be truncated to an 8-bit value in the range 0 .. 255.
+  void addByte(int byte);
+
+  /// Returns the bytes currently contained in this builder and clears it.
+  ///
+  /// The returned list may be a view of a larger buffer.
+  Uint8List takeBytes();
+
+  /// Returns a copy of the current byte contents of this builder.
+  ///
+  /// Leaves the contents of this builder intact.
+  Uint8List toBytes();
+
+  /// The number of bytes in this builder.
+  int get length;
+
+  /// Whether the buffer is empty.
+  bool get isEmpty;
+
+  /// Whether the buffer is non-empty.
+  bool get isNotEmpty;
+
+  /// Clears the contents of this builder.
+  ///
+  /// The current contents are discarded and this builder becomes empty.
+  void clear();
+}
+
+/// A [BytesBuilder] which appends bytes to a growing internal buffer.
+class _CopyingBytesBuilder implements BytesBuilder {
+  /// Initial size of internal buffer.
+  static const int _initSize = 1024;
+
+  /// Reusable empty [Uint8List].
+  ///
+  /// Safe for reuse because a fixed-length empty list is immutable.
+  static final _emptyList = Uint8List(0);
+
+  /// Current count of bytes written to buffer.
+  int _length = 0;
+
+  /// Internal buffer accumulating bytes.
+  ///
+  /// Will grow as necessary
+  Uint8List _buffer;
+
+  _CopyingBytesBuilder() : _buffer = _emptyList;
+
+  void add(List<int> bytes) {
+    int byteCount = bytes.length;
+    if (byteCount == 0) return;
+    int required = _length + byteCount;
+    if (_buffer.length < required) {
+      _grow(required);
+    }
+    assert(_buffer.length >= required);
+    if (bytes is Uint8List) {
+      _buffer.setRange(_length, required, bytes);
+    } else {
+      for (int i = 0; i < byteCount; i++) {
+        _buffer[_length + i] = bytes[i];
+      }
+    }
+    _length = required;
+  }
+
+  void addByte(int byte) {
+    if (_buffer.length == _length) {
+      // The grow algorithm always at least doubles.
+      // If we added one to _length it would quadruple unnecessarily.
+      _grow(_length);
+    }
+    assert(_buffer.length > _length);
+    _buffer[_length] = byte;
+    _length++;
+  }
+
+  void _grow(int required) {
+    // We will create a list in the range of 2-4 times larger than
+    // required.
+    int newSize = required * 2;
+    if (newSize < _initSize) {
+      newSize = _initSize;
+    } else {
+      newSize = _pow2roundup(newSize);
+    }
+    var newBuffer = Uint8List(newSize);
+    newBuffer.setRange(0, _buffer.length, _buffer);
+    _buffer = newBuffer;
+  }
+
+  Uint8List takeBytes() {
+    if (_length == 0) return _emptyList;
+    var buffer = Uint8List.view(_buffer.buffer, _buffer.offsetInBytes, _length);
+    _clear();
+    return buffer;
+  }
+
+  Uint8List toBytes() {
+    if (_length == 0) return _emptyList;
+    return Uint8List.fromList(
+        Uint8List.view(_buffer.buffer, _buffer.offsetInBytes, _length));
+  }
+
+  int get length => _length;
+
+  bool get isEmpty => _length == 0;
+
+  bool get isNotEmpty => _length != 0;
+
+  void clear() {
+    _clear();
+  }
+
+  void _clear() {
+    _length = 0;
+    _buffer = _emptyList;
+  }
+
+  /// Rounds numbers <= 2^32 up to the nearest power of 2.
+  static int _pow2roundup(int x) {
+    assert(x > 0);
+    --x;
+    x |= x >> 1;
+    x |= x >> 2;
+    x |= x >> 4;
+    x |= x >> 8;
+    x |= x >> 16;
+    return x + 1;
+  }
+}
+
+/// A non-copying [BytesBuilder].
+///
+/// Accumulates lists of integers and lazily builds
+/// a collected list with all the bytes when requested.
+class _BytesBuilder implements BytesBuilder {
+  int _length = 0;
+  final List<Uint8List> _chunks = [];
+
+  void add(List<int> bytes) {
+    Uint8List typedBytes;
+    if (bytes is Uint8List) {
+      typedBytes = bytes;
+    } else {
+      typedBytes = Uint8List.fromList(bytes);
+    }
+    _chunks.add(typedBytes);
+    _length += typedBytes.length;
+  }
+
+  void addByte(int byte) {
+    // TODO(lrn): Optimize repeated `addByte` calls.
+    _chunks.add(Uint8List(1)..[0] = byte);
+    _length++;
+  }
+
+  Uint8List takeBytes() {
+    if (_length == 0) return _CopyingBytesBuilder._emptyList;
+    if (_chunks.length == 1) {
+      var buffer = _chunks[0];
+      _clear();
+      return buffer;
+    }
+    var buffer = Uint8List(_length);
+    int offset = 0;
+    for (var chunk in _chunks) {
+      buffer.setRange(offset, offset + chunk.length, chunk);
+      offset += chunk.length;
+    }
+    _clear();
+    return buffer;
+  }
+
+  Uint8List toBytes() {
+    if (_length == 0) return _CopyingBytesBuilder._emptyList;
+    var buffer = Uint8List(_length);
+    int offset = 0;
+    for (var chunk in _chunks) {
+      buffer.setRange(offset, offset + chunk.length, chunk);
+      offset += chunk.length;
+    }
+    return buffer;
+  }
+
+  int get length => _length;
+
+  bool get isEmpty => _length == 0;
+
+  bool get isNotEmpty => _length != 0;
+
+  void clear() {
+    _clear();
+  }
+
+  void _clear() {
+    _length = 0;
+    _chunks.clear();
+  }
+}
diff --git a/sdk/lib/internal/internal.dart b/sdk/lib/internal/internal.dart
index dad3b05..3070b30 100644
--- a/sdk/lib/internal/internal.dart
+++ b/sdk/lib/internal/internal.dart
@@ -21,6 +21,7 @@
 import 'dart:typed_data' show Uint8List;
 
 part 'async_cast.dart';
+part 'bytes_builder.dart';
 part 'cast.dart';
 part 'errors.dart';
 part 'iterable.dart';
diff --git a/sdk/lib/internal/internal_sources.gni b/sdk/lib/internal/internal_sources.gni
index 8510ab2..c35e678 100644
--- a/sdk/lib/internal/internal_sources.gni
+++ b/sdk/lib/internal/internal_sources.gni
@@ -8,6 +8,7 @@
 
   # The above file needs to be first as it lists the parts below.
   "async_cast.dart",
+  "bytes_builder.dart",
   "cast.dart",
   "errors.dart",
   "iterable.dart",
diff --git a/sdk/lib/io/bytes_builder.dart b/sdk/lib/io/bytes_builder.dart
deleted file mode 100644
index 6f13693..0000000
--- a/sdk/lib/io/bytes_builder.dart
+++ /dev/null
@@ -1,234 +0,0 @@
-// Copyright (c) 2013, 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.
-
-part of dart.io;
-
-/**
- * Builds a list of bytes, allowing bytes and lists of bytes to be added at the
- * end.
- *
- * Used to efficiently collect bytes and lists of bytes.
- */
-abstract class BytesBuilder {
-  /**
-   * Construct a new empty [BytesBuilder].
-   *
-   * If [copy] is true, the data is always copied when added to the list. If
-   * it [copy] is false, the data is only copied if needed. That means that if
-   * the lists are changed after added to the [BytesBuilder], it may effect the
-   * output. Default is `true`.
-   */
-  factory BytesBuilder({bool copy: true}) {
-    if (copy) {
-      return new _CopyingBytesBuilder();
-    } else {
-      return new _BytesBuilder();
-    }
-  }
-
-  /**
-   * Appends [bytes] to the current contents of the builder.
-   *
-   * Each value of [bytes] will be bit-representation truncated to the range
-   * 0 .. 255.
-   */
-  void add(List<int> bytes);
-
-  /**
-   * Append [byte] to the current contents of the builder.
-   *
-   * The [byte] will be bit-representation truncated to the range 0 .. 255.
-   */
-  void addByte(int byte);
-
-  /**
-   * Returns the contents of `this` and clears `this`.
-   *
-   * The list returned is a view of the internal buffer, limited to the
-   * [length].
-   */
-  Uint8List takeBytes();
-
-  /**
-   * Returns a copy of the current contents of the builder.
-   *
-   * Leaves the contents of the builder intact.
-   */
-  Uint8List toBytes();
-
-  /**
-   * The number of bytes in the builder.
-   */
-  int get length;
-
-  /**
-   * Returns `true` if the buffer is empty.
-   */
-  bool get isEmpty;
-
-  /**
-   * Returns `true` if the buffer is not empty.
-   */
-  bool get isNotEmpty;
-
-  /**
-   * Clear the contents of the builder.
-   */
-  void clear();
-}
-
-class _CopyingBytesBuilder implements BytesBuilder {
-  // Start with 1024 bytes.
-  static const int _initSize = 1024;
-
-  // Safe for reuse because a fixed-length empty list is immutable.
-  static final _emptyList = new Uint8List(0);
-
-  int _length = 0;
-  Uint8List _buffer;
-
-  _CopyingBytesBuilder([int initialCapacity = 0])
-      : _buffer = (initialCapacity <= 0)
-            ? _emptyList
-            : new Uint8List(_pow2roundup(initialCapacity));
-
-  void add(List<int> bytes) {
-    int bytesLength = bytes.length;
-    if (bytesLength == 0) return;
-    int required = _length + bytesLength;
-    if (_buffer.length < required) {
-      _grow(required);
-    }
-    assert(_buffer.length >= required);
-    if (bytes is Uint8List) {
-      _buffer.setRange(_length, required, bytes);
-    } else {
-      for (int i = 0; i < bytesLength; i++) {
-        _buffer[_length + i] = bytes[i];
-      }
-    }
-    _length = required;
-  }
-
-  void addByte(int byte) {
-    if (_buffer.length == _length) {
-      // The grow algorithm always at least doubles.
-      // If we added one to _length it would quadruple unnecessarily.
-      _grow(_length);
-    }
-    assert(_buffer.length > _length);
-    _buffer[_length] = byte;
-    _length++;
-  }
-
-  void _grow(int required) {
-    // We will create a list in the range of 2-4 times larger than
-    // required.
-    int newSize = required * 2;
-    if (newSize < _initSize) {
-      newSize = _initSize;
-    } else {
-      newSize = _pow2roundup(newSize);
-    }
-    var newBuffer = new Uint8List(newSize);
-    newBuffer.setRange(0, _buffer.length, _buffer);
-    _buffer = newBuffer;
-  }
-
-  Uint8List takeBytes() {
-    if (_length == 0) return _emptyList;
-    var buffer =
-        new Uint8List.view(_buffer.buffer, _buffer.offsetInBytes, _length);
-    clear();
-    return buffer;
-  }
-
-  Uint8List toBytes() {
-    if (_length == 0) return _emptyList;
-    return new Uint8List.fromList(
-        new Uint8List.view(_buffer.buffer, _buffer.offsetInBytes, _length));
-  }
-
-  int get length => _length;
-
-  bool get isEmpty => _length == 0;
-
-  bool get isNotEmpty => _length != 0;
-
-  void clear() {
-    _length = 0;
-    _buffer = _emptyList;
-  }
-
-  static int _pow2roundup(int x) {
-    assert(x > 0);
-    --x;
-    x |= x >> 1;
-    x |= x >> 2;
-    x |= x >> 4;
-    x |= x >> 8;
-    x |= x >> 16;
-    return x + 1;
-  }
-}
-
-class _BytesBuilder implements BytesBuilder {
-  int _length = 0;
-  final List<Uint8List> _chunks = [];
-
-  void add(List<int> bytes) {
-    Uint8List typedBytes;
-    if (bytes is Uint8List) {
-      typedBytes = bytes;
-    } else {
-      typedBytes = new Uint8List.fromList(bytes);
-    }
-    _chunks.add(typedBytes);
-    _length += typedBytes.length;
-  }
-
-  void addByte(int byte) {
-    _chunks.add(new Uint8List(1)..[0] = byte);
-    _length++;
-  }
-
-  Uint8List takeBytes() {
-    if (_length == 0) return _CopyingBytesBuilder._emptyList;
-    if (_chunks.length == 1) {
-      var buffer = _chunks[0];
-      clear();
-      return buffer;
-    }
-    var buffer = new Uint8List(_length);
-    int offset = 0;
-    for (var chunk in _chunks) {
-      buffer.setRange(offset, offset + chunk.length, chunk);
-      offset += chunk.length;
-    }
-    clear();
-    return buffer;
-  }
-
-  Uint8List toBytes() {
-    if (_length == 0) return _CopyingBytesBuilder._emptyList;
-    var buffer = new Uint8List(_length);
-    int offset = 0;
-    for (var chunk in _chunks) {
-      buffer.setRange(offset, offset + chunk.length, chunk);
-      offset += chunk.length;
-    }
-    return buffer;
-  }
-
-  int get length => _length;
-
-  bool get isEmpty => _length == 0;
-
-  bool get isNotEmpty => _length != 0;
-
-  void clear() {
-    _length = 0;
-    _chunks.clear();
-  }
-}
diff --git a/sdk/lib/io/directory_impl.dart b/sdk/lib/io/directory_impl.dart
index 9ca5b6c..0a356e1 100644
--- a/sdk/lib/io/directory_impl.dart
+++ b/sdk/lib/io/directory_impl.dart
@@ -70,7 +70,7 @@
     if (result is ArgumentError) throw result;
     if (result is OSError) {
       throw new FileSystemException(
-          "Setting current working directory failed", path, result);
+          "Setting current working directory failed", path.toString(), result);
     }
   }
 
diff --git a/sdk/lib/io/file_system_entity.dart b/sdk/lib/io/file_system_entity.dart
index b8cf2ff..6bba998 100644
--- a/sdk/lib/io/file_system_entity.dart
+++ b/sdk/lib/io/file_system_entity.dart
@@ -240,6 +240,10 @@
  *   files and directories.
  */
 abstract class FileSystemEntity {
+  static const _backslashChar = 0x5c;
+  static const _slashChar = 0x2f;
+  static const _colonChar = 0x3a;
+
   String get _path;
   Uint8List get _rawPath;
 
@@ -531,16 +535,31 @@
   }
 
   static final RegExp _absoluteWindowsPathPattern =
-      new RegExp(r'^(\\\\|[a-zA-Z]:[/\\])');
+      new RegExp(r'^(?:\\\\|[a-zA-Z]:[/\\])');
 
   /**
-   * Returns a [bool] indicating whether this object's path is absolute.
+   * Whether this object's path is absolute.
    *
-   * On Windows, a path is absolute if it starts with \\\\ or a drive letter
-   * between a and z (upper or lower case) followed by :\\ or :/.
-   * On non-Windows, a path is absolute if it starts with /.
+   * An absolute path is independent of the current working
+   * directory ([Directory.current]).
+   * A non-absolute path must be interpreted relative to
+   * the current working directory.
+   *
+   * On Windows, a path is absolute if it starts with `\\`
+   * (two backslashesor representing a UNC path) or with a drive letter
+   * between `a` and `z` (upper or lower case) followed by `:\` or `:/`.
+   * The makes, for example, `\file.ext` a non-absolute path
+   * because it depends on the current drive letter.
+   *
+   * On non-Windows, a path is absolute if it starts with `/`.
+   *
+   * If the path is not absolute, use [absolute] to get an entity
+   * with an absolute path referencing the same object in the file system,
+   * if possible.
    */
-  bool get isAbsolute {
+  bool get isAbsolute => _isAbsolute(path);
+
+  static bool _isAbsolute(String path) {
     if (Platform.isWindows) {
       return path.startsWith(_absoluteWindowsPathPattern);
     } else {
@@ -553,37 +572,86 @@
    *
    * The type of the returned instance is the type of [this].
    *
-   * The absolute path is computed by prefixing
-   * a relative path with the current working directory, and returning
-   * an absolute path unchanged.
+   * A file system entity with an already absolute path
+   * (as reported by [isAbsolute]) is returned directly.
+   * For a non-absolute path, the returned entity is absolute ([isAbsolute])
+   * *if possible*, but still refers to the same file system object.
    */
   FileSystemEntity get absolute;
 
   String get _absolutePath {
     if (isAbsolute) return path;
+    if (Platform.isWindows) return _absoluteWindowsPath(path);
     String current = Directory.current.path;
-    if (current.endsWith('/') ||
-        (Platform.isWindows && current.endsWith('\\'))) {
+    if (current.endsWith('/')) {
       return '$current$path';
     } else {
       return '$current${Platform.pathSeparator}$path';
     }
   }
 
-  Uint8List get _rawAbsolutePath {
-    if (isAbsolute) return _rawPath;
-    var current = Directory.current._rawPath.toList();
-    assert(current.last == 0);
-    current.removeLast(); // Remove null terminator.
-    if ((current.last == '/'.codeUnitAt(0)) ||
-        (Platform.isWindows && (current.last == '\\'.codeUnitAt(0)))) {
-      current.addAll(_rawPath);
-      return new Uint8List.fromList(current);
-    } else {
-      current.addAll(utf8.encode(Platform.pathSeparator));
-      current.addAll(_rawPath);
-      return new Uint8List.fromList(current);
+  /// The ASCII code of the Windows drive letter if [entity], if any.
+  ///
+  /// Returns the ASCII code of the upper-cased drive letter of
+  /// the path of [entity], if it has a drive letter (starts with `[a-zA-z]:`),
+  /// or `-1` if it has no drive letter.
+  static int _windowsDriveLetter(String path) {
+    if (!path.startsWith(':', 1)) return -1;
+    var first = path.codeUnitAt(0) & ~0x20;
+    if (first >= 0x41 && first <= 0x5b) return first;
+    return -1;
+  }
+
+  /// The relative [path] converted to an absolute path.
+  static String _absoluteWindowsPath(String path) {
+    assert(Platform.isWindows);
+    assert(!_isAbsolute(path));
+    // Could perhaps use something like
+    // https://docs.microsoft.com/en-us/windows/win32/api/pathcch/nf-pathcch-pathalloccombine
+    var current = Directory.current.path;
+    if (path.startsWith(r'\')) {
+      assert(!path.startsWith(r'\', 1));
+      // Absolute path, no drive letter.
+      var currentDrive = _windowsDriveLetter(current);
+      if (currentDrive >= 0) {
+        return '${current[0]}:$path';
+      }
+      // If `current` is a UNC path \\server\share[...],
+      // we make the absolute path relative to the share.
+      // Also works with `\\?\c:\` paths.
+      if (current.startsWith(r'\\')) {
+        var serverEnd = current.indexOf(r'\', 2);
+        if (serverEnd >= 0) {
+          // We may want to recognize UNC paths of the form:
+          //   \\?\UNC\Server\share\...
+          // specially, and be relative to the *share* not to UNC\.
+          var shareEnd = current.indexOf(r'\', serverEnd + 1);
+          if (shareEnd < 0) shareEnd = current.length;
+          return '${current.substring(0, shareEnd)}$path';
+        }
+      }
+      // If `current` is not in the drive-letter:path format,
+      // or not \\server\share[\path],
+      // we ignore it and return a relative path.
+      return path;
     }
+    var entityDrive = _windowsDriveLetter(path);
+    if (entityDrive >= 0) {
+      if (entityDrive != _windowsDriveLetter(current)) {
+        // Need to resolve relative to current directory of the drive.
+        // Windows remembers the last CWD of each drive.
+        // We currently don't have that information, so we assume the root of that drive.
+        return '${path[0]}:\\$path';
+      }
+
+      /// A `c:relative\path` path on the same drive as `current`.
+      path = path.substring(2);
+      assert(!path.startsWith(r'\\'));
+    }
+    if (current.endsWith(r'\') || current.endsWith('/')) {
+      return '$current$path';
+    }
+    return '$current\\$path';
   }
 
   static bool _identicalSync(String path1, String path2) {
diff --git a/sdk/lib/io/io.dart b/sdk/lib/io/io.dart
index 7dcabd8..c667cfe 100644
--- a/sdk/lib/io/io.dart
+++ b/sdk/lib/io/io.dart
@@ -197,9 +197,10 @@
 import 'dart:typed_data';
 
 export 'dart:_http';
+@Deprecated("Import BytesBuilder from dart:typed_data instead")
+export 'dart:_internal' show BytesBuilder;
 export 'dart:_internal' show HttpStatus;
 
-part 'bytes_builder.dart';
 part 'common.dart';
 part 'data_transformer.dart';
 part 'directory.dart';
diff --git a/sdk/lib/io/io_sources.gni b/sdk/lib/io/io_sources.gni
index 59b2ca9..7410a13 100644
--- a/sdk/lib/io/io_sources.gni
+++ b/sdk/lib/io/io_sources.gni
@@ -6,7 +6,6 @@
   "io.dart",
 
   # The above file needs to be first if additional parts are added to the lib.
-  "bytes_builder.dart",
   "common.dart",
   "data_transformer.dart",
   "directory.dart",
diff --git a/sdk/lib/io/link.dart b/sdk/lib/io/link.dart
index 3f2896f..ce50a4e 100644
--- a/sdk/lib/io/link.dart
+++ b/sdk/lib/io/link.dart
@@ -53,7 +53,7 @@
    * On the Windows platform, this call will create a true symbolic link
    * instead of a Junction. In order to create a symbolic link on Windows, Dart
    * must be run in Administrator mode or the system must have Developer Mode
-   * enabled, otherwise a [FileSystemException] will be raised with 
+   * enabled, otherwise a [FileSystemException] will be raised with
    * `ERROR_PRIVILEGE_NOT_HELD` set as the errno when this call is made.
    *
    * On other platforms, the posix symlink() call is used to make a symbolic
@@ -74,7 +74,7 @@
    * On the Windows platform, this call will create a true symbolic link
    * instead of a Junction. In order to create a symbolic link on Windows, Dart
    * must be run in Administrator mode or the system must have Developer Mode
-   * enabled, otherwise a [FileSystemException] will be raised with 
+   * enabled, otherwise a [FileSystemException] will be raised with
    * `ERROR_PRIVILEGE_NOT_HELD` set as the errno when this call is made.
    *
    * On other platforms, the posix symlink() call is used to make a symbolic
@@ -172,7 +172,7 @@
 
   bool existsSync() => FileSystemEntity._isLinkRawSync(_rawPath);
 
-  Link get absolute => new Link.fromRawPath(_rawAbsolutePath);
+  Link get absolute => isAbsolute ? this : _Link(_absolutePath);
 
   Future<Link> create(String target, {bool recursive: false}) {
     var result =
diff --git a/sdk/lib/typed_data/typed_data.dart b/sdk/lib/typed_data/typed_data.dart
index 8852ab8..eeafdc6 100644
--- a/sdk/lib/typed_data/typed_data.dart
+++ b/sdk/lib/typed_data/typed_data.dart
@@ -14,6 +14,8 @@
 
 import "dart:_internal" show Since, UnmodifiableListBase;
 
+export "dart:_internal" show BytesBuilder;
+
 part "unmodifiable_typed_data.dart";
 
 /**
diff --git a/tests/co19/co19-co19.status b/tests/co19/co19-co19.status
index 7d0157f..cb09dc7 100644
--- a/tests/co19/co19-co19.status
+++ b/tests/co19/co19-co19.status
@@ -25,17 +25,7 @@
 Language/Reference/Operator_Precedence/precedence_t05: Skip # Triple shift is not implemented yet
 Language/Statements/Assert/*: Skip # Not migrated to NNBD
 Language/Statements/Expression_Statements/syntax_t06: Skip # Type aliases are not fully implemented
-Language/Types/Dynamic_Type_System/*: Skip # Not migrated to NNBD
-Language/Types/Function_Types/*: Skip # Not migrated to NNBD
-Language/Types/Interface_Types/*: Skip # Not migrated to NNBD
-Language/Types/Parameterized_Types/*: Skip # Not migrated to NNBD
-Language/Types/Parameterized_Types/Actual_Type_of_Declaration/*: Skip # Not migrated to NNBD
-Language/Types/Static_Types/*: Skip # Not migrated to NNBD
-Language/Types/Type_Aliases/*: Skip # Not migrated to NNBD
-Language/Types/Type_Void/*: Skip # Not migrated to NNBD
-Language/Types/Type_dynamic/*: Skip # Not migrated to NNBD
-Language/Variables/*: Skip # Not migrated to NNBD
-Language/Variables/Evaluation_of_Implicit_Variable_Getters/*: Skip # Not migrated to NNBD
+Language/Types/Type_Aliases/built-in_types_t11: Skip # Triple shift is not implemented yet
 LanguageFeatures/Constant-update-2018/*: Skip # Not migrated to NNBD
 LanguageFeatures/Control-flow-collections/*: Skip # Not migrated to NNBD
 LanguageFeatures/Extension-methods/*: Skip # Not migrated to NNBD
diff --git a/tests/corelib/cast_errors_test.dart b/tests/corelib/cast_errors_test.dart
index 0d75f28..9e2b8eb 100644
--- a/tests/corelib/cast_errors_test.dart
+++ b/tests/corelib/cast_errors_test.dart
@@ -17,7 +17,7 @@
   var newC = new C();
   dSet.add(newC);
   //       ^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'C' can't be assigned to the parameter type 'D?'.
 }
 
@@ -27,7 +27,7 @@
 
   dMap[c] = d;
   //   ^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] A value of type 'C' can't be assigned to a variable of type 'D?'.
   dMap[d] = c;
   //        ^
diff --git a/tests/dart2js/18175_test.dart b/tests/dart2js/18175_test.dart
new file mode 100644
index 0000000..3ad422de
--- /dev/null
+++ b/tests/dart2js/18175_test.dart
@@ -0,0 +1,20 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:expect/expect.dart';
+
+class A implements B<C> {}
+
+class B<E> {}
+
+class C {}
+
+main() {
+  Expect.isFalse(A() is B<bool>);
+  Expect.isFalse(A() is B<int>);
+  Expect.isFalse(A() is B<num>);
+  Expect.isFalse(A() is B<double>);
+  Expect.isFalse(A() is B<String>);
+  Expect.isFalse(A() is B<List>);
+}
diff --git a/tests/dart2js/41449c_test.dart b/tests/dart2js/41449c_test.dart
new file mode 100644
index 0000000..0831434
--- /dev/null
+++ b/tests/dart2js/41449c_test.dart
@@ -0,0 +1,57 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+//
+// dart2jsOptions=-O4
+
+// Regression test for passing type parameters through call-through stub.
+//
+// We use an abstract class with two implementations to avoid the optimizer
+// 'inlining' the call-through stub, so we are testing that the stub itself
+// passes through the type parameters.
+
+import 'package:expect/expect.dart';
+
+abstract class AAA {
+  dynamic get foo;
+}
+
+class B1 implements AAA {
+  final dynamic foo;
+  B1(this.foo);
+}
+
+class B2 implements AAA {
+  final dynamic _arr;
+  B2(foo) : _arr = [foo];
+  dynamic get foo => _arr.first;
+}
+
+class B3 implements AAA {
+  final dynamic __foo;
+  B3(this.__foo);
+  dynamic get _foo => __foo;
+  dynamic get foo => _foo;
+}
+
+@pragma('dart2js:noInline')
+test1<T>(AAA a, String expected) {
+  // call-through getter 'foo' with one type argument.
+  Expect.equals(expected, a.foo<T>());
+}
+
+@pragma('dart2js:noInline')
+test2<U, V>(AAA a, String expected) {
+  // call-through getter 'foo' with two type arguments.
+  Expect.equals(expected, a.foo<U, V>());
+}
+
+main() {
+  test1<int>(B1(<P>() => '$P'), 'int');
+  test1<num>(B2(<Q>() => '$Q'), 'num');
+  test1<double>(B3(<R>() => '$R'), 'double');
+
+  test2<int, num>(B1(<A, B>() => '$A $B'), 'int num');
+  test2<num, int>(B2(<X, Y>() => '$X $Y'), 'num int');
+  test2<double, String>(B3(<C, D>() => '$C $D'), 'double String');
+}
diff --git a/tests/dart2js_2/41449c_test.dart b/tests/dart2js_2/41449c_test.dart
new file mode 100644
index 0000000..3b0ee51
--- /dev/null
+++ b/tests/dart2js_2/41449c_test.dart
@@ -0,0 +1,59 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+//
+// dart2jsOptions=-O4
+
+// @dart = 2.7
+
+// Regression test for passing type parameters through call-through stub.
+//
+// We use an abstract class with two implementations to avoid the optimizer
+// 'inlining' the call-through stub, so we are testing that the stub itself
+// passes through the type parameters.
+
+import 'package:expect/expect.dart';
+
+abstract class AAA {
+  dynamic get foo;
+}
+
+class B1 implements AAA {
+  final dynamic foo;
+  B1(this.foo);
+}
+
+class B2 implements AAA {
+  final dynamic _arr;
+  B2(foo) : _arr = [foo];
+  dynamic get foo => _arr.first;
+}
+
+class B3 implements AAA {
+  final dynamic __foo;
+  B3(this.__foo);
+  dynamic get _foo => __foo;
+  dynamic get foo => _foo;
+}
+
+@pragma('dart2js:noInline')
+test1<T>(AAA a, String expected) {
+  // call-through getter 'foo' with one type argument.
+  Expect.equals(expected, a.foo<T>());
+}
+
+@pragma('dart2js:noInline')
+test2<U, V>(AAA a, String expected) {
+  // call-through getter 'foo' with two type arguments.
+  Expect.equals(expected, a.foo<U, V>());
+}
+
+main() {
+  test1<int>(B1(<P>() => '$P'), 'int');
+  test1<num>(B2(<Q>() => '$Q'), 'num');
+  test1<double>(B3(<R>() => '$R'), 'double');
+
+  test2<int, num>(B1(<A, B>() => '$A $B'), 'int num');
+  test2<num, int>(B2(<X, Y>() => '$X $Y'), 'num int');
+  test2<double, String>(B3(<C, D>() => '$C $D'), 'double String');
+}
diff --git a/tests/ffi/vmspecific_handle_dynamically_linked_test.dart b/tests/ffi/vmspecific_handle_dynamically_linked_test.dart
index e2237e8..6422958 100644
--- a/tests/ffi/vmspecific_handle_dynamically_linked_test.dart
+++ b/tests/ffi/vmspecific_handle_dynamically_linked_test.dart
@@ -17,7 +17,7 @@
 
 void doDynamicLinking() {
   Expect.isTrue(NativeApi.majorVersion == 1);
-  Expect.isTrue(NativeApi.minorVersion >= 0);
+  Expect.isTrue(NativeApi.minorVersion >= 1);
   final initializeApi = testLibrary.lookupFunction<
       IntPtr Function(Pointer<Void>),
       int Function(Pointer<Void>)>("InitDartApiDL");
diff --git a/tests/ffi_2/function_structs_test.dart b/tests/ffi_2/function_structs_test.dart
index 3738876..bf9ea5f 100644
--- a/tests/ffi_2/function_structs_test.dart
+++ b/tests/ffi_2/function_structs_test.dart
@@ -21,8 +21,8 @@
 
 void main() {
   testFunctionWithStruct();
-  // testFunctionWithStructArray();
-  // testFunctionWithVeryLargeStruct();
+  testFunctionWithStructArray();
+  testFunctionWithVeryLargeStruct();
 }
 
 DynamicLibrary ffiTestFunctions = dlopenPlatformSpecific("ffi_test_functions");
diff --git a/tests/ffi_2/vmspecific_handle_dynamically_linked_test.dart b/tests/ffi_2/vmspecific_handle_dynamically_linked_test.dart
index e2237e8..6422958 100644
--- a/tests/ffi_2/vmspecific_handle_dynamically_linked_test.dart
+++ b/tests/ffi_2/vmspecific_handle_dynamically_linked_test.dart
@@ -17,7 +17,7 @@
 
 void doDynamicLinking() {
   Expect.isTrue(NativeApi.majorVersion == 1);
-  Expect.isTrue(NativeApi.minorVersion >= 0);
+  Expect.isTrue(NativeApi.minorVersion >= 1);
   final initializeApi = testLibrary.lookupFunction<
       IntPtr Function(Pointer<Void>),
       int Function(Pointer<Void>)>("InitDartApiDL");
diff --git a/tests/language/abstract/exact_selector_test.dart b/tests/language/abstract/exact_selector_test.dart
index 4fea94c..0df1020 100644
--- a/tests/language/abstract/exact_selector_test.dart
+++ b/tests/language/abstract/exact_selector_test.dart
@@ -17,7 +17,7 @@
   (() => 42)();
   return new Foo();
   //         ^^^
-  // [analyzer] STATIC_WARNING.INSTANTIATE_ABSTRACT_CLASS
+  // [analyzer] COMPILE_TIME_ERROR.INSTANTIATE_ABSTRACT_CLASS
   // [cfe] The class 'Foo' is abstract and can't be instantiated.
 }
 
diff --git a/tests/language/abstract/factory_constructor_test.dart b/tests/language/abstract/factory_constructor_test.dart
index bda6a23..810a3fa 100644
--- a/tests/language/abstract/factory_constructor_test.dart
+++ b/tests/language/abstract/factory_constructor_test.dart
@@ -26,7 +26,7 @@
   // Intentionally abstract method.
   method();
 //^^^^^^^^^
-// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
   A2.make() {}
 }
 
diff --git a/tests/language/abstract/getter_test.dart b/tests/language/abstract/getter_test.dart
index fe5acdf..74d51da 100644
--- a/tests/language/abstract/getter_test.dart
+++ b/tests/language/abstract/getter_test.dart
@@ -13,7 +13,7 @@
   // Intentionally abstract:
   get i;
 //^^^^^^
-// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
 }
 
 class Bar {}
diff --git a/tests/language/abstract/syntax_test.dart b/tests/language/abstract/syntax_test.dart
index 1b617fd..a51480b 100644
--- a/tests/language/abstract/syntax_test.dart
+++ b/tests/language/abstract/syntax_test.dart
@@ -14,7 +14,7 @@
 // [cfe] The non-abstract class 'A' is missing implementations for these members:
   foo();
 //^^^^^^
-// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
   static bar();
   //          ^
   // [analyzer] SYNTACTIC_ERROR.MISSING_FUNCTION_BODY
diff --git a/tests/language/argument/assignability_function_typed_test.dart b/tests/language/argument/assignability_function_typed_test.dart
index 5e1fb52..fe17a15 100644
--- a/tests/language/argument/assignability_function_typed_test.dart
+++ b/tests/language/argument/assignability_function_typed_test.dart
@@ -20,25 +20,25 @@
   // Unrelated types (not assignable).
   f(intToInt);
   //^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'int Function(int)' can't be assigned to the parameter type 'num Function(num)'.
   f(objectToObject);
   //^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'Object Function(Object)' can't be assigned to the parameter type 'num Function(num)'.
 
   // Downcasts.
   f(intToObject);
   //^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The top level function has type 'Object Function(int)' that isn't of expected type 'num Function(num)'.
   f(intToNum);
   //^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The top level function has type 'num Function(int)' that isn't of expected type 'num Function(num)'.
   f(numToObject);
   //^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The top level function has type 'Object Function(num)' that isn't of expected type 'num Function(num)'.
 
   // Ok.
diff --git a/tests/language/assign/to_type_test.dart b/tests/language/assign/to_type_test.dart
index f6f8f29..44d4545 100644
--- a/tests/language/assign/to_type_test.dart
+++ b/tests/language/assign/to_type_test.dart
@@ -9,7 +9,7 @@
   f() {
     T = Null;
 //  ^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_TYPE
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_TYPE
 // [cfe] Can't assign to a type literal.
   }
 }
@@ -24,14 +24,14 @@
   new C<D>().f();
   D = Null;
 //^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_TYPE
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_TYPE
 // [cfe] Can't assign to a type literal.
   E = Null;
 //^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_TYPE
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_TYPE
 // [cfe] Can't assign to a type literal.
   F = Null;
 //^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_TYPE
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_TYPE
 // [cfe] Can't assign to a type literal.
 }
diff --git a/tests/language/call/constructor_on_unresolvable_class_test.dart b/tests/language/call/constructor_on_unresolvable_class_test.dart
index 3b32987..6db90ed 100644
--- a/tests/language/call/constructor_on_unresolvable_class_test.dart
+++ b/tests/language/call/constructor_on_unresolvable_class_test.dart
@@ -11,14 +11,14 @@
 main() {
   new A();
   //  ^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'A'.
   new A.foo();
   //  ^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'A.foo'.
   new lib.A();
   //  ^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'lib.A'.
 }
diff --git a/tests/language/call/method_implicit_tear_off_nullable_test.dart b/tests/language/call/method_implicit_tear_off_nullable_test.dart
index da2fbce..c840804 100644
--- a/tests/language/call/method_implicit_tear_off_nullable_test.dart
+++ b/tests/language/call/method_implicit_tear_off_nullable_test.dart
@@ -19,6 +19,6 @@
   // Nullable types cannot have their `.call` method implicitly torn off.
   check(c);
   //    ^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
 }
diff --git a/tests/language/call/nonexistent_constructor_test.dart b/tests/language/call/nonexistent_constructor_test.dart
index 4649f37..4c129d0 100644
--- a/tests/language/call/nonexistent_constructor_test.dart
+++ b/tests/language/call/nonexistent_constructor_test.dart
@@ -19,10 +19,10 @@
   new A.foo(42);
   new A.bar(foo());
   //    ^^^
-  // [analyzer] STATIC_WARNING.NEW_WITH_UNDEFINED_CONSTRUCTOR
+  // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR
   // [cfe] Method not found: 'A.bar'.
   new A();
   //  ^
-  // [analyzer] STATIC_WARNING.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT
+  // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT
   // [cfe] Method not found: 'A'.
 }
diff --git a/tests/language/class/keyword_test.dart b/tests/language/class/keyword_test.dart
index 891c4a7..5a89f2e 100644
--- a/tests/language/class/keyword_test.dart
+++ b/tests/language/class/keyword_test.dart
@@ -12,14 +12,14 @@
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
 // [cfe] Expected ';' after this.
 //    ^^^^^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] Expected an identifier, but got 'class'.
 //    ^^^^^
 // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
 // [cfe] Setter not found: 'class'.
   print("$class");
   //      ^^^^^
-  // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+  // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
   // [cfe] Expected an identifier, but got 'class'.
   //      ^^^^^
   // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
diff --git a/tests/language/compile_time_constant/p_test.dart b/tests/language/compile_time_constant/p_test.dart
index 5c41a46..031e929 100644
--- a/tests/language/compile_time_constant/p_test.dart
+++ b/tests/language/compile_time_constant/p_test.dart
@@ -8,7 +8,7 @@
   const A(
     this.x
     //   ^
-    // [analyzer] STATIC_WARNING.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR
+    // [analyzer] COMPILE_TIME_ERROR.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR
     // [cfe] 'x' is a final instance variable that has already been initialized.
     //   ^
     // [cfe] Cannot invoke a non-'const' constructor where a const expression is expected.
diff --git a/tests/language/compile_time_constant/static2_test.dart b/tests/language/compile_time_constant/static2_test.dart
index 2155448..5de087a 100644
--- a/tests/language/compile_time_constant/static2_test.dart
+++ b/tests/language/compile_time_constant/static2_test.dart
@@ -9,7 +9,7 @@
   // [analyzer] CHECKED_MODE_COMPILE_TIME_ERROR.CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE
   // [cfe] A value of type 'String' can't be assigned to a variable of type 'int'.
   //                 ^^^^^
-  // [analyzer] STATIC_WARNING.FIELD_INITIALIZER_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZER_NOT_ASSIGNABLE
   const A.a2(this.x);
   const A.a3([this.x = 'foo']);
   //                   ^^^^^
@@ -17,9 +17,7 @@
   // [cfe] A value of type 'String' can't be assigned to a variable of type 'int'.
   const A.a4(String this.x);
   //         ^^^^^^^^^^^^^
-  // [analyzer] COMPILE_TIME_ERROR.INVALID_PARAMETER_DECLARATION
-  //         ^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE
   //                     ^
   // [cfe] The type of parameter 'x', 'String' is not a subtype of the corresponding field's type, 'int'.
   const A.a5(String x) : this.x = x;
@@ -27,7 +25,7 @@
   // [analyzer] CHECKED_MODE_COMPILE_TIME_ERROR.CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE
   // [cfe] A value of type 'String' can't be assigned to a variable of type 'int'.
   //                              ^
-  // [analyzer] STATIC_WARNING.FIELD_INITIALIZER_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZER_NOT_ASSIGNABLE
   const A.a6(int x) : this.x = x;
 }
 
@@ -39,7 +37,7 @@
 // [analyzer] CHECKED_MODE_COMPILE_TIME_ERROR.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH
 // [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
 //                    ^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 const a3 = const A.a3();
 //         ^^^^^^^^^^^^
 // [analyzer] CHECKED_MODE_COMPILE_TIME_ERROR.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH
@@ -56,7 +54,7 @@
 // [analyzer] CHECKED_MODE_COMPILE_TIME_ERROR.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH
 // [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
 //                    ^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 
 main() {
   print(a1);
diff --git a/tests/language/compile_time_constant/static3_test.dart b/tests/language/compile_time_constant/static3_test.dart
index 3deabbb..d6c508b 100644
--- a/tests/language/compile_time_constant/static3_test.dart
+++ b/tests/language/compile_time_constant/static3_test.dart
@@ -9,7 +9,7 @@
   // [analyzer] CHECKED_MODE_COMPILE_TIME_ERROR.CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE
   // [cfe] A value of type 'String' can't be assigned to a variable of type 'int'.
   //                 ^^^^^
-  // [analyzer] STATIC_WARNING.FIELD_INITIALIZER_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZER_NOT_ASSIGNABLE
   const A.a2(this.x);
   const A.a3([this.x = 'foo']);
   //                   ^^^^^
@@ -17,9 +17,7 @@
   // [cfe] A value of type 'String' can't be assigned to a variable of type 'int'.
   const A.a4(String this.x);
   //         ^^^^^^^^^^^^^
-  // [analyzer] COMPILE_TIME_ERROR.INVALID_PARAMETER_DECLARATION
-  //         ^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE
   //                     ^
   // [cfe] The type of parameter 'x', 'String' is not a subtype of the corresponding field's type, 'int'.
   const A.a5(String x) : this.x = x;
@@ -27,7 +25,7 @@
   // [analyzer] CHECKED_MODE_COMPILE_TIME_ERROR.CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE
   // [cfe] A value of type 'String' can't be assigned to a variable of type 'int'.
   //                              ^
-  // [analyzer] STATIC_WARNING.FIELD_INITIALIZER_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZER_NOT_ASSIGNABLE
   const A.a6(int x) : this.x = x;
 }
 
@@ -39,7 +37,7 @@
 // [analyzer] CHECKED_MODE_COMPILE_TIME_ERROR.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH
 // [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
 //                  ^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 var a3 = const A.a3();
 //       ^^^^^^^^^^^^
 // [analyzer] CHECKED_MODE_COMPILE_TIME_ERROR.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH
@@ -56,7 +54,7 @@
 // [analyzer] CHECKED_MODE_COMPILE_TIME_ERROR.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH
 // [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
 //                  ^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 
 main() {
   print(a1);
diff --git a/tests/language/const/constructor3_test.dart b/tests/language/const/constructor3_test.dart
index 54191d1..aa8aa0ff 100644
--- a/tests/language/const/constructor3_test.dart
+++ b/tests/language/const/constructor3_test.dart
@@ -18,7 +18,7 @@
 // [analyzer] CHECKED_MODE_COMPILE_TIME_ERROR.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH
 // [cfe] The argument type 'int' can't be assigned to the parameter type 'double'.
 //                ^^^^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 const e = const D(0.0);
 const f = const D(intValue);
 //        ^^^^^^^^^^^^^^^^^
diff --git a/tests/language/const/constructor_syntax_test.dart b/tests/language/const/constructor_syntax_test.dart
index 99a420e..d214271 100644
--- a/tests/language/const/constructor_syntax_test.dart
+++ b/tests/language/const/constructor_syntax_test.dart
@@ -49,7 +49,7 @@
   const C3()
       : field = new C0()
       //^^^^^
-      // [analyzer] STATIC_WARNING.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION
+      // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION
       //      ^
       // [cfe] 'field' is a final instance variable that has already been initialized.
       //      ^
diff --git a/tests/language/const/syntax_test.dart b/tests/language/const/syntax_test.dart
index e9ccc4e..d9eb889 100644
--- a/tests/language/const/syntax_test.dart
+++ b/tests/language/const/syntax_test.dart
@@ -95,15 +95,11 @@
 //    ^^
 // [analyzer] COMPILE_TIME_ERROR.RECURSIVE_COMPILE_TIME_CONSTANT
 // [cfe] Can't infer the type of 'A2': circularity found during type inference.
-//         ^^
-// [analyzer] COMPILE_TIME_ERROR.TOP_LEVEL_CYCLE
 //            ^
 // [cfe] Constant evaluation error:
 const A3 = A2 + 1;
 //    ^^
 // [analyzer] COMPILE_TIME_ERROR.RECURSIVE_COMPILE_TIME_CONSTANT
-//         ^^
-// [analyzer] COMPILE_TIME_ERROR.TOP_LEVEL_CYCLE
 
 class C0 {
   static const X = const C1();
@@ -115,7 +111,7 @@
   const C1()
       : x = C0.X
       //^
-      // [analyzer] STATIC_WARNING.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION
+      // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION
       //  ^
       // [cfe] 'x' is a final instance variable that has already been initialized.
       //  ^
@@ -132,7 +128,7 @@
 //         ^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.CONST_EVAL_TYPE_NUM
 //              ^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] A value of type 'String' can't be assigned to a variable of type 'num'.
 
 // Check identical.
diff --git a/tests/language/constructor/constructor9_test.dart b/tests/language/constructor/constructor9_test.dart
index 4c7b35d..607e164 100644
--- a/tests/language/constructor/constructor9_test.dart
+++ b/tests/language/constructor/constructor9_test.dart
@@ -8,7 +8,7 @@
 class Klass {
   Klass(var v) : field_ = v {}
 //^^^^^
-// [analyzer] STATIC_WARNING.FINAL_NOT_INITIALIZED_CONSTRUCTOR
+// [analyzer] COMPILE_TIME_ERROR.FINAL_NOT_INITIALIZED_CONSTRUCTOR
   final uninitializedFinalField_;
   //    ^
   // [cfe] Final field 'uninitializedFinalField_' is not initialized.
diff --git a/tests/language/constructor/default_factory_test.dart b/tests/language/constructor/default_factory_test.dart
index 43a93e8..1b69325 100644
--- a/tests/language/constructor/default_factory_test.dart
+++ b/tests/language/constructor/default_factory_test.dart
@@ -9,7 +9,7 @@
 abstract class Vehicle {
   factory Vehicle() = GoogleOne.Vehicle;
   //                  ^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.REDIRECT_TO_INVALID_RETURN_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.REDIRECT_TO_INVALID_RETURN_TYPE
   // [cfe] The constructor function type 'GoogleOne Function()' isn't a subtype of 'Vehicle Function()'.
 }
 
diff --git a/tests/language/constructor/named_constructor_test.dart b/tests/language/constructor/named_constructor_test.dart
index 12a58b1..d802b9a 100644
--- a/tests/language/constructor/named_constructor_test.dart
+++ b/tests/language/constructor/named_constructor_test.dart
@@ -36,13 +36,13 @@
   // 'prefix' is not a type:
   new prefix<int>.Class().value;
   //  ^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'prefix.Class'.
   new prefix.Class<int>().value;
   // 'prefix<int>.Class<int>' doesn't fit the grammar syntax T.id:
   new prefix<int>.Class<int>().value;
   //  ^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'prefix.Class'.
   //              ^^^^^
   // [analyzer] STATIC_TYPE_WARNING.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
@@ -52,7 +52,7 @@
   // 'prefix<int>.Class.named' doesn't fit the grammar syntax T.id:
   new prefix<int>.Class.named().value;
   //  ^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'prefix.Class'.
   //              ^^^^^
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
@@ -70,7 +70,7 @@
   // 'prefix<int>.Class<int>' doesn't fit the grammar syntax T.id:
   new prefix<int>.Class<int>.named().value;
   //  ^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'prefix.Class'.
   //              ^^^^^
   // [analyzer] STATIC_TYPE_WARNING.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
@@ -80,7 +80,7 @@
   // 'prefix<int>.Class.named<int>' doesn't fit the grammar syntax T.id:
   new prefix<int>.Class.named<int>().value;
   //  ^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'prefix.Class'.
   //              ^^^^^
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
@@ -96,7 +96,7 @@
   // 'prefix<int>.Class<int>.named<int>' doesn't fit the grammar syntax T.id:
   new prefix<int>.Class<int>.named<int>().value;
   //  ^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'prefix.Class'.
   //              ^^^^^
   // [analyzer] STATIC_TYPE_WARNING.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
diff --git a/tests/language/constructor/reference_test.dart b/tests/language/constructor/reference_test.dart
index 7aab1ff..c1ec04c 100644
--- a/tests/language/constructor/reference_test.dart
+++ b/tests/language/constructor/reference_test.dart
@@ -13,7 +13,7 @@
   new Foo.bar();
   new Foo.bar.baz();
   //  ^^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   //          ^
   // [cfe] Method not found: 'Foo.bar.baz'.
   new Foo<int>();
@@ -34,12 +34,12 @@
   //      ^
   // [cfe] A constructor invocation can't have type arguments on the constructor name.
   //  ^^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   //               ^
   // [cfe] Method not found: 'Foo.bar.baz'.
   new Foo.bar.baz<int>();
   //  ^^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   //          ^^^
   // [analyzer] STATIC_TYPE_WARNING.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
   // [cfe] A constructor invocation can't have type arguments on the constructor name.
@@ -107,7 +107,7 @@
   //  ^
   // [cfe] A constructor invocation can't have type arguments on the constructor name.
 //^^^^^^^
-// [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   //           ^
   // [cfe] Method not found: 'Foo.bar.baz'.
   Foo.bar.baz<int>();
diff --git a/tests/language/constructor/unresolved_default_constructor_test.dart b/tests/language/constructor/unresolved_default_constructor_test.dart
index 07fdc72..b8b5338 100644
--- a/tests/language/constructor/unresolved_default_constructor_test.dart
+++ b/tests/language/constructor/unresolved_default_constructor_test.dart
@@ -15,6 +15,6 @@
   A.method();
   Expect.throws(() => new A());
   //                      ^
-  // [analyzer] STATIC_WARNING.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT
+  // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT
   // [cfe] Method not found: 'A'.
 }
diff --git a/tests/language/control_flow_collections/await_for_downcast_test.dart b/tests/language/control_flow_collections/await_for_downcast_test.dart
index be8aa65..613ebf4 100644
--- a/tests/language/control_flow_collections/await_for_downcast_test.dart
+++ b/tests/language/control_flow_collections/await_for_downcast_test.dart
@@ -33,7 +33,7 @@
   var c = <int>[
     await for (num n in numStream([1, 2, 3, 4])) n
     //                                           ^
-    // [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] A value of type 'num' can't be assigned to a variable of type 'int'.
   ];
 }
@@ -59,10 +59,10 @@
   var c = <int, int>{
     await for (num n in numStream([1, 2, 3, 4])) n: n
     //                                           ^
-    // [analyzer] STATIC_WARNING.MAP_KEY_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.MAP_KEY_TYPE_NOT_ASSIGNABLE
     // [cfe] A value of type 'num' can't be assigned to a variable of type 'int'.
     //                                              ^
-    // [analyzer] STATIC_WARNING.MAP_VALUE_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.MAP_VALUE_TYPE_NOT_ASSIGNABLE
     // [cfe] A value of type 'num' can't be assigned to a variable of type 'int'.
   };
 }
@@ -88,7 +88,7 @@
   var c = <int>{
     await for (num n in numStream([1, 2, 3, 4])) n
     //                                           ^
-    // [analyzer] STATIC_WARNING.SET_ELEMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.SET_ELEMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] A value of type 'num' can't be assigned to a variable of type 'int'.
   };
 }
diff --git a/tests/language/control_flow_collections/await_for_null_test.dart b/tests/language/control_flow_collections/await_for_null_test.dart
index a8f4154..61fd04c 100644
--- a/tests/language/control_flow_collections/await_for_null_test.dart
+++ b/tests/language/control_flow_collections/await_for_null_test.dart
@@ -8,14 +8,14 @@
   Stream<int>? nullStream;
   var a = <int>[await for (var i in nullStream) 1];
   //                                ^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
   // [cfe] The type 'Stream<int>?' used in the 'for' loop must implement 'Stream<dynamic>'.
   var b = <int, int>{await for (var i in nullStream) 1: 1};
   //                                     ^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
   // [cfe] The type 'Stream<int>?' used in the 'for' loop must implement 'Stream<dynamic>'.
   var c = <int>{await for (var i in nullStream) 1};
   //                                ^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
   // [cfe] The type 'Stream<int>?' used in the 'for' loop must implement 'Stream<dynamic>'.
 }
diff --git a/tests/language/control_flow_collections/for_downcast_test.dart b/tests/language/control_flow_collections/for_downcast_test.dart
index f857295..d88e3f6 100644
--- a/tests/language/control_flow_collections/for_downcast_test.dart
+++ b/tests/language/control_flow_collections/for_downcast_test.dart
@@ -31,7 +31,7 @@
   var c = <int>[
     for (num n in <num>[1, 2, 3, 4]) n
     //                               ^
-    // [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] A value of type 'num' can't be assigned to a variable of type 'int'.
   ];
 
@@ -64,10 +64,10 @@
   var c = <int, int>{
     for (num n in <num>[1, 2, 3, 4]) n: n
     //                               ^
-    // [analyzer] STATIC_WARNING.MAP_KEY_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.MAP_KEY_TYPE_NOT_ASSIGNABLE
     // [cfe] A value of type 'num' can't be assigned to a variable of type 'int'.
     //                                  ^
-    // [analyzer] STATIC_WARNING.MAP_VALUE_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.MAP_VALUE_TYPE_NOT_ASSIGNABLE
     // [cfe] A value of type 'num' can't be assigned to a variable of type 'int'.
   };
 
@@ -100,7 +100,7 @@
   var c = <int>{
     for (num n in <num>[1, 2, 3, 4]) n
     //                               ^
-    // [analyzer] STATIC_WARNING.SET_ELEMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.SET_ELEMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] A value of type 'num' can't be assigned to a variable of type 'int'.
   };
 
@@ -117,14 +117,14 @@
   Iterable<int>? nullIterable = null;
   var a = <int>[for (var i in nullIterable) 1];
   //                          ^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
   // [cfe] The type 'Iterable<int>?' used in the 'for' loop must implement 'Iterable<dynamic>'.
   var b = {for (var i in nullIterable) 1: 1};
   //                     ^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
   // [cfe] The type 'Iterable<int>?' used in the 'for' loop must implement 'Iterable<dynamic>'.
   var c = <int>{for (var i in nullIterable) 1};
   //                          ^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
   // [cfe] The type 'Iterable<int>?' used in the 'for' loop must implement 'Iterable<dynamic>'.
 }
diff --git a/tests/language/control_flow_collections/for_null_condition_test.dart b/tests/language/control_flow_collections/for_null_condition_test.dart
index 31b02b9..ebddf4c 100644
--- a/tests/language/control_flow_collections/for_null_condition_test.dart
+++ b/tests/language/control_flow_collections/for_null_condition_test.dart
@@ -9,14 +9,14 @@
   bool? nullBool = null;
   var a = <int>[for (; nullBool;) 1];
   //                   ^^^^^^^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
   // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
   var b = <int, int>{for (; nullBool;) 1: 1};
   //                        ^^^^^^^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
   // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
   var c = <int>{for (; nullBool;) 1};
   //                   ^^^^^^^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
   // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
 }
diff --git a/tests/language/control_flow_collections/if_null_condition_test.dart b/tests/language/control_flow_collections/if_null_condition_test.dart
index 667c6bd..bec649f 100644
--- a/tests/language/control_flow_collections/if_null_condition_test.dart
+++ b/tests/language/control_flow_collections/if_null_condition_test.dart
@@ -6,16 +6,16 @@
   bool? nullBool;
   var a = <int>[if (nullBool) 1];
   //                ^^^^^^^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
   // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
 
   var b = <int, int>{if (nullBool) 1: 1};
   //                     ^^^^^^^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
   // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
 
   var c = <int>{if (nullBool) 1};
   //                ^^^^^^^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
   // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
 }
diff --git a/tests/language/deferred/inheritance_constraints_test.dart b/tests/language/deferred/inheritance_constraints_test.dart
index 9dd18f2..2d9429b 100644
--- a/tests/language/deferred/inheritance_constraints_test.dart
+++ b/tests/language/deferred/inheritance_constraints_test.dart
@@ -27,7 +27,7 @@
   D();
   factory D.factory() = lib.Foo2;
 //                      ^^^^^^^^
-// [analyzer] STATIC_WARNING.REDIRECT_TO_INVALID_RETURN_TYPE
+// [analyzer] COMPILE_TIME_ERROR.REDIRECT_TO_INVALID_RETURN_TYPE
 // [cfe] The constructor function type 'Foo2 Function()' isn't a subtype of 'D Function()'.
 }
 
diff --git a/tests/language/double/to_string_as_exponential2_test.dart b/tests/language/double/to_string_as_exponential2_test.dart
index fbe03c4..8bb750a 100644
--- a/tests/language/double/to_string_as_exponential2_test.dart
+++ b/tests/language/double/to_string_as_exponential2_test.dart
@@ -11,14 +11,14 @@
   Expect.throwsRangeError(() => v.toStringAsExponential(21));
   v.toStringAsExponential(1.5);
   //                      ^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'double' can't be assigned to the parameter type 'int?'.
   v.toStringAsExponential("string");
   //                      ^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'String' can't be assigned to the parameter type 'int?'.
   v.toStringAsExponential("3");
   //                      ^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'String' can't be assigned to the parameter type 'int?'.
 }
diff --git a/tests/language/dynamic/field_test.dart b/tests/language/dynamic/field_test.dart
index ebe094e..23190e0 100644
--- a/tests/language/dynamic/field_test.dart
+++ b/tests/language/dynamic/field_test.dart
@@ -15,21 +15,21 @@
   foo() {
     print(a);
     //    ^
-    // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+    // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
     // [cfe] The getter 'a' isn't defined for the class 'C'.
     return a;
     //     ^
-    // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+    // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
     // [cfe] The getter 'a' isn't defined for the class 'C'.
   }
   bar() {
     print(b.a);
     //    ^
-    // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+    // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
     // [cfe] The getter 'b' isn't defined for the class 'C'.
     return b.a;
     //     ^
-    // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+    // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
     // [cfe] The getter 'b' isn't defined for the class 'C'.
   }
 }
diff --git a/tests/language/extension_methods/static_extension_getter_setter_conflicts_test.dart b/tests/language/extension_methods/static_extension_getter_setter_conflicts_test.dart
index a2af316..bce34aa 100644
--- a/tests/language/extension_methods/static_extension_getter_setter_conflicts_test.dart
+++ b/tests/language/extension_methods/static_extension_getter_setter_conflicts_test.dart
@@ -23,7 +23,7 @@
   c0.m1;
   c0.m1 = 0;
   // ^^
-  // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+  // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
   // [cfe] The setter 'm1' isn't defined for the class 'C0'.
   E0(c0).m1 = 0;
   E0(c0).m1;
@@ -33,12 +33,12 @@
 
   c0.m1 += 0;
   // ^^
-  // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+  // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
   // [cfe] The setter 'm1' isn't defined for the class 'C0'.
 
   c0.m1++;
   // ^^
-  // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+  // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
   // [cfe] The setter 'm1' isn't defined for the class 'C0'.
 
   c0.m2 = 0;
@@ -109,7 +109,7 @@
 
   c1a.m1 = 0;
   //  ^^
-  // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_LOCAL
+  // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_LOCAL
   // [cfe] The setter 'm1' isn't defined for the class 'C1<int>'.
 
   c1a.m2;
@@ -195,7 +195,7 @@
 
   c1c.m1 = 0;
   //  ^^
-  // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_LOCAL
+  // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_LOCAL
   // [cfe] The setter 'm1' isn't defined for the class 'C1<Object>'.
 
   c1c.m2;
@@ -224,7 +224,7 @@
     this.m1;
     this.m1 = 0;
     //   ^^
-    // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+    // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
     // [cfe] The setter 'm1' isn't defined for the class 'C2'.
 
     this.m2 = 0;
diff --git a/tests/language/extension_methods/static_extension_internal_basename_shadowing_error_test.dart b/tests/language/extension_methods/static_extension_internal_basename_shadowing_error_test.dart
index c7ce72e..f1a9254 100644
--- a/tests/language/extension_methods/static_extension_internal_basename_shadowing_error_test.dart
+++ b/tests/language/extension_methods/static_extension_internal_basename_shadowing_error_test.dart
@@ -23,29 +23,29 @@
     // The instance getter shadows the global setter
     topLevelSetter = topLevelSetter + 1;
 //  ^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelSetter'.
     topLevelSetter++;
 //  ^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelSetter'.
     topLevelSetter = 0;
 //  ^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelSetter'.
 
     // The instance getter shadows the global field setter
     topLevelField = topLevelField + 1;
 //  ^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelField'.
     topLevelField++;
 //  ^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelField'.
     topLevelField = 0;
 //  ^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelField'.
 
     // The instance getter shadows the global method
@@ -115,29 +115,29 @@
     // The static getter shadows the global setter
     topLevelSetter = topLevelSetter + 1;
 //  ^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelSetter'.
     topLevelSetter++;
 //  ^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelSetter'.
     topLevelSetter = 0;
 //  ^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelSetter'.
 
     // The static getter shadows the global field setter
     topLevelField = topLevelField + 1;
 //  ^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelField'.
     topLevelField++;
 //  ^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelField'.
     topLevelField = 0;
 //  ^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelField'.
 
     // The static getter shadows the global method
@@ -211,15 +211,15 @@
     // The instance getter shadows the other extension's setter
     extensionSetter = extensionSetter + 1;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'extensionSetter'.
     extensionSetter++;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'extensionSetter'.
     extensionSetter = 0;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'extensionSetter'.
 
     // The instance getter shadows the other extensions method
@@ -242,15 +242,15 @@
     // The instance getter shadows the other extension's setter
     extensionSetter = extensionSetter + 1;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] The setter 'extensionSetter' isn't defined for the class 'A7'.
     extensionSetter++;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] The setter 'extensionSetter' isn't defined for the class 'A7'.
     extensionSetter = 0;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] The setter 'extensionSetter' isn't defined for the class 'A7'.
 
     // The instance getter shadows the other extensions method
@@ -343,15 +343,15 @@
     // The static getter shadows the other extension's setter
     extensionSetter = extensionSetter + 1;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'extensionSetter'.
     extensionSetter++;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'extensionSetter'.
     extensionSetter = 0;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'extensionSetter'.
 
     // The static field shadows the other extension's setter
@@ -389,15 +389,15 @@
     // The static getter shadows the other extension's setter
     extensionSetter = extensionSetter + 1;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'extensionSetter'.
     extensionSetter++;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'extensionSetter'.
     extensionSetter = 0;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'extensionSetter'.
 
     // The static field shadows the other extension's setter
diff --git a/tests/language/extension_methods/static_extension_internal_resolution_4_error_test.dart b/tests/language/extension_methods/static_extension_internal_resolution_4_error_test.dart
index d1a4685..6f6944c 100644
--- a/tests/language/extension_methods/static_extension_internal_resolution_4_error_test.dart
+++ b/tests/language/extension_methods/static_extension_internal_resolution_4_error_test.dart
@@ -238,21 +238,21 @@
       // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_EXTENSION_MEMBER_ACCESS
       // [cfe] The property 'fieldInExtensionScope' is defined in multiple extensions for 'B' and neither is more specific.
       //        ^^^^^^^^^^^^^^^^^^^^^
-      // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+      // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
       checkExtensionValue(t0);
       bool t1 = getterInExtensionScope;
       //        ^^^^^^^^^^^^^^^^^^^^^^
       // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_EXTENSION_MEMBER_ACCESS
       // [cfe] The property 'getterInExtensionScope' is defined in multiple extensions for 'B' and neither is more specific.
       //        ^^^^^^^^^^^^^^^^^^^^^^
-      // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+      // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
       checkExtensionValue(t1);
       setterInExtensionScope = extensionValue;
 //    ^^^^^^^^^^^^^^^^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_EXTENSION_MEMBER_ACCESS
 // [cfe] The property 'setterInExtensionScope' is defined in multiple extensions for 'B' and neither is more specific.
 //    ^^^^^^^^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
       bool t2 = methodInExtensionScope();
       //        ^^^^^^^^^^^^^^^^^^^^^^
       // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_EXTENSION_MEMBER_ACCESS
diff --git a/tests/language/extension_methods/static_extension_setter_getter_assignability_error_test.dart b/tests/language/extension_methods/static_extension_setter_getter_assignability_error_test.dart
index e31cc30..e6e2b0b 100644
--- a/tests/language/extension_methods/static_extension_setter_getter_assignability_error_test.dart
+++ b/tests/language/extension_methods/static_extension_setter_getter_assignability_error_test.dart
@@ -10,7 +10,7 @@
   //     ^^
   // [cfe] unspecified
   //             ^^^^^^^^
-  // [analyzer] STATIC_WARNING.GETTER_NOT_SUBTYPE_SETTER_TYPES
+  // [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_SUBTYPE_SETTER_TYPES
   static void set property(String value) {}
   //                       ^^
   // [cfe] unspecified
@@ -18,7 +18,7 @@
   //  ^^
   // [cfe] unspecified
   //      ^^^^^^^^^
-  // [analyzer] STATIC_WARNING.GETTER_NOT_SUBTYPE_SETTER_TYPES
+  // [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_SUBTYPE_SETTER_TYPES
   void set property2(String x) {}
   //                 ^^
   // [cfe] unspecified
diff --git a/tests/language/factory/factory4_test.dart b/tests/language/factory/factory4_test.dart
index 8aeb051..14e2b01 100644
--- a/tests/language/factory/factory4_test.dart
+++ b/tests/language/factory/factory4_test.dart
@@ -5,7 +5,7 @@
 abstract class Link<T> {
   factory Link.create() = LinkFactory.create;
   //                      ^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.REDIRECT_TO_INVALID_RETURN_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.REDIRECT_TO_INVALID_RETURN_TYPE
   // [cfe] The constructor function type 'LinkFactory<dynamic> Function()' isn't a subtype of 'Link<T> Function()'.
 }
 
diff --git a/tests/language/factory/factory5_test.dart b/tests/language/factory/factory5_test.dart
index b06af33..aaf99e0 100644
--- a/tests/language/factory/factory5_test.dart
+++ b/tests/language/factory/factory5_test.dart
@@ -5,7 +5,7 @@
 abstract class Link<T> {
   factory Link.create() = LinkFactory<T>.create;
   //                      ^^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.REDIRECT_TO_INVALID_RETURN_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.REDIRECT_TO_INVALID_RETURN_TYPE
   // [cfe] The constructor function type 'LinkFactory<T> Function()' isn't a subtype of 'Link<T> Function()'.
 }
 
diff --git a/tests/language/factory/factory6_test.dart b/tests/language/factory/factory6_test.dart
index 7e36cb9..6084e82 100644
--- a/tests/language/factory/factory6_test.dart
+++ b/tests/language/factory/factory6_test.dart
@@ -7,7 +7,7 @@
 abstract class Link<T> {
   factory Link.Foo() = LinkFactory<T>.Foo;
   //                   ^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.REDIRECT_TO_INVALID_RETURN_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.REDIRECT_TO_INVALID_RETURN_TYPE
   // [cfe] The constructor function type 'LinkFactory<T> Function()' isn't a subtype of 'Link<T> Function()'.
 }
 
diff --git a/tests/language/factory/factory_test.dart b/tests/language/factory/factory_test.dart
index 14a5983..b42c213 100644
--- a/tests/language/factory/factory_test.dart
+++ b/tests/language/factory/factory_test.dart
@@ -39,7 +39,7 @@
   // [analyzer] STATIC_TYPE_WARNING.WRONG_NUMBER_OF_TYPE_ARGUMENTS
   // [cfe] Expected 0 type arguments.
   //                      ^^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.REDIRECT_TO_INVALID_RETURN_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.REDIRECT_TO_INVALID_RETURN_TYPE
 }
 
 class LinkFactory {
diff --git a/tests/language/factory/redirection3_cyclic_test.dart b/tests/language/factory/redirection3_cyclic_test.dart
index ed352be..13dc39b 100644
--- a/tests/language/factory/redirection3_cyclic_test.dart
+++ b/tests/language/factory/redirection3_cyclic_test.dart
@@ -28,7 +28,7 @@
   // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
   // [cfe] Expected an identifier, but got '('.
   //                     ^^^
-  // [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+  // [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
   C();
 }
 
diff --git a/tests/language/final/attempt_reinitialization_test.dart b/tests/language/final/attempt_reinitialization_test.dart
index 009998b..2db5efe 100644
--- a/tests/language/final/attempt_reinitialization_test.dart
+++ b/tests/language/final/attempt_reinitialization_test.dart
@@ -5,7 +5,7 @@
 class Foo {
   Foo(this.x);
   //       ^
-  // [analyzer] STATIC_WARNING.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR
+  // [analyzer] COMPILE_TIME_ERROR.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR
   // [cfe] 'x' is a final instance variable that has already been initialized.
   final int x = 42;
 }
@@ -15,7 +15,7 @@
   CoffeeShop.name(String shopName)
       : this.shopName = shopName;
       //     ^^^^^^^^
-      // [analyzer] STATIC_WARNING.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION
+      // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION
       //              ^
       // [cfe] 'shopName' is a final instance variable that has already been initialized.
 }
diff --git a/tests/language/final/variable_assignment_test.dart b/tests/language/final/variable_assignment_test.dart
index f001d40..840f0e6 100644
--- a/tests/language/final/variable_assignment_test.dart
+++ b/tests/language/final/variable_assignment_test.dart
@@ -8,18 +8,18 @@
   final x = 30;
   x = 0;
 //^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_LOCAL
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_LOCAL
 // [cfe] Can't assign to the final variable 'x'.
   x += 1;
 //^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_LOCAL
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_LOCAL
 // [cfe] Can't assign to the final variable 'x'.
   ++x;
   //^
-  // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_LOCAL
+  // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_LOCAL
   // [cfe] Can't assign to the final variable 'x'.
   x++;
 //^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_LOCAL
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_LOCAL
 // [cfe] Can't assign to the final variable 'x'.
 }
diff --git a/tests/language/generic/constructor_mixin2_test.dart b/tests/language/generic/constructor_mixin2_test.dart
index 6630e4e..88281e3 100644
--- a/tests/language/generic/constructor_mixin2_test.dart
+++ b/tests/language/generic/constructor_mixin2_test.dart
@@ -22,6 +22,6 @@
   checkNoDynamicTypeError(() => new D<int>(v));
   checkDynamicTypeError(() => new D<String>(v));
   //                                        ^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'int' can't be assigned to the parameter type 'String'.
 }
diff --git a/tests/language/generic/constructor_mixin3_test.dart b/tests/language/generic/constructor_mixin3_test.dart
index 7a1a21a..04e86a1 100644
--- a/tests/language/generic/constructor_mixin3_test.dart
+++ b/tests/language/generic/constructor_mixin3_test.dart
@@ -21,6 +21,6 @@
   checkNoDynamicTypeError(() => new C1(v));
   checkDynamicTypeError(() => new C2(v));
   //                                 ^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'int' can't be assigned to the parameter type 'String'.
 }
diff --git a/tests/language/generic/constructor_mixin_test.dart b/tests/language/generic/constructor_mixin_test.dart
index a2b828e..f79f865 100644
--- a/tests/language/generic/constructor_mixin_test.dart
+++ b/tests/language/generic/constructor_mixin_test.dart
@@ -20,6 +20,6 @@
   checkNoDynamicTypeError(() => new C<int>(v));
   checkDynamicTypeError(() => new C<String>(v));
   //                                        ^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'int' can't be assigned to the parameter type 'String'.
 }
diff --git a/tests/language/generic/instantiate_type_variable_test.dart b/tests/language/generic/instantiate_type_variable_test.dart
index e03c49f..486a95b 100644
--- a/tests/language/generic/instantiate_type_variable_test.dart
+++ b/tests/language/generic/instantiate_type_variable_test.dart
@@ -9,7 +9,7 @@
   dynamic make() {
     return new T();
     //         ^
-    // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+    // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
     // [cfe] Method not found: 'T'.
   }
 }
diff --git a/tests/language/generic/reify_typevar_static_test.dart b/tests/language/generic/reify_typevar_static_test.dart
index b3c502b..c589aff 100644
--- a/tests/language/generic/reify_typevar_static_test.dart
+++ b/tests/language/generic/reify_typevar_static_test.dart
@@ -11,7 +11,7 @@
   static staticFunction(bool b) =>
     b ? T :
     //  ^
-    // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+    // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
     // [cfe] Type variables can't be used in static members.
       null;
   factory C.factoryConstructor(bool b) => new C(
diff --git a/tests/language/getter/no_setter2_test.dart b/tests/language/getter/no_setter2_test.dart
index 778ce8f..83d92c4 100644
--- a/tests/language/getter/no_setter2_test.dart
+++ b/tests/language/getter/no_setter2_test.dart
@@ -11,20 +11,20 @@
   Example() {
     nextVar++;
 //  ^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'nextVar'.
     this.nextVar++;
     //   ^^^^^^^
-    // [analyzer] STATIC_TYPE_WARNING.INSTANCE_ACCESS_TO_STATIC_MEMBER
+    // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
     // [cfe] The getter 'nextVar' isn't defined for the class 'Example'.
     //   ^^^^^^^
-    // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+    // [analyzer] STATIC_TYPE_WARNING.INSTANCE_ACCESS_TO_STATIC_MEMBER
     // [cfe] The setter 'nextVar' isn't defined for the class 'Example'.
   }
   static test() {
     nextVar++;
 //  ^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'nextVar'.
     this.nextVar++;
 //  ^^^^
@@ -33,7 +33,7 @@
 //       ^^^^^^^
 // [analyzer] STATIC_TYPE_WARNING.INSTANCE_ACCESS_TO_STATIC_MEMBER
 //       ^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
   }
 }
 
diff --git a/tests/language/getter/no_setter_test.dart b/tests/language/getter/no_setter_test.dart
index 8d84129..c403d32 100644
--- a/tests/language/getter/no_setter_test.dart
+++ b/tests/language/getter/no_setter_test.dart
@@ -11,19 +11,19 @@
   Example() {
     nextVar = 1;
 //  ^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'nextVar'.
     this.nextVar = 1;
     //   ^^^^^^^
     // [analyzer] STATIC_TYPE_WARNING.INSTANCE_ACCESS_TO_STATIC_MEMBER
     // [cfe] The setter 'nextVar' isn't defined for the class 'Example'.
     //   ^^^^^^^
-    // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+    // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
   }
   static test() {
     nextVar = 0;
 //  ^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'nextVar'.
     this.nextVar = 0;
 //  ^^^^
@@ -32,7 +32,7 @@
 //       ^^^^^^^
 // [analyzer] STATIC_TYPE_WARNING.INSTANCE_ACCESS_TO_STATIC_MEMBER
 //       ^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
   }
 }
 
diff --git a/tests/language/getter/setter2_test.dart b/tests/language/getter/setter2_test.dart
index 2e0a03c..a26bd49 100644
--- a/tests/language/getter/setter2_test.dart
+++ b/tests/language/getter/setter2_test.dart
@@ -24,7 +24,7 @@
   late A getterField;
   A get field {
   //    ^^^^^
-  // [analyzer] STATIC_WARNING.GETTER_NOT_SUBTYPE_SETTER_TYPES
+  // [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_SUBTYPE_SETTER_TYPES
   // [cfe] unspecified
     return getterField;
   }
@@ -39,7 +39,7 @@
   late C setterField;
   A get field {
   //    ^^^^^
-  // [analyzer] STATIC_WARNING.GETTER_NOT_SUBTYPE_SETTER_TYPES
+  // [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_SUBTYPE_SETTER_TYPES
   // [cfe] unspecified
     return getterField;
   }
diff --git a/tests/language/getter/setter_type_test.dart b/tests/language/getter/setter_type_test.dart
index b5b5299..f9579d5 100644
--- a/tests/language/getter/setter_type_test.dart
+++ b/tests/language/getter/setter_type_test.dart
@@ -8,7 +8,7 @@
 
 int get foo => bar;
 //      ^^^
-// [analyzer] STATIC_WARNING.GETTER_NOT_SUBTYPE_SETTER_TYPES
+// [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_SUBTYPE_SETTER_TYPES
 // [cfe] unspecified
 
 void set foo(String str) {
diff --git a/tests/language/getter/syntax_get_set_syntax_test.dart b/tests/language/getter/syntax_get_set_syntax_test.dart
index 9dcaac2..dbeaa85 100644
--- a/tests/language/getter/syntax_get_set_syntax_test.dart
+++ b/tests/language/getter/syntax_get_set_syntax_test.dart
@@ -73,7 +73,7 @@
 // [analyzer] SYNTACTIC_ERROR.VAR_RETURN_TYPE
 // [cfe] The return type can't be 'var'.
 //    ^^^^^^
-// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
   var get b, c;
 //^^^
 // [analyzer] SYNTACTIC_ERROR.VAR_RETURN_TYPE
@@ -94,7 +94,7 @@
 // [analyzer] SYNTACTIC_ERROR.VAR_RETURN_TYPE
 // [cfe] The return type can't be 'var'.
 //    ^^^^^^
-// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
 //        ^
 // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER
 // [cfe] A method declaration needs an explicit list of parameters.
@@ -141,9 +141,9 @@
   List? set;
   List set d;
 //^^^^
-// [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+// [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
 //^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
 //         ^
 // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER
 // [cfe] A method declaration needs an explicit list of parameters.
@@ -153,7 +153,7 @@
 // [cfe] A setter should have exactly one formal parameter.
   List? set e, f;
 //^^^^^
-// [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+// [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
 //          ^
 // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER
 // [cfe] A method declaration needs an explicit list of parameters.
@@ -189,9 +189,9 @@
   List<int>? set;
   List<int> set d;
 //^^^^^^^^^
-// [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+// [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
 //^^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
 //              ^
 // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER
 // [cfe] A method declaration needs an explicit list of parameters.
@@ -201,7 +201,7 @@
 // [cfe] A setter should have exactly one formal parameter.
   List<int>? set e, f;
 //^^^^^^^^^^
-// [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+// [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
 //               ^
 // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER
 // [cfe] A method declaration needs an explicit list of parameters.
diff --git a/tests/language/identifier/known_prefix_error_test.dart b/tests/language/identifier/known_prefix_error_test.dart
index a104b53..fe1ea19 100644
--- a/tests/language/identifier/known_prefix_error_test.dart
+++ b/tests/language/identifier/known_prefix_error_test.dart
@@ -23,49 +23,49 @@
 
 async<dynamic> _async = new async.A();
 // [error line 24, column 1, length 5]
-// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [analyzer] COMPILE_TIME_ERROR.NOT_A_TYPE
 // [cfe] 'async' isn't a type.
 // [error line 24, column 1]
 // [cfe] Expected 0 type arguments.
 await<dynamic> _await = new await.A();
 // [error line 30, column 1, length 5]
-// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [analyzer] COMPILE_TIME_ERROR.NOT_A_TYPE
 // [cfe] 'await' isn't a type.
 // [error line 30, column 1]
 // [cfe] Expected 0 type arguments.
 hide<dynamic> _hide = new hide.A();
 // [error line 36, column 1, length 4]
-// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [analyzer] COMPILE_TIME_ERROR.NOT_A_TYPE
 // [cfe] 'hide' isn't a type.
 // [error line 36, column 1]
 // [cfe] Expected 0 type arguments.
 of<dynamic> _of = new of.A();
 // [error line 42, column 1, length 2]
-// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [analyzer] COMPILE_TIME_ERROR.NOT_A_TYPE
 // [cfe] 'of' isn't a type.
 // [error line 42, column 1]
 // [cfe] Expected 0 type arguments.
 on<dynamic> _on = new on.A();
 // [error line 48, column 1, length 2]
-// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [analyzer] COMPILE_TIME_ERROR.NOT_A_TYPE
 // [cfe] 'on' isn't a type.
 // [error line 48, column 1]
 // [cfe] Expected 0 type arguments.
 show<dynamic> _show = new show.A();
 // [error line 54, column 1, length 4]
-// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [analyzer] COMPILE_TIME_ERROR.NOT_A_TYPE
 // [cfe] 'show' isn't a type.
 // [error line 54, column 1]
 // [cfe] Expected 0 type arguments.
 sync<dynamic> _sync = new sync.A();
 // [error line 60, column 1, length 4]
-// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [analyzer] COMPILE_TIME_ERROR.NOT_A_TYPE
 // [cfe] 'sync' isn't a type.
 // [error line 60, column 1]
 // [cfe] Expected 0 type arguments.
 yield<dynamic> _yield = new yield.A();
 // [error line 66, column 1, length 5]
-// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [analyzer] COMPILE_TIME_ERROR.NOT_A_TYPE
 // [cfe] 'yield' isn't a type.
 // [error line 66, column 1]
 // [cfe] Expected 0 type arguments.
diff --git a/tests/language/if_null/assignment_behavior_test.dart b/tests/language/if_null/assignment_behavior_test.dart
index 6cdccc7..12da870 100644
--- a/tests/language/if_null/assignment_behavior_test.dart
+++ b/tests/language/if_null/assignment_behavior_test.dart
@@ -122,7 +122,7 @@
     yGetValue = 1; check(1, () => v ??= y, ['$s.v', 'y', '$s.v=1']);
     finalOne ??= null;
 //  ^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL
 // [cfe] The setter 'finalOne' isn't defined for the class 'C'.
 //               ^^^^
 // [analyzer] STATIC_TYPE_WARNING.INVALID_ASSIGNMENT
@@ -169,7 +169,7 @@
   { var l; yGetValue = 1; check(1, () => l ??= y, ['y']); Expect.equals(1, l); }
   { final l = 1; l ??= null; }
   //             ^
-  // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_LOCAL
+  // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_LOCAL
   // [cfe] Can't assign to the final variable 'l'.
   //                   ^^^^
   // [analyzer] STATIC_TYPE_WARNING.INVALID_ASSIGNMENT
@@ -177,7 +177,7 @@
   // [analyzer] STATIC_WARNING.DEAD_NULL_AWARE_EXPRESSION
   C ??= null;
 //^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_TYPE
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_TYPE
 // [cfe] Can't assign to a type literal.
 //      ^^^^
 // [analyzer] STATIC_TYPE_WARNING.INVALID_ASSIGNMENT
diff --git a/tests/language/implicit_downcast_during/combiner_test.dart b/tests/language/implicit_downcast_during/combiner_test.dart
index 840d2e8..f497779 100644
--- a/tests/language/implicit_downcast_during/combiner_test.dart
+++ b/tests/language/implicit_downcast_during/combiner_test.dart
@@ -15,6 +15,6 @@
   A a = new B();
   c += a;
   //   ^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] A value of type 'A' can't be assigned to a variable of type 'B'.
 }
diff --git a/tests/language/implicit_downcast_during/constructor_initializer_test.dart b/tests/language/implicit_downcast_during/constructor_initializer_test.dart
index 2013e9f..05501f5 100644
--- a/tests/language/implicit_downcast_during/constructor_initializer_test.dart
+++ b/tests/language/implicit_downcast_during/constructor_initializer_test.dart
@@ -10,7 +10,7 @@
   B b;
   C(A a) : b = a;
   //           ^
-  // [analyzer] STATIC_WARNING.FIELD_INITIALIZER_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZER_NOT_ASSIGNABLE
   // [cfe] A value of type 'A' can't be assigned to a variable of type 'B'.
 }
 
diff --git a/tests/language/implicit_downcast_during/constructor_invocation_test.dart b/tests/language/implicit_downcast_during/constructor_invocation_test.dart
index 97de4ce..f1714be 100644
--- a/tests/language/implicit_downcast_during/constructor_invocation_test.dart
+++ b/tests/language/implicit_downcast_during/constructor_invocation_test.dart
@@ -14,6 +14,6 @@
   A a = new B();
   new C(a);
   //    ^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'A' can't be assigned to the parameter type 'B'.
 }
diff --git a/tests/language/implicit_downcast_during/factory_constructor_invocation_test.dart b/tests/language/implicit_downcast_during/factory_constructor_invocation_test.dart
index 8e889a2..569c40c 100644
--- a/tests/language/implicit_downcast_during/factory_constructor_invocation_test.dart
+++ b/tests/language/implicit_downcast_during/factory_constructor_invocation_test.dart
@@ -15,6 +15,6 @@
   A a = new B();
   new C(a);
   //    ^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'A' can't be assigned to the parameter type 'B'.
 }
diff --git a/tests/language/implicit_downcast_during/indexed_assignment_test.dart b/tests/language/implicit_downcast_during/indexed_assignment_test.dart
index 3f5ce05..65ae6a4 100644
--- a/tests/language/implicit_downcast_during/indexed_assignment_test.dart
+++ b/tests/language/implicit_downcast_during/indexed_assignment_test.dart
@@ -15,7 +15,7 @@
   C c = new C();
   c[a] = a;
   //^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] A value of type 'A' can't be assigned to a variable of type 'B'.
   //     ^
   // [analyzer] STATIC_TYPE_WARNING.INVALID_ASSIGNMENT
diff --git a/tests/language/implicit_downcast_during/indexed_compound_assignment_test.dart b/tests/language/implicit_downcast_during/indexed_compound_assignment_test.dart
index bf7a60b..b5c397c 100644
--- a/tests/language/implicit_downcast_during/indexed_compound_assignment_test.dart
+++ b/tests/language/implicit_downcast_during/indexed_compound_assignment_test.dart
@@ -22,10 +22,10 @@
   D d = new D();
   c[a] += 1;
   //^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] A value of type 'A' can't be assigned to a variable of type 'B'.
   d[a] += 1;
   //^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] A value of type 'A' can't be assigned to a variable of type 'B'.
 }
diff --git a/tests/language/implicit_downcast_during/indexed_get_test.dart b/tests/language/implicit_downcast_during/indexed_get_test.dart
index 790cbd4..ffeab4c 100644
--- a/tests/language/implicit_downcast_during/indexed_get_test.dart
+++ b/tests/language/implicit_downcast_during/indexed_get_test.dart
@@ -15,6 +15,6 @@
   C c = new C();
   c[a];
   //^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] A value of type 'A' can't be assigned to a variable of type 'B'.
 }
diff --git a/tests/language/implicit_downcast_during/indexed_if_null_assignment_test.dart b/tests/language/implicit_downcast_during/indexed_if_null_assignment_test.dart
index 5b7d5f1..2f439e8 100644
--- a/tests/language/implicit_downcast_during/indexed_if_null_assignment_test.dart
+++ b/tests/language/implicit_downcast_during/indexed_if_null_assignment_test.dart
@@ -28,18 +28,18 @@
   E e = new E();
   c[a] ??= 1;
   //^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] A value of type 'A' can't be assigned to a variable of type 'B'.
   d[a] ??= 1;
   //^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] A value of type 'A' can't be assigned to a variable of type 'B'.
   e[a] ??= 1;
   //^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] A value of type 'A' can't be assigned to a variable of type 'B'.
   c[a] ??= 1;
   //^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] A value of type 'A' can't be assigned to a variable of type 'B'.
 }
diff --git a/tests/language/implicit_downcast_during/invocation_test.dart b/tests/language/implicit_downcast_during/invocation_test.dart
index ed265bc..ecff881 100644
--- a/tests/language/implicit_downcast_during/invocation_test.dart
+++ b/tests/language/implicit_downcast_during/invocation_test.dart
@@ -12,6 +12,6 @@
   A a = new B();
   f(a);
   //^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'A' can't be assigned to the parameter type 'B'.
 }
diff --git a/tests/language/implicit_downcast_during/list_literal_test.dart b/tests/language/implicit_downcast_during/list_literal_test.dart
index 1edcd58..75d990d 100644
--- a/tests/language/implicit_downcast_during/list_literal_test.dart
+++ b/tests/language/implicit_downcast_during/list_literal_test.dart
@@ -10,6 +10,6 @@
   A a = new B();
   <B>[a];
   //  ^
-  // [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] A value of type 'A' can't be assigned to a variable of type 'B'.
 }
diff --git a/tests/language/implicit_downcast_during/map_literal_test.dart b/tests/language/implicit_downcast_during/map_literal_test.dart
index e86fae3..01ae141 100644
--- a/tests/language/implicit_downcast_during/map_literal_test.dart
+++ b/tests/language/implicit_downcast_during/map_literal_test.dart
@@ -10,10 +10,10 @@
   A a = new B();
   <B, Object>{a: 1};
   //          ^
-  // [analyzer] STATIC_WARNING.MAP_KEY_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.MAP_KEY_TYPE_NOT_ASSIGNABLE
   // [cfe] A value of type 'A' can't be assigned to a variable of type 'B'.
   <Object, B>{1: a};
   //             ^
-  // [analyzer] STATIC_WARNING.MAP_VALUE_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.MAP_VALUE_TYPE_NOT_ASSIGNABLE
   // [cfe] A value of type 'A' can't be assigned to a variable of type 'B'.
 }
diff --git a/tests/language/implicit_downcast_during/method_invocation_test.dart b/tests/language/implicit_downcast_during/method_invocation_test.dart
index 47e66ce..635da52 100644
--- a/tests/language/implicit_downcast_during/method_invocation_test.dart
+++ b/tests/language/implicit_downcast_during/method_invocation_test.dart
@@ -15,6 +15,6 @@
   A a = new B();
   c.f(a);
   //  ^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'A' can't be assigned to the parameter type 'B'.
 }
diff --git a/tests/language/implicit_downcast_during/null_aware_method_invocation_test.dart b/tests/language/implicit_downcast_during/null_aware_method_invocation_test.dart
index 0b1d404..535c7db 100644
--- a/tests/language/implicit_downcast_during/null_aware_method_invocation_test.dart
+++ b/tests/language/implicit_downcast_during/null_aware_method_invocation_test.dart
@@ -15,6 +15,6 @@
   A a = new B();
   c?.f(a);
 //     ^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] The argument type 'A' can't be assigned to the parameter type 'B'.
 }
diff --git a/tests/language/implicit_downcast_during/redirecting_initializer_test.dart b/tests/language/implicit_downcast_during/redirecting_initializer_test.dart
index bc6f7b3..595d51f 100644
--- a/tests/language/implicit_downcast_during/redirecting_initializer_test.dart
+++ b/tests/language/implicit_downcast_during/redirecting_initializer_test.dart
@@ -9,7 +9,7 @@
 class C {
   C(A a) : this._(a);
   //              ^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'A' can't be assigned to the parameter type 'B'.
   C._(B b);
 }
diff --git a/tests/language/implicit_downcast_during/static_method_invocation_test.dart b/tests/language/implicit_downcast_during/static_method_invocation_test.dart
index 4b6570c..62e6c2e 100644
--- a/tests/language/implicit_downcast_during/static_method_invocation_test.dart
+++ b/tests/language/implicit_downcast_during/static_method_invocation_test.dart
@@ -14,6 +14,6 @@
   A a = new B();
   C.f(a);
   //  ^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'A' can't be assigned to the parameter type 'B'.
 }
diff --git a/tests/language/implicit_downcast_during/super_initializer_test.dart b/tests/language/implicit_downcast_during/super_initializer_test.dart
index 8931361..2cb7037 100644
--- a/tests/language/implicit_downcast_during/super_initializer_test.dart
+++ b/tests/language/implicit_downcast_during/super_initializer_test.dart
@@ -13,7 +13,7 @@
 class C extends Base {
   C(A a) : super(a);
   //             ^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'A' can't be assigned to the parameter type 'B'.
 }
 
diff --git a/tests/language/implicit_downcast_during/super_method_invocation_test.dart b/tests/language/implicit_downcast_during/super_method_invocation_test.dart
index fe16df1..014422d 100644
--- a/tests/language/implicit_downcast_during/super_method_invocation_test.dart
+++ b/tests/language/implicit_downcast_during/super_method_invocation_test.dart
@@ -14,7 +14,7 @@
   void f(A a) {
     g(a);
     //^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'A' can't be assigned to the parameter type 'B'.
   }
 }
diff --git a/tests/language/import/combinators2_test.dart b/tests/language/import/combinators2_test.dart
index 47a2db0..c1ee2fb 100644
--- a/tests/language/import/combinators2_test.dart
+++ b/tests/language/import/combinators2_test.dart
@@ -14,6 +14,6 @@
   // Ugly is hidden.
   print(ugly);
   //    ^^^^
-  // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+  // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
   // [cfe] Getter not found: 'ugly'.
 }
diff --git a/tests/language/initializing_formal/type_annotation_test.dart b/tests/language/initializing_formal/type_annotation_test.dart
index b15ad9a..6ca6548 100644
--- a/tests/language/initializing_formal/type_annotation_test.dart
+++ b/tests/language/initializing_formal/type_annotation_test.dart
@@ -10,14 +10,12 @@
   C.subType(int this.a);
   C.superType(dynamic this.a);
   //          ^^^^^^^^^^^^^^
-  // [analyzer] COMPILE_TIME_ERROR.INVALID_PARAMETER_DECLARATION
+  // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE
   //                       ^
   // [cfe] The type of parameter 'a', 'dynamic' is not a subtype of the corresponding field's type, 'num'.
   C.unrelatedType(String this.a);
   //              ^^^^^^^^^^^^^
-  // [analyzer] COMPILE_TIME_ERROR.INVALID_PARAMETER_DECLARATION
-  //              ^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE
   //                          ^
   // [cfe] The type of parameter 'a', 'String' is not a subtype of the corresponding field's type, 'num'.
 }
diff --git a/tests/language/interface/static_method_test.dart b/tests/language/interface/static_method_test.dart
index b07e7b9..63783ef 100644
--- a/tests/language/interface/static_method_test.dart
+++ b/tests/language/interface/static_method_test.dart
@@ -12,6 +12,6 @@
 main() {
   A();
 //^
-// [analyzer] STATIC_WARNING.INSTANTIATE_ABSTRACT_CLASS
+// [analyzer] COMPILE_TIME_ERROR.INSTANTIATE_ABSTRACT_CLASS
 // [cfe] The class 'A' is abstract and can't be instantiated.
 }
diff --git a/tests/language/is/isnot_malformed_type_test.dart b/tests/language/is/isnot_malformed_type_test.dart
index 11715e2..c81c644 100644
--- a/tests/language/is/isnot_malformed_type_test.dart
+++ b/tests/language/is/isnot_malformed_type_test.dart
@@ -8,7 +8,7 @@
   // 'Baz' is not loaded, throws a type error on test.
   return (obj is! Baz);
   //              ^^^
-  // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_UNDEFINED_NAME
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_UNDEFINED_NAME
   // [cfe] 'Baz' isn't a type.
 }
 
diff --git a/tests/language/is/malformed_type_test.dart b/tests/language/is/malformed_type_test.dart
index d54d4de..9628aa8 100644
--- a/tests/language/is/malformed_type_test.dart
+++ b/tests/language/is/malformed_type_test.dart
@@ -14,7 +14,7 @@
   // malformed type.
     if (e is Undefined) Expect.fail("unreachable");
     //       ^^^^^^^^^
-    // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_UNDEFINED_NAME
+    // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_UNDEFINED_NAME
     // [cfe] 'Undefined' isn't a type.
 }
 
@@ -23,7 +23,7 @@
   // malformed type.
     if (e as Undefined) Expect.fail("unreachable");
     //       ^^^^^^^^^
-    // [analyzer] STATIC_WARNING.CAST_TO_NON_TYPE
+    // [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
     // [cfe] 'Undefined' isn't a type.
 }
 
@@ -33,7 +33,7 @@
     // Regression test for issue 16985.
     if (e is Undefined && testEval(e)) Expect.fail("unreachable");
     //       ^^^^^^^^^
-    // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_UNDEFINED_NAME
+    // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_UNDEFINED_NAME
     // [cfe] 'Undefined' isn't a type.
 }
 
@@ -43,7 +43,7 @@
     // Regression test for issue 16985.
     if (e as Undefined && testEval(e)) Expect.fail("unreachable");
     //       ^^^^^^^^^
-    // [analyzer] STATIC_WARNING.CAST_TO_NON_TYPE
+    // [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
     // [cfe] 'Undefined' isn't a type.
 }
 
@@ -52,7 +52,7 @@
   // runtime error is thrown.
     if (testEval(e) is Undefined) Expect.fail("unreachable");
     //                 ^^^^^^^^^
-    // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_UNDEFINED_NAME
+    // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_UNDEFINED_NAME
     // [cfe] 'Undefined' isn't a type.
 }
 
@@ -61,7 +61,7 @@
   // runtime error is thrown.
     if (testEval(e) as Undefined) Expect.fail("unreachable");
     //                 ^^^^^^^^^
-    // [analyzer] STATIC_WARNING.CAST_TO_NON_TYPE
+    // [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
     // [cfe] 'Undefined' isn't a type.
 }
 
diff --git a/tests/language/is/not_class1_test.dart b/tests/language/is/not_class1_test.dart
index 6de8f8b..bb9a756 100644
--- a/tests/language/is/not_class1_test.dart
+++ b/tests/language/is/not_class1_test.dart
@@ -9,7 +9,7 @@
   var a = A();
   if (a is "A") return 0;
   // [error line 10, column 12, length 0]
-  // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_UNDEFINED_NAME
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_UNDEFINED_NAME
   // [cfe] Expected ')' before this.
   //       ^^^
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
diff --git a/tests/language/is/not_class2_test.dart b/tests/language/is/not_class2_test.dart
index 9073117..9e82ec1 100644
--- a/tests/language/is/not_class2_test.dart
+++ b/tests/language/is/not_class2_test.dart
@@ -18,7 +18,7 @@
 
     if (a is aa) {
     //       ^^
-    // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_NON_TYPE
+    // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_NON_TYPE
     // [cfe] 'aa' isn't a type.
       return 0;
     }
diff --git a/tests/language/label/label8_test.dart b/tests/language/label/label8_test.dart
index e17e3b1..89c6efb6 100644
--- a/tests/language/label/label8_test.dart
+++ b/tests/language/label/label8_test.dart
@@ -13,7 +13,7 @@
   {
     case 111:
 //  ^^^^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] Expected ';' after this.
 //  ^^^^
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
diff --git a/tests/language/list/literal1_test.dart b/tests/language/list/literal1_test.dart
index f8db7b2..cd54906 100644
--- a/tests/language/list/literal1_test.dart
+++ b/tests/language/list/literal1_test.dart
@@ -9,9 +9,9 @@
       <String>
       [0, 1];
 //     ^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] A value of type 'int' can't be assigned to a variable of type 'String'.
 //        ^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] A value of type 'int' can't be assigned to a variable of type 'String'.
 }
diff --git a/tests/language/malformed/malformed_test.dart b/tests/language/malformed/malformed_test.dart
index 54b6a7c..b8345e5 100644
--- a/tests/language/malformed/malformed_test.dart
+++ b/tests/language/malformed/malformed_test.dart
@@ -8,20 +8,20 @@
 checkIsUnresolved(var v) {
   v is Unresolved;
   //   ^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_UNDEFINED_NAME
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_UNDEFINED_NAME
   // [cfe] 'Unresolved' isn't a type.
   v is Unresolved<int>;
   //   ^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_UNDEFINED_NAME
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_UNDEFINED_NAME
   // [cfe] 'Unresolved' isn't a type.
   v is prefix.Unresolved;
   //   ^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_UNDEFINED_NAME
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_UNDEFINED_NAME
   //          ^
   // [cfe] 'Unresolved' isn't a type.
   v is prefix.Unresolved<int>;
   //   ^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_UNDEFINED_NAME
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_UNDEFINED_NAME
   //          ^
   // [cfe] 'Unresolved' isn't a type.
 }
@@ -54,20 +54,20 @@
 checkAsUnresolved(var v) {
   v as Unresolved;
   //   ^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.CAST_TO_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
   // [cfe] 'Unresolved' isn't a type.
   v as Unresolved<int>;
   //   ^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.CAST_TO_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
   // [cfe] 'Unresolved' isn't a type.
   v as prefix.Unresolved;
   //   ^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.CAST_TO_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
   //          ^
   // [cfe] 'Unresolved' isn't a type.
   v as prefix.Unresolved<int>;
   //   ^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.CAST_TO_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
   //          ^
   // [cfe] 'Unresolved' isn't a type.
 }
@@ -105,11 +105,11 @@
 
   new undeclared_prefix.Unresolved();
   //  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'undeclared_prefix.Unresolved'.
   new undeclared_prefix.Unresolved<int>();
   //  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'undeclared_prefix.Unresolved'.
 
   try {
@@ -117,7 +117,7 @@
   }
     on Unresolved
     // ^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.NON_TYPE_IN_CATCH_CLAUSE
+    // [analyzer] COMPILE_TIME_ERROR.NON_TYPE_IN_CATCH_CLAUSE
     // [cfe] 'Unresolved' isn't a type.
     catch (e) {
   }
@@ -127,7 +127,7 @@
   }
     on Unresolved<int>
     // ^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.NON_TYPE_IN_CATCH_CLAUSE
+    // [analyzer] COMPILE_TIME_ERROR.NON_TYPE_IN_CATCH_CLAUSE
     // [cfe] 'Unresolved' isn't a type.
     catch (e) {
   }
@@ -137,7 +137,7 @@
   }
     on prefix.Unresolved
     // ^^^^^^^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.NON_TYPE_IN_CATCH_CLAUSE
+    // [analyzer] COMPILE_TIME_ERROR.NON_TYPE_IN_CATCH_CLAUSE
     //        ^
     // [cfe] 'Unresolved' isn't a type.
     catch (e) {
@@ -148,7 +148,7 @@
   }
     on prefix.Unresolved<int>
     // ^^^^^^^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.NON_TYPE_IN_CATCH_CLAUSE
+    // [analyzer] COMPILE_TIME_ERROR.NON_TYPE_IN_CATCH_CLAUSE
     //        ^
     // [cfe] 'Unresolved' isn't a type.
     catch (e) {
@@ -159,7 +159,7 @@
   }
     on undeclared_prefix.Unresolved<int>
     // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.NON_TYPE_IN_CATCH_CLAUSE
+    // [analyzer] COMPILE_TIME_ERROR.NON_TYPE_IN_CATCH_CLAUSE
     // [cfe] 'undeclared_prefix.Unresolved' can't be used as a type because 'undeclared_prefix' isn't defined.
     catch (e) {
   }
diff --git a/tests/language/map/literal1_test.dart b/tests/language/map/literal1_test.dart
index 71c4e8e..49aa5fa 100644
--- a/tests/language/map/literal1_test.dart
+++ b/tests/language/map/literal1_test.dart
@@ -9,6 +9,6 @@
       <String, String>
     {"a": 0};
     //    ^
-    // [analyzer] STATIC_WARNING.MAP_VALUE_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.MAP_VALUE_TYPE_NOT_ASSIGNABLE
     // [cfe] A value of type 'int' can't be assigned to a variable of type 'String'.
 }
diff --git a/tests/language/method/not_found_test.dart b/tests/language/method/not_found_test.dart
index 4755cba..883cd6f 100644
--- a/tests/language/method/not_found_test.dart
+++ b/tests/language/method/not_found_test.dart
@@ -7,7 +7,7 @@
 // [cfe] The non-abstract class 'A' is missing implementations for these members:
   B();
 //^^^^
-// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
   static const field = const B();
   //                         ^
   // [analyzer] COMPILE_TIME_ERROR.IMPLICIT_THIS_REFERENCE_IN_INITIALIZER
diff --git a/tests/language/mixin/illegal_constructor_test.dart b/tests/language/mixin/illegal_constructor_test.dart
index bf84e07..864889f 100644
--- a/tests/language/mixin/illegal_constructor_test.dart
+++ b/tests/language/mixin/illegal_constructor_test.dart
@@ -102,7 +102,7 @@
   // [cfe] Too many positional arguments: 0 allowed, but 3 found.
   new C0.named();
   //     ^^^^^
-  // [analyzer] STATIC_WARNING.NEW_WITH_UNDEFINED_CONSTRUCTOR
+  // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR
   // [cfe] Method not found: 'C0.named'.
   new D0(1,2,3);
   //    ^^^^^^^
@@ -110,6 +110,6 @@
   // [cfe] Too many positional arguments: 0 allowed, but 3 found.
   new D0.named();
   //     ^^^^^
-  // [analyzer] STATIC_WARNING.NEW_WITH_UNDEFINED_CONSTRUCTOR
+  // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR
   // [cfe] Method not found: 'D0.named'.
 }
diff --git a/tests/language/mixin/method_override_test.dart b/tests/language/mixin/method_override_test.dart
index 01428b6..166599e 100644
--- a/tests/language/mixin/method_override_test.dart
+++ b/tests/language/mixin/method_override_test.dart
@@ -302,7 +302,7 @@
 // [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
 class G5 = GTTnum with CII;
 //    ^^
-// [analyzer] STATIC_WARNING.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
 // [cfe] The mixin application class 'G5' introduces an erroneous override of 'id'.
 //    ^
 // [cfe] The non-abstract class 'G5' is missing implementations for these members:
diff --git a/tests/language/new/create_unresolved_type_test.dart b/tests/language/new/create_unresolved_type_test.dart
index 6d215ab..16fb7a6 100644
--- a/tests/language/new/create_unresolved_type_test.dart
+++ b/tests/language/new/create_unresolved_type_test.dart
@@ -5,6 +5,6 @@
 main() {
   new F<int>();
   //  ^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'F'.
 }
diff --git a/tests/language/new/expression_type_args_test.dart b/tests/language/new/expression_type_args_test.dart
index b32f0e1..da303e3 100644
--- a/tests/language/new/expression_type_args_test.dart
+++ b/tests/language/new/expression_type_args_test.dart
@@ -7,20 +7,20 @@
   // Can't instantiate type parameter (within static or instance method).
   m1() => new T();
   //          ^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'T'.
   static m2() => new T();
   //                 ^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'T'.
   //                 ^
-  // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
 
   // OK when used within instance method, but not in static method.
   m3() => new A<T>();
   static m4() => new A<T>();
   //                   ^
-  // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
   // [cfe] Type variables can't be used in static members.
 }
 
diff --git a/tests/language/new/prefix_test.dart b/tests/language/new/prefix_test.dart
index bef0d69..8e5c7bc 100644
--- a/tests/language/new/prefix_test.dart
+++ b/tests/language/new/prefix_test.dart
@@ -7,6 +7,6 @@
 main() {
   return new prefix();
   //         ^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'prefix'.
 }
diff --git a/tests/language/nnbd/mixed_inheritance/legacy_resolves_conflict_3_error_test.dart b/tests/language/nnbd/mixed_inheritance/legacy_resolves_conflict_3_error_test.dart
index bda8280..e429b2f 100644
--- a/tests/language/nnbd/mixed_inheritance/legacy_resolves_conflict_3_error_test.dart
+++ b/tests/language/nnbd/mixed_inheritance/legacy_resolves_conflict_3_error_test.dart
@@ -232,62 +232,62 @@
   List<List<int? Function(int?)>> xsBq = [
     DwB0().a,
 //  ^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 
     DiBO0().a,
 //  ^^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 
     DwB1().a,
 //  ^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 
     DiBO1().a,
 //  ^^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 
     DwB2().a,
 //  ^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 
     DiBO2().a,
 //  ^^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 
     DwB3().a,
 //  ^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 
     DiBO3().a,
 //  ^^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 
     DwB4().a,
 //  ^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 
     DiBO4().a,
 //  ^^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 
     DwB5().a,
 //  ^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 
     DiBO5().a,
 //  ^^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
   ];
 
@@ -295,62 +295,62 @@
   List<List<int Function(int)>> xsB = [
     DwBq0().a,
 //  ^^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 
     DiBqOq0().a,
 //  ^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 
     DwBq1().a,
 //  ^^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 
     DiBqOq1().a,
 //  ^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 
     DwBq2().a,
 //  ^^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 
     DiBqOq2().a,
 //  ^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 
     DwBq3().a,
 //  ^^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 
     DiBqOq3().a,
 //  ^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 
     DwBq4().a,
 //  ^^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 
     DiBqOq4().a,
 //  ^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 
     DwBq5().a,
 //  ^^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 
     DiBqOq5().a,
 //  ^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
   ];
 }
diff --git a/tests/language/nnbd/never/never_null_assignability_error_test.dart b/tests/language/nnbd/never/never_null_assignability_error_test.dart
index 5c745a6..a598dfd 100644
--- a/tests/language/nnbd/never/never_null_assignability_error_test.dart
+++ b/tests/language/nnbd/never/never_null_assignability_error_test.dart
@@ -27,7 +27,7 @@
   {
     takesNever(nil);
     //         ^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'Null' can't be assigned to the parameter type 'Never'.
     takesNever(never);
     takesNever(3 as dynamic);
@@ -39,7 +39,7 @@
     takesInt(3);
     takesInt(nil);
     //       ^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'Null' can't be assigned to the parameter type 'int'.
     takesInt(nil as dynamic);
     (takesInt as dynamic)(nil);
@@ -51,7 +51,7 @@
     takesObject(3);
     takesObject(nil);
     //          ^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'Null' can't be assigned to the parameter type 'Object'.
     takesObject(nil as dynamic);
     (takesObject as dynamic)(nil);
@@ -73,17 +73,17 @@
     applyTakesNull(takesNull, nil);
     applyTakesNull(takesNever, nil);
     //             ^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'void Function(Never)' can't be assigned to the parameter type 'void Function(Null)'.
     applyTakesNull(takesAny, nil);
 
     applyTakesNull(takesInt, nil);
     //             ^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'void Function(int)' can't be assigned to the parameter type 'void Function(Null)'.
     applyTakesNull(takesObject, nil);
     //             ^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'void Function(Object)' can't be assigned to the parameter type 'void Function(Null)'.
   }
 
@@ -94,15 +94,15 @@
     applyTakesNull(takesNull, 3);
     applyTakesNull(takesNever, 3);
     //             ^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'void Function(Never)' can't be assigned to the parameter type 'void Function(Null)'.
     applyTakesNull(takesInt, 3);
     //             ^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'void Function(int)' can't be assigned to the parameter type 'void Function(Null)'.
     applyTakesNull(takesObject, 3);
     //             ^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'void Function(Object)' can't be assigned to the parameter type 'void Function(Null)'.
     applyTakesNull(takesAny, 3);
   }
@@ -138,16 +138,16 @@
     applyTakesNullDynamically(takesNull, nil);
     applyTakesNullDynamically(takesNever, nil);
     //                        ^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'void Function(Never)' can't be assigned to the parameter type 'void Function(Null)'.
     applyTakesNullDynamically(takesAny, nil);
     applyTakesNullDynamically(takesInt, nil);
     //                        ^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'void Function(int)' can't be assigned to the parameter type 'void Function(Null)'.
     applyTakesNullDynamically(takesObject, nil);
     //                        ^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'void Function(Object)' can't be assigned to the parameter type 'void Function(Null)'.
   }
 
@@ -158,19 +158,19 @@
     applyTakesNullDynamically(takesNull, 3);
     applyTakesNullDynamically(takesNever, 3);
     //                        ^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'void Function(Never)' can't be assigned to the parameter type 'void Function(Null)'.
     applyTakesNullDynamically(takesInt, 3);
     //                        ^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'void Function(int)' can't be assigned to the parameter type 'void Function(Null)'.
     applyTakesNullDynamically(takesInt, "hello");
     //                        ^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'void Function(int)' can't be assigned to the parameter type 'void Function(Null)'.
     applyTakesNullDynamically(takesObject, 3);
     //                        ^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'void Function(Object)' can't be assigned to the parameter type 'void Function(Null)'.
     applyTakesNullDynamically(takesAny, 3);
   }
diff --git a/tests/language/nnbd/resolution/null_aware_subscript_produces_nullable_type_test.dart b/tests/language/nnbd/resolution/null_aware_subscript_produces_nullable_type_test.dart
index 43472fd..e7bf5b2 100644
--- a/tests/language/nnbd/resolution/null_aware_subscript_produces_nullable_type_test.dart
+++ b/tests/language/nnbd/resolution/null_aware_subscript_produces_nullable_type_test.dart
@@ -19,41 +19,41 @@
 void f2(NotGeneric? x) {
   x?[0] + 1;
 //^^^^^
-// [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+// [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
 // [cfe] unspecified
   x?[0] = 1;
   useNonNullable(x?[0] = 1);
 //               ^^^^^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
   x?[0] += 1;
   useNonNullable(x?[0] += 1);
 //               ^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
   x?[0]++;
   useNonNullable(x?[0]++);
 //               ^^^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
   ++x?[0];
   useNonNullable(++x?[0]);
 //               ^^^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] unspecified
 }
 
 void f3<T extends num>(Generic<T>? x) {
   x?[0] + 1;
 //^^^^^
-// [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+// [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
 // [cfe] unspecified
 }
 
 void f4<T extends num>(Generic<T?> x) {
   x[0] + 1;
 //^^^^
-// [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+// [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
 // [cfe] unspecified
 }
 
diff --git a/tests/language/nnbd/resolution/question_question_lub_test.dart b/tests/language/nnbd/resolution/question_question_lub_test.dart
index 830c848..73dab4a 100644
--- a/tests/language/nnbd/resolution/question_question_lub_test.dart
+++ b/tests/language/nnbd/resolution/question_question_lub_test.dart
@@ -16,13 +16,13 @@
   (nullableInt ?? nonNullInt) + 1;
   (nullableInt ?? nullableInt) + 1;
 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+// [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
 // [cfe] unspecified
   (nonNullInt ?? nullableInt) + 1;
 //               ^^^^^^^^^^^
 // [analyzer] STATIC_WARNING.DEAD_NULL_AWARE_EXPRESSION
 //^^^^^^^^^^^^^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+// [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
 // [cfe] unspecified
   (nonNullInt ?? nonNullInt) + 1;
 //               ^^^^^^^^^^
diff --git a/tests/language/nnbd/static_errors/super_equals_disallows_non_matching_type_error_test.dart b/tests/language/nnbd/static_errors/super_equals_disallows_non_matching_type_error_test.dart
index d0e52ea..4366065 100644
--- a/tests/language/nnbd/static_errors/super_equals_disallows_non_matching_type_error_test.dart
+++ b/tests/language/nnbd/static_errors/super_equals_disallows_non_matching_type_error_test.dart
@@ -27,11 +27,11 @@
     String? stringQuestion = 'foo';
     super == string;
     //       ^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'String' can't be assigned to the parameter type 'num?'.
     super == stringQuestion;
     //       ^^^^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'String?' can't be assigned to the parameter type 'num?'.
   }
 }
diff --git a/tests/language/null_aware/assignment_test.dart b/tests/language/null_aware/assignment_test.dart
index 4b5f5de..3627427 100644
--- a/tests/language/null_aware/assignment_test.dart
+++ b/tests/language/null_aware/assignment_test.dart
@@ -125,7 +125,7 @@
   //                               ^^
   // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
   //                                      ^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] A value of type 'C?' can't be assigned to a variable of type 'int'.
   { D d = new D(new E()); H? h = (d?.v += 1); }
   //                             ^^^^^^^^^^^
@@ -136,11 +136,11 @@
   // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
   { D.staticE = new E(); F? f = (D?.staticE += nullC()); }
   //                                           ^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] A value of type 'C?' can't be assigned to a variable of type 'int'.
   { h.D.staticE = new h.E(); h.F? f = (h.D?.staticE += h.nullC()); }
   //                                                   ^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] A value of type 'C?' can't be assigned to a variable of type 'int'.
   { D.staticE = new E(); H? h = (D?.staticE += 1); }
   //                            ^^^^^^^^^^^^^^^^^
diff --git a/tests/language/null_aware/invocation_test.dart b/tests/language/null_aware/invocation_test.dart
index 4131cdf..58f788b 100644
--- a/tests/language/null_aware/invocation_test.dart
+++ b/tests/language/null_aware/invocation_test.dart
@@ -72,7 +72,7 @@
   // [cfe] The method 'f' isn't defined for the class 'B'.
   { int? i = 1; Expect.equals(null, nullC()?.f(i)); }
   //                                           ^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'int?' can't be assigned to the parameter type 'dynamic Function()?'.
 
   // '?.' can't be used to access toplevel functions in libraries imported via
diff --git a/tests/language/number/identifier_test.dart b/tests/language/number/identifier_test.dart
index ce91927..7b575c5 100644
--- a/tests/language/number/identifier_test.dart
+++ b/tests/language/number/identifier_test.dart
@@ -10,32 +10,32 @@
   //                 ^^^
   // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
   //                 ^^^
-  // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_NON_TYPE
   Expect.equals(2, 2 as int);
   //                    ^^^
   // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
   //                    ^^^
-  // [analyzer] STATIC_WARNING.CAST_TO_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
   Expect.isTrue(-2 is int);
   //                  ^^^
   // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
   //                  ^^^
-  // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_NON_TYPE
   Expect.equals(-2, -2 as int);
   //                      ^^^
   // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
   //                      ^^^
-  // [analyzer] STATIC_WARNING.CAST_TO_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
   Expect.isTrue(0x10 is int);
   //                    ^^^
   // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
   //                    ^^^
-  // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_NON_TYPE
   Expect.isTrue(-0x10 is int);
   //                     ^^^
   // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
   //                     ^^^
-  // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_NON_TYPE
 
   // "a" will be part of hex literal, the following "s" is an error.
   0x10as int;
@@ -75,14 +75,14 @@
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
 // [cfe] Expected ';' after this.
 // ^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] Getter not found: 'd'.
   1D;
 //^
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
 // [cfe] Expected ';' after this.
 // ^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] Getter not found: 'D'.
   Expect.throwsNoSuchMethodError(() => 1.d+2);
   //                                     ^
@@ -97,14 +97,14 @@
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
 // [cfe] Expected ';' after this.
 //   ^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] Getter not found: 'd'.
   1.1D;
 //^^^
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
 // [cfe] Expected ';' after this.
 //   ^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] Getter not found: 'D'.
   1e;
 //^
@@ -116,6 +116,6 @@
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
 // [cfe] Expected ';' after this.
 // ^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] Getter not found: 'x'.
 }
diff --git a/tests/language/operator/equality_static_test.dart b/tests/language/operator/equality_static_test.dart
index e1508b6..d2de3fb 100644
--- a/tests/language/operator/equality_static_test.dart
+++ b/tests/language/operator/equality_static_test.dart
@@ -56,7 +56,7 @@
   null == voidListVar;
   null == voidVar;
   //      ^^^^^^^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   // [cfe] This expression has type 'void' and can't be used.
 
   true == null;
@@ -73,7 +73,7 @@
   true == voidListVar;
   true == voidVar;
   //      ^^^^^^^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   // [cfe] This expression has type 'void' and can't be used.
 
   <int>{} == null;
@@ -90,7 +90,7 @@
   <int>{} == voidListVar;
   <int>{} == voidVar;
   //         ^^^^^^^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   // [cfe] This expression has type 'void' and can't be used.
 
   numVar == null;
@@ -107,7 +107,7 @@
   numVar == voidListVar;
   numVar == voidVar;
   //        ^^^^^^^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   // [cfe] This expression has type 'void' and can't be used.
 
   aVar == null;
@@ -124,51 +124,51 @@
   aVar == voidListVar;
   aVar == voidVar;
   //      ^^^^^^^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   // [cfe] This expression has type 'void' and can't be used.
 
   covar1Var == null;
   covar1Var == true;
   //           ^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   covar1Var == <int>{};
   //           ^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   covar1Var == numVar;
   //           ^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   covar1Var == aVar;
   //           ^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   covar1Var == covar1Var;
   covar1Var == aNullableVar;
   //           ^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   covar1Var == covar1NullableVar;
   covar1Var == futureOrNullableIntVar;
   //           ^^^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   covar1Var == futureOrCovar1Var;
   //           ^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   covar1Var == const AbstractCovar2();
   //           ^^^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   covar1Var == voidListVar;
   //           ^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   covar1Var == voidVar;
   //           ^^^^^^^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   // [cfe] This expression has type 'void' and can't be used.
 
   aNullableVar == null;
@@ -185,51 +185,51 @@
   aNullableVar == voidListVar;
   aNullableVar == voidVar;
   //              ^^^^^^^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   // [cfe] This expression has type 'void' and can't be used.
 
   covar1NullableVar == null;
   covar1NullableVar == true;
   //                   ^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   covar1NullableVar == <int>{};
   //                   ^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   covar1NullableVar == numVar;
   //                   ^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   covar1NullableVar == aVar;
   //                   ^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   covar1NullableVar == covar1Var;
   covar1NullableVar == aNullableVar;
   //                   ^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   covar1NullableVar == covar1NullableVar;
   covar1NullableVar == futureOrNullableIntVar;
   //                   ^^^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   covar1NullableVar == futureOrCovar1Var;
   //                   ^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   covar1NullableVar == const AbstractCovar2();
   //                   ^^^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   covar1NullableVar == voidListVar;
   //                   ^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   covar1NullableVar == voidVar;
   //                   ^^^^^^^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   // [cfe] This expression has type 'void' and can't be used.
 
   futureOrNullableIntVar == null;
@@ -246,7 +246,7 @@
   futureOrNullableIntVar == voidListVar;
   futureOrNullableIntVar == voidVar;
   //                        ^^^^^^^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   // [cfe] This expression has type 'void' and can't be used.
 
   futureOrCovar1Var == null;
@@ -263,54 +263,54 @@
   futureOrCovar1Var == voidListVar;
   futureOrCovar1Var == voidVar;
   //                   ^^^^^^^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   // [cfe] This expression has type 'void' and can't be used.
 
   const AbstractCovar2() == null;
   const AbstractCovar2() == true;
   //                        ^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   const AbstractCovar2() == <int>{};
   //                        ^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   const AbstractCovar2() == numVar;
   //                        ^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   const AbstractCovar2() == aVar;
   //                        ^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   const AbstractCovar2() == covar1Var;
   //                        ^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   const AbstractCovar2() == aNullableVar;
   //                        ^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   const AbstractCovar2() == covar1NullableVar;
   //                        ^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   const AbstractCovar2() == futureOrNullableIntVar;
   //                        ^^^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   const AbstractCovar2() == futureOrCovar1Var;
   //                        ^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   const AbstractCovar2() == const AbstractCovar2();
   const AbstractCovar2() == voidListVar;
   //                        ^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] unspecified
   const AbstractCovar2() == voidVar;
   //                        ^^^^^^^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   // [cfe] This expression has type 'void' and can't be used.
 
   voidListVar == null;
@@ -327,59 +327,59 @@
   voidListVar == voidListVar;
   voidListVar == voidVar;
   //             ^^^^^^^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   // [cfe] This expression has type 'void' and can't be used.
 
   voidVar == null;
 //^^^^^^^
-// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
 // [cfe] unspecified
   voidVar == true;
 //^^^^^^^
-// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
 // [cfe] unspecified
   voidVar == <int>{};
 //^^^^^^^
-// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
 // [cfe] unspecified
   voidVar == numVar;
 //^^^^^^^
-// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
 // [cfe] unspecified
   voidVar == aVar;
 //^^^^^^^
-// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
 // [cfe] unspecified
   voidVar == covar1Var;
 //^^^^^^^
-// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
 // [cfe] unspecified
   voidVar == aNullableVar;
 //^^^^^^^
-// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
 // [cfe] unspecified
   voidVar == covar1NullableVar;
 //^^^^^^^
-// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
 // [cfe] unspecified
   voidVar == futureOrNullableIntVar;
 //^^^^^^^
-// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
 // [cfe] unspecified
   voidVar == futureOrCovar1Var;
 //^^^^^^^
-// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
 // [cfe] unspecified
   voidVar == voidListVar;
 //^^^^^^^
-// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
 // [cfe] unspecified
   voidVar == voidVar;
 //^^^^^^^
-// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
 // [cfe] This expression has type 'void' and can't be used.
 //           ^^^^^^^
-// [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+// [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
 // [cfe] This expression has type 'void' and can't be used.
 
   void fun<X extends Covar1, Y extends Covar1?, Z extends FutureOr<Covar1>>(
@@ -387,89 +387,89 @@
     covar1Var == null;
     covar1Var == true;
     //           ^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] unspecified
     covar1Var == <int>{};
     //           ^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] unspecified
     covar1Var == numVar;
     //           ^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] unspecified
     covar1Var == aVar;
     //           ^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] unspecified
     covar1Var == covar1Var;
     covar1Var == aNullableVar;
     //           ^^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] unspecified
     covar1Var == covar1NullableVar;
     covar1Var == futureOrNullableIntVar;
     //           ^^^^^^^^^^^^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] unspecified
     covar1Var == futureOrCovar1Var;
     //           ^^^^^^^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] unspecified
     covar1Var == const AbstractCovar2();
     //           ^^^^^^^^^^^^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] unspecified
     covar1Var == voidListVar;
     //           ^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] unspecified
     covar1Var == voidVar;
     //           ^^^^^^^
-    // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+    // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
     // [cfe] This expression has type 'void' and can't be used.
 
     covar1NullableVar == null;
     covar1NullableVar == true;
     //                   ^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] unspecified
     covar1NullableVar == <int>{};
     //                   ^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] unspecified
     covar1NullableVar == numVar;
     //                   ^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] unspecified
     covar1NullableVar == aVar;
     //                   ^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] unspecified
     covar1NullableVar == covar1Var;
     covar1NullableVar == aNullableVar;
     //                   ^^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] unspecified
     covar1NullableVar == covar1NullableVar;
     covar1NullableVar == futureOrNullableIntVar;
     //                   ^^^^^^^^^^^^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] unspecified
     covar1NullableVar == futureOrCovar1Var;
     //                   ^^^^^^^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] unspecified
     covar1NullableVar == const AbstractCovar2();
     //                   ^^^^^^^^^^^^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] unspecified
     covar1NullableVar == voidListVar;
     //                   ^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] unspecified
     covar1NullableVar == voidVar;
     //                   ^^^^^^^
-    // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+    // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
     // [cfe] This expression has type 'void' and can't be used.
 
     futureOrCovar1Var == null;
@@ -486,7 +486,7 @@
     futureOrCovar1Var == voidListVar;
     futureOrCovar1Var == voidVar;
     //                   ^^^^^^^
-    // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+    // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
     // [cfe] This expression has type 'void' and can't be used.
   }
 }
diff --git a/tests/language/operator/invalid_assignment_to_postfix_increment_test.dart b/tests/language/operator/invalid_assignment_to_postfix_increment_test.dart
index b26b284..751c947 100644
--- a/tests/language/operator/invalid_assignment_to_postfix_increment_test.dart
+++ b/tests/language/operator/invalid_assignment_to_postfix_increment_test.dart
@@ -19,7 +19,7 @@
 // [cfe] Illegal assignment to non-assignable expression.
   z++ ??= y;
 //^
-// [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+// [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
 //^^^
 // [analyzer] SYNTACTIC_ERROR.ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE
 //^^^
diff --git a/tests/language/operator/invalid_operators_test.dart b/tests/language/operator/invalid_operators_test.dart
index 1a3b359..52eae80 100644
--- a/tests/language/operator/invalid_operators_test.dart
+++ b/tests/language/operator/invalid_operators_test.dart
@@ -674,7 +674,7 @@
 class Operators8 {
   /*space*/ int operator []=(a, b) => 1;
   //        ^^^
-  // [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_OPERATOR
+  // [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_OPERATOR
   // [cfe] unspecified
 }
 
diff --git a/tests/language/operator/number_operator_error_test.dart b/tests/language/operator/number_operator_error_test.dart
index 7c57fc0..fd2ea6e 100644
--- a/tests/language/operator/number_operator_error_test.dart
+++ b/tests/language/operator/number_operator_error_test.dart
@@ -30,7 +30,7 @@
 
   /* indent */ i + "string";
   //               ^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] A value of type 'String' can't be assigned to a variable of type 'num'.
 
   i += d;
@@ -193,19 +193,19 @@
 
   context<D>(i + td); // Type of expression is `double`, not `D`.
   //         ^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   //           ^
   // [cfe] A value of type 'double' can't be assigned to a variable of type 'D'.
 
   context<D>(n + td); // Type of expression is `double`, not `D`.
   //         ^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   //           ^
   // [cfe] A value of type 'double' can't be assigned to a variable of type 'D'.
 
   context<D>(1.0 + td); // Type of expression is `double`, not `D`.
   //         ^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   //             ^
   // [cfe] The argument type 'double' can't be assigned to the parameter type 'D'.
 
diff --git a/tests/language/optimize/inferrer_constructor5_test.dart b/tests/language/optimize/inferrer_constructor5_test.dart
index 7221fea..186b3c9 100644
--- a/tests/language/optimize/inferrer_constructor5_test.dart
+++ b/tests/language/optimize/inferrer_constructor5_test.dart
@@ -8,7 +8,7 @@
   A() {
     print(field + 42);
     //    ^^^^^
-    // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+    // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
     // [cfe] The getter 'field' isn't defined for the class 'A'.
   }
 }
diff --git a/tests/language/override/inheritance_abstract_test.dart b/tests/language/override/inheritance_abstract_test.dart
index 9218fab..5808673 100644
--- a/tests/language/override/inheritance_abstract_test.dart
+++ b/tests/language/override/inheritance_abstract_test.dart
@@ -46,18 +46,18 @@
 
 class Class extends A implements I, J {
 //    ^^^^^
-// [analyzer] STATIC_WARNING.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
 // [cfe] The non-abstract class 'Class' is missing implementations for these members:
   method1() {}
   method2();
 //^^^^^^^^^^
-// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
   get getter3;
 //^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
   set setter4(_);
 //^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
   method5() {}
   method6([a]) {}
   set field13(_) {}
diff --git a/tests/language/parameter/named_type_test.dart b/tests/language/parameter/named_type_test.dart
index f246025..8ae1f6c 100644
--- a/tests/language/parameter/named_type_test.dart
+++ b/tests/language/parameter/named_type_test.dart
@@ -23,14 +23,14 @@
   acceptFunNumOptBool(funNumOptBool);
   acceptFunNumOptBool(funNum);
   //                  ^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'void Function(num)' can't be assigned to the parameter type 'void Function(num, {bool b})'.
   acceptFunNumOptBool(funNumBool);
   //                  ^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'void Function(num, bool)' can't be assigned to the parameter type 'void Function(num, {bool b})'.
   acceptFunNumOptBool(funNumOptBoolX);
   //                  ^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'void Function(num, {bool x})' can't be assigned to the parameter type 'void Function(num, {bool b})'.
 }
diff --git a/tests/language/parameter/positional_type_test.dart b/tests/language/parameter/positional_type_test.dart
index 5920e68..d43cd41 100644
--- a/tests/language/parameter/positional_type_test.dart
+++ b/tests/language/parameter/positional_type_test.dart
@@ -20,10 +20,10 @@
   acceptFunNumOptBool(funNumOptBoolX);
   acceptFunNumOptBool(funNum);
   //                  ^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'void Function(num)' can't be assigned to the parameter type 'void Function(num, [bool])'.
   acceptFunNumOptBool(funNumBool);
   //                  ^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'void Function(num, bool)' can't be assigned to the parameter type 'void Function(num, [bool])'.
 }
diff --git a/tests/language/prefix/import_collision_test.dart b/tests/language/prefix/import_collision_test.dart
index 6ad50cb..0f561f8 100644
--- a/tests/language/prefix/import_collision_test.dart
+++ b/tests/language/prefix/import_collision_test.dart
@@ -11,6 +11,6 @@
 main() {
   lib2.foo = 1;
   //   ^^^
-  // [analyzer] STATIC_WARNING.AMBIGUOUS_IMPORT
+  // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_IMPORT
   // [cfe] Setter not found: 'foo'.
 }
diff --git a/tests/language/prefix/transitive_import_prefix_test.dart b/tests/language/prefix/transitive_import_prefix_test.dart
index 34c3020..3365f2f 100644
--- a/tests/language/prefix/transitive_import_prefix_test.dart
+++ b/tests/language/prefix/transitive_import_prefix_test.dart
@@ -7,14 +7,14 @@
   // Library prefixes in the imported libraries should not be visible here.
   new lib11.Library11(1);
   //  ^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'lib11.Library11'.
   lib11.Library11.static_func();
 //^^^^^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] Getter not found: 'lib11'.
   lib11.Library11.static_fld;
 //^^^^^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] Getter not found: 'lib11'.
 }
diff --git a/tests/language/prefix/transitive_import_test.dart b/tests/language/prefix/transitive_import_test.dart
index 256894c..582b3e2 100644
--- a/tests/language/prefix/transitive_import_test.dart
+++ b/tests/language/prefix/transitive_import_test.dart
@@ -10,7 +10,7 @@
   // Class should not be visible.
   new lib12.Library11(1);
   //        ^^^^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'Library11'.
 
   // Variable should not be visible.
diff --git a/tests/language/private/access_test.dart b/tests/language/private/access_test.dart
index 016e4dc..cbfef18 100644
--- a/tests/language/private/access_test.dart
+++ b/tests/language/private/access_test.dart
@@ -19,7 +19,7 @@
 // [analyzer] STATIC_TYPE_WARNING.UNDEFINED_FUNCTION
   new _Class();
   //  ^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: '_Class'.
   private._Class();
 //^
@@ -28,10 +28,10 @@
 // [analyzer] STATIC_TYPE_WARNING.UNDEFINED_FUNCTION
   new Class._constructor();
   //        ^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.NEW_WITH_UNDEFINED_CONSTRUCTOR
+  // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR
   // [cfe] Method not found: 'Class._constructor'.
   new private.Class._constructor();
   //                ^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.NEW_WITH_UNDEFINED_CONSTRUCTOR
+  // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR
   // [cfe] Method not found: 'Class._constructor'.
 }
diff --git a/tests/language/private/member1_test.dart b/tests/language/private/member1_test.dart
index a542e48..415bd25 100644
--- a/tests/language/private/member1_test.dart
+++ b/tests/language/private/member1_test.dart
@@ -10,7 +10,7 @@
   test() {
     _instanceField = true;
 //  ^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] The setter '_instanceField' isn't defined for the class 'Test'.
   }
 }
diff --git a/tests/language/private/member2_test.dart b/tests/language/private/member2_test.dart
index 7c86d12..6851ad7 100644
--- a/tests/language/private/member2_test.dart
+++ b/tests/language/private/member2_test.dart
@@ -10,7 +10,7 @@
   test() {
     _staticField = true;
 //  ^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] The setter '_staticField' isn't defined for the class 'Test'.
   }
 }
diff --git a/tests/language/redirecting/factory_default_values_test.dart b/tests/language/redirecting/factory_default_values_test.dart
index 0b24876..84a7d17 100644
--- a/tests/language/redirecting/factory_default_values_test.dart
+++ b/tests/language/redirecting/factory_default_values_test.dart
@@ -20,7 +20,7 @@
   //                         ^
   // [cfe] Can't have a default value here because any default values of 'A' would be used instead.
   //                               ^
-  // [analyzer] STATIC_WARNING.REDIRECT_TO_INVALID_FUNCTION_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.REDIRECT_TO_INVALID_FUNCTION_TYPE
   // [cfe] The constructor function type 'A Function(int, [int])' isn't a subtype of 'A Function(int, {int b})'.
 
   int a;
diff --git a/tests/language/redirecting/factory_incompatible_signature_test.dart b/tests/language/redirecting/factory_incompatible_signature_test.dart
index 7a77f18..7c0253a 100644
--- a/tests/language/redirecting/factory_incompatible_signature_test.dart
+++ b/tests/language/redirecting/factory_incompatible_signature_test.dart
@@ -11,7 +11,7 @@
   A(a, b);
   factory A.f() = A;
   //              ^
-  // [analyzer] STATIC_WARNING.REDIRECT_TO_INVALID_FUNCTION_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.REDIRECT_TO_INVALID_FUNCTION_TYPE
   // [cfe] The constructor function type 'A Function(dynamic, dynamic)' isn't a subtype of 'A Function()'.
 }
 
diff --git a/tests/language/regress/regress15606_test.dart b/tests/language/regress/regress15606_test.dart
index 3891202..f367e9e 100644
--- a/tests/language/regress/regress15606_test.dart
+++ b/tests/language/regress/regress15606_test.dart
@@ -15,7 +15,7 @@
     var foo =
       Unresolved.
 //    ^^^^^^^^^^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] Getter not found: 'Unresolved'.
         bar(
       // Make dart2js generate a call to setRuntimeTypeInfo.
diff --git a/tests/language/regress/regress21793_test.dart b/tests/language/regress/regress21793_test.dart
index 26d9ff6d..e4fec2e 100644
--- a/tests/language/regress/regress21793_test.dart
+++ b/tests/language/regress/regress21793_test.dart
@@ -15,6 +15,6 @@
 main() {
   print(new A()(499));
   //        ^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'A'.
 }
diff --git a/tests/language/regress/regress23408a_test.dart b/tests/language/regress/regress23408a_test.dart
index b8fd7a4..453d161 100644
--- a/tests/language/regress/regress23408a_test.dart
+++ b/tests/language/regress/regress23408a_test.dart
@@ -16,7 +16,7 @@
   C();
   factory C.l() = A<lib.K>;
   //                ^^^^^
-  // [analyzer] STATIC_WARNING.TYPE_ANNOTATION_DEFERRED_CLASS
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_ANNOTATION_DEFERRED_CLASS
   // [cfe] unspecified
   get t => null;
 }
diff --git a/tests/language/regress/regress31596_super_test.dart b/tests/language/regress/regress31596_super_test.dart
index 636ef98..75a8105 100644
--- a/tests/language/regress/regress31596_super_test.dart
+++ b/tests/language/regress/regress31596_super_test.dart
@@ -39,7 +39,7 @@
     // not ok since B2 is not assignable to B
     super.f(b2);
     //      ^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'B2?' can't be assigned to the parameter type 'B?'.
 
     var superF = super.f; // Inferred static type: void Function(B)
@@ -50,7 +50,7 @@
     // not ok since B2 is not assignable to B
     superF(b2);
     //     ^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'B2?' can't be assigned to the parameter type 'B?'.
 
     // Should pass since superF's runtime type is void Function(Object)
diff --git a/tests/language/regress/regress31596_test.dart b/tests/language/regress/regress31596_test.dart
index 44b8c8c..e7b9ee0 100644
--- a/tests/language/regress/regress31596_test.dart
+++ b/tests/language/regress/regress31596_test.dart
@@ -36,7 +36,7 @@
   B2? b2 = null;
   d.f(b2, b);
   //  ^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'B2?' can't be assigned to the parameter type 'B?'.
   i.f(b2, b); // Ok since B2 assignable to A
   void Function(Object, B) g = d.f as dynamic; // Ok; D.f reified as (Object, B) -> void
diff --git a/tests/language/regress/regress34488_test.dart b/tests/language/regress/regress34488_test.dart
index ca3ac7b..d41f9407 100644
--- a/tests/language/regress/regress34488_test.dart
+++ b/tests/language/regress/regress34488_test.dart
@@ -25,27 +25,27 @@
   var d = new Derived();
   d.f('bad');
   //  ^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
   d.g('bad');
   //  ^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
   d.h(i: 'bad');
   //  ^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   //     ^
   // [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
   Object x = d.f(1);
   //           ^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   // [cfe] This expression has type 'void' and can't be used.
   Object y = d.g(1);
   //           ^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   // [cfe] This expression has type 'void' and can't be used.
   Object z = d.h(i: 1);
   //           ^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   // [cfe] This expression has type 'void' and can't be used.
 }
diff --git a/tests/language/regress/regress34495_test.dart b/tests/language/regress/regress34495_test.dart
index f33f4c5..41e58bf 100644
--- a/tests/language/regress/regress34495_test.dart
+++ b/tests/language/regress/regress34495_test.dart
@@ -4,7 +4,7 @@
 
 final foo = A<B>.foo();
 //          ^
-// [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
 // [cfe] Method not found: 'A'.
 //            ^
 // [analyzer] STATIC_TYPE_WARNING.NON_TYPE_AS_TYPE_ARGUMENT
diff --git a/tests/language/regress/regress35258_test.dart b/tests/language/regress/regress35258_test.dart
index f28bada..d36f45f 100644
--- a/tests/language/regress/regress35258_test.dart
+++ b/tests/language/regress/regress35258_test.dart
@@ -17,7 +17,7 @@
 
   C() {}
 //^
-// [analyzer] STATIC_WARNING.FINAL_NOT_INITIALIZED_CONSTRUCTOR
+// [analyzer] COMPILE_TIME_ERROR.FINAL_NOT_INITIALIZED_CONSTRUCTOR
   C(this.d) {}
 //^
 // [analyzer] COMPILE_TIME_ERROR.DUPLICATE_CONSTRUCTOR
diff --git a/tests/language/rewrite/implicit_this_test.dart b/tests/language/rewrite/implicit_this_test.dart
index e0e4c41..078dcd2 100644
--- a/tests/language/rewrite/implicit_this_test.dart
+++ b/tests/language/rewrite/implicit_this_test.dart
@@ -12,7 +12,7 @@
   easy(z) {
         return x + y + z;
         //         ^
-        // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+        // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
         // [cfe] The getter 'y' isn't defined for the class 'Foo'.
   }
 
@@ -69,7 +69,7 @@
   shadow_x_parameter(x) {
         return this.x + y + x;
         //              ^
-        // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+        // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
         // [cfe] The getter 'y' isn't defined for the class 'Foo'.
   }
 
@@ -77,7 +77,7 @@
     var x = z;
         return this.x + y + x;
         //              ^
-        // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+        // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
         // [cfe] The getter 'y' isn't defined for the class 'Foo'.
   }
 
@@ -86,7 +86,7 @@
     foo() {
             return this.x + y + x;
             //              ^
-            // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+            // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
             // [cfe] The getter 'y' isn't defined for the class 'Foo'.
     }
     return foo();
@@ -96,7 +96,7 @@
     foo(x) {
             return this.x + y + x;
             //              ^
-            // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+            // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
             // [cfe] The getter 'y' isn't defined for the class 'Foo'.
     }
     return foo(z);
@@ -107,7 +107,7 @@
       var x = z;
             return this.x + y + x;
             //              ^
-            // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+            // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
             // [cfe] The getter 'y' isn't defined for the class 'Foo'.
     }
 
diff --git a/tests/language/setter/declaration_test.dart b/tests/language/setter/declaration_test.dart
index 7a597eb..617fc2c 100644
--- a/tests/language/setter/declaration_test.dart
+++ b/tests/language/setter/declaration_test.dart
@@ -20,119 +20,119 @@
 
 /*space*/ int? set wrongReturnType1(_) => 1;
 //        ^^^^
-// [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+// [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
 // [cfe] unspecified
 
 /*space*/ FutureOr<void> set wrongReturnType2(_) {}
 //        ^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+// [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
 // [cfe] unspecified
 
 /*space*/ Never set wrongReturnType3(_) => throw 1;
 //        ^^^^^
-// [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+// [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
 // [cfe] unspecified
 
 int get nonSubtypes1 => 1;
 //      ^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.GETTER_NOT_SUBTYPE_SETTER_TYPES
+// [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_SUBTYPE_SETTER_TYPES
 // [cfe] unspecified
 set nonSubtypes1(String _) {}
 
 int? get nonSubtypes2 => 1;
 //       ^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.GETTER_NOT_SUBTYPE_SETTER_TYPES
+// [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_SUBTYPE_SETTER_TYPES
 // [cfe] unspecified
 set nonSubtypes2(int _) {}
 
 FutureOr<int> get nonSubtypes3 => 1;
 //                ^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.GETTER_NOT_SUBTYPE_SETTER_TYPES
+// [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_SUBTYPE_SETTER_TYPES
 // [cfe] unspecified
 set nonSubtypes3(int _) {}
 
 dynamic get nonSubtypes4 => 1;
 //          ^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.GETTER_NOT_SUBTYPE_SETTER_TYPES
+// [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_SUBTYPE_SETTER_TYPES
 // [cfe] unspecified
 set nonSubtypes4(int _) {}
 
 class C {
   static int? set staticWrongReturnType1(_) => 1;
   //     ^^^^
-  // [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+  // [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
   // [cfe] unspecified
 
   static FutureOr<void> set staticWrongReturnType2(_) {}
   //     ^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+  // [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
   // [cfe] unspecified
 
   static Never set staticWrongReturnType3(_) => throw 1;
   //     ^^^^^
-  // [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+  // [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
   // [cfe] unspecified
 
   /*space*/ int? set wrongReturnType1(_) => 1;
   //        ^^^^
-  // [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+  // [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
   // [cfe] unspecified
 
   /*space*/ FutureOr<void> set wrongReturnType2(_) {}
   //        ^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+  // [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
   // [cfe] unspecified
 
   /*space*/ Never set wrongReturnType3(_) => throw 1;
   //        ^^^^^
-  // [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+  // [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
   // [cfe] unspecified
 
   static int get staticNonSubtypes1 => 1;
   //             ^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.GETTER_NOT_SUBTYPE_SETTER_TYPES
+  // [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_SUBTYPE_SETTER_TYPES
   // [cfe] unspecified
   static set staticNonSubtypes1(String _) {}
 
   static int? get staticNonSubtypes2 => 1;
   //              ^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.GETTER_NOT_SUBTYPE_SETTER_TYPES
+  // [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_SUBTYPE_SETTER_TYPES
   // [cfe] unspecified
   static set staticNonSubtypes2(int _) {}
 
   static FutureOr<int> get staticNonSubtypes3 => 1;
   //                       ^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.GETTER_NOT_SUBTYPE_SETTER_TYPES
+  // [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_SUBTYPE_SETTER_TYPES
   // [cfe] unspecified
   static set staticNonSubtypes3(int _) {}
 
   static dynamic get staticNonSubtypes4 => 1;
   //                 ^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.GETTER_NOT_SUBTYPE_SETTER_TYPES
+  // [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_SUBTYPE_SETTER_TYPES
   // [cfe] unspecified
   static set staticNonSubtypes4(int _) {}
 
   int get nonSubtypes1 => 1;
   //      ^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.GETTER_NOT_SUBTYPE_SETTER_TYPES
+  // [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_SUBTYPE_SETTER_TYPES
   // [cfe] unspecified
   set nonSubtypes1(String _) {}
 
   int? get nonSubtypes2 => 1;
   //       ^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.GETTER_NOT_SUBTYPE_SETTER_TYPES
+  // [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_SUBTYPE_SETTER_TYPES
   // [cfe] unspecified
   set nonSubtypes2(int _) {}
 
   FutureOr<int> get nonSubtypes3 => 1;
   //                ^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.GETTER_NOT_SUBTYPE_SETTER_TYPES
+  // [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_SUBTYPE_SETTER_TYPES
   // [cfe] unspecified
   set nonSubtypes3(int _) {}
 
   dynamic get nonSubtypes4 => 1;
   //          ^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.GETTER_NOT_SUBTYPE_SETTER_TYPES
+  // [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_SUBTYPE_SETTER_TYPES
   // [cfe] unspecified
   set nonSubtypes4(int _) {}
 }
diff --git a/tests/language/setter/setter3_test.dart b/tests/language/setter/setter3_test.dart
index bd71750..3dedec6 100644
--- a/tests/language/setter/setter3_test.dart
+++ b/tests/language/setter/setter3_test.dart
@@ -11,10 +11,10 @@
   void set bar(x) {}
   dynamic set baz(x) {}
 //^^^^^^^
-// [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+// [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
   bool set bob(x) {}
 //^^^^
-// [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+// [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
 //         ^^^
 // [analyzer] COMPILE_TIME_ERROR.BODY_MIGHT_COMPLETE_NORMALLY
 // [cfe] A non-null value must be returned since the return type 'bool' doesn't allow null.
diff --git a/tests/language/spread_collections/null_spread_test.dart b/tests/language/spread_collections/null_spread_test.dart
index 062cb9f..777378d 100644
--- a/tests/language/spread_collections/null_spread_test.dart
+++ b/tests/language/spread_collections/null_spread_test.dart
@@ -18,19 +18,25 @@
   List<Never> l1b = l1;
   var l2 = [...myNever];
   List<Never> l2b = l2;
-  var l3 = [...?myNever]; // Warning, but possible.
+  var l3 = [...?myNever];
+  //        ^^^^
+  // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
   List<Never> l3b = l3;
   var s1 = {...?x, if (false) throw 1};
   Set<Never> s1b = s1;
   var s2 = {...myNever, if (false) throw 1};
   Set<Never> s2b = s2;
-  var s3 = {...?myNever, if (false) throw 1}; // Warning.
+  var s3 = {...?myNever, if (false) throw 1};
+  //        ^^^^
+  // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
   Set<Never> s3b = s3;
   var m1 = {...?x, if (false) throw 1: throw 1};
   Map<Never, Never> m1b = m1;
   var m2 = {...myNever, if (false) throw 1: throw 1};
   Map<Never, Never> m2b = m2;
-  var m3 = {...?myNever, if (false) throw 1: throw 1}; // Warning.
+  var m3 = {...?myNever, if (false) throw 1: throw 1};
+  //        ^^^^
+  // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
   Map<Never, Never> m3b = m3;
 
   // Test non-empty collection of `Never` and `int`.
@@ -38,19 +44,25 @@
   List<int> li1b = li1;
   var li2 = [...myNever, 1];
   List<int> li2b = li2;
-  var li3 = [...?myNever, 1]; // Warning.
+  var li3 = [...?myNever, 1];
+  //         ^^^^
+  // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
   List<int> li3b = li3;
   var si1 = {1, ...?x};
   Set<int> si1b = si1;
   var si2 = {1, ...myNever};
   Set<int> si2b = si2;
-  var si3 = {1, ...?myNever}; // Warning.
+  var si3 = {1, ...?myNever};
+  //            ^^^^
+  // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
   Set<int> si3b = si3;
   var mi1 = {1: 1, ...?x};
   Map<int, int> mi1b = mi1;
   var mi2 = {1: 1, ...myNever};
   Map<int, int> mi2b = mi2;
-  var mi3 = {1: 1, ...?myNever}; // Warning.
+  var mi3 = {1: 1, ...?myNever};
+  //               ^^^^
+  // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
   Map<int, int> mi3b = mi3;
 }
 
diff --git a/tests/language/static/field3_test.dart b/tests/language/static/field3_test.dart
index 7436df1..0498f48 100644
--- a/tests/language/static/field3_test.dart
+++ b/tests/language/static/field3_test.dart
@@ -13,11 +13,11 @@
   if (false) {
     var x = Foo.x;
     //          ^
-    // [analyzer] STATIC_WARNING.STATIC_ACCESS_TO_INSTANCE_MEMBER
+    // [analyzer] COMPILE_TIME_ERROR.STATIC_ACCESS_TO_INSTANCE_MEMBER
     // [cfe] Getter not found: 'x'.
     var m = Foo.m;
     //          ^
-    // [analyzer] STATIC_WARNING.STATIC_ACCESS_TO_INSTANCE_MEMBER
+    // [analyzer] COMPILE_TIME_ERROR.STATIC_ACCESS_TO_INSTANCE_MEMBER
     // [cfe] Getter not found: 'm'.
     Foo.m = 1;
     //  ^
@@ -25,7 +25,7 @@
     // [cfe] Setter not found: 'm'.
     Foo.x = 1;
     //  ^
-    // [analyzer] STATIC_WARNING.STATIC_ACCESS_TO_INSTANCE_MEMBER
+    // [analyzer] COMPILE_TIME_ERROR.STATIC_ACCESS_TO_INSTANCE_MEMBER
     // [cfe] Setter not found: 'x'.
   }
 }
diff --git a/tests/language/static/final_field2_test.dart b/tests/language/static/final_field2_test.dart
index 0755461..6430471 100644
--- a/tests/language/static/final_field2_test.dart
+++ b/tests/language/static/final_field2_test.dart
@@ -20,7 +20,7 @@
 main() {
   A.x = 2;
 //^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_CONST
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_CONST
 //  ^
 // [cfe] Setter not found: 'x'.
   new B();
diff --git a/tests/language/static/getter_no_setter1_test.dart b/tests/language/static/getter_no_setter1_test.dart
index a173b2f..dd307ec 100644
--- a/tests/language/static/getter_no_setter1_test.dart
+++ b/tests/language/static/getter_no_setter1_test.dart
@@ -10,7 +10,7 @@
   method() {
     getter++;
 //  ^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'getter'.
   }
 }
diff --git a/tests/language/static/getter_no_setter2_test.dart b/tests/language/static/getter_no_setter2_test.dart
index d10cedb..e84b2b8 100644
--- a/tests/language/static/getter_no_setter2_test.dart
+++ b/tests/language/static/getter_no_setter2_test.dart
@@ -10,7 +10,7 @@
   method() {
     getter++;
 //  ^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'getter'.
   }
 
diff --git a/tests/language/static/setter_get_test.dart b/tests/language/static/setter_get_test.dart
index 44796cc..0a16b53 100644
--- a/tests/language/static/setter_get_test.dart
+++ b/tests/language/static/setter_get_test.dart
@@ -8,7 +8,7 @@
   static set o(_) {}
   m() => o;
   //     ^
-  // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+  // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
   // [cfe] Getter not found: 'o'.
   noSuchMethod(_) => 42;
 }
diff --git a/tests/language/string/interpolate1_test.dart b/tests/language/string/interpolate1_test.dart
index 1bc80c0..12bf4af 100644
--- a/tests/language/string/interpolate1_test.dart
+++ b/tests/language/string/interpolate1_test.dart
@@ -11,6 +11,6 @@
   // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
   // [cfe] A '$' has special meaning inside a string, and must be followed by an identifier or an expression in curly braces ({}).
   //                  ^
-  // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+  // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
   // [cfe] Getter not found: 'x'.
 }
diff --git a/tests/language/string/multiline_newline_test.dart b/tests/language/string/multiline_newline_test.dart
index 37ef0c7..75bf78c 100644
--- a/tests/language/string/multiline_newline_test.dart
+++ b/tests/language/string/multiline_newline_test.dart
@@ -68,37 +68,37 @@
 
   const c4 = c1 ? 1 : 2;
   //         ^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
   // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
   Expect.equals(1, c4);
 
   const c5 = c2 ? 2 : 3;
   //         ^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
   // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
   Expect.equals(2, c5);
 
   const c6 = c3 ? 3 : 4;
   //         ^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
   // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
   Expect.equals(3, c6);
 
   const c4r = c1r ? 1 : 2;
   //          ^^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
   // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
   Expect.equals(1, c4r);
 
   const c5r = c2r ? 2 : 3;
   //          ^^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
   // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
   Expect.equals(2, c5r);
 
   const c6r = c3r ? 3 : 4;
   //          ^^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
   // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
   Expect.equals(3, c6r);
 
@@ -138,36 +138,36 @@
   // [analyzer] COMPILE_TIME_ERROR.CONST_EVAL_TYPE_BOOL
   // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
   //          ^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
   const c11 = c8 ? 2 : 3;
   //          ^^
   // [analyzer] COMPILE_TIME_ERROR.CONST_EVAL_TYPE_BOOL
   // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
   //          ^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
   const c12 = c9 ? 3 : 4;
   //          ^^
   // [analyzer] COMPILE_TIME_ERROR.CONST_EVAL_TYPE_BOOL
   // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
   //          ^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
 
   const c10r = c7r ? 1 : 2;
   //           ^^^
   // [analyzer] COMPILE_TIME_ERROR.CONST_EVAL_TYPE_BOOL
   // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
   //           ^^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
   const c11r = c8r ? 2 : 3;
   //           ^^^
   // [analyzer] COMPILE_TIME_ERROR.CONST_EVAL_TYPE_BOOL
   // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
   //           ^^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
   const c12r = c9r ? 3 : 4;
   //           ^^^
   // [analyzer] COMPILE_TIME_ERROR.CONST_EVAL_TYPE_BOOL
   // [cfe] A value of type 'bool?' can't be assigned to a variable of type 'bool'.
   //           ^^^
-  // [analyzer] STATIC_WARNING.UNCHECKED_USE_OF_NULLABLE_VALUE
+  // [analyzer] COMPILE_TIME_ERROR.UNCHECKED_USE_OF_NULLABLE_VALUE
 }
diff --git a/tests/language/string/no_operator_test.dart b/tests/language/string/no_operator_test.dart
index e6da249..d5d013c 100644
--- a/tests/language/string/no_operator_test.dart
+++ b/tests/language/string/no_operator_test.dart
@@ -29,7 +29,7 @@
   // [cfe] The operator '-' isn't defined for the class 'String'.
   Expect.throws(() => x * y);
   //                      ^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] A value of type 'String' can't be assigned to a variable of type 'int'.
   Expect.throws(() => x / y);
   //                    ^
diff --git a/tests/language/string/substring_test.dart b/tests/language/string/substring_test.dart
index bf2ce99..6f33829 100644
--- a/tests/language/string/substring_test.dart
+++ b/tests/language/string/substring_test.dart
@@ -9,10 +9,10 @@
   try {
     print("abcdef".substring(1.5, 3.5));
     //                       ^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'double' can't be assigned to the parameter type 'int'.
     //                            ^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'double' can't be assigned to the parameter type 'int'.
     Expect.fail("Should have thrown an exception");
   } on TypeError catch (e) {
diff --git a/tests/language/super/conditional_operator_test.dart b/tests/language/super/conditional_operator_test.dart
index 7f09c55..c15182d 100644
--- a/tests/language/super/conditional_operator_test.dart
+++ b/tests/language/super/conditional_operator_test.dart
@@ -50,7 +50,7 @@
     // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER
     1 * super?.field;
     //  ^^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     //       ^^
     // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
     // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null.
diff --git a/tests/language/switch/case_expression_with_assignment_test.dart b/tests/language/switch/case_expression_with_assignment_test.dart
index 115cb94..5ab2dbd 100644
--- a/tests/language/switch/case_expression_with_assignment_test.dart
+++ b/tests/language/switch/case_expression_with_assignment_test.dart
@@ -15,7 +15,7 @@
       return "ERROR_A";
     case ERROR_B = 1:
     //   ^^^^^^^
-    // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_CONST
+    // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_CONST
     //   ^^^^^^^^^^^
     // [analyzer] COMPILE_TIME_ERROR.NON_CONSTANT_CASE_EXPRESSION
     //           ^
diff --git a/tests/language/this/implicit_this_test.dart b/tests/language/this/implicit_this_test.dart
index 3500c9a..0cbcfa8 100644
--- a/tests/language/this/implicit_this_test.dart
+++ b/tests/language/this/implicit_this_test.dart
@@ -17,7 +17,7 @@
 // abstract.
 class SubAbstract1 extends Abstract {}
 //    ^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
 // [cfe] The non-abstract class 'SubAbstract1' is missing implementations for these members:
 
 // This class does not implement "x", but is itself abstract, so that's OK.
@@ -29,7 +29,7 @@
 // abstract.
 class SubSubAbstract2 extends SubAbstract2 {}
 //    ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
 // [cfe] The non-abstract class 'SubSubAbstract2' is missing implementations for these members:
 
 class Concrete extends Abstract {
@@ -44,7 +44,7 @@
 void main() {
   new Abstract();
   //  ^^^^^^^^
-  // [analyzer] STATIC_WARNING.INSTANTIATE_ABSTRACT_CLASS
+  // [analyzer] COMPILE_TIME_ERROR.INSTANTIATE_ABSTRACT_CLASS
   // [cfe] The class 'Abstract' is abstract and can't be instantiated.
   Expect.equals('7', new Concrete().toString());
   Expect.equals('42', new SubConcrete(42).toString());
diff --git a/tests/language/type/checks_in_factory_method_test.dart b/tests/language/type/checks_in_factory_method_test.dart
index cae8f04..3be4613 100644
--- a/tests/language/type/checks_in_factory_method_test.dart
+++ b/tests/language/type/checks_in_factory_method_test.dart
@@ -22,7 +22,7 @@
 
     func("Hello World!");
     //   ^^^^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'String' can't be assigned to the parameter type 'T'.
     return new Bar<T>();
   }
diff --git a/tests/language/type_object/first_class_types_literals_test.dart b/tests/language/type_object/first_class_types_literals_test.dart
index aa02a4d..e8fdca5 100644
--- a/tests/language/type_object/first_class_types_literals_test.dart
+++ b/tests/language/type_object/first_class_types_literals_test.dart
@@ -51,13 +51,13 @@
   // Test that operator calls on class literals go to Type.
   Expect.throwsNoSuchMethodError(() => C = 1);
   //                                   ^
-  // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_TYPE
   // [cfe] Can't assign to a type literal.
   //                                       ^
   // [analyzer] STATIC_TYPE_WARNING.INVALID_ASSIGNMENT
   Expect.throwsNoSuchMethodError(() => C++);
   //                                   ^
-  // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_TYPE
   // [cfe] Can't assign to a type literal.
   //                                    ^^
   // [analyzer] STATIC_TYPE_WARNING.UNDEFINED_OPERATOR
diff --git a/tests/language/type_promotion/functions_test.dart b/tests/language/type_promotion/functions_test.dart
index 1e0b4ae..94aee2f 100644
--- a/tests/language/type_promotion/functions_test.dart
+++ b/tests/language/type_promotion/functions_test.dart
@@ -43,7 +43,7 @@
   b = funcAtoDyn(new B());
   c = funcAtoDyn(new C());
   //             ^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   //                 ^
   // [cfe] The argument type 'C' can't be assigned to the parameter type 'A'.
 
@@ -76,7 +76,7 @@
     // Returned value has type `void`, usage is restricted.
     Object o = funcDynToDyn(null);
     //         ^^^^^^^^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+    // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
     //                     ^
     // [cfe] This expression has type 'void' and can't be used.
   }
@@ -97,17 +97,17 @@
   FuncDynToVoid funcDynToVoid = func;
   a = funcDynToVoid(new A());
   //  ^^^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   //               ^
   // [cfe] This expression has type 'void' and can't be used.
   b = funcDynToVoid(new B());
   //  ^^^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   //               ^
   // [cfe] This expression has type 'void' and can't be used.
   c = funcDynToVoid(new C());
   //  ^^^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   //               ^
   // [cfe] This expression has type 'void' and can't be used.
 
diff --git a/tests/language/type_variable/conflict2_test.dart b/tests/language/type_variable/conflict2_test.dart
index 4a03e01..8b8439d 100644
--- a/tests/language/type_variable/conflict2_test.dart
+++ b/tests/language/type_variable/conflict2_test.dart
@@ -23,7 +23,7 @@
   // [analyzer] STATIC_TYPE_WARNING.INVOCATION_OF_NON_FUNCTION
   // [cfe] Method not found: 'T'.
   //              ^
-  // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
 
   // X is not in scope. NoSuchMethodError.
   static baz() => X();
@@ -49,7 +49,7 @@
   //                ^^^
   // [analyzer] STATIC_TYPE_WARNING.INVOCATION_OF_NON_FUNCTION_EXPRESSION
   //                 ^
-  // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
   // [cfe] Type variables can't be used in static members.
   //                   ^
   // [cfe] The method 'call' isn't defined for the class 'Type'.
@@ -63,7 +63,7 @@
   // Runtime type T not accessible from static context. Compile-time error.
   static garply() => T[0];
   //                 ^
-  // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
   // [cfe] Type variables can't be used in static members.
   //                  ^^^
   // [analyzer] STATIC_TYPE_WARNING.UNDEFINED_OPERATOR
@@ -78,7 +78,7 @@
   // Runtime type T not accessible from static context. Compile-time error.
   static fred() => T.m;
   //               ^
-  // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
   // [cfe] Type variables can't be used in static members.
   //                 ^
   // [analyzer] STATIC_TYPE_WARNING.UNDEFINED_GETTER
diff --git a/tests/language/type_variable/scope_test.dart b/tests/language/type_variable/scope_test.dart
index 9930d68..86361f2 100644
--- a/tests/language/type_variable/scope_test.dart
+++ b/tests/language/type_variable/scope_test.dart
@@ -10,18 +10,18 @@
   static
   Foo<T>
   //  ^
-  // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
       m(
 //    ^
 // [cfe] Can only use type variables in instance methods.
     Foo<T>
     //  ^
-    // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+    // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
     // [cfe] Type variables can't be used in static members.
           f) {
     Foo<T> x = new Foo<String>();
     //  ^
-    // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+    // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
     // [cfe] Type variables can't be used in static members.
     //         ^^^^^^^^^^^^^^^^^
     // [analyzer] STATIC_TYPE_WARNING.INVALID_ASSIGNMENT
@@ -39,7 +39,7 @@
   // T is not in scope for a static field.
   static late Foo<T> f1;
   //              ^
-  // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
   // [cfe] Type variables can't be used in static members.
   //                 ^
   // [cfe] Verification of the generated program failed:
@@ -47,7 +47,7 @@
   static
   Foo<T>
   //  ^
-  // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
       get f {
       //  ^
       // [cfe] Can only use type variables in instance methods.
@@ -61,7 +61,7 @@
   // [cfe] Can only use type variables in instance methods.
                     Foo<T>
                     //  ^
-                    // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+                    // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
                     // [cfe] Type variables can't be used in static members.
       value) {}
 }
@@ -73,7 +73,7 @@
 main() {
   Foo.m(new Foo<String>());
   //    ^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   new I(new Foo<String>());
   Foo.f1 = new Foo<String>();
   //       ^^^^^^^^^^^^^^^^^
diff --git a/tests/language/unsorted/external_test.dart b/tests/language/unsorted/external_test.dart
index b1008e1..cd9c0e1 100644
--- a/tests/language/unsorted/external_test.dart
+++ b/tests/language/unsorted/external_test.dart
@@ -41,7 +41,7 @@
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
   // [cfe] Expected ';' after this.
   //           ^^^^^^
-  // [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+  // [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
 
   external Foo.n21(val) : x = 1;
   //                    ^
@@ -65,7 +65,7 @@
   // [analyzer] SYNTACTIC_ERROR.EXTERNAL_FACTORY_REDIRECTION
   // [cfe] A redirecting factory can't be external.
   //                              ^^^
-  // [analyzer] STATIC_WARNING.REDIRECT_TO_INVALID_RETURN_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.REDIRECT_TO_INVALID_RETURN_TYPE
   // [cfe] The constructor function type 'Bar Function(dynamic)' isn't a subtype of 'Foo Function(dynamic)'.
 }
 
diff --git a/tests/language/variance/syntax/variance_type_parameter_error_syntax_test.dart b/tests/language/variance/syntax/variance_type_parameter_error_syntax_test.dart
index 28c1add..71e14caa 100644
--- a/tests/language/variance/syntax/variance_type_parameter_error_syntax_test.dart
+++ b/tests/language/variance/syntax/variance_type_parameter_error_syntax_test.dart
@@ -20,7 +20,7 @@
   // [analyzer] STATIC_TYPE_WARNING.UNDEFINED_OPERATOR
   // [cfe] The operator '<' isn't defined for the class 'Type'.
   //   ^^^
-  // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+  // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
   // [cfe] Expected ';' after this.
   //   ^^^
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
@@ -29,7 +29,7 @@
   // [analyzer] STATIC_TYPE_WARNING.UNDEFINED_OPERATOR
   // [cfe] The operator '>' isn't defined for the class 'Type'.
   //               ^^^
-  // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+  // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
   // [cfe] Getter not found: 'bar'.
 }
 
diff --git a/tests/language/variance/variance_in_inference_error_test.dart b/tests/language/variance/variance_in_inference_error_test.dart
index 2c220ab..1d50ff2 100644
--- a/tests/language/variance/variance_in_inference_error_test.dart
+++ b/tests/language/variance/variance_in_inference_error_test.dart
@@ -48,7 +48,7 @@
 //^^^^^^^^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.COULD_NOT_INFER
 //                                 ^^^^^^^^^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] The argument type 'Contravariant<String>' can't be assigned to the parameter type 'Contravariant<int>'.
 
   // String <: T <: int is not a valid constraint.
@@ -56,7 +56,7 @@
 //^^^^^^^^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.COULD_NOT_INFER
 //                                    ^^^^^^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] The argument type 'Contravariant<int>' can't be assigned to the parameter type 'Contravariant<String>'.
 
   // Middle <: T <: Lower is not a valid constraint
diff --git a/tests/language/variance/variance_in_subtyping_error_test.dart b/tests/language/variance/variance_in_subtyping_error_test.dart
index d5697c7..9779d33 100644
--- a/tests/language/variance/variance_in_subtyping_error_test.dart
+++ b/tests/language/variance/variance_in_subtyping_error_test.dart
@@ -75,6 +75,6 @@
 
   testCall(listLower);
   //       ^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'List<Contravariant<Lower>>' can't be assigned to the parameter type 'Iterable<Contravariant<Middle>>'.
 }
diff --git a/tests/language/variance/variance_inout_inference_error_test.dart b/tests/language/variance/variance_inout_inference_error_test.dart
index 76326580..8bf485f 100644
--- a/tests/language/variance/variance_inout_inference_error_test.dart
+++ b/tests/language/variance/variance_inout_inference_error_test.dart
@@ -24,22 +24,22 @@
   // Middle <: T <: Middle and int <: T <: int are not valid constraints.
   inferInvInv(Invariant<Middle>(), Invariant<int>());
 //            ^^^^^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] The argument type 'Invariant<Middle>' can't be assigned to the parameter type 'Invariant<Object>'.
 //                                 ^^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] The argument type 'Invariant<int>' can't be assigned to the parameter type 'Invariant<Object>'.
 
   // Middle <: T <: Middle and Upper <: T <: Upper are not valid constraints.
   inferInvInv(Invariant<Middle>(), Invariant<Upper>());
 //            ^^^^^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] The argument type 'Invariant<Middle>' can't be assigned to the parameter type 'Invariant<Upper>'.
 
   // Middle <: T <: Middle and Lower <: T <: Lower are not valid constraints.
   inferInvInv(Invariant<Middle>(), Invariant<Lower>());
 //                                 ^^^^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] The argument type 'Invariant<Lower>' can't be assigned to the parameter type 'Invariant<Middle>'.
 
   // Upper <: T
@@ -47,7 +47,7 @@
   // Upper <: T <: Middle is not a valid constraint.
   inferInvCov(Invariant<Middle>(), Covariant<Upper>());
 //            ^^^^^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] The argument type 'Invariant<Middle>' can't be assigned to the parameter type 'Invariant<Upper>'.
 
   // T <: Lower
@@ -55,6 +55,6 @@
   // Middle <: T <: Lower is not a valid constraint
   inferInvContra(Invariant<Middle>(), Contravariant<Lower>());
 //                                    ^^^^^^^^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] The argument type 'Contravariant<Lower>' can't be assigned to the parameter type 'Contravariant<Middle>'.
 }
diff --git a/tests/language/variance/variance_inout_subtyping_error_test.dart b/tests/language/variance/variance_inout_subtyping_error_test.dart
index d06f336..3bcec37 100644
--- a/tests/language/variance/variance_inout_subtyping_error_test.dart
+++ b/tests/language/variance/variance_inout_subtyping_error_test.dart
@@ -120,11 +120,11 @@
 
   testCall<Lower>(listMiddle);
   //              ^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'List<Invariant<Middle>>' can't be assigned to the parameter type 'Iterable<Invariant<Lower>>'.
 
   testCall<Middle>(listLower);
   //               ^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'List<Invariant<Lower>>' can't be assigned to the parameter type 'Iterable<Invariant<Middle>>'.
 }
diff --git a/tests/language/variance/variance_out_subtyping_error_test.dart b/tests/language/variance/variance_out_subtyping_error_test.dart
index a85f4cb..dd925e2 100644
--- a/tests/language/variance/variance_out_subtyping_error_test.dart
+++ b/tests/language/variance/variance_out_subtyping_error_test.dart
@@ -75,6 +75,6 @@
 
   testCall(listMiddle);
   //       ^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'List<Covariant<Middle>>' can't be assigned to the parameter type 'Iterable<Covariant<Lower>>'.
 }
diff --git a/tests/language_2/abstract/exact_selector_test.dart b/tests/language_2/abstract/exact_selector_test.dart
index b40ccb8..222da8a 100644
--- a/tests/language_2/abstract/exact_selector_test.dart
+++ b/tests/language_2/abstract/exact_selector_test.dart
@@ -18,7 +18,7 @@
   (() => 42)();
   return new Foo();
   //         ^^^
-  // [analyzer] STATIC_WARNING.INSTANTIATE_ABSTRACT_CLASS
+  // [analyzer] COMPILE_TIME_ERROR.INSTANTIATE_ABSTRACT_CLASS
   // [cfe] The class 'Foo' is abstract and can't be instantiated.
 }
 
diff --git a/tests/language_2/abstract/factory_constructor_test.dart b/tests/language_2/abstract/factory_constructor_test.dart
index bda6a23..810a3fa 100644
--- a/tests/language_2/abstract/factory_constructor_test.dart
+++ b/tests/language_2/abstract/factory_constructor_test.dart
@@ -26,7 +26,7 @@
   // Intentionally abstract method.
   method();
 //^^^^^^^^^
-// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
   A2.make() {}
 }
 
diff --git a/tests/language_2/abstract/getter_test.dart b/tests/language_2/abstract/getter_test.dart
index fe5acdf..74d51da 100644
--- a/tests/language_2/abstract/getter_test.dart
+++ b/tests/language_2/abstract/getter_test.dart
@@ -13,7 +13,7 @@
   // Intentionally abstract:
   get i;
 //^^^^^^
-// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
 }
 
 class Bar {}
diff --git a/tests/language_2/abstract/syntax_test.dart b/tests/language_2/abstract/syntax_test.dart
index 1b617fd..a51480b 100644
--- a/tests/language_2/abstract/syntax_test.dart
+++ b/tests/language_2/abstract/syntax_test.dart
@@ -14,7 +14,7 @@
 // [cfe] The non-abstract class 'A' is missing implementations for these members:
   foo();
 //^^^^^^
-// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
   static bar();
   //          ^
   // [analyzer] SYNTACTIC_ERROR.MISSING_FUNCTION_BODY
diff --git a/tests/language_2/argument/assignability_function_typed_test.dart b/tests/language_2/argument/assignability_function_typed_test.dart
index 7e17271..de2ebff 100644
--- a/tests/language_2/argument/assignability_function_typed_test.dart
+++ b/tests/language_2/argument/assignability_function_typed_test.dart
@@ -20,11 +20,11 @@
   // Unrelated types (not assignable)
   f(intToInt);
   //^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'int Function(int)' can't be assigned to the parameter type 'num Function(num)'.
   f(objectToObject);
   //^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'Object Function(Object)' can't be assigned to the parameter type 'num Function(num)'.
 
   // Assignable but fails at runtime.
diff --git a/tests/language_2/assign/to_type_test.dart b/tests/language_2/assign/to_type_test.dart
index 0fc076a..277012a 100644
--- a/tests/language_2/assign/to_type_test.dart
+++ b/tests/language_2/assign/to_type_test.dart
@@ -9,7 +9,7 @@
   f() {
     T = null;
 //  ^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_TYPE
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_TYPE
 // [cfe] Can't assign to a type literal.
   }
 }
@@ -24,14 +24,14 @@
   new C<D>().f();
   D = null;
 //^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_TYPE
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_TYPE
 // [cfe] Can't assign to a type literal.
   E = null;
 //^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_TYPE
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_TYPE
 // [cfe] Can't assign to a type literal.
   F = null;
 //^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_TYPE
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_TYPE
 // [cfe] Can't assign to a type literal.
 }
diff --git a/tests/language_2/call/constructor_on_unresolvable_class_test.dart b/tests/language_2/call/constructor_on_unresolvable_class_test.dart
index 3b32987..6db90ed 100644
--- a/tests/language_2/call/constructor_on_unresolvable_class_test.dart
+++ b/tests/language_2/call/constructor_on_unresolvable_class_test.dart
@@ -11,14 +11,14 @@
 main() {
   new A();
   //  ^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'A'.
   new A.foo();
   //  ^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'A.foo'.
   new lib.A();
   //  ^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'lib.A'.
 }
diff --git a/tests/language_2/call/nonexistent_constructor_test.dart b/tests/language_2/call/nonexistent_constructor_test.dart
index 4649f37..4c129d0 100644
--- a/tests/language_2/call/nonexistent_constructor_test.dart
+++ b/tests/language_2/call/nonexistent_constructor_test.dart
@@ -19,10 +19,10 @@
   new A.foo(42);
   new A.bar(foo());
   //    ^^^
-  // [analyzer] STATIC_WARNING.NEW_WITH_UNDEFINED_CONSTRUCTOR
+  // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR
   // [cfe] Method not found: 'A.bar'.
   new A();
   //  ^
-  // [analyzer] STATIC_WARNING.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT
+  // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT
   // [cfe] Method not found: 'A'.
 }
diff --git a/tests/language_2/class/keyword_test.dart b/tests/language_2/class/keyword_test.dart
index 891c4a7..5a89f2e 100644
--- a/tests/language_2/class/keyword_test.dart
+++ b/tests/language_2/class/keyword_test.dart
@@ -12,14 +12,14 @@
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
 // [cfe] Expected ';' after this.
 //    ^^^^^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] Expected an identifier, but got 'class'.
 //    ^^^^^
 // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
 // [cfe] Setter not found: 'class'.
   print("$class");
   //      ^^^^^
-  // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+  // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
   // [cfe] Expected an identifier, but got 'class'.
   //      ^^^^^
   // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
diff --git a/tests/language_2/compile_time_constant/p_test.dart b/tests/language_2/compile_time_constant/p_test.dart
index 5c41a46..031e929 100644
--- a/tests/language_2/compile_time_constant/p_test.dart
+++ b/tests/language_2/compile_time_constant/p_test.dart
@@ -8,7 +8,7 @@
   const A(
     this.x
     //   ^
-    // [analyzer] STATIC_WARNING.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR
+    // [analyzer] COMPILE_TIME_ERROR.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR
     // [cfe] 'x' is a final instance variable that has already been initialized.
     //   ^
     // [cfe] Cannot invoke a non-'const' constructor where a const expression is expected.
diff --git a/tests/language_2/compile_time_constant/static2_test.dart b/tests/language_2/compile_time_constant/static2_test.dart
index 2155448..5de087a 100644
--- a/tests/language_2/compile_time_constant/static2_test.dart
+++ b/tests/language_2/compile_time_constant/static2_test.dart
@@ -9,7 +9,7 @@
   // [analyzer] CHECKED_MODE_COMPILE_TIME_ERROR.CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE
   // [cfe] A value of type 'String' can't be assigned to a variable of type 'int'.
   //                 ^^^^^
-  // [analyzer] STATIC_WARNING.FIELD_INITIALIZER_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZER_NOT_ASSIGNABLE
   const A.a2(this.x);
   const A.a3([this.x = 'foo']);
   //                   ^^^^^
@@ -17,9 +17,7 @@
   // [cfe] A value of type 'String' can't be assigned to a variable of type 'int'.
   const A.a4(String this.x);
   //         ^^^^^^^^^^^^^
-  // [analyzer] COMPILE_TIME_ERROR.INVALID_PARAMETER_DECLARATION
-  //         ^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE
   //                     ^
   // [cfe] The type of parameter 'x', 'String' is not a subtype of the corresponding field's type, 'int'.
   const A.a5(String x) : this.x = x;
@@ -27,7 +25,7 @@
   // [analyzer] CHECKED_MODE_COMPILE_TIME_ERROR.CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE
   // [cfe] A value of type 'String' can't be assigned to a variable of type 'int'.
   //                              ^
-  // [analyzer] STATIC_WARNING.FIELD_INITIALIZER_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZER_NOT_ASSIGNABLE
   const A.a6(int x) : this.x = x;
 }
 
@@ -39,7 +37,7 @@
 // [analyzer] CHECKED_MODE_COMPILE_TIME_ERROR.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH
 // [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
 //                    ^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 const a3 = const A.a3();
 //         ^^^^^^^^^^^^
 // [analyzer] CHECKED_MODE_COMPILE_TIME_ERROR.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH
@@ -56,7 +54,7 @@
 // [analyzer] CHECKED_MODE_COMPILE_TIME_ERROR.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH
 // [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
 //                    ^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 
 main() {
   print(a1);
diff --git a/tests/language_2/compile_time_constant/static3_test.dart b/tests/language_2/compile_time_constant/static3_test.dart
index 3deabbb..d6c508b 100644
--- a/tests/language_2/compile_time_constant/static3_test.dart
+++ b/tests/language_2/compile_time_constant/static3_test.dart
@@ -9,7 +9,7 @@
   // [analyzer] CHECKED_MODE_COMPILE_TIME_ERROR.CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE
   // [cfe] A value of type 'String' can't be assigned to a variable of type 'int'.
   //                 ^^^^^
-  // [analyzer] STATIC_WARNING.FIELD_INITIALIZER_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZER_NOT_ASSIGNABLE
   const A.a2(this.x);
   const A.a3([this.x = 'foo']);
   //                   ^^^^^
@@ -17,9 +17,7 @@
   // [cfe] A value of type 'String' can't be assigned to a variable of type 'int'.
   const A.a4(String this.x);
   //         ^^^^^^^^^^^^^
-  // [analyzer] COMPILE_TIME_ERROR.INVALID_PARAMETER_DECLARATION
-  //         ^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE
   //                     ^
   // [cfe] The type of parameter 'x', 'String' is not a subtype of the corresponding field's type, 'int'.
   const A.a5(String x) : this.x = x;
@@ -27,7 +25,7 @@
   // [analyzer] CHECKED_MODE_COMPILE_TIME_ERROR.CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE
   // [cfe] A value of type 'String' can't be assigned to a variable of type 'int'.
   //                              ^
-  // [analyzer] STATIC_WARNING.FIELD_INITIALIZER_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZER_NOT_ASSIGNABLE
   const A.a6(int x) : this.x = x;
 }
 
@@ -39,7 +37,7 @@
 // [analyzer] CHECKED_MODE_COMPILE_TIME_ERROR.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH
 // [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
 //                  ^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 var a3 = const A.a3();
 //       ^^^^^^^^^^^^
 // [analyzer] CHECKED_MODE_COMPILE_TIME_ERROR.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH
@@ -56,7 +54,7 @@
 // [analyzer] CHECKED_MODE_COMPILE_TIME_ERROR.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH
 // [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
 //                  ^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 
 main() {
   print(a1);
diff --git a/tests/language_2/const/constructor3_test.dart b/tests/language_2/const/constructor3_test.dart
index 54191d1..aa8aa0ff 100644
--- a/tests/language_2/const/constructor3_test.dart
+++ b/tests/language_2/const/constructor3_test.dart
@@ -18,7 +18,7 @@
 // [analyzer] CHECKED_MODE_COMPILE_TIME_ERROR.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH
 // [cfe] The argument type 'int' can't be assigned to the parameter type 'double'.
 //                ^^^^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 const e = const D(0.0);
 const f = const D(intValue);
 //        ^^^^^^^^^^^^^^^^^
diff --git a/tests/language_2/const/constructor_syntax_test.dart b/tests/language_2/const/constructor_syntax_test.dart
index 99a420e..d214271 100644
--- a/tests/language_2/const/constructor_syntax_test.dart
+++ b/tests/language_2/const/constructor_syntax_test.dart
@@ -49,7 +49,7 @@
   const C3()
       : field = new C0()
       //^^^^^
-      // [analyzer] STATIC_WARNING.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION
+      // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION
       //      ^
       // [cfe] 'field' is a final instance variable that has already been initialized.
       //      ^
diff --git a/tests/language_2/const/switch2_test.dart b/tests/language_2/const/switch2_test.dart
index ce1dea9..f1daf0c 100644
--- a/tests/language_2/const/switch2_test.dart
+++ b/tests/language_2/const/switch2_test.dart
@@ -8,7 +8,7 @@
   var a = [1, 2, 3][2];
   switch (a) {
   //      ^
-  // [analyzer] STATIC_WARNING.SWITCH_EXPRESSION_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.SWITCH_EXPRESSION_NOT_ASSIGNABLE
     case 0.0:
     //   ^
     // [cfe] Type 'int' of the switch expression isn't assignable to the type 'double' of this case expression.
diff --git a/tests/language_2/const/syntax_test.dart b/tests/language_2/const/syntax_test.dart
index 0bb8881..375fb6a 100644
--- a/tests/language_2/const/syntax_test.dart
+++ b/tests/language_2/const/syntax_test.dart
@@ -92,15 +92,11 @@
 //    ^^
 // [analyzer] COMPILE_TIME_ERROR.RECURSIVE_COMPILE_TIME_CONSTANT
 // [cfe] Can't infer the type of 'A2': circularity found during type inference.
-//         ^^
-// [analyzer] COMPILE_TIME_ERROR.TOP_LEVEL_CYCLE
 //            ^
 // [cfe] Constant evaluation error:
 const A3 = A2 + 1;
 //    ^^
 // [analyzer] COMPILE_TIME_ERROR.RECURSIVE_COMPILE_TIME_CONSTANT
-//         ^^
-// [analyzer] COMPILE_TIME_ERROR.TOP_LEVEL_CYCLE
 
 class C0 {
   static const X = const C1();
@@ -112,7 +108,7 @@
   const C1()
       : x = C0.X
       //^
-      // [analyzer] STATIC_WARNING.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION
+      // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION
       //  ^
       // [cfe] 'x' is a final instance variable that has already been initialized.
       //  ^
@@ -129,7 +125,7 @@
 //         ^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.CONST_EVAL_TYPE_NUM
 //              ^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] A value of type 'String' can't be assigned to a variable of type 'num'.
 
 // Check identical.
diff --git a/tests/language_2/constructor/constructor9_test.dart b/tests/language_2/constructor/constructor9_test.dart
index 4c7b35d..607e164 100644
--- a/tests/language_2/constructor/constructor9_test.dart
+++ b/tests/language_2/constructor/constructor9_test.dart
@@ -8,7 +8,7 @@
 class Klass {
   Klass(var v) : field_ = v {}
 //^^^^^
-// [analyzer] STATIC_WARNING.FINAL_NOT_INITIALIZED_CONSTRUCTOR
+// [analyzer] COMPILE_TIME_ERROR.FINAL_NOT_INITIALIZED_CONSTRUCTOR
   final uninitializedFinalField_;
   //    ^
   // [cfe] Final field 'uninitializedFinalField_' is not initialized.
diff --git a/tests/language_2/constructor/default_factory_test.dart b/tests/language_2/constructor/default_factory_test.dart
index 43a93e8..1b69325 100644
--- a/tests/language_2/constructor/default_factory_test.dart
+++ b/tests/language_2/constructor/default_factory_test.dart
@@ -9,7 +9,7 @@
 abstract class Vehicle {
   factory Vehicle() = GoogleOne.Vehicle;
   //                  ^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.REDIRECT_TO_INVALID_RETURN_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.REDIRECT_TO_INVALID_RETURN_TYPE
   // [cfe] The constructor function type 'GoogleOne Function()' isn't a subtype of 'Vehicle Function()'.
 }
 
diff --git a/tests/language_2/constructor/named_constructor_test.dart b/tests/language_2/constructor/named_constructor_test.dart
index 12a58b1..d802b9a 100644
--- a/tests/language_2/constructor/named_constructor_test.dart
+++ b/tests/language_2/constructor/named_constructor_test.dart
@@ -36,13 +36,13 @@
   // 'prefix' is not a type:
   new prefix<int>.Class().value;
   //  ^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'prefix.Class'.
   new prefix.Class<int>().value;
   // 'prefix<int>.Class<int>' doesn't fit the grammar syntax T.id:
   new prefix<int>.Class<int>().value;
   //  ^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'prefix.Class'.
   //              ^^^^^
   // [analyzer] STATIC_TYPE_WARNING.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
@@ -52,7 +52,7 @@
   // 'prefix<int>.Class.named' doesn't fit the grammar syntax T.id:
   new prefix<int>.Class.named().value;
   //  ^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'prefix.Class'.
   //              ^^^^^
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
@@ -70,7 +70,7 @@
   // 'prefix<int>.Class<int>' doesn't fit the grammar syntax T.id:
   new prefix<int>.Class<int>.named().value;
   //  ^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'prefix.Class'.
   //              ^^^^^
   // [analyzer] STATIC_TYPE_WARNING.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
@@ -80,7 +80,7 @@
   // 'prefix<int>.Class.named<int>' doesn't fit the grammar syntax T.id:
   new prefix<int>.Class.named<int>().value;
   //  ^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'prefix.Class'.
   //              ^^^^^
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
@@ -96,7 +96,7 @@
   // 'prefix<int>.Class<int>.named<int>' doesn't fit the grammar syntax T.id:
   new prefix<int>.Class<int>.named<int>().value;
   //  ^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'prefix.Class'.
   //              ^^^^^
   // [analyzer] STATIC_TYPE_WARNING.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
diff --git a/tests/language_2/constructor/reference_test.dart b/tests/language_2/constructor/reference_test.dart
index 7aab1ff..c1ec04c 100644
--- a/tests/language_2/constructor/reference_test.dart
+++ b/tests/language_2/constructor/reference_test.dart
@@ -13,7 +13,7 @@
   new Foo.bar();
   new Foo.bar.baz();
   //  ^^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   //          ^
   // [cfe] Method not found: 'Foo.bar.baz'.
   new Foo<int>();
@@ -34,12 +34,12 @@
   //      ^
   // [cfe] A constructor invocation can't have type arguments on the constructor name.
   //  ^^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   //               ^
   // [cfe] Method not found: 'Foo.bar.baz'.
   new Foo.bar.baz<int>();
   //  ^^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   //          ^^^
   // [analyzer] STATIC_TYPE_WARNING.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
   // [cfe] A constructor invocation can't have type arguments on the constructor name.
@@ -107,7 +107,7 @@
   //  ^
   // [cfe] A constructor invocation can't have type arguments on the constructor name.
 //^^^^^^^
-// [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   //           ^
   // [cfe] Method not found: 'Foo.bar.baz'.
   Foo.bar.baz<int>();
diff --git a/tests/language_2/constructor/unresolved_default_constructor_test.dart b/tests/language_2/constructor/unresolved_default_constructor_test.dart
index 07fdc72..b8b5338 100644
--- a/tests/language_2/constructor/unresolved_default_constructor_test.dart
+++ b/tests/language_2/constructor/unresolved_default_constructor_test.dart
@@ -15,6 +15,6 @@
   A.method();
   Expect.throws(() => new A());
   //                      ^
-  // [analyzer] STATIC_WARNING.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT
+  // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT
   // [cfe] Method not found: 'A'.
 }
diff --git a/tests/language_2/deferred/inheritance_constraints_test.dart b/tests/language_2/deferred/inheritance_constraints_test.dart
index 9dd18f2..2d9429b 100644
--- a/tests/language_2/deferred/inheritance_constraints_test.dart
+++ b/tests/language_2/deferred/inheritance_constraints_test.dart
@@ -27,7 +27,7 @@
   D();
   factory D.factory() = lib.Foo2;
 //                      ^^^^^^^^
-// [analyzer] STATIC_WARNING.REDIRECT_TO_INVALID_RETURN_TYPE
+// [analyzer] COMPILE_TIME_ERROR.REDIRECT_TO_INVALID_RETURN_TYPE
 // [cfe] The constructor function type 'Foo2 Function()' isn't a subtype of 'D Function()'.
 }
 
diff --git a/tests/language_2/double/to_string_as_exponential2_test.dart b/tests/language_2/double/to_string_as_exponential2_test.dart
index 13e461b..6fa5cc2 100644
--- a/tests/language_2/double/to_string_as_exponential2_test.dart
+++ b/tests/language_2/double/to_string_as_exponential2_test.dart
@@ -11,14 +11,14 @@
   Expect.throwsRangeError(() => v.toStringAsExponential(21));
   v.toStringAsExponential(1.5);
   //                      ^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'double' can't be assigned to the parameter type 'int'.
   v.toStringAsExponential("string");
   //                      ^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
   v.toStringAsExponential("3");
   //                      ^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
 }
diff --git a/tests/language_2/double/to_string_as_fixed2_test.dart b/tests/language_2/double/to_string_as_fixed2_test.dart
index 3040a30..885d9fc 100644
--- a/tests/language_2/double/to_string_as_fixed2_test.dart
+++ b/tests/language_2/double/to_string_as_fixed2_test.dart
@@ -16,14 +16,14 @@
   Expect.throwsArgumentError(() => v.toStringAsFixed(null));
   v.toStringAsFixed(1.5);
   //                ^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'double' can't be assigned to the parameter type 'int'.
   v.toStringAsFixed("string");
   //                ^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
   v.toStringAsFixed("3");
   //                ^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
 }
diff --git a/tests/language_2/double/to_string_as_precision2_test.dart b/tests/language_2/double/to_string_as_precision2_test.dart
index 4ce0c34..6df4222 100644
--- a/tests/language_2/double/to_string_as_precision2_test.dart
+++ b/tests/language_2/double/to_string_as_precision2_test.dart
@@ -16,14 +16,14 @@
   Expect.throwsArgumentError(() => v.toStringAsPrecision(null));
   v.toStringAsPrecision(1.5);
   //                    ^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'double' can't be assigned to the parameter type 'int'.
   v.toStringAsPrecision("string");
   //                    ^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
   v.toStringAsPrecision("3");
   //                    ^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
 }
diff --git a/tests/language_2/dynamic/field_test.dart b/tests/language_2/dynamic/field_test.dart
index ebe094e..23190e0 100644
--- a/tests/language_2/dynamic/field_test.dart
+++ b/tests/language_2/dynamic/field_test.dart
@@ -15,21 +15,21 @@
   foo() {
     print(a);
     //    ^
-    // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+    // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
     // [cfe] The getter 'a' isn't defined for the class 'C'.
     return a;
     //     ^
-    // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+    // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
     // [cfe] The getter 'a' isn't defined for the class 'C'.
   }
   bar() {
     print(b.a);
     //    ^
-    // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+    // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
     // [cfe] The getter 'b' isn't defined for the class 'C'.
     return b.a;
     //     ^
-    // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+    // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
     // [cfe] The getter 'b' isn't defined for the class 'C'.
   }
 }
diff --git a/tests/language_2/extension_methods/static_extension_getter_setter_conflicts_test.dart b/tests/language_2/extension_methods/static_extension_getter_setter_conflicts_test.dart
index 1d4b4db..8493792 100644
--- a/tests/language_2/extension_methods/static_extension_getter_setter_conflicts_test.dart
+++ b/tests/language_2/extension_methods/static_extension_getter_setter_conflicts_test.dart
@@ -23,7 +23,7 @@
   c0.m1;
   c0.m1 = 0;
   // ^^
-  // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+  // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
   // [cfe] The setter 'm1' isn't defined for the class 'C0'.
   E0(c0).m1 = 0;
   E0(c0).m1;
@@ -33,12 +33,12 @@
 
   c0.m1 += 0;
   // ^^
-  // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+  // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
   // [cfe] The setter 'm1' isn't defined for the class 'C0'.
 
   c0.m1++;
   // ^^
-  // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+  // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
   // [cfe] The setter 'm1' isn't defined for the class 'C0'.
 
   c0.m2 = 0;
@@ -109,7 +109,7 @@
 
   c1a.m1 = 0;
   //  ^^
-  // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_LOCAL
+  // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_LOCAL
   // [cfe] The setter 'm1' isn't defined for the class 'C1<int>'.
 
   c1a.m2;
@@ -212,7 +212,7 @@
     this.m1;
     this.m1 = 0;
     //   ^^
-    // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+    // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
     // [cfe] The setter 'm1' isn't defined for the class 'C2'.
 
     this.m2 = 0;
diff --git a/tests/language_2/extension_methods/static_extension_internal_basename_shadowing_error_test.dart b/tests/language_2/extension_methods/static_extension_internal_basename_shadowing_error_test.dart
index c7ce72e..f1a9254 100644
--- a/tests/language_2/extension_methods/static_extension_internal_basename_shadowing_error_test.dart
+++ b/tests/language_2/extension_methods/static_extension_internal_basename_shadowing_error_test.dart
@@ -23,29 +23,29 @@
     // The instance getter shadows the global setter
     topLevelSetter = topLevelSetter + 1;
 //  ^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelSetter'.
     topLevelSetter++;
 //  ^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelSetter'.
     topLevelSetter = 0;
 //  ^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelSetter'.
 
     // The instance getter shadows the global field setter
     topLevelField = topLevelField + 1;
 //  ^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelField'.
     topLevelField++;
 //  ^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelField'.
     topLevelField = 0;
 //  ^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelField'.
 
     // The instance getter shadows the global method
@@ -115,29 +115,29 @@
     // The static getter shadows the global setter
     topLevelSetter = topLevelSetter + 1;
 //  ^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelSetter'.
     topLevelSetter++;
 //  ^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelSetter'.
     topLevelSetter = 0;
 //  ^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelSetter'.
 
     // The static getter shadows the global field setter
     topLevelField = topLevelField + 1;
 //  ^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelField'.
     topLevelField++;
 //  ^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelField'.
     topLevelField = 0;
 //  ^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'topLevelField'.
 
     // The static getter shadows the global method
@@ -211,15 +211,15 @@
     // The instance getter shadows the other extension's setter
     extensionSetter = extensionSetter + 1;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'extensionSetter'.
     extensionSetter++;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'extensionSetter'.
     extensionSetter = 0;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'extensionSetter'.
 
     // The instance getter shadows the other extensions method
@@ -242,15 +242,15 @@
     // The instance getter shadows the other extension's setter
     extensionSetter = extensionSetter + 1;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] The setter 'extensionSetter' isn't defined for the class 'A7'.
     extensionSetter++;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] The setter 'extensionSetter' isn't defined for the class 'A7'.
     extensionSetter = 0;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] The setter 'extensionSetter' isn't defined for the class 'A7'.
 
     // The instance getter shadows the other extensions method
@@ -343,15 +343,15 @@
     // The static getter shadows the other extension's setter
     extensionSetter = extensionSetter + 1;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'extensionSetter'.
     extensionSetter++;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'extensionSetter'.
     extensionSetter = 0;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'extensionSetter'.
 
     // The static field shadows the other extension's setter
@@ -389,15 +389,15 @@
     // The static getter shadows the other extension's setter
     extensionSetter = extensionSetter + 1;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'extensionSetter'.
     extensionSetter++;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'extensionSetter'.
     extensionSetter = 0;
 //  ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'extensionSetter'.
 
     // The static field shadows the other extension's setter
diff --git a/tests/language_2/extension_methods/static_extension_internal_resolution_4_error_test.dart b/tests/language_2/extension_methods/static_extension_internal_resolution_4_error_test.dart
index d1a4685..6f6944c 100644
--- a/tests/language_2/extension_methods/static_extension_internal_resolution_4_error_test.dart
+++ b/tests/language_2/extension_methods/static_extension_internal_resolution_4_error_test.dart
@@ -238,21 +238,21 @@
       // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_EXTENSION_MEMBER_ACCESS
       // [cfe] The property 'fieldInExtensionScope' is defined in multiple extensions for 'B' and neither is more specific.
       //        ^^^^^^^^^^^^^^^^^^^^^
-      // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+      // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
       checkExtensionValue(t0);
       bool t1 = getterInExtensionScope;
       //        ^^^^^^^^^^^^^^^^^^^^^^
       // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_EXTENSION_MEMBER_ACCESS
       // [cfe] The property 'getterInExtensionScope' is defined in multiple extensions for 'B' and neither is more specific.
       //        ^^^^^^^^^^^^^^^^^^^^^^
-      // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+      // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
       checkExtensionValue(t1);
       setterInExtensionScope = extensionValue;
 //    ^^^^^^^^^^^^^^^^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_EXTENSION_MEMBER_ACCESS
 // [cfe] The property 'setterInExtensionScope' is defined in multiple extensions for 'B' and neither is more specific.
 //    ^^^^^^^^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
       bool t2 = methodInExtensionScope();
       //        ^^^^^^^^^^^^^^^^^^^^^^
       // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_EXTENSION_MEMBER_ACCESS
diff --git a/tests/language_2/extension_methods/static_extension_setter_getter_assignability_error_test.dart b/tests/language_2/extension_methods/static_extension_setter_getter_assignability_error_test.dart
index 8784f92..8b05ada 100644
--- a/tests/language_2/extension_methods/static_extension_setter_getter_assignability_error_test.dart
+++ b/tests/language_2/extension_methods/static_extension_setter_getter_assignability_error_test.dart
@@ -10,7 +10,7 @@
   //     ^^
   // [cfe] unspecified
   //             ^^^^^^^^
-  // [analyzer] STATIC_WARNING.GETTER_NOT_ASSIGNABLE_SETTER_TYPES
+  // [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_ASSIGNABLE_SETTER_TYPES
   static void set property(String value) {}
   //                       ^^
   // [cfe] unspecified
@@ -18,7 +18,7 @@
   //  ^^
   // [cfe] unspecified
   //      ^^^^^^^^^
-  // [analyzer] STATIC_WARNING.GETTER_NOT_ASSIGNABLE_SETTER_TYPES
+  // [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_ASSIGNABLE_SETTER_TYPES
   void set property2(String x) {}
   //                 ^^
   // [cfe] unspecified
diff --git a/tests/language_2/factory/factory4_test.dart b/tests/language_2/factory/factory4_test.dart
index 660b103..ad2dd27 100644
--- a/tests/language_2/factory/factory4_test.dart
+++ b/tests/language_2/factory/factory4_test.dart
@@ -5,7 +5,7 @@
 abstract class Link<T> {
   factory Link.create() = LinkFactory.create;
   //                      ^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.REDIRECT_TO_INVALID_RETURN_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.REDIRECT_TO_INVALID_RETURN_TYPE
   // [cfe] The constructor function type 'LinkFactory<dynamic> Function()' isn't a subtype of 'Link<T> Function()'.
 }
 
diff --git a/tests/language_2/factory/factory5_test.dart b/tests/language_2/factory/factory5_test.dart
index c1b5028..ee187a5 100644
--- a/tests/language_2/factory/factory5_test.dart
+++ b/tests/language_2/factory/factory5_test.dart
@@ -5,7 +5,7 @@
 abstract class Link<T> {
   factory Link.create() = LinkFactory<T>.create;
   //                      ^^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.REDIRECT_TO_INVALID_RETURN_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.REDIRECT_TO_INVALID_RETURN_TYPE
   // [cfe] The constructor function type 'LinkFactory<T> Function()' isn't a subtype of 'Link<T> Function()'.
 }
 
diff --git a/tests/language_2/factory/factory6_test.dart b/tests/language_2/factory/factory6_test.dart
index 7e36cb9..6084e82 100644
--- a/tests/language_2/factory/factory6_test.dart
+++ b/tests/language_2/factory/factory6_test.dart
@@ -7,7 +7,7 @@
 abstract class Link<T> {
   factory Link.Foo() = LinkFactory<T>.Foo;
   //                   ^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.REDIRECT_TO_INVALID_RETURN_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.REDIRECT_TO_INVALID_RETURN_TYPE
   // [cfe] The constructor function type 'LinkFactory<T> Function()' isn't a subtype of 'Link<T> Function()'.
 }
 
diff --git a/tests/language_2/factory/factory_test.dart b/tests/language_2/factory/factory_test.dart
index 9d4301c..d7b5c2d 100644
--- a/tests/language_2/factory/factory_test.dart
+++ b/tests/language_2/factory/factory_test.dart
@@ -39,7 +39,7 @@
   // [analyzer] STATIC_TYPE_WARNING.WRONG_NUMBER_OF_TYPE_ARGUMENTS
   // [cfe] Expected 0 type arguments.
   //                      ^^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.REDIRECT_TO_INVALID_RETURN_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.REDIRECT_TO_INVALID_RETURN_TYPE
 }
 
 class LinkFactory {
diff --git a/tests/language_2/factory/redirection3_cyclic_test.dart b/tests/language_2/factory/redirection3_cyclic_test.dart
index ed352be..13dc39b 100644
--- a/tests/language_2/factory/redirection3_cyclic_test.dart
+++ b/tests/language_2/factory/redirection3_cyclic_test.dart
@@ -28,7 +28,7 @@
   // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
   // [cfe] Expected an identifier, but got '('.
   //                     ^^^
-  // [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+  // [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
   C();
 }
 
diff --git a/tests/language_2/final/attempt_reinitialization_test.dart b/tests/language_2/final/attempt_reinitialization_test.dart
index 009998b..2db5efe 100644
--- a/tests/language_2/final/attempt_reinitialization_test.dart
+++ b/tests/language_2/final/attempt_reinitialization_test.dart
@@ -5,7 +5,7 @@
 class Foo {
   Foo(this.x);
   //       ^
-  // [analyzer] STATIC_WARNING.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR
+  // [analyzer] COMPILE_TIME_ERROR.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR
   // [cfe] 'x' is a final instance variable that has already been initialized.
   final int x = 42;
 }
@@ -15,7 +15,7 @@
   CoffeeShop.name(String shopName)
       : this.shopName = shopName;
       //     ^^^^^^^^
-      // [analyzer] STATIC_WARNING.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION
+      // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION
       //              ^
       // [cfe] 'shopName' is a final instance variable that has already been initialized.
 }
diff --git a/tests/language_2/final/variable_assignment_test.dart b/tests/language_2/final/variable_assignment_test.dart
index f001d40..840f0e6 100644
--- a/tests/language_2/final/variable_assignment_test.dart
+++ b/tests/language_2/final/variable_assignment_test.dart
@@ -8,18 +8,18 @@
   final x = 30;
   x = 0;
 //^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_LOCAL
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_LOCAL
 // [cfe] Can't assign to the final variable 'x'.
   x += 1;
 //^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_LOCAL
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_LOCAL
 // [cfe] Can't assign to the final variable 'x'.
   ++x;
   //^
-  // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_LOCAL
+  // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_LOCAL
   // [cfe] Can't assign to the final variable 'x'.
   x++;
 //^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_LOCAL
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_LOCAL
 // [cfe] Can't assign to the final variable 'x'.
 }
diff --git a/tests/language_2/generic/constructor_mixin2_test.dart b/tests/language_2/generic/constructor_mixin2_test.dart
index 6630e4e..88281e3 100644
--- a/tests/language_2/generic/constructor_mixin2_test.dart
+++ b/tests/language_2/generic/constructor_mixin2_test.dart
@@ -22,6 +22,6 @@
   checkNoDynamicTypeError(() => new D<int>(v));
   checkDynamicTypeError(() => new D<String>(v));
   //                                        ^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'int' can't be assigned to the parameter type 'String'.
 }
diff --git a/tests/language_2/generic/constructor_mixin3_test.dart b/tests/language_2/generic/constructor_mixin3_test.dart
index 7a1a21a..04e86a1 100644
--- a/tests/language_2/generic/constructor_mixin3_test.dart
+++ b/tests/language_2/generic/constructor_mixin3_test.dart
@@ -21,6 +21,6 @@
   checkNoDynamicTypeError(() => new C1(v));
   checkDynamicTypeError(() => new C2(v));
   //                                 ^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'int' can't be assigned to the parameter type 'String'.
 }
diff --git a/tests/language_2/generic/constructor_mixin_test.dart b/tests/language_2/generic/constructor_mixin_test.dart
index a2b828e..f79f865 100644
--- a/tests/language_2/generic/constructor_mixin_test.dart
+++ b/tests/language_2/generic/constructor_mixin_test.dart
@@ -20,6 +20,6 @@
   checkNoDynamicTypeError(() => new C<int>(v));
   checkDynamicTypeError(() => new C<String>(v));
   //                                        ^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'int' can't be assigned to the parameter type 'String'.
 }
diff --git a/tests/language_2/generic/instantiate_type_variable_test.dart b/tests/language_2/generic/instantiate_type_variable_test.dart
index 7fb503d..8eb9c7a 100644
--- a/tests/language_2/generic/instantiate_type_variable_test.dart
+++ b/tests/language_2/generic/instantiate_type_variable_test.dart
@@ -11,7 +11,7 @@
     //     ^^^^^^^
     // [analyzer] COMPILE_TIME_ERROR.INVALID_CAST_NEW_EXPR
     //         ^
-    // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+    // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
     // [cfe] Method not found: 'T'.
   }
 }
diff --git a/tests/language_2/generic/reify_typevar_static_test.dart b/tests/language_2/generic/reify_typevar_static_test.dart
index b3c502b..c589aff 100644
--- a/tests/language_2/generic/reify_typevar_static_test.dart
+++ b/tests/language_2/generic/reify_typevar_static_test.dart
@@ -11,7 +11,7 @@
   static staticFunction(bool b) =>
     b ? T :
     //  ^
-    // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+    // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
     // [cfe] Type variables can't be used in static members.
       null;
   factory C.factoryConstructor(bool b) => new C(
diff --git a/tests/language_2/getter/no_setter2_test.dart b/tests/language_2/getter/no_setter2_test.dart
index 778ce8f..83d92c4 100644
--- a/tests/language_2/getter/no_setter2_test.dart
+++ b/tests/language_2/getter/no_setter2_test.dart
@@ -11,20 +11,20 @@
   Example() {
     nextVar++;
 //  ^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'nextVar'.
     this.nextVar++;
     //   ^^^^^^^
-    // [analyzer] STATIC_TYPE_WARNING.INSTANCE_ACCESS_TO_STATIC_MEMBER
+    // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
     // [cfe] The getter 'nextVar' isn't defined for the class 'Example'.
     //   ^^^^^^^
-    // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+    // [analyzer] STATIC_TYPE_WARNING.INSTANCE_ACCESS_TO_STATIC_MEMBER
     // [cfe] The setter 'nextVar' isn't defined for the class 'Example'.
   }
   static test() {
     nextVar++;
 //  ^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'nextVar'.
     this.nextVar++;
 //  ^^^^
@@ -33,7 +33,7 @@
 //       ^^^^^^^
 // [analyzer] STATIC_TYPE_WARNING.INSTANCE_ACCESS_TO_STATIC_MEMBER
 //       ^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
   }
 }
 
diff --git a/tests/language_2/getter/no_setter_test.dart b/tests/language_2/getter/no_setter_test.dart
index 8d84129..c403d32 100644
--- a/tests/language_2/getter/no_setter_test.dart
+++ b/tests/language_2/getter/no_setter_test.dart
@@ -11,19 +11,19 @@
   Example() {
     nextVar = 1;
 //  ^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'nextVar'.
     this.nextVar = 1;
     //   ^^^^^^^
     // [analyzer] STATIC_TYPE_WARNING.INSTANCE_ACCESS_TO_STATIC_MEMBER
     // [cfe] The setter 'nextVar' isn't defined for the class 'Example'.
     //   ^^^^^^^
-    // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+    // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
   }
   static test() {
     nextVar = 0;
 //  ^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'nextVar'.
     this.nextVar = 0;
 //  ^^^^
@@ -32,7 +32,7 @@
 //       ^^^^^^^
 // [analyzer] STATIC_TYPE_WARNING.INSTANCE_ACCESS_TO_STATIC_MEMBER
 //       ^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
   }
 }
 
diff --git a/tests/language_2/getter/setter2_test.dart b/tests/language_2/getter/setter2_test.dart
index de9bc28..ab9ba5a 100644
--- a/tests/language_2/getter/setter2_test.dart
+++ b/tests/language_2/getter/setter2_test.dart
@@ -37,7 +37,7 @@
   C setterField;
   A get field {
   //    ^^^^^
-  // [analyzer] STATIC_WARNING.GETTER_NOT_ASSIGNABLE_SETTER_TYPES
+  // [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_ASSIGNABLE_SETTER_TYPES
     return getterField;
   }
 
diff --git a/tests/language_2/getter/setter_type_test.dart b/tests/language_2/getter/setter_type_test.dart
index e108848..a7caee4 100644
--- a/tests/language_2/getter/setter_type_test.dart
+++ b/tests/language_2/getter/setter_type_test.dart
@@ -10,7 +10,7 @@
 
 int get foo => bar;
 //      ^^^
-// [analyzer] STATIC_WARNING.GETTER_NOT_ASSIGNABLE_SETTER_TYPES
+// [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_ASSIGNABLE_SETTER_TYPES
 
 void set foo(String str) {
   bar = str.length;
diff --git a/tests/language_2/getter/syntax_get_set_syntax_test.dart b/tests/language_2/getter/syntax_get_set_syntax_test.dart
index e9789c6..9ccbab1 100644
--- a/tests/language_2/getter/syntax_get_set_syntax_test.dart
+++ b/tests/language_2/getter/syntax_get_set_syntax_test.dart
@@ -73,7 +73,7 @@
 // [analyzer] SYNTACTIC_ERROR.VAR_RETURN_TYPE
 // [cfe] The return type can't be 'var'.
 //    ^^^^^^
-// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
   var get b, c;
 //^^^
 // [analyzer] SYNTACTIC_ERROR.VAR_RETURN_TYPE
@@ -94,7 +94,7 @@
 // [analyzer] SYNTACTIC_ERROR.VAR_RETURN_TYPE
 // [cfe] The return type can't be 'var'.
 //    ^^^^^^
-// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
 //        ^
 // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER
 // [cfe] A method declaration needs an explicit list of parameters.
@@ -141,9 +141,9 @@
   List set;
   List set d;
 //^^^^
-// [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+// [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
 //^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
 //         ^
 // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER
 // [cfe] A method declaration needs an explicit list of parameters.
@@ -153,7 +153,7 @@
 // [cfe] A setter should have exactly one formal parameter.
   List set e, f;
 //^^^^
-// [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+// [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
 //         ^
 // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER
 // [cfe] A method declaration needs an explicit list of parameters.
@@ -189,9 +189,9 @@
   List<int> set;
   List<int> set d;
 //^^^^^^^^^
-// [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+// [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
 //^^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
 //              ^
 // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER
 // [cfe] A method declaration needs an explicit list of parameters.
@@ -201,7 +201,7 @@
 // [cfe] A setter should have exactly one formal parameter.
   List<int> set e, f;
 //^^^^^^^^^
-// [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+// [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
 //              ^
 // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER
 // [cfe] A method declaration needs an explicit list of parameters.
diff --git a/tests/language_2/identifier/known_prefix_error_test.dart b/tests/language_2/identifier/known_prefix_error_test.dart
index a104b53..fe1ea19 100644
--- a/tests/language_2/identifier/known_prefix_error_test.dart
+++ b/tests/language_2/identifier/known_prefix_error_test.dart
@@ -23,49 +23,49 @@
 
 async<dynamic> _async = new async.A();
 // [error line 24, column 1, length 5]
-// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [analyzer] COMPILE_TIME_ERROR.NOT_A_TYPE
 // [cfe] 'async' isn't a type.
 // [error line 24, column 1]
 // [cfe] Expected 0 type arguments.
 await<dynamic> _await = new await.A();
 // [error line 30, column 1, length 5]
-// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [analyzer] COMPILE_TIME_ERROR.NOT_A_TYPE
 // [cfe] 'await' isn't a type.
 // [error line 30, column 1]
 // [cfe] Expected 0 type arguments.
 hide<dynamic> _hide = new hide.A();
 // [error line 36, column 1, length 4]
-// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [analyzer] COMPILE_TIME_ERROR.NOT_A_TYPE
 // [cfe] 'hide' isn't a type.
 // [error line 36, column 1]
 // [cfe] Expected 0 type arguments.
 of<dynamic> _of = new of.A();
 // [error line 42, column 1, length 2]
-// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [analyzer] COMPILE_TIME_ERROR.NOT_A_TYPE
 // [cfe] 'of' isn't a type.
 // [error line 42, column 1]
 // [cfe] Expected 0 type arguments.
 on<dynamic> _on = new on.A();
 // [error line 48, column 1, length 2]
-// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [analyzer] COMPILE_TIME_ERROR.NOT_A_TYPE
 // [cfe] 'on' isn't a type.
 // [error line 48, column 1]
 // [cfe] Expected 0 type arguments.
 show<dynamic> _show = new show.A();
 // [error line 54, column 1, length 4]
-// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [analyzer] COMPILE_TIME_ERROR.NOT_A_TYPE
 // [cfe] 'show' isn't a type.
 // [error line 54, column 1]
 // [cfe] Expected 0 type arguments.
 sync<dynamic> _sync = new sync.A();
 // [error line 60, column 1, length 4]
-// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [analyzer] COMPILE_TIME_ERROR.NOT_A_TYPE
 // [cfe] 'sync' isn't a type.
 // [error line 60, column 1]
 // [cfe] Expected 0 type arguments.
 yield<dynamic> _yield = new yield.A();
 // [error line 66, column 1, length 5]
-// [analyzer] STATIC_WARNING.NOT_A_TYPE
+// [analyzer] COMPILE_TIME_ERROR.NOT_A_TYPE
 // [cfe] 'yield' isn't a type.
 // [error line 66, column 1]
 // [cfe] Expected 0 type arguments.
diff --git a/tests/language_2/if_null/assignment_behavior_test.dart b/tests/language_2/if_null/assignment_behavior_test.dart
index a95aa57..99811f2 100644
--- a/tests/language_2/if_null/assignment_behavior_test.dart
+++ b/tests/language_2/if_null/assignment_behavior_test.dart
@@ -122,7 +122,7 @@
     yGetValue = 1; check(1, () => v ??= y, ['$s.v', 'y', '$s.v=1']);
     finalOne ??= null;
 //  ^^^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL
 // [cfe] The setter 'finalOne' isn't defined for the class 'C'.
     yGetValue = 1;
   }
@@ -163,11 +163,11 @@
   { var l; yGetValue = 1; check(1, () => l ??= y, ['y']); Expect.equals(1, l); }
   { final l = 1; l ??= null; }
   //             ^
-  // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_LOCAL
+  // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_LOCAL
   // [cfe] Can't assign to the final variable 'l'.
   C ??= null;
 //^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_TYPE
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_TYPE
 // [cfe] Can't assign to a type literal.
   h ??= null;
 //^
diff --git a/tests/language_2/import/combinators2_test.dart b/tests/language_2/import/combinators2_test.dart
index 47a2db0..c1ee2fb 100644
--- a/tests/language_2/import/combinators2_test.dart
+++ b/tests/language_2/import/combinators2_test.dart
@@ -14,6 +14,6 @@
   // Ugly is hidden.
   print(ugly);
   //    ^^^^
-  // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+  // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
   // [cfe] Getter not found: 'ugly'.
 }
diff --git a/tests/language_2/initializing_formal/type_annotation_test.dart b/tests/language_2/initializing_formal/type_annotation_test.dart
index b15ad9a..6ca6548 100644
--- a/tests/language_2/initializing_formal/type_annotation_test.dart
+++ b/tests/language_2/initializing_formal/type_annotation_test.dart
@@ -10,14 +10,12 @@
   C.subType(int this.a);
   C.superType(dynamic this.a);
   //          ^^^^^^^^^^^^^^
-  // [analyzer] COMPILE_TIME_ERROR.INVALID_PARAMETER_DECLARATION
+  // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE
   //                       ^
   // [cfe] The type of parameter 'a', 'dynamic' is not a subtype of the corresponding field's type, 'num'.
   C.unrelatedType(String this.a);
   //              ^^^^^^^^^^^^^
-  // [analyzer] COMPILE_TIME_ERROR.INVALID_PARAMETER_DECLARATION
-  //              ^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE
   //                          ^
   // [cfe] The type of parameter 'a', 'String' is not a subtype of the corresponding field's type, 'num'.
 }
diff --git a/tests/language_2/interface/static_method_test.dart b/tests/language_2/interface/static_method_test.dart
index b07e7b9..63783ef 100644
--- a/tests/language_2/interface/static_method_test.dart
+++ b/tests/language_2/interface/static_method_test.dart
@@ -12,6 +12,6 @@
 main() {
   A();
 //^
-// [analyzer] STATIC_WARNING.INSTANTIATE_ABSTRACT_CLASS
+// [analyzer] COMPILE_TIME_ERROR.INSTANTIATE_ABSTRACT_CLASS
 // [cfe] The class 'A' is abstract and can't be instantiated.
 }
diff --git a/tests/language_2/is/isnot_malformed_type_test.dart b/tests/language_2/is/isnot_malformed_type_test.dart
index 11715e2..c81c644 100644
--- a/tests/language_2/is/isnot_malformed_type_test.dart
+++ b/tests/language_2/is/isnot_malformed_type_test.dart
@@ -8,7 +8,7 @@
   // 'Baz' is not loaded, throws a type error on test.
   return (obj is! Baz);
   //              ^^^
-  // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_UNDEFINED_NAME
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_UNDEFINED_NAME
   // [cfe] 'Baz' isn't a type.
 }
 
diff --git a/tests/language_2/is/malformed_type_test.dart b/tests/language_2/is/malformed_type_test.dart
index d54d4de..9628aa8 100644
--- a/tests/language_2/is/malformed_type_test.dart
+++ b/tests/language_2/is/malformed_type_test.dart
@@ -14,7 +14,7 @@
   // malformed type.
     if (e is Undefined) Expect.fail("unreachable");
     //       ^^^^^^^^^
-    // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_UNDEFINED_NAME
+    // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_UNDEFINED_NAME
     // [cfe] 'Undefined' isn't a type.
 }
 
@@ -23,7 +23,7 @@
   // malformed type.
     if (e as Undefined) Expect.fail("unreachable");
     //       ^^^^^^^^^
-    // [analyzer] STATIC_WARNING.CAST_TO_NON_TYPE
+    // [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
     // [cfe] 'Undefined' isn't a type.
 }
 
@@ -33,7 +33,7 @@
     // Regression test for issue 16985.
     if (e is Undefined && testEval(e)) Expect.fail("unreachable");
     //       ^^^^^^^^^
-    // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_UNDEFINED_NAME
+    // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_UNDEFINED_NAME
     // [cfe] 'Undefined' isn't a type.
 }
 
@@ -43,7 +43,7 @@
     // Regression test for issue 16985.
     if (e as Undefined && testEval(e)) Expect.fail("unreachable");
     //       ^^^^^^^^^
-    // [analyzer] STATIC_WARNING.CAST_TO_NON_TYPE
+    // [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
     // [cfe] 'Undefined' isn't a type.
 }
 
@@ -52,7 +52,7 @@
   // runtime error is thrown.
     if (testEval(e) is Undefined) Expect.fail("unreachable");
     //                 ^^^^^^^^^
-    // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_UNDEFINED_NAME
+    // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_UNDEFINED_NAME
     // [cfe] 'Undefined' isn't a type.
 }
 
@@ -61,7 +61,7 @@
   // runtime error is thrown.
     if (testEval(e) as Undefined) Expect.fail("unreachable");
     //                 ^^^^^^^^^
-    // [analyzer] STATIC_WARNING.CAST_TO_NON_TYPE
+    // [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
     // [cfe] 'Undefined' isn't a type.
 }
 
diff --git a/tests/language_2/is/not_class1_test.dart b/tests/language_2/is/not_class1_test.dart
index 6de8f8b..bb9a756 100644
--- a/tests/language_2/is/not_class1_test.dart
+++ b/tests/language_2/is/not_class1_test.dart
@@ -9,7 +9,7 @@
   var a = A();
   if (a is "A") return 0;
   // [error line 10, column 12, length 0]
-  // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_UNDEFINED_NAME
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_UNDEFINED_NAME
   // [cfe] Expected ')' before this.
   //       ^^^
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
diff --git a/tests/language_2/is/not_class2_test.dart b/tests/language_2/is/not_class2_test.dart
index 9073117..9e82ec1 100644
--- a/tests/language_2/is/not_class2_test.dart
+++ b/tests/language_2/is/not_class2_test.dart
@@ -18,7 +18,7 @@
 
     if (a is aa) {
     //       ^^
-    // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_NON_TYPE
+    // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_NON_TYPE
     // [cfe] 'aa' isn't a type.
       return 0;
     }
diff --git a/tests/language_2/label/label8_test.dart b/tests/language_2/label/label8_test.dart
index df4f1b8..a40c1b7 100644
--- a/tests/language_2/label/label8_test.dart
+++ b/tests/language_2/label/label8_test.dart
@@ -13,7 +13,7 @@
   {
     case 111:
 //  ^^^^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] Expected ';' after this.
 //  ^^^^
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
diff --git a/tests/language_2/list/literal1_test.dart b/tests/language_2/list/literal1_test.dart
index f8db7b2..cd54906 100644
--- a/tests/language_2/list/literal1_test.dart
+++ b/tests/language_2/list/literal1_test.dart
@@ -9,9 +9,9 @@
       <String>
       [0, 1];
 //     ^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] A value of type 'int' can't be assigned to a variable of type 'String'.
 //        ^
-// [analyzer] STATIC_WARNING.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] A value of type 'int' can't be assigned to a variable of type 'String'.
 }
diff --git a/tests/language_2/malformed/malformed_test.dart b/tests/language_2/malformed/malformed_test.dart
index 119001c..d825460 100644
--- a/tests/language_2/malformed/malformed_test.dart
+++ b/tests/language_2/malformed/malformed_test.dart
@@ -8,20 +8,20 @@
 checkIsUnresolved(var v) {
   v is Unresolved;
   //   ^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_UNDEFINED_NAME
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_UNDEFINED_NAME
   // [cfe] 'Unresolved' isn't a type.
   v is Unresolved<int>;
   //   ^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_UNDEFINED_NAME
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_UNDEFINED_NAME
   // [cfe] 'Unresolved' isn't a type.
   v is prefix.Unresolved;
   //   ^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_UNDEFINED_NAME
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_UNDEFINED_NAME
   //          ^
   // [cfe] 'Unresolved' isn't a type.
   v is prefix.Unresolved<int>;
   //   ^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_UNDEFINED_NAME
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_UNDEFINED_NAME
   //          ^
   // [cfe] 'Unresolved' isn't a type.
 }
@@ -54,20 +54,20 @@
 checkAsUnresolved(var v) {
   v as Unresolved;
   //   ^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.CAST_TO_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
   // [cfe] 'Unresolved' isn't a type.
   v as Unresolved<int>;
   //   ^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.CAST_TO_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
   // [cfe] 'Unresolved' isn't a type.
   v as prefix.Unresolved;
   //   ^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.CAST_TO_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
   //          ^
   // [cfe] 'Unresolved' isn't a type.
   v as prefix.Unresolved<int>;
   //   ^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.CAST_TO_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
   //          ^
   // [cfe] 'Unresolved' isn't a type.
 }
@@ -105,11 +105,11 @@
 
   new undeclared_prefix.Unresolved();
   //  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'undeclared_prefix.Unresolved'.
   new undeclared_prefix.Unresolved<int>();
   //  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'undeclared_prefix.Unresolved'.
 
   try {
@@ -117,7 +117,7 @@
   }
     on Unresolved
     // ^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.NON_TYPE_IN_CATCH_CLAUSE
+    // [analyzer] COMPILE_TIME_ERROR.NON_TYPE_IN_CATCH_CLAUSE
     // [cfe] 'Unresolved' isn't a type.
     catch (e) {
   }
@@ -127,7 +127,7 @@
   }
     on Unresolved<int>
     // ^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.NON_TYPE_IN_CATCH_CLAUSE
+    // [analyzer] COMPILE_TIME_ERROR.NON_TYPE_IN_CATCH_CLAUSE
     // [cfe] 'Unresolved' isn't a type.
     catch (e) {
   }
@@ -137,7 +137,7 @@
   }
     on prefix.Unresolved
     // ^^^^^^^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.NON_TYPE_IN_CATCH_CLAUSE
+    // [analyzer] COMPILE_TIME_ERROR.NON_TYPE_IN_CATCH_CLAUSE
     //        ^
     // [cfe] 'Unresolved' isn't a type.
     catch (e) {
@@ -148,7 +148,7 @@
   }
     on prefix.Unresolved<int>
     // ^^^^^^^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.NON_TYPE_IN_CATCH_CLAUSE
+    // [analyzer] COMPILE_TIME_ERROR.NON_TYPE_IN_CATCH_CLAUSE
     //        ^
     // [cfe] 'Unresolved' isn't a type.
     catch (e) {
@@ -159,7 +159,7 @@
   }
     on undeclared_prefix.Unresolved<int>
     // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.NON_TYPE_IN_CATCH_CLAUSE
+    // [analyzer] COMPILE_TIME_ERROR.NON_TYPE_IN_CATCH_CLAUSE
     // [cfe] 'undeclared_prefix.Unresolved' can't be used as a type because 'undeclared_prefix' isn't defined.
     catch (e) {
   }
diff --git a/tests/language_2/map/literal1_test.dart b/tests/language_2/map/literal1_test.dart
index 71c4e8e..49aa5fa 100644
--- a/tests/language_2/map/literal1_test.dart
+++ b/tests/language_2/map/literal1_test.dart
@@ -9,6 +9,6 @@
       <String, String>
     {"a": 0};
     //    ^
-    // [analyzer] STATIC_WARNING.MAP_VALUE_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.MAP_VALUE_TYPE_NOT_ASSIGNABLE
     // [cfe] A value of type 'int' can't be assigned to a variable of type 'String'.
 }
diff --git a/tests/language_2/method/not_found_test.dart b/tests/language_2/method/not_found_test.dart
index 4755cba..883cd6f 100644
--- a/tests/language_2/method/not_found_test.dart
+++ b/tests/language_2/method/not_found_test.dart
@@ -7,7 +7,7 @@
 // [cfe] The non-abstract class 'A' is missing implementations for these members:
   B();
 //^^^^
-// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
   static const field = const B();
   //                         ^
   // [analyzer] COMPILE_TIME_ERROR.IMPLICIT_THIS_REFERENCE_IN_INITIALIZER
diff --git a/tests/language_2/mixin/illegal_constructor_test.dart b/tests/language_2/mixin/illegal_constructor_test.dart
index b6df547..b70f764 100644
--- a/tests/language_2/mixin/illegal_constructor_test.dart
+++ b/tests/language_2/mixin/illegal_constructor_test.dart
@@ -102,7 +102,7 @@
   // [cfe] Too many positional arguments: 0 allowed, but 3 found.
   new C0.named();
   //     ^^^^^
-  // [analyzer] STATIC_WARNING.NEW_WITH_UNDEFINED_CONSTRUCTOR
+  // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR
   // [cfe] Method not found: 'C0.named'.
   new D0(1,2,3);
   //    ^^^^^^^
@@ -110,6 +110,6 @@
   // [cfe] Too many positional arguments: 0 allowed, but 3 found.
   new D0.named();
   //     ^^^^^
-  // [analyzer] STATIC_WARNING.NEW_WITH_UNDEFINED_CONSTRUCTOR
+  // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR
   // [cfe] Method not found: 'D0.named'.
 }
diff --git a/tests/language_2/mixin/method_override_test.dart b/tests/language_2/mixin/method_override_test.dart
index 3987455..137156e 100644
--- a/tests/language_2/mixin/method_override_test.dart
+++ b/tests/language_2/mixin/method_override_test.dart
@@ -302,7 +302,7 @@
 // [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
 class G5 = GTTnum with CII;
 //    ^^
-// [analyzer] STATIC_WARNING.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
 // [cfe] The mixin application class 'G5' introduces an erroneous override of 'id'.
 //    ^
 // [cfe] The non-abstract class 'G5' is missing implementations for these members:
diff --git a/tests/language_2/new/create_unresolved_type_test.dart b/tests/language_2/new/create_unresolved_type_test.dart
index 6d215ab..16fb7a6 100644
--- a/tests/language_2/new/create_unresolved_type_test.dart
+++ b/tests/language_2/new/create_unresolved_type_test.dart
@@ -5,6 +5,6 @@
 main() {
   new F<int>();
   //  ^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'F'.
 }
diff --git a/tests/language_2/new/expression_type_args_test.dart b/tests/language_2/new/expression_type_args_test.dart
index b32f0e1..da303e3 100644
--- a/tests/language_2/new/expression_type_args_test.dart
+++ b/tests/language_2/new/expression_type_args_test.dart
@@ -7,20 +7,20 @@
   // Can't instantiate type parameter (within static or instance method).
   m1() => new T();
   //          ^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'T'.
   static m2() => new T();
   //                 ^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'T'.
   //                 ^
-  // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
 
   // OK when used within instance method, but not in static method.
   m3() => new A<T>();
   static m4() => new A<T>();
   //                   ^
-  // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
   // [cfe] Type variables can't be used in static members.
 }
 
diff --git a/tests/language_2/new/prefix_test.dart b/tests/language_2/new/prefix_test.dart
index bef0d69..8e5c7bc 100644
--- a/tests/language_2/new/prefix_test.dart
+++ b/tests/language_2/new/prefix_test.dart
@@ -7,6 +7,6 @@
 main() {
   return new prefix();
   //         ^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'prefix'.
 }
diff --git a/tests/language_2/null_aware/assignment_test.dart b/tests/language_2/null_aware/assignment_test.dart
index adbe290..0b97167 100644
--- a/tests/language_2/null_aware/assignment_test.dart
+++ b/tests/language_2/null_aware/assignment_test.dart
@@ -112,7 +112,7 @@
   // [cfe] The setter 'v' isn't defined for the class 'B'.
   { D d = new D(new E()); F f = (d?.v += nullC()); }
   //                                     ^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] A value of type 'C' can't be assigned to a variable of type 'int'.
   { D d = new D(new E()); H h = (d?.v += 1); }
   //                            ^^^^^^^^^^^
@@ -121,11 +121,11 @@
   // [cfe] A value of type 'G' can't be assigned to a variable of type 'H'.
   { D.staticE = new E(); F f = (D?.staticE += nullC()); }
   //                                          ^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] A value of type 'C' can't be assigned to a variable of type 'int'.
   { h.D.staticE = new h.E(); h.F f = (h.D?.staticE += h.nullC()); }
   //                                                  ^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] A value of type 'C' can't be assigned to a variable of type 'int'.
   { D.staticE = new E(); H h = (D?.staticE += 1); }
   //                           ^^^^^^^^^^^^^^^^^
diff --git a/tests/language_2/null_aware/invocation_test.dart b/tests/language_2/null_aware/invocation_test.dart
index 1d729d7..03c3ddb 100644
--- a/tests/language_2/null_aware/invocation_test.dart
+++ b/tests/language_2/null_aware/invocation_test.dart
@@ -70,7 +70,7 @@
   // [cfe] The method 'f' isn't defined for the class 'B'.
   { int i = 1; Expect.equals(null, nullC()?.f(i)); }
   //                                          ^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'int' can't be assigned to the parameter type 'dynamic Function()'.
 
   // '?.' can't be used to access toplevel functions in libraries imported via
diff --git a/tests/language_2/number/identifier_test.dart b/tests/language_2/number/identifier_test.dart
index ce91927..7b575c5 100644
--- a/tests/language_2/number/identifier_test.dart
+++ b/tests/language_2/number/identifier_test.dart
@@ -10,32 +10,32 @@
   //                 ^^^
   // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
   //                 ^^^
-  // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_NON_TYPE
   Expect.equals(2, 2 as int);
   //                    ^^^
   // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
   //                    ^^^
-  // [analyzer] STATIC_WARNING.CAST_TO_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
   Expect.isTrue(-2 is int);
   //                  ^^^
   // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
   //                  ^^^
-  // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_NON_TYPE
   Expect.equals(-2, -2 as int);
   //                      ^^^
   // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
   //                      ^^^
-  // [analyzer] STATIC_WARNING.CAST_TO_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
   Expect.isTrue(0x10 is int);
   //                    ^^^
   // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
   //                    ^^^
-  // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_NON_TYPE
   Expect.isTrue(-0x10 is int);
   //                     ^^^
   // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
   //                     ^^^
-  // [analyzer] STATIC_WARNING.TYPE_TEST_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_NON_TYPE
 
   // "a" will be part of hex literal, the following "s" is an error.
   0x10as int;
@@ -75,14 +75,14 @@
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
 // [cfe] Expected ';' after this.
 // ^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] Getter not found: 'd'.
   1D;
 //^
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
 // [cfe] Expected ';' after this.
 // ^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] Getter not found: 'D'.
   Expect.throwsNoSuchMethodError(() => 1.d+2);
   //                                     ^
@@ -97,14 +97,14 @@
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
 // [cfe] Expected ';' after this.
 //   ^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] Getter not found: 'd'.
   1.1D;
 //^^^
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
 // [cfe] Expected ';' after this.
 //   ^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] Getter not found: 'D'.
   1e;
 //^
@@ -116,6 +116,6 @@
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
 // [cfe] Expected ';' after this.
 // ^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] Getter not found: 'x'.
 }
diff --git a/tests/language_2/operator/invalid_operators_test.dart b/tests/language_2/operator/invalid_operators_test.dart
index a02ad70..f8acc82 100644
--- a/tests/language_2/operator/invalid_operators_test.dart
+++ b/tests/language_2/operator/invalid_operators_test.dart
@@ -673,7 +673,7 @@
 class Operators8 {
   /*space*/ int operator []=(a, b) {}
   //        ^^^
-  // [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_OPERATOR
+  // [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_OPERATOR
   // [cfe] unspecified
 }
 
diff --git a/tests/language_2/optimize/inferrer_constructor5_test.dart b/tests/language_2/optimize/inferrer_constructor5_test.dart
index 7221fea..186b3c9 100644
--- a/tests/language_2/optimize/inferrer_constructor5_test.dart
+++ b/tests/language_2/optimize/inferrer_constructor5_test.dart
@@ -8,7 +8,7 @@
   A() {
     print(field + 42);
     //    ^^^^^
-    // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+    // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
     // [cfe] The getter 'field' isn't defined for the class 'A'.
   }
 }
diff --git a/tests/language_2/override/inheritance_abstract_test.dart b/tests/language_2/override/inheritance_abstract_test.dart
index 9218fab..5808673 100644
--- a/tests/language_2/override/inheritance_abstract_test.dart
+++ b/tests/language_2/override/inheritance_abstract_test.dart
@@ -46,18 +46,18 @@
 
 class Class extends A implements I, J {
 //    ^^^^^
-// [analyzer] STATIC_WARNING.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
 // [cfe] The non-abstract class 'Class' is missing implementations for these members:
   method1() {}
   method2();
 //^^^^^^^^^^
-// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
   get getter3;
 //^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
   set setter4(_);
 //^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
   method5() {}
   method6([a]) {}
   set field13(_) {}
diff --git a/tests/language_2/parameter/named_type_test.dart b/tests/language_2/parameter/named_type_test.dart
index 0f82274..7cb2cdf 100644
--- a/tests/language_2/parameter/named_type_test.dart
+++ b/tests/language_2/parameter/named_type_test.dart
@@ -27,10 +27,10 @@
   // [cfe] The local function has type 'void Function(num)' that isn't of expected type 'void Function(num, {bool b})'.
   acceptFunNumOptBool(funNumBool);
   //                  ^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'void Function(num, bool)' can't be assigned to the parameter type 'void Function(num, {bool b})'.
   acceptFunNumOptBool(funNumOptBoolX);
   //                  ^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'void Function(num, {bool x})' can't be assigned to the parameter type 'void Function(num, {bool b})'.
 }
diff --git a/tests/language_2/prefix/import_collision_test.dart b/tests/language_2/prefix/import_collision_test.dart
index 6ad50cb..0f561f8 100644
--- a/tests/language_2/prefix/import_collision_test.dart
+++ b/tests/language_2/prefix/import_collision_test.dart
@@ -11,6 +11,6 @@
 main() {
   lib2.foo = 1;
   //   ^^^
-  // [analyzer] STATIC_WARNING.AMBIGUOUS_IMPORT
+  // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_IMPORT
   // [cfe] Setter not found: 'foo'.
 }
diff --git a/tests/language_2/prefix/transitive_import_prefix_test.dart b/tests/language_2/prefix/transitive_import_prefix_test.dart
index 34c3020..3365f2f 100644
--- a/tests/language_2/prefix/transitive_import_prefix_test.dart
+++ b/tests/language_2/prefix/transitive_import_prefix_test.dart
@@ -7,14 +7,14 @@
   // Library prefixes in the imported libraries should not be visible here.
   new lib11.Library11(1);
   //  ^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'lib11.Library11'.
   lib11.Library11.static_func();
 //^^^^^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] Getter not found: 'lib11'.
   lib11.Library11.static_fld;
 //^^^^^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] Getter not found: 'lib11'.
 }
diff --git a/tests/language_2/prefix/transitive_import_test.dart b/tests/language_2/prefix/transitive_import_test.dart
index 256894c..582b3e2 100644
--- a/tests/language_2/prefix/transitive_import_test.dart
+++ b/tests/language_2/prefix/transitive_import_test.dart
@@ -10,7 +10,7 @@
   // Class should not be visible.
   new lib12.Library11(1);
   //        ^^^^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'Library11'.
 
   // Variable should not be visible.
diff --git a/tests/language_2/private/access_test.dart b/tests/language_2/private/access_test.dart
index 016e4dc..cbfef18 100644
--- a/tests/language_2/private/access_test.dart
+++ b/tests/language_2/private/access_test.dart
@@ -19,7 +19,7 @@
 // [analyzer] STATIC_TYPE_WARNING.UNDEFINED_FUNCTION
   new _Class();
   //  ^^^^^^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: '_Class'.
   private._Class();
 //^
@@ -28,10 +28,10 @@
 // [analyzer] STATIC_TYPE_WARNING.UNDEFINED_FUNCTION
   new Class._constructor();
   //        ^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.NEW_WITH_UNDEFINED_CONSTRUCTOR
+  // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR
   // [cfe] Method not found: 'Class._constructor'.
   new private.Class._constructor();
   //                ^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.NEW_WITH_UNDEFINED_CONSTRUCTOR
+  // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR
   // [cfe] Method not found: 'Class._constructor'.
 }
diff --git a/tests/language_2/private/member1_test.dart b/tests/language_2/private/member1_test.dart
index a542e48..415bd25 100644
--- a/tests/language_2/private/member1_test.dart
+++ b/tests/language_2/private/member1_test.dart
@@ -10,7 +10,7 @@
   test() {
     _instanceField = true;
 //  ^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] The setter '_instanceField' isn't defined for the class 'Test'.
   }
 }
diff --git a/tests/language_2/private/member2_test.dart b/tests/language_2/private/member2_test.dart
index 7c86d12..6851ad7 100644
--- a/tests/language_2/private/member2_test.dart
+++ b/tests/language_2/private/member2_test.dart
@@ -10,7 +10,7 @@
   test() {
     _staticField = true;
 //  ^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] The setter '_staticField' isn't defined for the class 'Test'.
   }
 }
diff --git a/tests/language_2/redirecting/factory_default_values_test.dart b/tests/language_2/redirecting/factory_default_values_test.dart
index 0b24876..84a7d17 100644
--- a/tests/language_2/redirecting/factory_default_values_test.dart
+++ b/tests/language_2/redirecting/factory_default_values_test.dart
@@ -20,7 +20,7 @@
   //                         ^
   // [cfe] Can't have a default value here because any default values of 'A' would be used instead.
   //                               ^
-  // [analyzer] STATIC_WARNING.REDIRECT_TO_INVALID_FUNCTION_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.REDIRECT_TO_INVALID_FUNCTION_TYPE
   // [cfe] The constructor function type 'A Function(int, [int])' isn't a subtype of 'A Function(int, {int b})'.
 
   int a;
diff --git a/tests/language_2/redirecting/factory_incompatible_signature_test.dart b/tests/language_2/redirecting/factory_incompatible_signature_test.dart
index 7a77f18..7c0253a 100644
--- a/tests/language_2/redirecting/factory_incompatible_signature_test.dart
+++ b/tests/language_2/redirecting/factory_incompatible_signature_test.dart
@@ -11,7 +11,7 @@
   A(a, b);
   factory A.f() = A;
   //              ^
-  // [analyzer] STATIC_WARNING.REDIRECT_TO_INVALID_FUNCTION_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.REDIRECT_TO_INVALID_FUNCTION_TYPE
   // [cfe] The constructor function type 'A Function(dynamic, dynamic)' isn't a subtype of 'A Function()'.
 }
 
diff --git a/tests/language_2/regress/regress15606_test.dart b/tests/language_2/regress/regress15606_test.dart
index 3891202..f367e9e 100644
--- a/tests/language_2/regress/regress15606_test.dart
+++ b/tests/language_2/regress/regress15606_test.dart
@@ -15,7 +15,7 @@
     var foo =
       Unresolved.
 //    ^^^^^^^^^^
-// [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
 // [cfe] Getter not found: 'Unresolved'.
         bar(
       // Make dart2js generate a call to setRuntimeTypeInfo.
diff --git a/tests/language_2/regress/regress21793_test.dart b/tests/language_2/regress/regress21793_test.dart
index 26d9ff6d..e4fec2e 100644
--- a/tests/language_2/regress/regress21793_test.dart
+++ b/tests/language_2/regress/regress21793_test.dart
@@ -15,6 +15,6 @@
 main() {
   print(new A()(499));
   //        ^
-  // [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   // [cfe] Method not found: 'A'.
 }
diff --git a/tests/language_2/regress/regress23408a_test.dart b/tests/language_2/regress/regress23408a_test.dart
index b8fd7a4..453d161 100644
--- a/tests/language_2/regress/regress23408a_test.dart
+++ b/tests/language_2/regress/regress23408a_test.dart
@@ -16,7 +16,7 @@
   C();
   factory C.l() = A<lib.K>;
   //                ^^^^^
-  // [analyzer] STATIC_WARNING.TYPE_ANNOTATION_DEFERRED_CLASS
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_ANNOTATION_DEFERRED_CLASS
   // [cfe] unspecified
   get t => null;
 }
diff --git a/tests/language_2/regress/regress31596_super_test.dart b/tests/language_2/regress/regress31596_super_test.dart
index 657bace..edf7e93 100644
--- a/tests/language_2/regress/regress31596_super_test.dart
+++ b/tests/language_2/regress/regress31596_super_test.dart
@@ -40,7 +40,7 @@
     // not ok since B2 is not assignable to B
     super.f(b2);
     //      ^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'B2' can't be assigned to the parameter type 'B'.
 
     var superF = super.f; // Inferred static type: void Function(B)
@@ -52,7 +52,7 @@
     // not ok since B2 is not assignable to B
     superF(b2);
     //     ^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'B2' can't be assigned to the parameter type 'B'.
 
     // Should pass since superF's runtime type is void Function(Object)
diff --git a/tests/language_2/regress/regress31596_test.dart b/tests/language_2/regress/regress31596_test.dart
index d65dee2..b70f62a 100644
--- a/tests/language_2/regress/regress31596_test.dart
+++ b/tests/language_2/regress/regress31596_test.dart
@@ -36,7 +36,7 @@
   B2 b2 = null;
   d.f(b2, b);
   //  ^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'B2' can't be assigned to the parameter type 'B'.
   i.f(b2, b); // Ok since B2 assignable to A
   // TODO: Downcast will be a compile-time error with NNBD. Consider using
diff --git a/tests/language_2/regress/regress34488_test.dart b/tests/language_2/regress/regress34488_test.dart
index 3375997..0930f68 100644
--- a/tests/language_2/regress/regress34488_test.dart
+++ b/tests/language_2/regress/regress34488_test.dart
@@ -25,27 +25,27 @@
   var d = new Derived();
   d.f('bad');
   //  ^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
   d.g('bad');
   //  ^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
   d.h(i: 'bad');
   //  ^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   //     ^
   // [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
   Object x = d.f(1);
   //           ^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   // [cfe] This expression has type 'void' and can't be used.
   Object y = d.g(1);
   //           ^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   // [cfe] This expression has type 'void' and can't be used.
   Object z = d.h(i: 1);
   //           ^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   // [cfe] This expression has type 'void' and can't be used.
 }
diff --git a/tests/language_2/regress/regress34495_test.dart b/tests/language_2/regress/regress34495_test.dart
index f33f4c5..41e58bf 100644
--- a/tests/language_2/regress/regress34495_test.dart
+++ b/tests/language_2/regress/regress34495_test.dart
@@ -4,7 +4,7 @@
 
 final foo = A<B>.foo();
 //          ^
-// [analyzer] STATIC_WARNING.CREATION_WITH_NON_TYPE
+// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
 // [cfe] Method not found: 'A'.
 //            ^
 // [analyzer] STATIC_TYPE_WARNING.NON_TYPE_AS_TYPE_ARGUMENT
diff --git a/tests/language_2/regress/regress35258_test.dart b/tests/language_2/regress/regress35258_test.dart
index f28bada..d36f45f 100644
--- a/tests/language_2/regress/regress35258_test.dart
+++ b/tests/language_2/regress/regress35258_test.dart
@@ -17,7 +17,7 @@
 
   C() {}
 //^
-// [analyzer] STATIC_WARNING.FINAL_NOT_INITIALIZED_CONSTRUCTOR
+// [analyzer] COMPILE_TIME_ERROR.FINAL_NOT_INITIALIZED_CONSTRUCTOR
   C(this.d) {}
 //^
 // [analyzer] COMPILE_TIME_ERROR.DUPLICATE_CONSTRUCTOR
diff --git a/tests/language_2/rewrite/implicit_this_test.dart b/tests/language_2/rewrite/implicit_this_test.dart
index e0e4c41..078dcd2 100644
--- a/tests/language_2/rewrite/implicit_this_test.dart
+++ b/tests/language_2/rewrite/implicit_this_test.dart
@@ -12,7 +12,7 @@
   easy(z) {
         return x + y + z;
         //         ^
-        // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+        // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
         // [cfe] The getter 'y' isn't defined for the class 'Foo'.
   }
 
@@ -69,7 +69,7 @@
   shadow_x_parameter(x) {
         return this.x + y + x;
         //              ^
-        // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+        // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
         // [cfe] The getter 'y' isn't defined for the class 'Foo'.
   }
 
@@ -77,7 +77,7 @@
     var x = z;
         return this.x + y + x;
         //              ^
-        // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+        // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
         // [cfe] The getter 'y' isn't defined for the class 'Foo'.
   }
 
@@ -86,7 +86,7 @@
     foo() {
             return this.x + y + x;
             //              ^
-            // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+            // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
             // [cfe] The getter 'y' isn't defined for the class 'Foo'.
     }
     return foo();
@@ -96,7 +96,7 @@
     foo(x) {
             return this.x + y + x;
             //              ^
-            // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+            // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
             // [cfe] The getter 'y' isn't defined for the class 'Foo'.
     }
     return foo(z);
@@ -107,7 +107,7 @@
       var x = z;
             return this.x + y + x;
             //              ^
-            // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+            // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
             // [cfe] The getter 'y' isn't defined for the class 'Foo'.
     }
 
diff --git a/tests/language_2/setter/declaration_test.dart b/tests/language_2/setter/declaration_test.dart
index b1ef548..84893b0 100644
--- a/tests/language_2/setter/declaration_test.dart
+++ b/tests/language_2/setter/declaration_test.dart
@@ -20,53 +20,53 @@
 
 /*space*/ int set wrongReturnType1(_) {}
 //        ^^^
-// [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+// [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
 // [cfe] unspecified
 
 /*space*/ FutureOr<void> set wrongReturnType2(_) {}
 //        ^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+// [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
 // [cfe] unspecified
 
 /*space*/ Never set wrongReturnType3(_) {}
 //        ^^^^^
-// [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+// [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
 // [cfe] unspecified
 
 class C {
   static int set staticWrongReturnType1(_) => 1;
   //     ^^^
-  // [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+  // [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
   // [cfe] unspecified
 
   static FutureOr<void> set staticWrongReturnType2(_) {}
   //     ^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+  // [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
   // [cfe] unspecified
 
   static Never set staticWrongReturnType3(_) => throw 1;
   //     ^^^^^
-  // [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+  // [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
   // [cfe] unspecified
 
   /*space*/ int set wrongReturnType1(_) {}
   //        ^^^
-  // [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+  // [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
   // [cfe] unspecified
 
   /*space*/ FutureOr<void> set wrongReturnType2(_) {}
   //        ^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+  // [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
   // [cfe] unspecified
 
   /*space*/ Never set wrongReturnType3(_) => throw 1;
   //        ^^^^^
-  // [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+  // [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
   // [cfe] unspecified
 
   static int get staticNonAssignableTypes1 => 1;
   //             ^^^^^^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.GETTER_NOT_ASSIGNABLE_SETTER_TYPES
+  // [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_ASSIGNABLE_SETTER_TYPES
   // [cfe] unspecified
   static set staticNonAssignableTypes1(String _) {}
 
@@ -81,7 +81,7 @@
 
   int get nonAssignableTypes1 => 1;
   //      ^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.GETTER_NOT_ASSIGNABLE_SETTER_TYPES
+  // [analyzer] COMPILE_TIME_ERROR.GETTER_NOT_ASSIGNABLE_SETTER_TYPES
   // [cfe] unspecified
   set nonAssignableTypes1(String _) {}
 
diff --git a/tests/language_2/setter/setter3_test.dart b/tests/language_2/setter/setter3_test.dart
index 916a807..194ae1c 100644
--- a/tests/language_2/setter/setter3_test.dart
+++ b/tests/language_2/setter/setter3_test.dart
@@ -11,10 +11,10 @@
   void set bar(x) {}
   dynamic set baz(x) {}
 //^^^^^^^
-// [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+// [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
   bool set bob(x) {}
 //^^^^
-// [analyzer] STATIC_WARNING.NON_VOID_RETURN_FOR_SETTER
+// [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_SETTER
 }
 
 main() {
diff --git a/tests/language_2/static/field3_test.dart b/tests/language_2/static/field3_test.dart
index 7436df1..0498f48 100644
--- a/tests/language_2/static/field3_test.dart
+++ b/tests/language_2/static/field3_test.dart
@@ -13,11 +13,11 @@
   if (false) {
     var x = Foo.x;
     //          ^
-    // [analyzer] STATIC_WARNING.STATIC_ACCESS_TO_INSTANCE_MEMBER
+    // [analyzer] COMPILE_TIME_ERROR.STATIC_ACCESS_TO_INSTANCE_MEMBER
     // [cfe] Getter not found: 'x'.
     var m = Foo.m;
     //          ^
-    // [analyzer] STATIC_WARNING.STATIC_ACCESS_TO_INSTANCE_MEMBER
+    // [analyzer] COMPILE_TIME_ERROR.STATIC_ACCESS_TO_INSTANCE_MEMBER
     // [cfe] Getter not found: 'm'.
     Foo.m = 1;
     //  ^
@@ -25,7 +25,7 @@
     // [cfe] Setter not found: 'm'.
     Foo.x = 1;
     //  ^
-    // [analyzer] STATIC_WARNING.STATIC_ACCESS_TO_INSTANCE_MEMBER
+    // [analyzer] COMPILE_TIME_ERROR.STATIC_ACCESS_TO_INSTANCE_MEMBER
     // [cfe] Setter not found: 'x'.
   }
 }
diff --git a/tests/language_2/static/final_field2_test.dart b/tests/language_2/static/final_field2_test.dart
index 0755461..6430471 100644
--- a/tests/language_2/static/final_field2_test.dart
+++ b/tests/language_2/static/final_field2_test.dart
@@ -20,7 +20,7 @@
 main() {
   A.x = 2;
 //^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_CONST
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_CONST
 //  ^
 // [cfe] Setter not found: 'x'.
   new B();
diff --git a/tests/language_2/static/getter_no_setter1_test.dart b/tests/language_2/static/getter_no_setter1_test.dart
index a173b2f..dd307ec 100644
--- a/tests/language_2/static/getter_no_setter1_test.dart
+++ b/tests/language_2/static/getter_no_setter1_test.dart
@@ -10,7 +10,7 @@
   method() {
     getter++;
 //  ^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'getter'.
   }
 }
diff --git a/tests/language_2/static/getter_no_setter2_test.dart b/tests/language_2/static/getter_no_setter2_test.dart
index d10cedb..e84b2b8 100644
--- a/tests/language_2/static/getter_no_setter2_test.dart
+++ b/tests/language_2/static/getter_no_setter2_test.dart
@@ -10,7 +10,7 @@
   method() {
     getter++;
 //  ^^^^^^
-// [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_NO_SETTER
+// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_NO_SETTER
 // [cfe] Setter not found: 'getter'.
   }
 
diff --git a/tests/language_2/static/setter_get_test.dart b/tests/language_2/static/setter_get_test.dart
index 44796cc..0a16b53 100644
--- a/tests/language_2/static/setter_get_test.dart
+++ b/tests/language_2/static/setter_get_test.dart
@@ -8,7 +8,7 @@
   static set o(_) {}
   m() => o;
   //     ^
-  // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+  // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
   // [cfe] Getter not found: 'o'.
   noSuchMethod(_) => 42;
 }
diff --git a/tests/language_2/string/interpolate1_test.dart b/tests/language_2/string/interpolate1_test.dart
index 1bc80c0..12bf4af 100644
--- a/tests/language_2/string/interpolate1_test.dart
+++ b/tests/language_2/string/interpolate1_test.dart
@@ -11,6 +11,6 @@
   // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
   // [cfe] A '$' has special meaning inside a string, and must be followed by an identifier or an expression in curly braces ({}).
   //                  ^
-  // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+  // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
   // [cfe] Getter not found: 'x'.
 }
diff --git a/tests/language_2/string/no_operator_test.dart b/tests/language_2/string/no_operator_test.dart
index e6da249..d5d013c 100644
--- a/tests/language_2/string/no_operator_test.dart
+++ b/tests/language_2/string/no_operator_test.dart
@@ -29,7 +29,7 @@
   // [cfe] The operator '-' isn't defined for the class 'String'.
   Expect.throws(() => x * y);
   //                      ^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] A value of type 'String' can't be assigned to a variable of type 'int'.
   Expect.throws(() => x / y);
   //                    ^
diff --git a/tests/language_2/string/substring_test.dart b/tests/language_2/string/substring_test.dart
index bf2ce99..6f33829 100644
--- a/tests/language_2/string/substring_test.dart
+++ b/tests/language_2/string/substring_test.dart
@@ -9,10 +9,10 @@
   try {
     print("abcdef".substring(1.5, 3.5));
     //                       ^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'double' can't be assigned to the parameter type 'int'.
     //                            ^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'double' can't be assigned to the parameter type 'int'.
     Expect.fail("Should have thrown an exception");
   } on TypeError catch (e) {
diff --git a/tests/language_2/switch/case_expression_with_assignment_test.dart b/tests/language_2/switch/case_expression_with_assignment_test.dart
index 115cb94..5ab2dbd 100644
--- a/tests/language_2/switch/case_expression_with_assignment_test.dart
+++ b/tests/language_2/switch/case_expression_with_assignment_test.dart
@@ -15,7 +15,7 @@
       return "ERROR_A";
     case ERROR_B = 1:
     //   ^^^^^^^
-    // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_CONST
+    // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_CONST
     //   ^^^^^^^^^^^
     // [analyzer] COMPILE_TIME_ERROR.NON_CONSTANT_CASE_EXPRESSION
     //           ^
diff --git a/tests/language_2/switch/fallthru_test.dart b/tests/language_2/switch/fallthru_test.dart
index aabb2ca..16e23fe 100644
--- a/tests/language_2/switch/fallthru_test.dart
+++ b/tests/language_2/switch/fallthru_test.dart
@@ -13,7 +13,7 @@
       break;
     case 1:
 //  ^^^^
-// [analyzer] STATIC_WARNING.CASE_BLOCK_NOT_TERMINATED
+// [analyzer] COMPILE_TIME_ERROR.CASE_BLOCK_NOT_TERMINATED
 // [cfe] Switch case may fall through to the next case.
       result = "one";
   // fall-through, error if case is non-empty
diff --git a/tests/language_2/this/implicit_this_test.dart b/tests/language_2/this/implicit_this_test.dart
index 3500c9a..0cbcfa8 100644
--- a/tests/language_2/this/implicit_this_test.dart
+++ b/tests/language_2/this/implicit_this_test.dart
@@ -17,7 +17,7 @@
 // abstract.
 class SubAbstract1 extends Abstract {}
 //    ^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
 // [cfe] The non-abstract class 'SubAbstract1' is missing implementations for these members:
 
 // This class does not implement "x", but is itself abstract, so that's OK.
@@ -29,7 +29,7 @@
 // abstract.
 class SubSubAbstract2 extends SubAbstract2 {}
 //    ^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
+// [analyzer] COMPILE_TIME_ERROR.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
 // [cfe] The non-abstract class 'SubSubAbstract2' is missing implementations for these members:
 
 class Concrete extends Abstract {
@@ -44,7 +44,7 @@
 void main() {
   new Abstract();
   //  ^^^^^^^^
-  // [analyzer] STATIC_WARNING.INSTANTIATE_ABSTRACT_CLASS
+  // [analyzer] COMPILE_TIME_ERROR.INSTANTIATE_ABSTRACT_CLASS
   // [cfe] The class 'Abstract' is abstract and can't be instantiated.
   Expect.equals('7', new Concrete().toString());
   Expect.equals('42', new SubConcrete(42).toString());
diff --git a/tests/language_2/type/checks_in_factory_method_test.dart b/tests/language_2/type/checks_in_factory_method_test.dart
index cae8f04..3be4613 100644
--- a/tests/language_2/type/checks_in_factory_method_test.dart
+++ b/tests/language_2/type/checks_in_factory_method_test.dart
@@ -22,7 +22,7 @@
 
     func("Hello World!");
     //   ^^^^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
     // [cfe] The argument type 'String' can't be assigned to the parameter type 'T'.
     return new Bar<T>();
   }
diff --git a/tests/language_2/type_object/first_class_types_literals_test.dart b/tests/language_2/type_object/first_class_types_literals_test.dart
index aa02a4d..e8fdca5 100644
--- a/tests/language_2/type_object/first_class_types_literals_test.dart
+++ b/tests/language_2/type_object/first_class_types_literals_test.dart
@@ -51,13 +51,13 @@
   // Test that operator calls on class literals go to Type.
   Expect.throwsNoSuchMethodError(() => C = 1);
   //                                   ^
-  // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_TYPE
   // [cfe] Can't assign to a type literal.
   //                                       ^
   // [analyzer] STATIC_TYPE_WARNING.INVALID_ASSIGNMENT
   Expect.throwsNoSuchMethodError(() => C++);
   //                                   ^
-  // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_TYPE
   // [cfe] Can't assign to a type literal.
   //                                    ^^
   // [analyzer] STATIC_TYPE_WARNING.UNDEFINED_OPERATOR
diff --git a/tests/language_2/type_promotion/functions_test.dart b/tests/language_2/type_promotion/functions_test.dart
index ab78d11..590f1cc 100644
--- a/tests/language_2/type_promotion/functions_test.dart
+++ b/tests/language_2/type_promotion/functions_test.dart
@@ -43,7 +43,7 @@
   b = funcAtoDyn(new B());
   c = funcAtoDyn(new C());
   //             ^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   //                 ^
   // [cfe] The argument type 'C' can't be assigned to the parameter type 'A'.
 
@@ -76,7 +76,7 @@
     // Returned value has type `void`, usage is restricted.
     Object o = funcDynToDyn(null);
     //         ^^^^^^^^^^^^^^^^^^
-    // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+    // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
     //                     ^
     // [cfe] This expression has type 'void' and can't be used.
   }
@@ -97,17 +97,17 @@
   FuncDynToVoid funcDynToVoid = func;
   a = funcDynToVoid(new A());
   //  ^^^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   //               ^
   // [cfe] This expression has type 'void' and can't be used.
   b = funcDynToVoid(new B());
   //  ^^^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   //               ^
   // [cfe] This expression has type 'void' and can't be used.
   c = funcDynToVoid(new C());
   //  ^^^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.USE_OF_VOID_RESULT
+  // [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
   //               ^
   // [cfe] This expression has type 'void' and can't be used.
 
diff --git a/tests/language_2/type_variable/conflict2_test.dart b/tests/language_2/type_variable/conflict2_test.dart
index 4a03e01..8b8439d 100644
--- a/tests/language_2/type_variable/conflict2_test.dart
+++ b/tests/language_2/type_variable/conflict2_test.dart
@@ -23,7 +23,7 @@
   // [analyzer] STATIC_TYPE_WARNING.INVOCATION_OF_NON_FUNCTION
   // [cfe] Method not found: 'T'.
   //              ^
-  // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
 
   // X is not in scope. NoSuchMethodError.
   static baz() => X();
@@ -49,7 +49,7 @@
   //                ^^^
   // [analyzer] STATIC_TYPE_WARNING.INVOCATION_OF_NON_FUNCTION_EXPRESSION
   //                 ^
-  // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
   // [cfe] Type variables can't be used in static members.
   //                   ^
   // [cfe] The method 'call' isn't defined for the class 'Type'.
@@ -63,7 +63,7 @@
   // Runtime type T not accessible from static context. Compile-time error.
   static garply() => T[0];
   //                 ^
-  // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
   // [cfe] Type variables can't be used in static members.
   //                  ^^^
   // [analyzer] STATIC_TYPE_WARNING.UNDEFINED_OPERATOR
@@ -78,7 +78,7 @@
   // Runtime type T not accessible from static context. Compile-time error.
   static fred() => T.m;
   //               ^
-  // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
   // [cfe] Type variables can't be used in static members.
   //                 ^
   // [analyzer] STATIC_TYPE_WARNING.UNDEFINED_GETTER
diff --git a/tests/language_2/type_variable/scope_test.dart b/tests/language_2/type_variable/scope_test.dart
index 10051d0..1b5cbb7 100644
--- a/tests/language_2/type_variable/scope_test.dart
+++ b/tests/language_2/type_variable/scope_test.dart
@@ -10,18 +10,18 @@
   static
   Foo<T>
   //  ^
-  // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
       m(
 //    ^
 // [cfe] Can only use type variables in instance methods.
     Foo<T>
     //  ^
-    // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+    // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
     // [cfe] Type variables can't be used in static members.
           f) {
     Foo<T> x = new Foo<String>();
     //  ^
-    // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+    // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
     // [cfe] Type variables can't be used in static members.
     //         ^^^^^^^^^^^^^^^^^
     // [analyzer] STATIC_TYPE_WARNING.INVALID_ASSIGNMENT
@@ -38,7 +38,7 @@
   // T is not in scope for a static field.
   static Foo<T> f1;
   //         ^
-  // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
   // [cfe] Type variables can't be used in static members.
   //            ^
   // [cfe] Verification of the generated program failed:
@@ -46,7 +46,7 @@
   static
   Foo<T>
   //  ^
-  // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
       get f {
       //  ^
       // [cfe] Can only use type variables in instance methods.
@@ -60,7 +60,7 @@
   // [cfe] Can only use type variables in instance methods.
                     Foo<T>
                     //  ^
-                    // [analyzer] STATIC_WARNING.TYPE_PARAMETER_REFERENCED_BY_STATIC
+                    // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
                     // [cfe] Type variables can't be used in static members.
       value) {}
 }
@@ -72,7 +72,7 @@
 main() {
   Foo.m(new Foo<String>());
   //    ^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   new I(new Foo<String>());
   Foo.f1 = new Foo<String>();
   //       ^^^^^^^^^^^^^^^^^
diff --git a/tests/language_2/unsorted/external_test.dart b/tests/language_2/unsorted/external_test.dart
index 1f71b6d..7d2f2af 100644
--- a/tests/language_2/unsorted/external_test.dart
+++ b/tests/language_2/unsorted/external_test.dart
@@ -43,7 +43,7 @@
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
   // [cfe] Expected ';' after this.
   //           ^^^^^^
-  // [analyzer] STATIC_WARNING.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
+  // [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
 
   external Foo.n21(val) : x = 1;
   //                    ^
@@ -67,7 +67,7 @@
   // [analyzer] SYNTACTIC_ERROR.EXTERNAL_FACTORY_REDIRECTION
   // [cfe] A redirecting factory can't be external.
   //                              ^^^
-  // [analyzer] STATIC_WARNING.REDIRECT_TO_INVALID_RETURN_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.REDIRECT_TO_INVALID_RETURN_TYPE
   // [cfe] The constructor function type 'Bar Function(dynamic)' isn't a subtype of 'Foo Function(dynamic)'.
 }
 
diff --git a/tests/language_2/variance/syntax/variance_type_parameter_error_syntax_test.dart b/tests/language_2/variance/syntax/variance_type_parameter_error_syntax_test.dart
index 28c1add..71e14caa 100644
--- a/tests/language_2/variance/syntax/variance_type_parameter_error_syntax_test.dart
+++ b/tests/language_2/variance/syntax/variance_type_parameter_error_syntax_test.dart
@@ -20,7 +20,7 @@
   // [analyzer] STATIC_TYPE_WARNING.UNDEFINED_OPERATOR
   // [cfe] The operator '<' isn't defined for the class 'Type'.
   //   ^^^
-  // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+  // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
   // [cfe] Expected ';' after this.
   //   ^^^
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
@@ -29,7 +29,7 @@
   // [analyzer] STATIC_TYPE_WARNING.UNDEFINED_OPERATOR
   // [cfe] The operator '>' isn't defined for the class 'Type'.
   //               ^^^
-  // [analyzer] STATIC_WARNING.UNDEFINED_IDENTIFIER
+  // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
   // [cfe] Getter not found: 'bar'.
 }
 
diff --git a/tests/language_2/variance/variance_in_inference_error_test.dart b/tests/language_2/variance/variance_in_inference_error_test.dart
index b481d4dd..4e79966 100644
--- a/tests/language_2/variance/variance_in_inference_error_test.dart
+++ b/tests/language_2/variance/variance_in_inference_error_test.dart
@@ -48,7 +48,7 @@
 //^^^^^^^^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.COULD_NOT_INFER
 //                                 ^^^^^^^^^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] The argument type 'Contravariant<String>' can't be assigned to the parameter type 'Contravariant<int>'.
 
   // String <: T <: int is not a valid constraint.
@@ -56,7 +56,7 @@
 //^^^^^^^^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.COULD_NOT_INFER
 //                                    ^^^^^^^^^^^^^^^^^^^^
-// [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
 // [cfe] The argument type 'Contravariant<int>' can't be assigned to the parameter type 'Contravariant<String>'.
 
   // Middle <: T <: Lower is not a valid constraint
diff --git a/tests/language_2/variance/variance_in_subtyping_error_test.dart b/tests/language_2/variance/variance_in_subtyping_error_test.dart
index d5697c7..9779d33 100644
--- a/tests/language_2/variance/variance_in_subtyping_error_test.dart
+++ b/tests/language_2/variance/variance_in_subtyping_error_test.dart
@@ -75,6 +75,6 @@
 
   testCall(listLower);
   //       ^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'List<Contravariant<Lower>>' can't be assigned to the parameter type 'Iterable<Contravariant<Middle>>'.
 }
diff --git a/tests/language_2/variance/variance_inout_inference_error_test.dart b/tests/language_2/variance/variance_inout_inference_error_test.dart
index ce4109f..4aab0b7 100644
--- a/tests/language_2/variance/variance_inout_inference_error_test.dart
+++ b/tests/language_2/variance/variance_inout_inference_error_test.dart
@@ -26,10 +26,10 @@
 //^^^^^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.COULD_NOT_INFER
   //          ^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'Invariant<Middle>' can't be assigned to the parameter type 'Invariant<Object>'.
   //                               ^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'Invariant<int>' can't be assigned to the parameter type 'Invariant<Object>'.
 
   // Middle <: T <: Middle and Upper <: T <: Upper are not valid constraints.
@@ -37,7 +37,7 @@
 //^^^^^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.COULD_NOT_INFER
   //          ^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'Invariant<Middle>' can't be assigned to the parameter type 'Invariant<Upper>'.
 
   // Middle <: T <: Middle and Lower <: T <: Lower are not valid constraints.
@@ -45,7 +45,7 @@
 //^^^^^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.COULD_NOT_INFER
   //                               ^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'Invariant<Lower>' can't be assigned to the parameter type 'Invariant<Middle>'.
 
   // Upper <: T
@@ -55,7 +55,7 @@
 //^^^^^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.COULD_NOT_INFER
   //          ^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'Invariant<Middle>' can't be assigned to the parameter type 'Invariant<Upper>'.
 
   // T <: Lower
diff --git a/tests/language_2/variance/variance_inout_subtyping_error_test.dart b/tests/language_2/variance/variance_inout_subtyping_error_test.dart
index d06f336..3bcec37 100644
--- a/tests/language_2/variance/variance_inout_subtyping_error_test.dart
+++ b/tests/language_2/variance/variance_inout_subtyping_error_test.dart
@@ -120,11 +120,11 @@
 
   testCall<Lower>(listMiddle);
   //              ^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'List<Invariant<Middle>>' can't be assigned to the parameter type 'Iterable<Invariant<Lower>>'.
 
   testCall<Middle>(listLower);
   //               ^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'List<Invariant<Lower>>' can't be assigned to the parameter type 'Iterable<Invariant<Middle>>'.
 }
diff --git a/tests/language_2/variance/variance_out_subtyping_error_test.dart b/tests/language_2/variance/variance_out_subtyping_error_test.dart
index a85f4cb..dd925e2 100644
--- a/tests/language_2/variance/variance_out_subtyping_error_test.dart
+++ b/tests/language_2/variance/variance_out_subtyping_error_test.dart
@@ -75,6 +75,6 @@
 
   testCall(listMiddle);
   //       ^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.ARGUMENT_TYPE_NOT_ASSIGNABLE
+  // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
   // [cfe] The argument type 'List<Covariant<Middle>>' can't be assigned to the parameter type 'Iterable<Covariant<Lower>>'.
 }
diff --git a/tests/lib/html/custom/element_upgrade_failure_test.dart b/tests/lib/html/custom/element_upgrade_failure_test.dart
index 947af1c..16469cf 100644
--- a/tests/lib/html/custom/element_upgrade_failure_test.dart
+++ b/tests/lib/html/custom/element_upgrade_failure_test.dart
@@ -41,13 +41,13 @@
     expect(() {
       upgrader.upgrade(new HtmlElementInterface());
       //                   ^^^^^^^^^^^^^^^^^^^^
-      // [analyzer] STATIC_WARNING.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT
+      // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT
     }, throws);
   });
 }
 
 class HtmlElementInterface implements HtmlElement {
   //  ^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
+  // [analyzer] COMPILE_TIME_ERROR.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
   HtmlElementInterface.created();
 }
diff --git a/tests/standalone/io/bytes_builder_test.dart b/tests/lib/typed_data/bytes_builder_test.dart
similarity index 98%
rename from tests/standalone/io/bytes_builder_test.dart
rename to tests/lib/typed_data/bytes_builder_test.dart
index 5b6a6b9..5c1dd69 100644
--- a/tests/standalone/io/bytes_builder_test.dart
+++ b/tests/lib/typed_data/bytes_builder_test.dart
@@ -2,7 +2,6 @@
 // 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 "dart:io";
 import "dart:typed_data";
 import "package:expect/expect.dart";
 
diff --git a/tests/lib_2/html/custom/element_upgrade_failure_test.dart b/tests/lib_2/html/custom/element_upgrade_failure_test.dart
index 28248ca..db46df5 100644
--- a/tests/lib_2/html/custom/element_upgrade_failure_test.dart
+++ b/tests/lib_2/html/custom/element_upgrade_failure_test.dart
@@ -43,14 +43,14 @@
     expect(() {
       upgrader.upgrade(new HtmlElementInterface());
       //                   ^^^^^^^^^^^^^^^^^^^^
-      // [analyzer] STATIC_WARNING.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT
+      // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT
     }, throws);
   });
 }
 
 class HtmlElementInterface implements HtmlElement {
   //  ^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_WARNING.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
+  // [analyzer] COMPILE_TIME_ERROR.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
   HtmlElementInterface.created();
 }
 
diff --git a/tests/standalone/io/bytes_builder_test.dart b/tests/lib_2/typed_data/bytes_builder_test.dart
similarity index 98%
copy from tests/standalone/io/bytes_builder_test.dart
copy to tests/lib_2/typed_data/bytes_builder_test.dart
index 5b6a6b9..5c1dd69 100644
--- a/tests/standalone/io/bytes_builder_test.dart
+++ b/tests/lib_2/typed_data/bytes_builder_test.dart
@@ -2,7 +2,6 @@
 // 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 "dart:io";
 import "dart:typed_data";
 import "package:expect/expect.dart";
 
diff --git a/tests/standalone/io/file_test.dart b/tests/standalone/io/file_test.dart
index 1ba41eb..38fd51b 100644
--- a/tests/standalone/io/file_test.dart
+++ b/tests/standalone/io/file_test.dart
@@ -1602,6 +1602,53 @@
     }
   }
 
+  static void testAbsolute() {
+    var currentDirectory = Directory.current;
+    Directory.current = tempDirectory;
+    var file = File("temp.txt");
+    Expect.isFalse(file.isAbsolute);
+    file.writeAsStringSync("content");
+
+    var absFile = file.absolute;
+    Expect.isTrue(absFile.isAbsolute);
+    Expect.isTrue(absFile.path.startsWith(tempDirectory.path));
+
+    Expect.equals("content", absFile.readAsStringSync());
+
+    if (Platform.isWindows &&
+        tempDirectory.path.startsWith(RegExp(r"^[a-zA-Z]:"))) {
+      var driveRelativeFile = File(absFile.path.substring(2));
+      Expect.isFalse(driveRelativeFile.isAbsolute);
+      Expect.equals("content", driveRelativeFile.readAsStringSync());
+
+      var absFile3 = driveRelativeFile.absolute;
+      Expect.isTrue(absFile3.isAbsolute);
+      Expect.equals(absFile.path, absFile3.path);
+      Expect.equals("content", absFile3.readAsStringSync());
+
+      // Convert CWD from X:\path to \\localhost\X$\path.
+      var uncPath = r"\\localhost\" +
+          tempDirectory.path[0] +
+          r"$" +
+          tempDirectory.path.substring(2);
+      Directory.current = uncPath;
+      Expect.equals("content", file.readAsStringSync());
+
+      var absFile4 = file.absolute;
+      Expect.isTrue(absFile4.isAbsolute);
+      Expect.equals("content", absFile4.readAsStringSync());
+
+      Expect.equals("content", driveRelativeFile.readAsStringSync());
+
+      var absFile5 = driveRelativeFile.absolute;
+      Expect.isTrue(absFile5.isAbsolute);
+      Expect.isTrue(absFile5.path.startsWith(uncPath));
+      Expect.equals("content", absFile5.readAsStringSync());
+    }
+    file.deleteSync();
+    Directory.current = currentDirectory;
+  }
+
   static String getFilename(String path) {
     return Platform.script.resolve(path).toFilePath();
   }
@@ -1677,6 +1724,7 @@
       testSetLastAccessedSync();
       testSetLastAccessedSyncDirectory();
       testDoubleAsyncOperation();
+      testAbsolute();
       asyncEnd();
     });
   }
diff --git a/tests/standalone/io/http_linklocal_ipv6_test.dart b/tests/standalone/io/http_linklocal_ipv6_test.dart
index ea4e54d..e99162b 100644
--- a/tests/standalone/io/http_linklocal_ipv6_test.dart
+++ b/tests/standalone/io/http_linklocal_ipv6_test.dart
@@ -16,8 +16,13 @@
   //    ip address show
   asyncStart();
   try {
-    // Make sure the address here is the same as what it shows in "ip address show"
-    var ipv6 = 'fe80:1::10%tap0';
+    // Make sure the address here is the same as what it shows in
+    // "ip address show"
+    var ipv6 = 'fe80:1::1%tap0';
+
+    // Parses a Link-local address on Linux and Windows will throw an exception.
+    InternetAddress(ipv6);
+
     HttpServer.bind(ipv6, 0).then((server) {
       server.listen((request) {
         var timer = new Timer.periodic(const Duration(milliseconds: 0), (_) {
diff --git a/tests/standalone_2/io/bytes_builder_test.dart b/tests/standalone_2/io/bytes_builder_test.dart
deleted file mode 100644
index 5b6a6b9..0000000
--- a/tests/standalone_2/io/bytes_builder_test.dart
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (c) 2016, 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 "dart:io";
-import "dart:typed_data";
-import "package:expect/expect.dart";
-
-main() {
-  for (var copying in [true, false]) {
-    var b;
-    testLength(n) {
-      Expect.equals(n, b.length);
-      if (n == 0) {
-        Expect.isTrue(b.isEmpty, "isEmpty: #${b.length}");
-        Expect.isFalse(b.isNotEmpty, "isNotEmpty: #${b.length}");
-      } else {
-        Expect.isTrue(b.isNotEmpty, "isNotEmpty: #${b.length}");
-        Expect.isFalse(b.isEmpty, "isEmpty: #${b.length}");
-      }
-    }
-
-    b = new BytesBuilder(copy: copying);
-    testLength(0);
-
-    b.addByte(0);
-    testLength(1);
-
-    b.add([1, 2, 3]);
-    testLength(4);
-
-    b.add(<int>[4, 5, 6]);
-    testLength(7);
-
-    b.add(new Uint8List.fromList([7, 8, 9]));
-    testLength(10);
-
-    b.add(new Uint16List.fromList([10, 11, 12]));
-    testLength(13);
-
-    var bytes = b.toBytes();
-    Expect.isTrue(bytes is Uint8List);
-    Expect.listEquals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], bytes);
-    testLength(13);
-
-    b.add("\x0d\x0e\x0f".codeUnits);
-    testLength(16);
-
-    bytes = b.takeBytes();
-    testLength(0);
-    Expect.isTrue(bytes is Uint8List);
-    Expect.listEquals(
-        [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], bytes);
-
-    b.addByte(0);
-    testLength(1);
-
-    b.clear();
-    testLength(0);
-
-    b.addByte(0);
-    testLength(1);
-  }
-}
diff --git a/tests/standalone_2/io/file_test.dart b/tests/standalone_2/io/file_test.dart
index 3b0901d..0d73ef9 100644
--- a/tests/standalone_2/io/file_test.dart
+++ b/tests/standalone_2/io/file_test.dart
@@ -1601,6 +1601,53 @@
     }
   }
 
+  static void testAbsolute() {
+    var currentDirectory = Directory.current;
+    Directory.current = tempDirectory;
+    var file = File("temp.txt");
+    Expect.isFalse(file.isAbsolute);
+    file.writeAsStringSync("content");
+
+    var absFile = file.absolute;
+    Expect.isTrue(absFile.isAbsolute);
+    Expect.isTrue(absFile.path.startsWith(tempDirectory.path));
+
+    Expect.equals("content", absFile.readAsStringSync());
+
+    if (Platform.isWindows &&
+        tempDirectory.path.startsWith(RegExp(r"^[a-zA-Z]:"))) {
+      var driveRelativeFile = File(absFile.path.substring(2));
+      Expect.isFalse(driveRelativeFile.isAbsolute);
+      Expect.equals("content", driveRelativeFile.readAsStringSync());
+
+      var absFile3 = driveRelativeFile.absolute;
+      Expect.isTrue(absFile3.isAbsolute);
+      Expect.equals(absFile.path, absFile3.path);
+      Expect.equals("content", absFile3.readAsStringSync());
+
+      // Convert CWD from X:\path to \\localhost\X$\path.
+      var uncPath = r"\\localhost\" +
+          tempDirectory.path[0] +
+          r"$" +
+          tempDirectory.path.substring(2);
+      Directory.current = uncPath;
+      Expect.equals("content", file.readAsStringSync());
+
+      var absFile4 = file.absolute;
+      Expect.isTrue(absFile4.isAbsolute);
+      Expect.equals("content", absFile4.readAsStringSync());
+
+      Expect.equals("content", driveRelativeFile.readAsStringSync());
+
+      var absFile5 = driveRelativeFile.absolute;
+      Expect.isTrue(absFile5.isAbsolute);
+      Expect.isTrue(absFile5.path.startsWith(uncPath));
+      Expect.equals("content", absFile5.readAsStringSync());
+    }
+    file.deleteSync();
+    Directory.current = currentDirectory;
+  }
+
   static String getFilename(String path) {
     return Platform.script.resolve(path).toFilePath();
   }
@@ -1676,6 +1723,7 @@
       testSetLastAccessedSync();
       testSetLastAccessedSyncDirectory();
       testDoubleAsyncOperation();
+      testAbsolute();
       asyncEnd();
     });
   }
diff --git a/tests/standalone_2/io/http_linklocal_ipv6_test.dart b/tests/standalone_2/io/http_linklocal_ipv6_test.dart
index ea4e54d..e99162b 100644
--- a/tests/standalone_2/io/http_linklocal_ipv6_test.dart
+++ b/tests/standalone_2/io/http_linklocal_ipv6_test.dart
@@ -16,8 +16,13 @@
   //    ip address show
   asyncStart();
   try {
-    // Make sure the address here is the same as what it shows in "ip address show"
-    var ipv6 = 'fe80:1::10%tap0';
+    // Make sure the address here is the same as what it shows in
+    // "ip address show"
+    var ipv6 = 'fe80:1::1%tap0';
+
+    // Parses a Link-local address on Linux and Windows will throw an exception.
+    InternetAddress(ipv6);
+
     HttpServer.bind(ipv6, 0).then((server) {
       server.listen((request) {
         var timer = new Timer.periodic(const Duration(milliseconds: 0), (_) {
diff --git a/tools/VERSION b/tools/VERSION
index b03de39..0944177 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -33,7 +33,7 @@
 MAJOR 2
 MINOR 10
 PATCH 0
-PRERELEASE 0
+PRERELEASE 1
 PRERELEASE_PATCH 0
 ABI_VERSION 39
 OLDEST_SUPPORTED_ABI_VERSION 39
diff --git a/tools/bots/compare_results.dart b/tools/bots/compare_results.dart
index b6f0ce4..4b64057 100755
--- a/tools/bots/compare_results.dart
+++ b/tools/bots/compare_results.dart
@@ -11,8 +11,7 @@
 import 'dart:io';
 
 import 'package:args/args.dart';
-
-import 'results.dart';
+import 'package:test_runner/bot_results.dart';
 
 class Result {
   final String configuration;
diff --git a/tools/bots/extend_results.dart b/tools/bots/extend_results.dart
index f8ba5c1..859c02b 100644
--- a/tools/bots/extend_results.dart
+++ b/tools/bots/extend_results.dart
@@ -8,7 +8,7 @@
 import 'dart:convert';
 import 'dart:io';
 
-import 'results.dart';
+import 'package:test_runner/bot_results.dart';
 
 const skipped = 'skipped';
 
diff --git a/tools/bots/test_matrix.json b/tools/bots/test_matrix.json
index 5ed6cd3..5cc65e9 100644
--- a/tools/bots/test_matrix.json
+++ b/tools/bots/test_matrix.json
@@ -3321,7 +3321,8 @@
             "runtime",
             "gen_snapshot",
             "dart_precompiled_runtime",
-            "kernel-service.dart.snapshot"
+            "kernel-service.dart.snapshot",
+            "dartdevc_test"
           ]
         },
         {
diff --git a/tools/bots/try_benchmarks.sh b/tools/bots/try_benchmarks.sh
index 09d4229..7241cb5 100755
--- a/tools/bots/try_benchmarks.sh
+++ b/tools/bots/try_benchmarks.sh
@@ -75,9 +75,7 @@
     rm -f linux-x64_profile.tar.gz
   elif [ "$command" = linux-ia32-build ]; then
     # NOTE: These are duplicated in tools/bots/test_matrix.json, keep in sync.
-    ./tools/build.py --mode=release --arch=ia32 create_sdk
-    ./tools/build.py --mode=release --arch=ia32 runtime
-    ./tools/build.py --mode=release --arch=ia32 kernel-service.dart.snapshot
+    ./tools/build.py --mode=release --arch=ia32 create_sdk runtime kernel-service.dart.snapshot
   elif [ "$command" = linux-ia32-archive ]; then
     strip -w \
       -K 'kDartVmSnapshotData' \
@@ -204,11 +202,7 @@
     rm -rf tmp
   elif [ "$command" = linux-x64-build ]; then
     # NOTE: These are duplicated in tools/bots/test_matrix.json, keep in sync.
-    ./tools/build.py --mode=release --arch=x64 create_sdk
-    ./tools/build.py --mode=release --arch=x64 runtime
-    ./tools/build.py --mode=release --arch=x64 gen_snapshot
-    ./tools/build.py --mode=release --arch=x64 dart_precompiled_runtime
-    ./tools/build.py --mode=release --arch=x64 kernel-service.dart.snapshot
+    ./tools/build.py --mode=release --arch=x64 create_sdk runtime gen_snapshot dart_precompiled_runtime kernel-service.dart.snapshot dartdevc_test
   elif [ "$command" = linux-x64-archive ]; then
     strip -w \
       -K 'kDartVmSnapshotData' \
@@ -306,6 +300,10 @@
       third_party/d8/linux/x64 \
       third_party/firefox_jsshell/linux/ \
       out/ReleaseX64/dart_precompiled_runtime \
+      out/ReleaseX64/gen/utils/dartdevc/kernel/ \
+      out/ReleaseX64/ddc_outline.dill \
+      out/ReleaseX64/gen/utils/dartdevc/sound/ \
+      out/ReleaseX64/ddc_outline_sound.dill \
       sdk \
       samples-dev/swarm \
       third_party/pkg \
@@ -350,6 +348,8 @@
     third_party/d8/linux/x64/d8 --stack_size=1024 sdk/lib/_internal/js_runtime/lib/preambles/d8.js out.js
     out/ReleaseX64/dart-sdk/bin/dart pkg/dev_compiler/tool/ddb -r d8 -b third_party/d8/linux/x64/d8 hello.dart
     out/ReleaseX64/dart-sdk/bin/dart pkg/dev_compiler/tool/ddb -r d8 -b third_party/d8/linux/x64/d8 --mode=compile --compile-vm-options=--print-metrics --packages=.packages --out out.js hello.dart
+    out/ReleaseX64/dart-sdk/bin/dart pkg/dev_compiler/tool/ddb -r d8 -b third_party/d8/linux/x64/d8 --enable-experiment=non-nullable --sound-null-safety --debug hello.dart
+    out/ReleaseX64/dart-sdk/bin/dart pkg/dev_compiler/tool/ddb -r d8 -b third_party/d8/linux/x64/d8 --enable-experiment=non-nullable --sound-null-safety --debug --mode=compile --compile-vm-options=--print-metrics --packages=.packages --out out.js hello.dart
     out/ReleaseX64/dart pkg/front_end/tool/perf.dart parse hello.dart
     out/ReleaseX64/dart pkg/front_end/tool/perf.dart scan hello.dart
     out/ReleaseX64/dart pkg/front_end/tool/fasta_perf.dart kernel_gen_e2e hello.dart
diff --git a/tools/bots/update_flakiness.dart b/tools/bots/update_flakiness.dart
index abf1aa8..71bf402 100755
--- a/tools/bots/update_flakiness.dart
+++ b/tools/bots/update_flakiness.dart
@@ -10,7 +10,7 @@
 
 import 'package:args/args.dart';
 
-import 'results.dart';
+import 'package:test_runner/bot_results.dart';
 
 main(List<String> args) async {
   final parser = new ArgParser();
diff --git a/tools/test.dart b/tools/test.dart
index dfcbf5d..000a4ccc5 100755
--- a/tools/test.dart
+++ b/tools/test.dart
@@ -1,592 +1,10 @@
 #!/usr/bin/env dart
+
 // Copyright (c) 2018, 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:test_runner/test_runner.dart';
 
-// Run tests like on the given builder and/or named configuration.
-
-import 'dart:async';
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:args/args.dart';
-import 'package:smith/smith.dart';
-
-import 'bots/results.dart';
-
-const int deflakingCount = 5;
-
-/// Quotes a string in shell single quote mode. This function produces a single
-/// shell argument that evaluates to the exact string provided, handling any
-/// special characters in the input string. Shell single quote mode works uses
-/// the single quote character as the delimiter and uses the characters
-/// in-between verbatim without any special processing. To insert the single
-/// quote character itself, escape single quote mode, insert an escaped single
-/// quote, and then return to single quote mode.
-///
-/// Examples:
-///   foo becomes 'foo'
-///   foo bar becomes 'foo bar'
-///   foo\ bar becomes 'foo\ bar'
-///   foo's bar becomes 'foo '\''s bar'
-///   foo "b"ar becomes 'foo "b"'
-///   foo
-///   bar becomes 'foo
-///   bar'
-String shellSingleQuote(String string) {
-  return "'${string.replaceAll("'", "'\\''")}'";
-}
-
-/// Like [shellSingleQuote], but if the string only contains safe ASCII
-/// characters, don't quote it. Note that it's not always safe to omit the
-/// quotes even if the string only has safe characters, as doing so might match
-/// a shell keyword or a shell builtin in the first argument in a command. It
-/// should be safe to use this for the second argument onwards in a command.
-String simpleShellSingleQuote(String string) {
-  return new RegExp(r"^[a-zA-Z0-9%+,./:_-]*$").hasMatch(string)
-      ? string
-      : shellSingleQuote(string);
-}
-
-/// Runs a process and exits likewise if the process exits non-zero.
-Future<ProcessResult> runProcess(String executable, List<String> arguments,
-    {bool runInShell = false}) async {
-  final processResult =
-      await Process.run(executable, arguments, runInShell: runInShell);
-  if (processResult.exitCode != 0) {
-    final command =
-        [executable, ...arguments].map(simpleShellSingleQuote).join(" ");
-    throw new Exception("Command exited ${processResult.exitCode}: $command\n"
-        "${processResult.stdout}\n${processResult.stderr}");
-  }
-  return processResult;
-}
-
-/// Runs a process and exits likewise if the process exits non-zero, but let the
-/// child process inherit out stdio handles.
-Future<ProcessResult> runProcessInheritStdio(
-    String executable, List<String> arguments,
-    {bool runInShell = false}) async {
-  final process = await Process.start(executable, arguments,
-      mode: ProcessStartMode.inheritStdio, runInShell: runInShell);
-  final exitCode = await process.exitCode;
-  final processResult = new ProcessResult(process.pid, exitCode, "", "");
-  if (processResult.exitCode != 0) {
-    final command =
-        [executable, ...arguments].map(simpleShellSingleQuote).join(" ");
-    throw new Exception("Command exited ${processResult.exitCode}: $command");
-  }
-  return processResult;
-}
-
-/// Finds the branch of a builder given the list of branches.
-String branchOfBuilder(String builder, List<String> branches) {
-  return branches.where((branch) => branch != "master").firstWhere(
-      (branch) => builder.endsWith("-$branch"),
-      orElse: () => "master");
-}
-
-/// Finds the named configuration to test according to the test matrix
-/// information and the command line options.
-Map<String, Set<Builder>> resolveNamedConfigurations(
-    TestMatrix testMatrix,
-    String requestedBranch,
-    List<String> requestedNamedConfigurations,
-    String requestedBuilder) {
-  assert(requestedBranch != null);
-  final testedConfigurations = <String, Set<Builder>>{};
-  var foundBuilder = false;
-  for (final builder in testMatrix.builders) {
-    if (requestedBuilder != null && builder.name != requestedBuilder) {
-      continue;
-    }
-    final branch = branchOfBuilder(builder.name, testMatrix.branches);
-    if (branch != requestedBranch) {
-      if (requestedBuilder == null) {
-        continue;
-      }
-      stderr.writeln("error: Builder $requestedBuilder is on branch $branch "
-          "rather than $requestedBranch");
-      stderr.writeln("error: To compare with that branch, use: -B $branch");
-      return null;
-    }
-    foundBuilder = true;
-    for (final step in builder.steps.where((step) => step.isTestStep)) {
-      final testedConfiguration = step.testedConfiguration;
-      if (testedConfiguration == null) {
-        // This test step does not use a configuration; for example,
-        // because it is a simple script that does not produce results.
-        continue;
-      }
-      final namedConfiguration = testedConfiguration.name;
-      if (requestedNamedConfigurations.isEmpty ||
-          requestedNamedConfigurations.contains(namedConfiguration)) {
-        testedConfigurations
-            .putIfAbsent(namedConfiguration, () => {})
-            .add(builder);
-      }
-    }
-  }
-  if (requestedBuilder != null && !foundBuilder) {
-    stderr.writeln("error: Builder $requestedBuilder doesn't exist");
-    return null;
-  }
-  if (requestedBuilder != null &&
-      requestedNamedConfigurations.isEmpty &&
-      testedConfigurations.isEmpty) {
-    stderr.writeln("error: Builder $requestedBuilder isn't testing any named "
-        "configurations");
-    return null;
-  }
-  if (requestedNamedConfigurations.isNotEmpty) {
-    var hasUntestedConfiguration = false;
-    for (final requestedConfiguration in requestedNamedConfigurations) {
-      if (!testedConfigurations.containsKey(requestedConfiguration)) {
-        final builder = requestedBuilder != null
-            ? "builder $requestedBuilder"
-            : "any builder";
-        stderr.writeln("error: The named configuration "
-            "$requestedConfiguration isn't tested on $builder");
-        hasUntestedConfiguration = true;
-      }
-    }
-    if (hasUntestedConfiguration) {
-      return null;
-    }
-  }
-
-  return testedConfigurations;
-}
-
-/// Locates the merge base between head and the [branch] on the given [remote].
-Future<String> findMergeBase(String remote, String branch) async {
-  final arguments = ["merge-base", "$remote/$branch", "HEAD"];
-  final result =
-      await Process.run("git", arguments, runInShell: Platform.isWindows);
-  if (result.exitCode != 0) {
-    throw new Exception("Failed to run: git ${arguments.join(' ')}\n"
-        "stdout:\n${result.stdout}\n"
-        "stderr:\n${result.stderr}\n");
-  }
-  return LineSplitter.split(result.stdout).first;
-}
-
-/// Exception thrown when looking up the build for a commit failed.
-class CommitNotBuiltException implements Exception {
-  final String reason;
-
-  CommitNotBuiltException(this.reason);
-
-  String toString() => reason;
-}
-
-/// The result after searching for a build of a commit.
-class BuildSearchResult {
-  final int build;
-  final String commit;
-
-  BuildSearchResult(this.build, this.commit);
-}
-
-/// Locates the build number of the [commit] on the [builder], or throws an
-/// exception if the builder hasn't built the commit.
-Future<BuildSearchResult> searchForBuild(String builder, String commit) async {
-  final requestUrl = Uri.parse(
-      "https://cr-buildbucket.appspot.com/_ah/api/buildbucket/v1/search"
-      "?bucket=luci.dart.ci.sandbox"
-      "&tag=builder%3A$builder"
-      "&tag=buildset%3Acommit%2Fgit%2F$commit"
-      "&fields=builds(status%2Ctags%2Curl)");
-  final client = new HttpClient();
-  final request = await client.getUrl(requestUrl);
-  final response = await request.close();
-  final Map<String, dynamic> object = await response
-      .cast<List<int>>()
-      .transform(new Utf8Decoder())
-      .transform(new JsonDecoder())
-      .first;
-  client.close();
-  final builds = object["builds"];
-  if (builds == null || builds.isEmpty) {
-    throw new CommitNotBuiltException(
-        "Builder $builder hasn't built commit $commit");
-  }
-  final build = builds.last;
-  final tags = (build["tags"] as List).cast<String>();
-  final buildAddressTag =
-      tags.firstWhere((tag) => tag.startsWith("build_address:"));
-  final buildAddress = buildAddressTag.substring("build_address:".length);
-  if (build["status"] != "COMPLETED") {
-    throw new CommitNotBuiltException(
-        "Build $buildAddress isn't completed yet");
-  }
-  return new BuildSearchResult(int.parse(buildAddress.split("/").last), commit);
-}
-
-Future<BuildSearchResult> searchForApproximateBuild(
-    String builder, String commit) async {
-  try {
-    return await searchForBuild(builder, commit);
-  } on CommitNotBuiltException catch (e) {
-    print("Warning: $e, searching for an inexact previous build...");
-    final int limit = 25;
-    final arguments = [
-      "rev-list",
-      "$commit~$limit..$commit~1",
-      "--first-parent",
-      "--topo-order"
-    ];
-    final processResult = await Process.run("git", arguments, runInShell: true);
-    if (processResult.exitCode != 0) {
-      throw new Exception("Failed to list potential commits: git $arguments\n"
-          "exitCode: ${processResult.exitCode}\n"
-          "stdout: ${processResult.stdout}\n"
-          "stdout: ${processResult.stderr}\n");
-    }
-    for (final fallbackCommit in LineSplitter.split(processResult.stdout)) {
-      try {
-        return await searchForBuild(builder, fallbackCommit);
-      } catch (e) {
-        print(
-            "Warning: Searching for inexact baseline build: $e, continuing...");
-      }
-    }
-    throw new CommitNotBuiltException(
-        "Failed to locate approximate baseline results for "
-        "$commit in past $limit commits");
-  }
-}
-
-void overrideConfiguration(Map<String, Map<String, dynamic>> results,
-    String configuration, String newConfiguration) {
-  results.forEach((String key, Map<String, dynamic> result) {
-    if (result["configuration"] == configuration) {
-      result["configuration"] = newConfiguration;
-    }
-  });
-}
-
-void printUsage(ArgParser parser, {String error, bool printOptions: false}) {
-  if (error != null) {
-    print("$error\n");
-    exitCode = 1;
-  }
-  print("""
-Usage: test.dart -b [BUILDER] -n [CONFIGURATION] [OPTION]... [--]
-                 [TEST.PY OPTION]... [SELECTOR]...
-
-Run tests and compare with the results on the given builder. Either the -n or
-the -b option, or both, must be used. Any options following -- and non-option
-arguments will be forwarded to test.py invocations. The specified named
-configuration's results will be downloaded from the specified builder. If only a
-named configuration is specified, the results are downloaded from the
-appropriate builders. If only a builder is specified, the default named
-configuration is used if the builder only has a single named configuration.
-Otherwise the available named configurations are listed.
-
-See the documentation at https://goto.google.com/dart-status-file-free-workflow
-""");
-  if (printOptions) {
-    print(parser.usage);
-  } else {
-    print("Run test.dart --help to see all options.");
-  }
-}
-
-void main(List<String> args) async {
-  final parser = new ArgParser();
-  parser.addOption("builder",
-      abbr: "b", help: "Run tests like on the given builder");
-  parser.addOption("branch",
-      abbr: "B",
-      help: "Select the builders building this branch",
-      defaultsTo: "master");
-  parser.addOption("commit", abbr: "C", help: "Compare with this commit");
-  parser.addFlag("deflake",
-      help: "Re-run failing newly tests $deflakingCount times.");
-  parser.addFlag("report-flakes",
-      help: "Report test failures for tests known to be flaky.\n"
-          "This ignores all flakiness data from CI but flakes\n"
-          "detected by --deflake will remain hidden");
-  parser.addFlag("list-configurations",
-      help: "Output list of configurations.", negatable: false);
-  parser.addMultiOption("named-configuration",
-      abbr: "n",
-      help: "The named test configuration(s) that supplies the\nvalues for all "
-          "test options, specifying how tests\nshould be run.");
-  parser.addOption("local-configuration",
-      abbr: "N",
-      help: "Use a different named configuration for local\ntesting than the "
-          "named configuration the baseline\nresults were downloaded for. The "
-          "results may be\ninexact if the baseline configuration is "
-          "different.");
-  parser.addOption("remote",
-      abbr: "R",
-      help: "Compare with this remote and git branch",
-      defaultsTo: "origin");
-  parser.addFlag("help", help: "Show the program usage.", negatable: false);
-
-  ArgResults options;
-  try {
-    options = parser.parse(args);
-  } on FormatException catch (exception) {
-    printUsage(parser, error: exception.message);
-    return;
-  }
-
-  if (options["help"]) {
-    printUsage(parser, printOptions: true);
-    return;
-  }
-
-  if (options["list-configurations"]) {
-    final process = await Process.start(
-        "python", ["tools/test.py", "--list-configurations"],
-        mode: ProcessStartMode.inheritStdio, runInShell: Platform.isWindows);
-    exitCode = await process.exitCode;
-    return;
-  }
-
-  final requestedBuilder = options["builder"];
-  final requestedNamedConfigurations =
-      (options["named-configuration"] as List).cast<String>();
-  final localConfiguration = options["local-configuration"] as String;
-
-  if (requestedBuilder == null && requestedNamedConfigurations.isEmpty) {
-    printUsage(parser,
-        error: "Please specify either a configuration (-n) or "
-            "a builder (-b)");
-    return;
-  }
-
-  if (localConfiguration != null && requestedNamedConfigurations.length > 1) {
-    printUsage(parser,
-        error: "Local configuration (-N) can only be used with a"
-            " single named configuration (-n)");
-    return;
-  }
-
-  // Locate gsutil.py.
-  gsutilPy =
-      Platform.script.resolve("../third_party/gsutil/gsutil.py").toFilePath();
-
-  // Load the test matrix.
-  final testMatrixPath = Platform.script.resolve("bots/test_matrix.json");
-  final testMatrix = TestMatrix.fromPath(testMatrixPath.toFilePath());
-  // Determine what named configuration to run and which builders to download
-  // existing results from.
-  final testedConfigurations = resolveNamedConfigurations(testMatrix,
-      options["branch"], requestedNamedConfigurations, requestedBuilder);
-  if (testedConfigurations == null) {
-    // No valid configuration could be found. The error has already been
-    // reported by [resolveConfigurations].
-    exitCode = 1;
-    return;
-  }
-  final namedConfigurations = testedConfigurations.keys.toSet();
-  final builders =
-      testedConfigurations.values.expand((builders) => builders).toSet();
-  // Print information about the resolved builders to compare with.
-  for (final namedConfiguration in namedConfigurations) {
-    final testedBuilders = testedConfigurations[namedConfiguration];
-    final onWhichBuilders = testedBuilders.length == 1
-        ? "builder ${testedBuilders.single.name}"
-        : "builders${testedBuilders.map((b) => "\n  ${b.name}").join()}";
-    if (localConfiguration != null) {
-      print("Testing named configuration $localConfiguration "
-          "compared with configuration ${namedConfiguration} "
-          "on $onWhichBuilders");
-    } else {
-      print("Testing named configuration $namedConfiguration "
-          "compared with $onWhichBuilders");
-    }
-  }
-  // Use given commit or find out where the current HEAD branched.
-  final commit = options["commit"] ??
-      await findMergeBase(options["remote"], options["branch"]);
-  print("Base commit is $commit");
-  // Store the downloaded results and our test results in a temporary directory.
-  final outDirectory = await Directory.systemTemp.createTemp("test.dart.");
-  try {
-    final tasks = <Future>[];
-    bool needsConfigurationOverride = localConfiguration != null &&
-        localConfiguration != namedConfigurations.single;
-    bool needsMerge = builders.length > 1;
-    final inexactBuilds = <String, String>{};
-    var previousFileName = "previous.json";
-    var flakyFileName = "flaky.json";
-    var downloadNumber = 0;
-    // Download the previous results and flakiness info from cloud storage.
-    for (final builder in builders) {
-      final builderName = builder.name;
-      if (needsMerge) {
-        previousFileName = "previous-$downloadNumber.json";
-        flakyFileName = "flaky-$downloadNumber.json";
-        downloadNumber++;
-      }
-      print("Finding build on builder $builderName to compare with...");
-      // Use the buildbucket API to search for builds of the right commit.
-      final buildSearchResult =
-          await searchForApproximateBuild(builderName, commit);
-      if (buildSearchResult.commit != commit) {
-        print("Warning: Using commit ${buildSearchResult.commit} "
-            "as baseline instead of $commit for $builderName");
-        inexactBuilds[builderName] = buildSearchResult.commit;
-      }
-      final buildNumber = buildSearchResult.build.toString();
-      print("Downloading results from builder $builderName "
-          "build $buildNumber...");
-      tasks.add(cpGsutil(
-          buildFileCloudPath(builderName, buildNumber, "results.json"),
-          "${outDirectory.path}/$previousFileName"));
-      if (!options["report-flakes"]) {
-        tasks.add(cpGsutil(
-            buildFileCloudPath(builderName, buildNumber, "flaky.json"),
-            "${outDirectory.path}/$flakyFileName"));
-      }
-    }
-    // Run the tests.
-    final configurationsToRun = localConfiguration != null
-        ? <String>[localConfiguration]
-        : namedConfigurations;
-    print("".padLeft(80, "="));
-    print("Running tests");
-    print("".padLeft(80, "="));
-    await runProcessInheritStdio(
-        "python",
-        [
-          "tools/test.py",
-          "--named-configuration=${configurationsToRun.join(",")}",
-          "--output-directory=${outDirectory.path}",
-          "--clean-exit",
-          "--silent-failures",
-          "--write-results",
-          "--write-logs",
-          ...options.rest,
-        ],
-        runInShell: Platform.isWindows);
-    // Wait for the downloads and the test run to complete.
-    await Future.wait(tasks);
-    // Merge the results and flaky data downloaded from the builders.
-    final mergedResults = <String, Map<String, dynamic>>{};
-    final mergedFlaky = <String, Map<String, dynamic>>{};
-    if (needsMerge || needsConfigurationOverride) {
-      for (int i = 0; i < downloadNumber; ++i) {
-        previousFileName = needsMerge ? "previous-$i.json" : "previous.json";
-        var results =
-            await loadResultsMap("${outDirectory.path}/$previousFileName");
-        if (needsConfigurationOverride) {
-          overrideConfiguration(
-              results, namedConfigurations.single, localConfiguration);
-        }
-        mergedResults.addAll(results);
-        if (!options["report-flakes"]) {
-          flakyFileName = needsMerge ? "flaky-$i.json" : "flaky.json";
-          var flakyTests =
-              await loadResultsMap("${outDirectory.path}/$flakyFileName");
-          if (needsConfigurationOverride) {
-            overrideConfiguration(
-                flakyTests, namedConfigurations.single, localConfiguration);
-          }
-          mergedFlaky.addAll(flakyTests);
-        }
-      }
-    }
-    // Write out the merged results for the builders.
-    if (needsMerge || needsConfigurationOverride) {
-      await new File("${outDirectory.path}/previous.json").writeAsString(
-          mergedResults.values.map((data) => jsonEncode(data) + "\n").join(""));
-    }
-    // Ensure that there is a flaky.json even if it wasn't downloaded.
-    if (needsMerge || needsConfigurationOverride || options["report-flakes"]) {
-      await new File("${outDirectory.path}/flaky.json").writeAsString(
-          mergedFlaky.values.map((data) => jsonEncode(data) + "\n").join(""));
-    }
-    // Deflake results of the tests if required.
-    if (options["deflake"]) {
-      await deflake(outDirectory, configurationsToRun, options.rest);
-    }
-    // Write out the final comparison.
-    print("".padLeft(80, "="));
-    print("Test Results");
-    print("".padLeft(80, "="));
-    final compareOutput = await runProcess(Platform.resolvedExecutable, [
-      "tools/bots/compare_results.dart",
-      "--human",
-      "--verbose",
-      "--changed",
-      "--failing",
-      "--passing",
-      "--flakiness-data=${outDirectory.path}/flaky.json",
-      "--logs=${outDirectory.path}/logs.json",
-      "${outDirectory.path}/previous.json",
-      "${outDirectory.path}/results.json",
-    ]);
-    if (compareOutput.stdout == "") {
-      print("There were no test failures.");
-    } else {
-      stdout.write(compareOutput.stdout);
-    }
-    if (inexactBuilds.isNotEmpty) {
-      print("");
-      final builders = inexactBuilds.keys.toList()..sort();
-      for (var builder in builders) {
-        final inexactCommit = inexactBuilds[builder];
-        print("Warning: Results may be inexact because commit ${inexactCommit} "
-            "was used as the baseline for $builder instead of $commit");
-      }
-    }
-  } finally {
-    await outDirectory.delete(recursive: true);
-  }
-}
-
-void deflake(Directory outDirectory, List<String> configurations,
-    List<String> testPyArgs) async {
-  // Find the list of tests to deflake.
-  final deflakeListOutput = await runProcess(Platform.resolvedExecutable, [
-    "tools/bots/compare_results.dart",
-    "--changed",
-    "--failing",
-    "--passing",
-    "--flakiness-data=${outDirectory.path}/flaky.json",
-    "${outDirectory.path}/previous.json",
-    "${outDirectory.path}/results.json",
-  ]);
-  final deflakeListPath = "${outDirectory.path}/deflake.list";
-  final deflakeListFile = new File(deflakeListPath);
-  await deflakeListFile.writeAsString(deflakeListOutput.stdout);
-
-  // Deflake the changed tests.
-  final deflakingResultsPaths = <String>[];
-  for (int i = 1; deflakeListOutput.stdout != "" && i <= deflakingCount; i++) {
-    print("".padLeft(80, "="));
-    print("Running deflaking iteration $i");
-    print("".padLeft(80, "="));
-    final deflakeDirectory = new Directory("${outDirectory.path}/$i");
-    await deflakeDirectory.create();
-    final deflakeArguments = <String>[
-      "--named-configuration=${configurations.join(",")}",
-      "--output-directory=${deflakeDirectory.path}",
-      "--clean-exit",
-      "--silent-failures",
-      "--write-results",
-      "--test-list=$deflakeListPath",
-      ...testPyArgs,
-    ];
-    await runProcessInheritStdio(
-        "python", ["tools/test.py", ...deflakeArguments],
-        runInShell: Platform.isWindows);
-    deflakingResultsPaths.add("${deflakeDirectory.path}/results.json");
-  }
-
-  // Update the flakiness information based on what we've learned.
-  print("Updating flakiness information...");
-  await runProcess(Platform.resolvedExecutable, [
-    "tools/bots/update_flakiness.dart",
-    "--input=${outDirectory.path}/flaky.json",
-    "--output=${outDirectory.path}/flaky.json",
-    "${outDirectory.path}/results.json",
-    ...deflakingResultsPaths,
-  ]);
+void main(List<String> args) {
+  runTests(args);
 }
diff --git a/utils/dartdevc/BUILD.gn b/utils/dartdevc/BUILD.gn
index 6116446f..8c5406f 100644
--- a/utils/dartdevc/BUILD.gn
+++ b/utils/dartdevc/BUILD.gn
@@ -204,7 +204,7 @@
   #     named `${name}_js` must exist.
   #   * args: additional args to pass to dartdevc
 
-  dart_action(target_name) {
+  prebuilt_dart_action(target_name) {
     script = "../../pkg/dev_compiler/bin/dartdevc.dart"
     module = invoker.package
     out_dir = rebase_path("$js_gen_dir")