Version 2.10.0-156.0.dev

Merge commit '5a120eae40e63116912bac7453ee8dc3e584da5b' into 'dev'
diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json
index 18686f8..12e1c33 100644
--- a/.dart_tool/package_config.json
+++ b/.dart_tool/package_config.json
@@ -11,7 +11,7 @@
     "constraint, update this by running tools/generate_package_config.dart."
   ],
   "configVersion": 2,
-  "generated": "2020-09-18T09:56:27.880444",
+  "generated": "2020-08-18T15:38:52.410101",
   "generator": "tools/generate_package_config.dart",
   "packages": [
     {
@@ -184,7 +184,7 @@
       "name": "dart2js_info",
       "rootUri": "../third_party/pkg/dart2js_info",
       "packageUri": "lib/",
-      "languageVersion": "2.3"
+      "languageVersion": "2.0"
     },
     {
       "name": "dart2js_tools",
@@ -207,7 +207,8 @@
     {
       "name": "dart_style",
       "rootUri": "../third_party/pkg_tested/dart_style",
-      "packageUri": "lib/"
+      "packageUri": "lib/",
+      "languageVersion": "2.7"
     },
     {
       "name": "dartdev",
@@ -347,7 +348,8 @@
     {
       "name": "js_runtime",
       "rootUri": "../sdk/lib/_internal/js_runtime",
-      "packageUri": "lib/"
+      "packageUri": "lib/",
+      "languageVersion": "2.10"
     },
     {
       "name": "json_rpc_2",
@@ -482,7 +484,8 @@
     {
       "name": "pub",
       "rootUri": "../third_party/pkg/pub",
-      "packageUri": "lib/"
+      "packageUri": "lib/",
+      "languageVersion": "2.3"
     },
     {
       "name": "pub_semver",
@@ -505,7 +508,8 @@
     {
       "name": "sdk_library_metadata",
       "rootUri": "../sdk/lib/_internal/sdk_library_metadata",
-      "packageUri": "lib/"
+      "packageUri": "lib/",
+      "languageVersion": "2.10"
     },
     {
       "name": "shelf",
@@ -748,4 +752,4 @@
       "languageVersion": "2.4"
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/DEPS b/DEPS
index 881deca..c6af26a 100644
--- a/DEPS
+++ b/DEPS
@@ -66,7 +66,7 @@
 
   # Revisions of /third_party/* dependencies.
   "args_tag": "1.6.0",
-  "async_rev": "128c461a97dbdbd9336ba000ba5a5c02e79b8651",
+  "async_rev": "3fedad22c6940650526a86adebbf2872b81c2805",
   "bazel_worker_rev": "26680d5e249b249c7216ab2fed0ac8ed4ee285c5",
   "benchmark_harness_rev": "ec6b646f5443faa871e126ac1ba248c94ca06257",
   "boolean_selector_rev": "665e6921ab246569420376f827bff4585dff0b14",
@@ -76,7 +76,7 @@
   "charcode_rev": "4a685faba42d86ebd9d661eadd1e79d0a1c34c43",
   "chrome_rev" : "19997",
   "cli_util_tag" : "0.2.0",
-  "collection_rev": "583693680fc067e34ca5b72503df25e8b80579f9",
+  "collection_rev": "65d3e58ee5289528ec280d361a67a631d65b3d7f",
   "convert_rev": "c1b01f832835d3d8a06b0b246a361c0eaab35d3c",
   "crypto_rev": "f7c48b334b1386bc5ab0f706fbcd6df8496a87fc",
   "csslib_rev": "681a6603f86bbbe64e8af42d722aef63b028d241",
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/add_type_parameter.dart b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/add_type_parameter.dart
index 885f1f1..50ef9fe 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/add_type_parameter.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/add_type_parameter.dart
@@ -39,9 +39,9 @@
   @override
   void apply(DartFileEditBuilder builder, DataDrivenFix fix, _Data data) {
     if (data is _TypeArgumentData) {
-      _applyToTypeArguments(builder, data);
+      _applyToTypeArguments(builder, fix, data);
     } else if (data is _TypeParameterData) {
-      _applyToTypeParameters(builder, data);
+      _applyToTypeParameters(builder, fix, data);
     } else {
       throw StateError('Unsupported class of data: ${data.runtimeType}');
     }
@@ -50,23 +50,23 @@
   @override
   _Data validate(DataDrivenFix fix) {
     var node = fix.node;
+    var context = TemplateContext(node, fix.utils);
     if (node is NamedType) {
       // wrong_number_of_type_arguments
       // wrong_number_of_type_arguments_constructor
-      var argument = argumentValue.generate(node, fix.utils);
-      if (argument == null) {
+      if (!argumentValue.validate(context)) {
         return null;
       }
       var typeArguments = node.typeArguments;
       if (_isInvalidIndex(typeArguments?.arguments)) {
         return null;
       }
-      return _TypeArgumentData(typeArguments, argument, node.name.end);
+      return _TypeArgumentData(typeArguments, node.name.end);
     }
     var parent = node.parent;
     if (parent is InvocationExpression) {
       // wrong_number_of_type_arguments_method
-      var argument = argumentValue.generate(parent, fix.utils);
+      var argument = argumentValue.validate(context);
       if (argument == null) {
         return null;
       }
@@ -74,60 +74,58 @@
       if (_isInvalidIndex(typeArguments?.arguments)) {
         return null;
       }
-      return _TypeArgumentData(
-          typeArguments, argument, parent.argumentList.offset);
+      return _TypeArgumentData(typeArguments, parent.argumentList.offset);
     } else if (parent is MethodDeclaration) {
       // invalid_override
-      String bound;
-      if (extendedType != null) {
-        bound = extendedType.generate(node, fix.utils);
-        if (bound == null) {
-          return null;
-        }
+      if (extendedType != null && !extendedType.validate(context)) {
+        return null;
       }
       var typeParameters = parent.typeParameters;
       if (_isInvalidIndex(typeParameters?.typeParameters)) {
         return null;
       }
-      return _TypeParameterData(typeParameters, bound, parent.name.end);
+      return _TypeParameterData(typeParameters, parent.name.end);
     } else if (node is TypeArgumentList && parent is ExtensionOverride) {
       // wrong_number_of_type_arguments_extension
-      var argument = argumentValue.generate(node, fix.utils);
+      var argument = argumentValue.validate(context);
       if (argument == null) {
         return null;
       }
       if (_isInvalidIndex(node?.arguments)) {
         return null;
       }
-      return _TypeArgumentData(node, argument, parent.extensionName.end);
+      return _TypeArgumentData(node, parent.extensionName.end);
     }
     return null;
   }
 
   void _applyToTypeArguments(
-      DartFileEditBuilder builder, _TypeArgumentData data) {
+      DartFileEditBuilder builder, DataDrivenFix fix, _TypeArgumentData data) {
     var typeArguments = data.typeArguments;
-    var argumentValue = data.argumentValue;
+    var argumentValueText = argumentValue.generate(fix.node, fix.utils);
     if (typeArguments == null) {
       // Adding the first type argument.
-      builder.addSimpleInsertion(data.newListOffset, '<$argumentValue>');
+      builder.addSimpleInsertion(data.newListOffset, '<$argumentValueText>');
     } else {
       if (index == 0) {
         // Inserting the type argument at the beginning of the list.
         builder.addSimpleInsertion(
-            typeArguments.leftBracket.end, '$argumentValue, ');
+            typeArguments.leftBracket.end, '$argumentValueText, ');
       } else {
         // Inserting the type argument after an existing type argument.
         var previous = typeArguments.arguments[index - 1];
-        builder.addSimpleInsertion(previous.end, ', $argumentValue');
+        builder.addSimpleInsertion(previous.end, ', $argumentValueText');
       }
     }
   }
 
   void _applyToTypeParameters(
-      DartFileEditBuilder builder, _TypeParameterData data) {
-    var argumentValue =
-        data.bound == null ? name : '$name extends ${data.bound}';
+      DartFileEditBuilder builder, DataDrivenFix fix, _TypeParameterData data) {
+    var extendsClause = '';
+    if (extendedType != null) {
+      extendsClause = ' extends ${extendedType.generate(fix.node, fix.utils)}';
+    }
+    var argumentValue = '$name$extendsClause';
     var typeParameters = data.typeParameters;
     if (typeParameters == null) {
       // Adding the first type argument.
@@ -160,15 +158,12 @@
   /// `null` if the first type argument is being added.
   final TypeArgumentList typeArguments;
 
-  /// The value of the type argument being added.
-  final String argumentValue;
-
   /// The offset at which the type argument list should be inserted if
   /// [typeArguments] is `null`.
   final int newListOffset;
 
   /// Initialize newly created data.
-  _TypeArgumentData(this.typeArguments, this.argumentValue, this.newListOffset);
+  _TypeArgumentData(this.typeArguments, this.newListOffset);
 }
 
 /// The data returned when updating a type parameter list.
@@ -177,14 +172,10 @@
   /// or `null` if the first type parameter is being added.
   final TypeParameterList typeParameters;
 
-  /// The bound of the type parameter being added, or `null` if there is no
-  /// bound.
-  final String bound;
-
   /// The offset at which the type parameter list should be inserted if
   /// [typeParameters] is `null`.
   final int newListOffset;
 
   /// Initialize newly created data.
-  _TypeParameterData(this.typeParameters, this.bound, this.newListOffset);
+  _TypeParameterData(this.typeParameters, this.newListOffset);
 }
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/code_template.dart b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/code_template.dart
index 9729bfd..941d9be 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/code_template.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/code_template.dart
@@ -2,7 +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:analysis_server/src/services/correction/fix/data_driven/value_extractor.dart';
+import 'package:analysis_server/src/services/correction/fix/data_driven/value_generator.dart';
 import 'package:analysis_server/src/services/correction/util.dart';
 import 'package:analyzer/dart/ast/ast.dart';
 
@@ -26,6 +26,17 @@
     }
     return buffer.toString();
   }
+
+  /// Use the [context] to validate that this template will be able to generate
+  /// a value.
+  bool validate(TemplateContext context) {
+    for (var component in components) {
+      if (!component.validate(context)) {
+        return false;
+      }
+    }
+    return true;
+  }
 }
 
 /// The kinds of code that can be generated by a template.
@@ -40,6 +51,10 @@
   /// the [context] to access needed information that isn't already known to
   /// this component.
   void appendTo(StringSink sink, TemplateContext context);
+
+  /// Use the [context] to validate that this component will be able to generate
+  /// a value.
+  bool validate(TemplateContext context);
 }
 
 /// The context in which a template is being evaluated.
@@ -59,9 +74,9 @@
   TemplateContext(this.node, this.utils);
 
   /// Return the value of the variable with the given [name].
-  String valueOf(ValueGenerator extractor) {
-    return _variableValues.putIfAbsent(extractor, () {
-      return extractor.from(this);
+  String valueOf(ValueGenerator generator) {
+    return _variableValues.putIfAbsent(generator, () {
+      return generator.from(this);
     });
   }
 }
@@ -78,18 +93,28 @@
   void appendTo(StringSink sink, TemplateContext context) {
     sink.write(text);
   }
+
+  @override
+  bool validate(TemplateContext context) {
+    return true;
+  }
 }
 
 /// A reference to a variable within a template.
 class TemplateVariable extends TemplateComponent {
-  /// The extractor used to compute the value of the variable.
-  final ValueGenerator extractor;
+  /// The generator used to compute the value of the variable.
+  final ValueGenerator generator;
 
-  /// Initialize a newly created template variable with the given [name].
-  TemplateVariable(this.extractor);
+  /// Initialize a newly created template variable with the given [generator].
+  TemplateVariable(this.generator);
 
   @override
   void appendTo(StringSink sink, TemplateContext context) {
-    sink.write(context.valueOf(extractor));
+    sink.write(context.valueOf(generator));
+  }
+
+  @override
+  bool validate(TemplateContext context) {
+    return generator.validate(context);
   }
 }
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart
index 0f48e1c..1521f7c 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart
@@ -12,7 +12,7 @@
 import 'package:analysis_server/src/services/correction/fix/data_driven/transform.dart';
 import 'package:analysis_server/src/services/correction/fix/data_driven/transform_set.dart';
 import 'package:analysis_server/src/services/correction/fix/data_driven/transform_set_error_code.dart';
-import 'package:analysis_server/src/services/correction/fix/data_driven/value_extractor.dart';
+import 'package:analysis_server/src/services/correction/fix/data_driven/value_generator.dart';
 import 'package:analysis_server/src/utilities/extensions/yaml.dart';
 import 'package:analyzer/error/listener.dart';
 import 'package:meta/meta.dart';
@@ -127,9 +127,9 @@
   }
 
   /// Convert the given [template] into a list of components. Variable
-  /// references in the template are looked up in the map of [extractors].
+  /// references in the template are looked up in the map of [generators].
   List<TemplateComponent> _extractTemplateComponents(String template,
-      Map<String, ValueGenerator> extractors, int templateOffset) {
+      Map<String, ValueGenerator> generators, int templateOffset) {
     var components = <TemplateComponent>[];
     var textStart = 0;
     var variableStart = template.indexOf(_openComponent);
@@ -148,7 +148,7 @@
         return null;
       } else {
         var name = template.substring(variableStart + 2, endIndex).trim();
-        var extractor = extractors[name];
+        var extractor = generators[name];
         if (extractor == null) {
           errorReporter.reportErrorForOffset(
               TransformSetErrorCode.undefinedVariable,
@@ -662,18 +662,18 @@
   Map<String, ValueGenerator> _translateTemplateVariables(
       YamlNode node, ErrorContext context) {
     if (node is YamlMap) {
-      var extractors = <String, ValueGenerator>{};
+      var generators = <String, ValueGenerator>{};
       for (var entry in node.nodes.entries) {
         var name = _translateKey(entry.key);
         if (name != null) {
           var value = _translateValueExtractor(
               entry.value, ErrorContext(key: name, parentNode: node));
           if (value != null) {
-            extractors[name] = value;
+            generators[name] = value;
           }
         }
       }
-      return extractors;
+      return generators;
     } else if (node == null) {
       return const {};
     } else {
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/value_extractor.dart b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/value_generator.dart
similarity index 74%
rename from pkg/analysis_server/lib/src/services/correction/fix/data_driven/value_extractor.dart
rename to pkg/analysis_server/lib/src/services/correction/fix/data_driven/value_generator.dart
index 26239d9..43d83fc 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/value_extractor.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/value_generator.dart
@@ -30,6 +30,19 @@
     return null;
   }
 
+  @override
+  bool validate(TemplateContext context) {
+    var argumentList = _getArgumentList(context.node);
+    if (argumentList == null) {
+      return false;
+    }
+    var expression = parameter.argumentFrom(argumentList);
+    if (expression != null) {
+      return false;
+    }
+    return true;
+  }
+
   /// Return the argument list associated with the given [node].
   ArgumentList _getArgumentList(AstNode node) {
     if (node is ArgumentList) {
@@ -38,6 +51,13 @@
       return node.argumentList;
     } else if (node is InstanceCreationExpression) {
       return node.argumentList;
+    } else if (node is TypeArgumentList) {
+      var parent = node.parent;
+      if (parent is InvocationExpression) {
+        return parent.argumentList;
+      } else if (parent is ExtensionOverride) {
+        return parent.argumentList;
+      }
     }
     return null;
   }
@@ -59,6 +79,12 @@
     // TODO(brianwilkerson) Figure out how to add the import when necessary.
     return name;
   }
+
+  @override
+  bool validate(TemplateContext context) {
+    // TODO(brianwilkerson) Validate that the import can be added.
+    return true;
+  }
 }
 
 /// An object used to generate the value of a template variable.
@@ -66,4 +92,8 @@
   /// Use the [context] to generate the value of a template variable and return
   /// the generated value.
   String from(TemplateContext context);
+
+  /// Use the [context] to validate that this generator will be able to generate
+  /// a value.
+  bool validate(TemplateContext context);
 }
diff --git a/pkg/analysis_server/test/src/services/correction/fix/data_driven/code_template_test.dart b/pkg/analysis_server/test/src/services/correction/fix/data_driven/code_template_test.dart
index 46f405c..5713fb6 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/data_driven/code_template_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/data_driven/code_template_test.dart
@@ -4,7 +4,7 @@
 
 import 'package:analysis_server/src/services/correction/fix/data_driven/code_template.dart';
 import 'package:analysis_server/src/services/correction/fix/data_driven/parameter_reference.dart';
-import 'package:analysis_server/src/services/correction/fix/data_driven/value_extractor.dart';
+import 'package:analysis_server/src/services/correction/fix/data_driven/value_generator.dart';
 import 'package:analysis_server/src/services/correction/util.dart';
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:test/test.dart';
diff --git a/pkg/analysis_server/test/src/services/correction/fix/data_driven/transform_set_parser_test.dart b/pkg/analysis_server/test/src/services/correction/fix/data_driven/transform_set_parser_test.dart
index 857d315..9e8c38a 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/data_driven/transform_set_parser_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/data_driven/transform_set_parser_test.dart
@@ -8,7 +8,7 @@
 import 'package:analysis_server/src/services/correction/fix/data_driven/parameter_reference.dart';
 import 'package:analysis_server/src/services/correction/fix/data_driven/rename.dart';
 import 'package:analysis_server/src/services/correction/fix/data_driven/transform_set_error_code.dart';
-import 'package:analysis_server/src/services/correction/fix/data_driven/value_extractor.dart';
+import 'package:analysis_server/src/services/correction/fix/data_driven/value_generator.dart';
 import 'package:matcher/matcher.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -60,7 +60,7 @@
     var components = modification.argumentValue.components;
     expect(components, hasLength(1));
     var value =
-        (components[0] as TemplateVariable).extractor as ArgumentExpression;
+        (components[0] as TemplateVariable).generator as ArgumentExpression;
     var parameter = value.parameter as PositionalParameterReference;
     expect(parameter.index, 1);
   }
@@ -132,7 +132,7 @@
     var components = modification.argumentValue.components;
     expect(components, hasLength(1));
     var value =
-        (components[0] as TemplateVariable).extractor as ArgumentExpression;
+        (components[0] as TemplateVariable).generator as ArgumentExpression;
     var parameter = value.parameter as PositionalParameterReference;
     expect(parameter.index, 1);
   }
@@ -174,7 +174,7 @@
     var components = modification.argumentValue.components;
     expect(components, hasLength(1));
     var value =
-        (components[0] as TemplateVariable).extractor as ArgumentExpression;
+        (components[0] as TemplateVariable).generator as ArgumentExpression;
     var parameter = value.parameter as PositionalParameterReference;
     expect(parameter.index, 1);
   }
@@ -219,12 +219,12 @@
     var components = modification.argumentValue.components;
     expect(components, hasLength(4));
     var extractorA =
-        (components[0] as TemplateVariable).extractor as ArgumentExpression;
+        (components[0] as TemplateVariable).generator as ArgumentExpression;
     var parameterA = extractorA.parameter as PositionalParameterReference;
     expect(parameterA.index, 1);
     expect((components[1] as TemplateText).text, '(');
     var extractorB =
-        (components[2] as TemplateVariable).extractor as ArgumentExpression;
+        (components[2] as TemplateVariable).generator as ArgumentExpression;
     var parameterB = extractorB.parameter as PositionalParameterReference;
     expect(parameterB.index, 2);
     expect((components[3] as TemplateText).text, ')');
@@ -262,7 +262,7 @@
     expect(change.name, 'T');
     var components = change.argumentValue.components;
     expect(components, hasLength(1));
-    var value = (components[0] as TemplateVariable).extractor as ImportedName;
+    var value = (components[0] as TemplateVariable).generator as ImportedName;
     expect(value.uris, ['dart:core']);
     expect(value.name, 'String');
   }
@@ -301,7 +301,7 @@
     var components = change.argumentValue.components;
     expect(components, hasLength(1));
     var value =
-        (components[0] as TemplateVariable).extractor as ArgumentExpression;
+        (components[0] as TemplateVariable).generator as ArgumentExpression;
     var parameter = value.parameter as NamedParameterReference;
     expect(parameter.name, 'p');
   }
@@ -344,7 +344,7 @@
 
     var argumentComponents = change.argumentValue.components;
     expect(argumentComponents, hasLength(1));
-    var value = (argumentComponents[0] as TemplateVariable).extractor
+    var value = (argumentComponents[0] as TemplateVariable).generator
         as ArgumentExpression;
     var parameter = value.parameter as PositionalParameterReference;
     expect(parameter.index, 2);
diff --git a/pkg/analysis_server/test/src/services/correction/fix/remove_dead_code_test.dart b/pkg/analysis_server/test/src/services/correction/fix/remove_dead_code_test.dart
index 6d4e023..93bea41 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/remove_dead_code_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/remove_dead_code_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/dart/analysis/experiments.dart';
 import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -11,6 +12,7 @@
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(RemoveDeadCodeTest);
+    defineReflectiveTests(RemoveDeadCodeWithNullSafetyTest);
   });
 }
 
@@ -136,3 +138,48 @@
 ''');
   }
 }
+
+@reflectiveTest
+class RemoveDeadCodeWithNullSafetyTest extends FixProcessorTest {
+  @override
+  List<String> get experiments => [EnableString.non_nullable];
+
+  @override
+  FixKind get kind => DartFixKind.REMOVE_DEAD_CODE;
+
+  @failingTest
+  Future<void> test_do_returnInBody() async {
+    // https://github.com/dart-lang/sdk/issues/43511
+    await resolveTestUnit('''
+void f(bool c) {
+  do {
+    print(c);
+    return;
+  } while (c);
+}
+''');
+    await assertHasFix('''
+void f(bool c) {
+  print(c);
+}
+''');
+  }
+
+  @failingTest
+  Future<void> test_for_returnInBody() async {
+    // https://github.com/dart-lang/sdk/issues/43511
+    await resolveTestUnit('''
+void f() {
+  for (int i = 0; i < 2; i++) {
+    print(i);
+    return;
+  }
+}
+''');
+    await assertHasFix('''
+void f() {
+  print(0);
+}
+''');
+  }
+}
diff --git a/pkg/analyzer/lib/src/dart/analysis/experiments.g.dart b/pkg/analyzer/lib/src/dart/analysis/experiments.g.dart
index ee6204e..74f160b 100644
--- a/pkg/analyzer/lib/src/dart/analysis/experiments.g.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/experiments.g.dart
@@ -8,7 +8,7 @@
 
 /// The current version of the Dart language (or, for non-stable releases, the
 /// version of the language currently in the process of being developed).
-const _currentVersion = '2.11.0';
+const _currentVersion = '2.10.0';
 
 /// A map containing information about all known experimental flags.
 final _knownFeatures = <String, ExperimentalFeature>{
@@ -68,7 +68,7 @@
     isExpired: IsExpired.constant_update_2018,
     documentation: 'Enhanced constant expressions',
     experimentalReleaseVersion: null,
-    releaseVersion: Version.parse('2.4.1'),
+    releaseVersion: Version.parse('2.0.0'),
   );
 
   static final control_flow_collections = ExperimentalFeature(
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 7b83ca3..0190caa 100644
--- a/pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart
@@ -59,6 +59,11 @@
     var left = node.leftHandSide;
     var right = node.rightHandSide;
 
+    if (left is IndexExpression) {
+      _resolve_IndexExpression(node, left);
+      return;
+    }
+
     if (left is PrefixedIdentifier) {
       _resolve_PrefixedIdentifier(node, left);
       return;
@@ -241,13 +246,46 @@
     }
   }
 
+  void _resolve_IndexExpression(
+    AssignmentExpressionImpl node,
+    IndexExpression left,
+  ) {
+    left.target?.accept(_resolver);
+    _resolver.startNullAwareIndexExpression(left);
+
+    var operator = node.operator.type;
+    var hasRead = operator != TokenType.EQ;
+
+    var resolver = PropertyElementResolver(_resolver);
+    var result = resolver.resolveIndexExpression(
+      node: left,
+      hasRead: hasRead,
+      hasWrite: true,
+    );
+
+    var readElement = result.readElement;
+    var writeElement = result.writeElement;
+
+    InferenceContext.setType(left.index, result.indexContextType);
+    left.index.accept(_resolver);
+
+    if (hasRead) {
+      _resolver.setReadElement(left, readElement);
+    }
+    _resolver.setWriteElement(left, writeElement);
+
+    _setBackwardCompatibility(node);
+
+    var right = node.rightHandSide;
+    _resolve3(node, left, operator, right);
+  }
+
   void _resolve_PrefixedIdentifier(
     AssignmentExpressionImpl node,
     PrefixedIdentifier left,
   ) {
     left.prefix?.accept(_resolver);
 
-    var propertyName = left.identifier;
     var operator = node.operator.type;
     var hasRead = operator != TokenType.EQ;
 
@@ -266,7 +304,7 @@
     }
     _resolver.setWriteElement(left, writeElement);
 
-    _setBackwardCompatibility(node, propertyName);
+    _setBackwardCompatibility(node);
 
     var right = node.rightHandSide;
     _resolve3(node, left, operator, right);
@@ -278,7 +316,6 @@
   ) {
     left.target?.accept(_resolver);
 
-    var propertyName = left.propertyName;
     var operator = node.operator.type;
     var hasRead = operator != TokenType.EQ;
 
@@ -299,7 +336,7 @@
     }
     _resolver.setWriteElement(left, writeElement);
 
-    _setBackwardCompatibility(node, propertyName);
+    _setBackwardCompatibility(node);
 
     var right = node.rightHandSide;
     _resolve3(node, left, operator, right);
@@ -329,7 +366,7 @@
       receiverTypeObject: null,
     );
 
-    _setBackwardCompatibility(node, left);
+    _setBackwardCompatibility(node);
 
     if (operator != TokenType.EQ) {
       // TODO(scheglov) Change this method to work with elements.
@@ -391,32 +428,51 @@
 
   /// TODO(scheglov) This is mostly necessary for backward compatibility.
   /// Although we also use `staticElement` for `getType(left)` below.
-  void _setBackwardCompatibility(
-    AssignmentExpressionImpl node,
-    SimpleIdentifier left,
-  ) {
+  void _setBackwardCompatibility(AssignmentExpressionImpl node) {
     var operator = node.operator.type;
 
-    if (operator != TokenType.EQ) {
+    var left = node.leftHandSide;
+    var hasRead = operator != TokenType.EQ;
+
+    if (left is IndexExpression) {
+      if (hasRead) {
+        left.staticElement = node.writeElement;
+        left.auxiliaryElements = AuxiliaryElements(node.readElement);
+        _resolver.setReadElement(node, node.readElement);
+        _resolver.setWriteElement(node, node.writeElement);
+      } else {
+        left.staticElement = node.writeElement;
+        _resolver.setWriteElement(node, node.writeElement);
+      }
+      _recordStaticType(left, node.writeType);
+      return;
+    }
+
+    SimpleIdentifier leftIdentifier;
+    if (left is PrefixedIdentifier) {
+      leftIdentifier = left.identifier;
+      _recordStaticType(left, node.writeType);
+    } else if (left is PropertyAccess) {
+      leftIdentifier = left.propertyName;
+      _recordStaticType(left, node.writeType);
+    } else if (left is SimpleIdentifier) {
+      leftIdentifier = left;
+    }
+
+    if (hasRead) {
       var readElement = node.readElement;
       if (readElement is PropertyAccessorElement) {
-        left.auxiliaryElements = AuxiliaryElements(readElement);
+        leftIdentifier.auxiliaryElements = AuxiliaryElements(readElement);
       }
     }
 
-    left.staticElement = node.writeElement;
+    leftIdentifier.staticElement = node.writeElement;
     if (node.readElement is VariableElement) {
-      var leftType = _resolver.localVariableTypeProvider.getType(left);
-      _recordStaticType(left, leftType);
+      var leftType =
+          _resolver.localVariableTypeProvider.getType(leftIdentifier);
+      _recordStaticType(leftIdentifier, leftType);
     } else {
-      _recordStaticType(left, node.writeType);
-    }
-
-    var parent = left.parent;
-    if (parent is PrefixedIdentifier && parent.identifier == left) {
-      _recordStaticType(parent, node.writeType);
-    } else if (parent is PropertyAccess && parent.propertyName == left) {
-      _recordStaticType(parent, node.writeType);
+      _recordStaticType(leftIdentifier, node.writeType);
     }
   }
 
diff --git a/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart
index 4d3fffb..b3ed076 100644
--- a/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart
@@ -5,11 +5,14 @@
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/type.dart';
+import 'package:analyzer/error/error.dart';
 import 'package:analyzer/error/listener.dart';
 import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
 import 'package:analyzer/src/dart/element/type.dart';
+import 'package:analyzer/src/dart/element/type_system.dart';
 import 'package:analyzer/src/dart/resolver/extension_member_resolver.dart';
+import 'package:analyzer/src/dart/resolver/resolution_result.dart';
 import 'package:analyzer/src/error/assignment_verifier.dart';
 import 'package:analyzer/src/error/codes.dart';
 import 'package:analyzer/src/generated/resolver.dart';
@@ -27,6 +30,97 @@
 
   ExtensionMemberResolver get _extensionResolver => _resolver.extensionResolver;
 
+  TypeSystemImpl get _typeSystem => _resolver.typeSystem;
+
+  PropertyElementResolverResult resolveIndexExpression({
+    @required IndexExpression node,
+    @required bool hasRead,
+    @required bool hasWrite,
+  }) {
+    var target = node.realTarget;
+    var targetType = target.staticType;
+    targetType = _resolveTypeParameter(targetType);
+
+    if (target is ExtensionOverride) {
+      var result = _extensionResolver.getOverrideMember(target, '[]');
+
+      // TODO(scheglov) Change ExtensionResolver to set `needsGetterError`.
+      if (hasRead && result.getter == null && !result.isAmbiguous) {
+        _reportUnresolvedIndex(
+          node,
+          CompileTimeErrorCode.UNDEFINED_EXTENSION_OPERATOR,
+          ['[]', target.staticElement.name],
+        );
+      }
+
+      if (hasWrite && result.setter == null && !result.isAmbiguous) {
+        _reportUnresolvedIndex(
+          node,
+          CompileTimeErrorCode.UNDEFINED_EXTENSION_OPERATOR,
+          ['[]=', target.staticElement.name],
+        );
+      }
+
+      return _toIndexResult(result);
+    }
+
+    if (targetType.isVoid) {
+      // TODO(scheglov) Report directly in TypePropertyResolver?
+      _reportUnresolvedIndex(
+        node,
+        CompileTimeErrorCode.USE_OF_VOID_RESULT,
+      );
+      return PropertyElementResolverResult();
+    }
+
+    if (identical(targetType, NeverTypeImpl.instance)) {
+      // TODO(scheglov) Report directly in TypePropertyResolver?
+      _errorReporter.reportErrorForNode(
+        HintCode.RECEIVER_OF_TYPE_NEVER,
+        target,
+      );
+      return PropertyElementResolverResult();
+    }
+
+    if (node.isNullAware) {
+      if (target is ExtensionOverride) {
+        // https://github.com/dart-lang/language/pull/953
+      } else {
+        targetType = _typeSystem.promoteToNonNull(targetType);
+      }
+    }
+
+    var result = _resolver.typePropertyResolver.resolve(
+      receiver: target,
+      receiverType: targetType,
+      name: '[]',
+      receiverErrorNode: target,
+      nameErrorEntity: target,
+    );
+
+    if (hasRead && result.needsGetterError) {
+      _reportUnresolvedIndex(
+        node,
+        target is SuperExpression
+            ? CompileTimeErrorCode.UNDEFINED_SUPER_OPERATOR
+            : CompileTimeErrorCode.UNDEFINED_OPERATOR,
+        ['[]', targetType],
+      );
+    }
+
+    if (hasWrite && result.needsSetterError) {
+      _reportUnresolvedIndex(
+        node,
+        target is SuperExpression
+            ? CompileTimeErrorCode.UNDEFINED_SUPER_OPERATOR
+            : CompileTimeErrorCode.UNDEFINED_OPERATOR,
+        ['[]=', targetType],
+      );
+    }
+
+    return _toIndexResult(result);
+  }
+
   PropertyElementResolverResult resolvePrefixedIdentifier({
     @required PrefixedIdentifier node,
     @required bool hasRead,
@@ -130,10 +224,37 @@
     );
   }
 
+  DartType _computeIndexContextType({
+    @required ExecutableElement readElement,
+    @required ExecutableElement writeElement,
+  }) {
+    var method = writeElement ?? readElement;
+    var parameters = method is MethodElement ? method.parameters : null;
+
+    if (parameters != null && parameters.isNotEmpty) {
+      return parameters[0].type;
+    }
+
+    return null;
+  }
+
   bool _isAccessible(ExecutableElement element) {
     return element.isAccessibleIn(_definingLibrary);
   }
 
+  void _reportUnresolvedIndex(
+    IndexExpression node,
+    ErrorCode errorCode, [
+    List<Object> arguments = const [],
+  ]) {
+    var leftBracket = node.leftBracket;
+    var rightBracket = node.rightBracket;
+    var offset = leftBracket.offset;
+    var length = rightBracket.end - offset;
+
+    _errorReporter.reportErrorForOffset(errorCode, offset, length, arguments);
+  }
+
   PropertyElementResolverResult _resolve({
     @required Expression target,
     @required bool isCascaded,
@@ -192,7 +313,7 @@
     }
 
     if (isNullAware) {
-      targetType = _resolver.typeSystem.promoteToNonNull(targetType);
+      targetType = _typeSystem.promoteToNonNull(targetType);
     }
 
     var result = _resolver.typePropertyResolver.resolve(
@@ -310,7 +431,7 @@
       readElement ??= extension.getMethod(memberName);
 
       if (readElement == null) {
-        _resolver.errorReporter.reportErrorForNode(
+        _errorReporter.reportErrorForNode(
           CompileTimeErrorCode.UNDEFINED_EXTENSION_GETTER,
           propertyName,
           [memberName, extension.name],
@@ -326,7 +447,7 @@
       writeElement = extension.getSetter(memberName);
 
       if (writeElement == null) {
-        _resolver.errorReporter.reportErrorForNode(
+        _errorReporter.reportErrorForNode(
           CompileTimeErrorCode.UNDEFINED_EXTENSION_SETTER,
           propertyName,
           [memberName, extension.name],
@@ -492,6 +613,20 @@
     }
     return type;
   }
+
+  PropertyElementResolverResult _toIndexResult(ResolutionResult result) {
+    var readElement = result.getter;
+    var writeElement = result.setter;
+
+    return PropertyElementResolverResult(
+      readElementRequested: readElement,
+      writeElementRequested: writeElement,
+      indexContextType: _computeIndexContextType(
+        readElement: readElement,
+        writeElement: writeElement,
+      ),
+    );
+  }
 }
 
 class PropertyElementResolverResult {
@@ -500,11 +635,16 @@
   final Element writeElementRequested;
   final Element writeElementRecovery;
 
+  /// If [IndexExpression] is resolved, the context type of the index.
+  /// Might be `null` if `[]` or `[]=` are not resolved or invalid.
+  final DartType indexContextType;
+
   PropertyElementResolverResult({
     this.readElementRequested,
     this.readElementRecovery,
     this.writeElementRequested,
     this.writeElementRecovery,
+    this.indexContextType,
   });
 
   Element get readElement {
diff --git a/pkg/analyzer/lib/src/generated/element_resolver.dart b/pkg/analyzer/lib/src/generated/element_resolver.dart
index 5faf315..d80064f 100644
--- a/pkg/analyzer/lib/src/generated/element_resolver.dart
+++ b/pkg/analyzer/lib/src/generated/element_resolver.dart
@@ -9,20 +9,15 @@
 import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/error/listener.dart';
 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_system.dart';
-import 'package:analyzer/src/dart/resolver/extension_member_resolver.dart';
 import 'package:analyzer/src/dart/resolver/method_invocation_resolver.dart';
 import 'package:analyzer/src/dart/resolver/property_element_resolver.dart';
-import 'package:analyzer/src/dart/resolver/resolution_result.dart';
 import 'package:analyzer/src/dart/resolver/scope.dart';
 import 'package:analyzer/src/dart/resolver/type_property_resolver.dart';
 import 'package:analyzer/src/error/codes.dart';
 import 'package:analyzer/src/generated/migratable_ast_info_provider.dart';
 import 'package:analyzer/src/generated/resolver.dart';
 import 'package:analyzer/src/generated/super_context.dart';
-import 'package:analyzer/src/task/strong/checker.dart';
 
 /// An object used by instances of [ResolverVisitor] to resolve references
 /// within the AST structure to the elements being referenced. The requirements
@@ -94,9 +89,6 @@
   @Deprecated('This field is no longer used')
   final bool reportConstEvaluationErrors;
 
-  /// Helper for extension method resolution.
-  final ExtensionMemberResolver _extensionResolver;
-
   /// Helper for resolving properties on types.
   final TypePropertyResolver _typePropertyResolver;
 
@@ -109,7 +101,6 @@
       MigratableAstInfoProvider migratableAstInfoProvider =
           const MigratableAstInfoProvider()})
       : _definingLibrary = _resolver.definingLibrary,
-        _extensionResolver = _resolver.extensionResolver,
         _typePropertyResolver = _resolver.typePropertyResolver {
     _dynamicType = _typeProvider.dynamicType;
     _methodInvocationResolver = MethodInvocationResolver(
@@ -133,8 +124,6 @@
 
   TypeProviderImpl get _typeProvider => _resolver.typeProvider;
 
-  TypeSystemImpl get _typeSystem => _resolver.typeSystem;
-
   @override
   void visitBreakStatement(BreakStatement node) {
     node.target = _lookupBreakOrContinueTarget(node, node.label, false);
@@ -387,64 +376,30 @@
 
   @override
   void visitIndexExpression(IndexExpression node) {
-    Expression target = node.realTarget;
-    DartType targetType = _getStaticType(target);
+    var hasRead = node.inGetterContext();
+    var hasWrite = node.inSetterContext();
 
-    if (identical(targetType, NeverTypeImpl.instance)) {
-      _resolver.errorReporter.reportErrorForNode(
-        HintCode.RECEIVER_OF_TYPE_NEVER,
-        target,
-      );
-      return;
+    var resolver = PropertyElementResolver(_resolver);
+    var result = resolver.resolveIndexExpression(
+      node: node,
+      hasRead: hasRead,
+      hasWrite: hasWrite,
+    );
+
+    if (hasRead && hasWrite) {
+      node.staticElement = result.writeElement;
+      node.auxiliaryElements = AuxiliaryElements(result.readElement);
+      _resolver.setReadElement(node, result.readElement);
+      _resolver.setWriteElement(node, result.writeElement);
+    } else if (hasRead) {
+      node.staticElement = result.readElement;
+      _resolver.setReadElement(node, result.readElement);
+    } else if (hasWrite) {
+      node.staticElement = result.writeElement;
+      _resolver.setWriteElement(node, result.writeElement);
     }
 
-    if (node.isNullAware) {
-      if (target is ExtensionOverride) {
-        // https://github.com/dart-lang/language/pull/953
-      } else {
-        targetType = _typeSystem.promoteToNonNull(targetType);
-      }
-    }
-
-    String getterMethodName = TokenType.INDEX.lexeme;
-    String setterMethodName = TokenType.INDEX_EQ.lexeme;
-
-    ResolutionResult result;
-    if (target is ExtensionOverride) {
-      result = _extensionResolver.getOverrideMember(target, getterMethodName);
-    } else {
-      result = _typePropertyResolver.resolve(
-        receiver: target,
-        receiverType: targetType,
-        name: getterMethodName,
-        receiverErrorNode: target,
-        nameErrorEntity: target,
-      );
-    }
-
-    bool isInGetterContext = node.inGetterContext();
-    bool isInSetterContext = node.inSetterContext();
-    if (isInGetterContext && isInSetterContext) {
-      node.staticElement = result.setter;
-      node.auxiliaryElements = AuxiliaryElements(result.getter);
-      _resolver.setReadElement(node, result.getter);
-      _resolver.setWriteElement(node, result.setter);
-    } else if (isInGetterContext) {
-      node.staticElement = result.getter;
-      _resolver.setReadElement(node, result.getter);
-    } else if (isInSetterContext) {
-      node.staticElement = result.setter;
-      _resolver.setWriteElement(node, result.setter);
-    }
-
-    if (isInGetterContext) {
-      _checkForUndefinedIndexOperator(node, target, getterMethodName, result,
-          result.getter, result.needsGetterError, targetType);
-    }
-    if (isInSetterContext) {
-      _checkForUndefinedIndexOperator(node, target, setterMethodName, result,
-          result.setter, result.needsSetterError, targetType);
-    }
+    InferenceContext.setType(node.index, result.indexContextType);
   }
 
   @override
@@ -869,69 +824,6 @@
     _resolveAnnotations(node.metadata);
   }
 
-  /// Check that the given index [expression] was resolved, otherwise a
-  /// [CompileTimeErrorCode.UNDEFINED_OPERATOR] is generated. The [target] is
-  /// the target of the expression. The [methodName] is the name of the operator
-  /// associated with the context of using of the given index expression.
-  void _checkForUndefinedIndexOperator(
-      IndexExpression expression,
-      Expression target,
-      String methodName,
-      ResolutionResult result,
-      ExecutableElement element,
-      bool needsError,
-      DartType staticType) {
-    if (result.isAmbiguous) {
-      return;
-    }
-    if (element != null) {
-      return;
-    }
-    if (target is! ExtensionOverride) {
-      if (staticType == null || staticType.isDynamic) {
-        return;
-      }
-    }
-
-    var leftBracket = expression.leftBracket;
-    var rightBracket = expression.rightBracket;
-    var offset = leftBracket.offset;
-    var length = rightBracket.end - offset;
-    if (target is ExtensionOverride) {
-      _errorReporter.reportErrorForOffset(
-        CompileTimeErrorCode.UNDEFINED_EXTENSION_OPERATOR,
-        offset,
-        length,
-        [methodName, target.staticElement.name],
-      );
-    } else if (target is SuperExpression) {
-      _errorReporter.reportErrorForOffset(
-        CompileTimeErrorCode.UNDEFINED_SUPER_OPERATOR,
-        offset,
-        length,
-        [methodName, staticType],
-      );
-    } else if (staticType.isVoid) {
-      _errorReporter.reportErrorForOffset(
-        CompileTimeErrorCode.USE_OF_VOID_RESULT,
-        offset,
-        length,
-      );
-    } else if (identical(staticType, NeverTypeImpl.instance)) {
-      _resolver.errorReporter.reportErrorForNode(
-        HintCode.RECEIVER_OF_TYPE_NEVER,
-        target,
-      );
-    } else if (needsError) {
-      _errorReporter.reportErrorForOffset(
-        CompileTimeErrorCode.UNDEFINED_OPERATOR,
-        offset,
-        length,
-        [methodName, staticType],
-      );
-    }
-  }
-
   /// Assuming that the given [identifier] is a prefix for a deferred import,
   /// return the library that is being imported.
   LibraryElement _getImportedLibrary(SimpleIdentifier identifier) {
@@ -941,16 +833,6 @@
     return imports[0].importedLibrary;
   }
 
-  /// Return the static type of the given [expression] that is to be used for
-  /// type analysis.
-  DartType _getStaticType(Expression expression, {bool read = false}) {
-    if (expression is NullLiteral) {
-      return _typeProvider.nullType;
-    }
-    DartType type = read ? getReadType(expression) : expression.staticType;
-    return _resolveTypeParameter(type);
-  }
-
   InterfaceType _instantiateAnnotationClass(ClassElement element) {
     return element.instantiate(
       typeArguments: List.filled(
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index 43d1494..07ea52c 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -664,6 +664,15 @@
     }
   }
 
+  void startNullAwareIndexExpression(IndexExpression node) {
+    if (_migratableAstInfoProvider.isIndexExpressionNullAware(node) &&
+        _isNonNullableByDefault) {
+      _flowAnalysis.flow.nullAwareAccess_rightBegin(
+          node.target, node.realTarget.staticType ?? typeProvider.dynamicType);
+      _unfinishedNullShorts.add(node.nullShortingTermination);
+    }
+  }
+
   void startNullAwarePropertyAccess(
     PropertyAccess node,
   ) {
@@ -1462,21 +1471,8 @@
   @override
   void visitIndexExpression(IndexExpression node) {
     node.target?.accept(this);
-    if (_migratableAstInfoProvider.isIndexExpressionNullAware(node) &&
-        _isNonNullableByDefault) {
-      _flowAnalysis.flow.nullAwareAccess_rightBegin(
-          node.target, node.realTarget.staticType ?? typeProvider.dynamicType);
-      _unfinishedNullShorts.add(node.nullShortingTermination);
-    }
+    startNullAwareIndexExpression(node);
     node.accept(elementResolver);
-    var method = node.staticElement;
-    if (method != null) {
-      var parameters = method.parameters;
-      if (parameters.isNotEmpty) {
-        var indexParam = parameters[0];
-        InferenceContext.setType(node.index, indexParam.type);
-      }
-    }
     node.index?.accept(this);
     node.accept(typeAnalyzer);
   }
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 a2d7705..23be73a 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
@@ -10,7 +10,6 @@
 
 main() {
   defineReflectiveSuite(() {
-    defineReflectiveTests(ConstEvalThrowsExceptionTest_language24);
     defineReflectiveTests(ConstEvalThrowsExceptionTest);
     defineReflectiveTests(ConstEvalThrowsExceptionWithNullSafetyTest);
   });
@@ -19,9 +18,6 @@
 @reflectiveTest
 class ConstEvalThrowsExceptionTest extends PubPackageResolutionTest
     with ConstEvalThrowsExceptionTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-
   test_binaryMinus_null() async {
     await assertErrorsInCode('''
 const dynamic D = null;
@@ -78,26 +74,7 @@
 }
 
 @reflectiveTest
-class ConstEvalThrowsExceptionTest_language24 extends PubPackageResolutionTest
-    with ConstEvalThrowsExceptionTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
-
-@reflectiveTest
 mixin ConstEvalThrowsExceptionTestCases on PubPackageResolutionTest {
-  /// The expected state of this feature in the test.
-  bool get _constant_update_2018;
-
   test_assertInitializerThrows() async {
     await assertErrorsInCode(r'''
 class A {
@@ -278,77 +255,44 @@
   }
 
   test_ifElement_false_thenNotEvaluated() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic nil = null;
 const c = [if (1 < 0) nil + 1];
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 37, 18),
-              ]);
+''');
   }
 
   test_ifElement_nonBoolCondition_list() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic nonBool = 3;
 const c = const [if (nonBool) 'a'];
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, 48, 7),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 44, 16),
-                error(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, 48, 7),
-              ]);
+''', [
+      error(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, 48, 7),
+    ]);
   }
 
   test_ifElement_nonBoolCondition_map() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic nonBool = null;
 const c = const {if (nonBool) 'a' : 1};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, 51, 7),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 47, 20),
-                error(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, 51, 7),
-              ]);
+''', [
+      error(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, 51, 7),
+    ]);
   }
 
   test_ifElement_nonBoolCondition_set() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic nonBool = 'a';
 const c = const {if (nonBool) 3};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, 50, 7),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 46, 14),
-                error(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, 50, 7),
-              ]);
+''', [
+      error(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, 50, 7),
+    ]);
   }
 
   test_ifElement_true_elseNotEvaluated() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic nil = null;
 const c = [if (0 < 1) 3 else nil + 1];
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 37, 25),
-              ]);
+''');
   }
 
   test_invalid_constructorFieldInitializer_fromSeparateLibrary() async {
diff --git a/pkg/analyzer/test/src/diagnostics/const_set_element_type_implements_equals_test.dart b/pkg/analyzer/test/src/diagnostics/const_set_element_type_implements_equals_test.dart
index 054355c..817d86c 100644
--- a/pkg/analyzer/test/src/diagnostics/const_set_element_type_implements_equals_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_set_element_type_implements_equals_test.dart
@@ -9,38 +9,15 @@
 
 main() {
   defineReflectiveSuite(() {
-    defineReflectiveTests(ConstSetElementTypeImplementsEqualsTest_language24);
     defineReflectiveTests(ConstSetElementTypeImplementsEqualsTest);
   });
 }
 
 @reflectiveTest
 class ConstSetElementTypeImplementsEqualsTest extends PubPackageResolutionTest
-    with ConstSetElementTypeImplementsEqualsTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-}
-
-@reflectiveTest
-class ConstSetElementTypeImplementsEqualsTest_language24
-    extends PubPackageResolutionTest
-    with ConstSetElementTypeImplementsEqualsTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
+    with ConstSetElementTypeImplementsEqualsTestCases {}
 
 mixin ConstSetElementTypeImplementsEqualsTestCases on PubPackageResolutionTest {
-  bool get _constant_update_2018;
-
   test_constField() async {
     await assertErrorsInCode(r'''
 class A {
@@ -135,8 +112,7 @@
   }
 
   test_spread_list() async {
-    await assertErrorsInCode(
-        r'''
+    await assertErrorsInCode(r'''
 class A {
   const A();
   operator ==(other) => false;
@@ -145,23 +121,14 @@
 main() {
   const {...[A()]};
 }
-''',
-        _constant_update_2018
-            ? [
-                error(
-                    CompileTimeErrorCode
-                        .CONST_SET_ELEMENT_TYPE_IMPLEMENTS_EQUALS,
-                    75,
-                    8),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 75, 8),
-              ]);
+''', [
+      error(
+          CompileTimeErrorCode.CONST_SET_ELEMENT_TYPE_IMPLEMENTS_EQUALS, 75, 8),
+    ]);
   }
 
   test_spread_set() async {
-    await assertErrorsInCode(
-        r'''
+    await assertErrorsInCode(r'''
 class A {
   const A();
   operator ==(other) => false;
@@ -170,23 +137,10 @@
 main() {
   const {...{A()}};
 }
-''',
-        _constant_update_2018
-            ? [
-                error(
-                    CompileTimeErrorCode
-                        .CONST_SET_ELEMENT_TYPE_IMPLEMENTS_EQUALS,
-                    79,
-                    3),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 75, 8),
-                error(
-                    CompileTimeErrorCode
-                        .CONST_SET_ELEMENT_TYPE_IMPLEMENTS_EQUALS,
-                    79,
-                    3),
-              ]);
+''', [
+      error(
+          CompileTimeErrorCode.CONST_SET_ELEMENT_TYPE_IMPLEMENTS_EQUALS, 79, 3),
+    ]);
   }
 
   test_super() async {
diff --git a/pkg/analyzer/test/src/diagnostics/const_spread_expected_list_or_set_test.dart b/pkg/analyzer/test/src/diagnostics/const_spread_expected_list_or_set_test.dart
index d2470d0..0b71d6d 100644
--- a/pkg/analyzer/test/src/diagnostics/const_spread_expected_list_or_set_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_spread_expected_list_or_set_test.dart
@@ -10,209 +10,108 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ConstSpreadExpectedListOrSetTest);
-    defineReflectiveTests(ConstSpreadExpectedListOrSetTest_language24);
   });
 }
 
 @reflectiveTest
 class ConstSpreadExpectedListOrSetTest extends PubPackageResolutionTest
-    with ConstSpreadExpectedListOrSetTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-}
-
-@reflectiveTest
-class ConstSpreadExpectedListOrSetTest_language24
-    extends PubPackageResolutionTest
-    with ConstSpreadExpectedListOrSetTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
+    with ConstSpreadExpectedListOrSetTestCases {}
 
 mixin ConstSpreadExpectedListOrSetTestCases on PubPackageResolutionTest {
-  bool get _constant_update_2018;
-
   test_const_listInt() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic a = 5;
 var b = const <int>[...a];
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.CONST_SPREAD_EXPECTED_LIST_OR_SET,
-                    44, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 41, 4),
-              ]);
+''', [
+      error(CompileTimeErrorCode.CONST_SPREAD_EXPECTED_LIST_OR_SET, 44, 1),
+    ]);
   }
 
   test_const_listList() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = [5];
 var b = const <int>[...a];
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 43, 4),
-              ]);
+''');
   }
 
   test_const_listMap() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic a = <int, int>{0: 1};
 var b = const <int>[...a];
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.CONST_SPREAD_EXPECTED_LIST_OR_SET,
-                    59, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 56, 4),
-              ]);
+''', [
+      error(CompileTimeErrorCode.CONST_SPREAD_EXPECTED_LIST_OR_SET, 59, 1),
+    ]);
   }
 
   test_const_listNull() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic a = null;
 var b = const <int>[...a];
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.CONST_SPREAD_EXPECTED_LIST_OR_SET,
-                    47, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 44, 4),
-              ]);
+''', [
+      error(CompileTimeErrorCode.CONST_SPREAD_EXPECTED_LIST_OR_SET, 47, 1),
+    ]);
   }
 
   test_const_listNull_nullable() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = null;
 var b = const <int>[...?a];
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 44, 5),
-              ]);
+''');
   }
 
   test_const_listSet() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = <int>{5};
 var b = const <int>[...a];
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 48, 4),
-              ]);
+''');
   }
 
   test_const_setInt() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic a = 5;
 var b = const <int>{...a};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.CONST_SPREAD_EXPECTED_LIST_OR_SET,
-                    44, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 41, 4),
-              ]);
+''', [
+      error(CompileTimeErrorCode.CONST_SPREAD_EXPECTED_LIST_OR_SET, 44, 1),
+    ]);
   }
 
   test_const_setList() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = <int>[5];
 var b = const <int>{...a};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 48, 4),
-              ]);
+''');
   }
 
   test_const_setMap() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic a = <int, int>{1: 2};
 var b = const <int>{...a};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.CONST_SPREAD_EXPECTED_LIST_OR_SET,
-                    59, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 56, 4),
-              ]);
+''', [
+      error(CompileTimeErrorCode.CONST_SPREAD_EXPECTED_LIST_OR_SET, 59, 1),
+    ]);
   }
 
   test_const_setNull() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic a = null;
 var b = const <int>{...a};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.CONST_SPREAD_EXPECTED_LIST_OR_SET,
-                    47, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 44, 4),
-              ]);
+''', [
+      error(CompileTimeErrorCode.CONST_SPREAD_EXPECTED_LIST_OR_SET, 47, 1),
+    ]);
   }
 
   test_const_setNull_nullable() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = null;
 var b = const <int>{...?a};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 44, 5),
-              ]);
+''');
   }
 
   test_const_setSet() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = <int>{5};
 var b = const <int>{...a};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 48, 4),
-              ]);
+''');
   }
 
   test_nonConst_listInt() async {
diff --git a/pkg/analyzer/test/src/diagnostics/const_spread_expected_map_test.dart b/pkg/analyzer/test/src/diagnostics/const_spread_expected_map_test.dart
index 937a847..841c131 100644
--- a/pkg/analyzer/test/src/diagnostics/const_spread_expected_map_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_spread_expected_map_test.dart
@@ -10,64 +10,30 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ConstSpreadExpectedMapTest);
-    defineReflectiveTests(ConstSpreadExpectedMapTest_language24);
   });
 }
 
 @reflectiveTest
 class ConstSpreadExpectedMapTest extends PubPackageResolutionTest
-    with ConstSpreadExpectedMapTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-}
-
-@reflectiveTest
-class ConstSpreadExpectedMapTest_language24 extends PubPackageResolutionTest
-    with ConstSpreadExpectedMapTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
+    with ConstSpreadExpectedMapTestCases {}
 
 mixin ConstSpreadExpectedMapTestCases on PubPackageResolutionTest {
-  bool get _constant_update_2018;
-
   test_const_mapInt() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic a = 5;
 var b = const <int, int>{...a};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.CONST_SPREAD_EXPECTED_MAP, 49, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 46, 4),
-              ]);
+''', [
+      error(CompileTimeErrorCode.CONST_SPREAD_EXPECTED_MAP, 49, 1),
+    ]);
   }
 
   test_const_mapList() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic a = <int>[5];
 var b = const <int, int>{...a};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.CONST_SPREAD_EXPECTED_MAP, 56, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 53, 4),
-              ]);
+''', [
+      error(CompileTimeErrorCode.CONST_SPREAD_EXPECTED_MAP, 56, 1),
+    ]);
   }
 
   test_const_mapMap() async {
@@ -78,18 +44,12 @@
   }
 
   test_const_mapNull() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic a = null;
 var b = const <int, int>{...a};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.CONST_SPREAD_EXPECTED_MAP, 52, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 49, 4),
-              ]);
+''', [
+      error(CompileTimeErrorCode.CONST_SPREAD_EXPECTED_MAP, 52, 1),
+    ]);
   }
 
   test_const_mapNull_nullable() async {
@@ -100,18 +60,12 @@
   }
 
   test_const_mapSet() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic a = <int>{5};
 var b = const <int, int>{...a};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.CONST_SPREAD_EXPECTED_MAP, 56, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 53, 4),
-              ]);
+''', [
+      error(CompileTimeErrorCode.CONST_SPREAD_EXPECTED_MAP, 56, 1),
+    ]);
   }
 
   test_nonConst_mapInt() async {
diff --git a/pkg/analyzer/test/src/diagnostics/equal_elements_in_const_set_test.dart b/pkg/analyzer/test/src/diagnostics/equal_elements_in_const_set_test.dart
index 726859c..381dc33 100644
--- a/pkg/analyzer/test/src/diagnostics/equal_elements_in_const_set_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/equal_elements_in_const_set_test.dart
@@ -10,36 +10,14 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(EqualElementsInConstSetTest);
-    defineReflectiveTests(EqualElementsInConstSetTest_language24);
   });
 }
 
 @reflectiveTest
 class EqualElementsInConstSetTest extends PubPackageResolutionTest
-    with EqualElementsInConstSetTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-}
-
-@reflectiveTest
-class EqualElementsInConstSetTest_language24 extends PubPackageResolutionTest
-    with EqualElementsInConstSetTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
+    with EqualElementsInConstSetTestCases {}
 
 mixin EqualElementsInConstSetTestCases on PubPackageResolutionTest {
-  bool get _constant_update_2018;
-
   test_const_entry() async {
     await assertErrorsInCode('''
 var c = const {1, 2, 1};
@@ -50,85 +28,45 @@
   }
 
   test_const_ifElement_thenElseFalse() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 var c = const {1, if (1 < 0) 2 else 1};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.EQUAL_ELEMENTS_IN_CONST_SET, 36, 1,
-                    contextMessages: [
-                      message('$testPackageLibPath/test.dart', 15, 1)
-                    ]),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 18, 19),
-              ]);
+''', [
+      error(CompileTimeErrorCode.EQUAL_ELEMENTS_IN_CONST_SET, 36, 1,
+          contextMessages: [message('$testPackageLibPath/test.dart', 15, 1)]),
+    ]);
   }
 
   test_const_ifElement_thenElseFalse_onlyElse() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 var c = const {if (0 < 1) 1 else 1};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 15, 19),
-              ]);
+''');
   }
 
   test_const_ifElement_thenElseTrue() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 var c = const {1, if (0 < 1) 2 else 1};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 18, 19),
-              ]);
+''');
   }
 
   test_const_ifElement_thenElseTrue_onlyThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 var c = const {if (0 < 1) 1 else 1};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 15, 19),
-              ]);
+''');
   }
 
   test_const_ifElement_thenFalse() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 var c = const {2, if (1 < 0) 2};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 18, 12),
-              ]);
+''');
   }
 
   test_const_ifElement_thenTrue() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 var c = const {1, if (0 < 1) 1};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.EQUAL_ELEMENTS_IN_CONST_SET, 29, 1,
-                    contextMessages: [
-                      message('$testPackageLibPath/test.dart', 15, 1)
-                    ]),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 18, 12),
-              ]);
+''', [
+      error(CompileTimeErrorCode.EQUAL_ELEMENTS_IN_CONST_SET, 29, 1,
+          contextMessages: [message('$testPackageLibPath/test.dart', 15, 1)]),
+    ]);
   }
 
   test_const_instanceCreation_equalTypeArgs() async {
@@ -156,32 +94,18 @@
   }
 
   test_const_spread__noDuplicate() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 var c = const {1, ...{2}};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 18, 6),
-              ]);
+''');
   }
 
   test_const_spread_hasDuplicate() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 var c = const {1, ...{1}};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.EQUAL_ELEMENTS_IN_CONST_SET, 21, 3,
-                    contextMessages: [
-                      message('$testPackageLibPath/test.dart', 15, 1)
-                    ]),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 18, 6),
-              ]);
+''', [
+      error(CompileTimeErrorCode.EQUAL_ELEMENTS_IN_CONST_SET, 21, 3,
+          contextMessages: [message('$testPackageLibPath/test.dart', 15, 1)]),
+    ]);
   }
 
   test_nonConst_entry() async {
diff --git a/pkg/analyzer/test/src/diagnostics/equal_keys_in_const_map_test.dart b/pkg/analyzer/test/src/diagnostics/equal_keys_in_const_map_test.dart
index 2cc1a89..24da1be 100644
--- a/pkg/analyzer/test/src/diagnostics/equal_keys_in_const_map_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/equal_keys_in_const_map_test.dart
@@ -10,36 +10,14 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(EqualKeysInConstMapTest);
-    defineReflectiveTests(EqualKeysInConstMapTest_language24);
   });
 }
 
 @reflectiveTest
 class EqualKeysInConstMapTest extends PubPackageResolutionTest
-    with EqualKeysInConstMapTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-}
-
-@reflectiveTest
-class EqualKeysInConstMapTest_language24 extends PubPackageResolutionTest
-    with EqualKeysInConstMapTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
+    with EqualKeysInConstMapTestCases {}
 
 mixin EqualKeysInConstMapTestCases on PubPackageResolutionTest {
-  bool get _constant_update_2018;
-
   test_const_entry() async {
     await assertErrorsInCode('''
 var c = const {1: null, 2: null, 1: null};
@@ -50,85 +28,45 @@
   }
 
   test_const_ifElement_thenElseFalse() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 var c = const {1: null, if (1 < 0) 2: null else 1: null};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.EQUAL_KEYS_IN_CONST_MAP, 48, 1,
-                    contextMessages: [
-                      message('$testPackageLibPath/test.dart', 15, 1)
-                    ]),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 24, 31),
-              ]);
+''', [
+      error(CompileTimeErrorCode.EQUAL_KEYS_IN_CONST_MAP, 48, 1,
+          contextMessages: [message('$testPackageLibPath/test.dart', 15, 1)]),
+    ]);
   }
 
   test_const_ifElement_thenElseFalse_onlyElse() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 var c = const {if (0 < 1) 1: null else 1: null};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 15, 31),
-              ]);
+''');
   }
 
   test_const_ifElement_thenElseTrue() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 var c = const {1: null, if (0 < 1) 2: null else 1: null};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 24, 31),
-              ]);
+''');
   }
 
   test_const_ifElement_thenElseTrue_onlyThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 var c = const {if (0 < 1) 1: null else 1: null};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 15, 31),
-              ]);
+''');
   }
 
   test_const_ifElement_thenFalse() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 var c = const {2: null, if (1 < 0) 2: 2};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 24, 15),
-              ]);
+''');
   }
 
   test_const_ifElement_thenTrue() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 var c = const {1: null, if (0 < 1) 1: null};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.EQUAL_KEYS_IN_CONST_MAP, 35, 1,
-                    contextMessages: [
-                      message('$testPackageLibPath/test.dart', 15, 1)
-                    ]),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 24, 18),
-              ]);
+''', [
+      error(CompileTimeErrorCode.EQUAL_KEYS_IN_CONST_MAP, 35, 1,
+          contextMessages: [message('$testPackageLibPath/test.dart', 15, 1)]),
+    ]);
   }
 
   test_const_instanceCreation_equalTypeArgs() async {
@@ -156,32 +94,18 @@
   }
 
   test_const_spread__noDuplicate() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 var c = const {1: null, ...{2: null}};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 24, 12),
-              ]);
+''');
   }
 
   test_const_spread_hasDuplicate() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 var c = const {1: null, ...{1: null}};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.EQUAL_KEYS_IN_CONST_MAP, 27, 9,
-                    contextMessages: [
-                      message('$testPackageLibPath/test.dart', 15, 1)
-                    ]),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 24, 12),
-              ]);
+''', [
+      error(CompileTimeErrorCode.EQUAL_KEYS_IN_CONST_MAP, 27, 9,
+          contextMessages: [message('$testPackageLibPath/test.dart', 15, 1)]),
+    ]);
   }
 
   test_nonConst_entry() async {
diff --git a/pkg/analyzer/test/src/diagnostics/if_element_condition_from_deferred_library_test.dart b/pkg/analyzer/test/src/diagnostics/if_element_condition_from_deferred_library_test.dart
index 3d332b9..aca2e3d 100644
--- a/pkg/analyzer/test/src/diagnostics/if_element_condition_from_deferred_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/if_element_condition_from_deferred_library_test.dart
@@ -10,58 +10,26 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(IfElementConditionFromDeferredLibraryTest);
-    defineReflectiveTests(IfElementConditionFromDeferredLibraryTest_language24);
   });
 }
 
 @reflectiveTest
 class IfElementConditionFromDeferredLibraryTest extends PubPackageResolutionTest
-    with IfElementConditionFromDeferredLibraryTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-}
-
-@reflectiveTest
-class IfElementConditionFromDeferredLibraryTest_language24
-    extends PubPackageResolutionTest
-    with IfElementConditionFromDeferredLibraryTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
+    with IfElementConditionFromDeferredLibraryTestCases {}
 
 mixin IfElementConditionFromDeferredLibraryTestCases
     on PubPackageResolutionTest {
-  bool get _constant_update_2018;
-
   test_inList_deferred() async {
     newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const bool c = true;''');
-    await assertErrorsInCode(
-        r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
 f() {
   return const [if(a.c) 0];
-}''',
-        _constant_update_2018
-            ? [
-                error(
-                    CompileTimeErrorCode
-                        .IF_ELEMENT_CONDITION_FROM_DEFERRED_LIBRARY,
-                    59,
-                    3),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 56, 9),
-              ]);
+}''', [
+      error(CompileTimeErrorCode.IF_ELEMENT_CONDITION_FROM_DEFERRED_LIBRARY, 59,
+          3),
+    ]);
   }
 
   test_inList_nonConst() async {
@@ -77,39 +45,24 @@
   test_inList_notDeferred() async {
     newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const bool c = true;''');
-    await assertErrorsInCode(
-        r'''
+    await assertNoErrorsInCode(r'''
 import 'lib1.dart' as a;
 f() {
   return const [if(a.c) 0];
-}''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 47, 9),
-              ]);
+}''');
   }
 
   test_inMap_deferred() async {
     newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const bool c = true;''');
-    await assertErrorsInCode(
-        r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
 f() {
   return const {if(a.c) 0 : 0};
-}''',
-        _constant_update_2018
-            ? [
-                error(
-                    CompileTimeErrorCode
-                        .IF_ELEMENT_CONDITION_FROM_DEFERRED_LIBRARY,
-                    59,
-                    3),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 56, 13),
-              ]);
+}''', [
+      error(CompileTimeErrorCode.IF_ELEMENT_CONDITION_FROM_DEFERRED_LIBRARY, 59,
+          3),
+    ]);
   }
 
   test_inMap_notConst() async {
@@ -125,39 +78,24 @@
   test_inMap_notDeferred() async {
     newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const bool c = true;''');
-    await assertErrorsInCode(
-        r'''
+    await assertNoErrorsInCode(r'''
 import 'lib1.dart' as a;
 f() {
   return const {if(a.c) 0 : 0};
-}''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 47, 13),
-              ]);
+}''');
   }
 
   test_inSet_deferred() async {
     newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const bool c = true;''');
-    await assertErrorsInCode(
-        r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
 f() {
   return const {if(a.c) 0};
-}''',
-        _constant_update_2018
-            ? [
-                error(
-                    CompileTimeErrorCode
-                        .IF_ELEMENT_CONDITION_FROM_DEFERRED_LIBRARY,
-                    59,
-                    3),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 56, 9),
-              ]);
+}''', [
+      error(CompileTimeErrorCode.IF_ELEMENT_CONDITION_FROM_DEFERRED_LIBRARY, 59,
+          3),
+    ]);
   }
 
   test_inSet_notConst() async {
@@ -173,16 +111,10 @@
   test_inSet_notDeferred() async {
     newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const bool c = true;''');
-    await assertErrorsInCode(
-        r'''
+    await assertNoErrorsInCode(r'''
 import 'lib1.dart' as a;
 f() {
   return const {if(a.c) 0};
-}''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 47, 9),
-              ]);
+}''');
   }
 }
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 f2526bd..6c69432 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
@@ -10,137 +10,67 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ListElementTypeNotAssignableTest);
-    defineReflectiveTests(ListElementTypeNotAssignableTest_language24);
   });
 }
 
 @reflectiveTest
 class ListElementTypeNotAssignableTest extends PubPackageResolutionTest
-    with ListElementTypeNotAssignableTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-}
-
-@reflectiveTest
-class ListElementTypeNotAssignableTest_language24
-    extends PubPackageResolutionTest
-    with ListElementTypeNotAssignableTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
+    with ListElementTypeNotAssignableTestCases {}
 
 mixin ListElementTypeNotAssignableTestCases on PubPackageResolutionTest {
-  bool get _constant_update_2018;
-
   test_const_ifElement_thenElseFalse_intInt() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = 0;
 const dynamic b = 0;
 var v = const <int>[if (1 < 0) a else b];
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 62, 19),
-              ]);
+''');
   }
 
   test_const_ifElement_thenElseFalse_intString() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic a = 0;
 const dynamic b = 'b';
 var v = const <int>[if (1 < 0) a else b];
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 82,
-                    1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 64, 19),
-              ]);
+''', [
+      error(CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 82, 1),
+    ]);
   }
 
   test_const_ifElement_thenFalse_intString() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 var v = const <int>[if (1 < 0) 'a'];
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 31,
-                    3),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 20, 14),
-                error(CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 31,
-                    3),
-              ]);
+''', [
+      error(CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 31, 3),
+    ]);
   }
 
   test_const_ifElement_thenFalse_intString_dynamic() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = 'a';
 var v = const <int>[if (1 < 0) a];
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 43, 12),
-              ]);
+''');
   }
 
   test_const_ifElement_thenTrue_intInt() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = 0;
 var v = const <int>[if (true) a];
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 41, 11),
-              ]);
+''');
   }
 
   test_const_ifElement_thenTrue_intString() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic a = 'a';
 var v = const <int>[if (true) a];
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 53,
-                    1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 43, 11),
-              ]);
+''', [
+      error(CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 53, 1),
+    ]);
   }
 
   test_const_spread_intInt() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 var v = const <int>[...[0, 1]];
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 20, 9),
-              ]);
+''');
   }
 
   test_const_stringInt() async {
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 515fb56..55fcfd1 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
@@ -10,135 +10,70 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(MapKeyTypeNotAssignableTest);
-    defineReflectiveTests(MapKeyTypeNotAssignableTest_language24);
   });
 }
 
 @reflectiveTest
 class MapKeyTypeNotAssignableTest extends PubPackageResolutionTest
-    with MapKeyTypeNotAssignableTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-}
-
-@reflectiveTest
-class MapKeyTypeNotAssignableTest_language24 extends PubPackageResolutionTest
-    with MapKeyTypeNotAssignableTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
+    with MapKeyTypeNotAssignableTestCases {}
 
 mixin MapKeyTypeNotAssignableTestCases on PubPackageResolutionTest {
-  bool get _constant_update_2018;
-
   test_const_ifElement_thenElseFalse_intInt_dynamic() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = 0;
 const dynamic b = 0;
 var v = const <int, bool>{if (1 < 0) a: true else b: false};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 68, 32),
-              ]);
+''');
   }
 
   test_const_ifElement_thenElseFalse_intString_dynamic() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic a = 0;
 const dynamic b = 'b';
 var v = const <int, bool>{if (1 < 0) a: true else b: false};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 94, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 70, 32),
-              ]);
+''', [
+      error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 94, 1),
+    ]);
   }
 
   test_const_ifElement_thenFalse_intString_dynamic() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = 'a';
 var v = const <int, bool>{if (1 < 0) a: true};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 49, 18),
-              ]);
+''');
   }
 
   test_const_ifElement_thenFalse_intString_value() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 var v = const <int, bool>{if (1 < 0) 'a': true};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 37, 3),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 26, 20),
-                error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 37, 3),
-              ]);
+''', [
+      error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 37, 3),
+    ]);
   }
 
   test_const_ifElement_thenTrue_intInt_dynamic() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = 0;
 var v = const <int, bool>{if (true) a: true};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 47, 17),
-              ]);
+''');
   }
 
   test_const_ifElement_thenTrue_intString_dynamic() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic a = 'a';
 var v = const <int, bool>{if (true) a: true};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 59, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 49, 17),
-              ]);
+''', [
+      error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 59, 1),
+    ]);
   }
 
   test_const_ifElement_thenTrue_notConst() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final a = 0;
 var v = const <int, bool>{if (1 < 2) a: true};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, 50, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 39, 18),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, 50, 1),
+    ]);
   }
 
   test_const_intInt_dynamic() async {
@@ -166,31 +101,18 @@
   }
 
   test_const_spread_intInt() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 var v = const <int, String>{...{1: 'a'}};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 28, 11),
-              ]);
+''');
   }
 
   test_const_spread_intString_dynamic() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic a = 'a';
 var v = const <int, String>{...{a: 'a'}};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 55, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 51, 11),
-                error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 55, 1),
-              ]);
+''', [
+      error(CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, 55, 1),
+    ]);
   }
 
   test_key_type_is_assignable() async {
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 fb15c1f..443ce2b 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
@@ -10,139 +10,70 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(MapValueTypeNotAssignableTest);
-    defineReflectiveTests(MapValueTypeNotAssignableTest_language24);
   });
 }
 
 @reflectiveTest
 class MapValueTypeNotAssignableTest extends PubPackageResolutionTest
-    with MapValueTypeNotAssignableTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-}
-
-@reflectiveTest
-class MapValueTypeNotAssignableTest_language24 extends PubPackageResolutionTest
-    with MapValueTypeNotAssignableTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
+    with MapValueTypeNotAssignableTestCases {}
 
 mixin MapValueTypeNotAssignableTestCases on PubPackageResolutionTest {
-  bool get _constant_update_2018;
-
   test_const_ifElement_thenElseFalse_intInt_dynamic() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = 0;
 const dynamic b = 0;
 var v = const <bool, int>{if (1 < 0) true: a else false: b};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 68, 32),
-              ]);
+''');
   }
 
   test_const_ifElement_thenElseFalse_intString_dynamic() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic a = 0;
 const dynamic b = 'b';
 var v = const <bool, int>{if (1 < 0) true: a else false: b};
-''',
-        _constant_update_2018
-            ? [
-                error(
-                    CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 101, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 70, 32),
-              ]);
+''', [
+      error(CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 101, 1),
+    ]);
   }
 
   test_const_ifElement_thenFalse_intString_dynamic() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = 'a';
 var v = const <bool, int>{if (1 < 0) true: a};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 49, 18),
-              ]);
+''');
   }
 
   test_const_ifElement_thenFalse_intString_value() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 var v = const <bool, int>{if (1 < 0) true: 'a'};
-''',
-        _constant_update_2018
-            ? [
-                error(
-                    CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 43, 3),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 26, 20),
-                error(
-                    CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 43, 3),
-              ]);
+''', [
+      error(CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 43, 3),
+    ]);
   }
 
   test_const_ifElement_thenTrue_intInt_dynamic() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = 0;
 var v = const <bool, int>{if (true) true: a};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 47, 17),
-              ]);
+''');
   }
 
   test_const_ifElement_thenTrue_intString_dynamic() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic a = 'a';
 var v = const <bool, int>{if (true) true: a};
-''',
-        _constant_update_2018
-            ? [
-                error(
-                    CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 65, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 49, 17),
-              ]);
+''', [
+      error(CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 65, 1),
+    ]);
   }
 
   test_const_ifElement_thenTrue_notConst() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final a = 0;
 var v = const <bool, int>{if (1 < 2) true: a};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 56, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 39, 18),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 56, 1),
+    ]);
   }
 
   test_const_intInt_dynamic() async {
@@ -170,33 +101,18 @@
   }
 
   test_const_spread_intInt() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 var v = const <bool, int>{...{true: 1}};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 26, 12),
-              ]);
+''');
   }
 
   test_const_spread_intString_dynamic() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic a = 'a';
 var v = const <bool, int>{...{true: a}};
-''',
-        _constant_update_2018
-            ? [
-                error(
-                    CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 59, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 49, 12),
-                error(
-                    CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 59, 1),
-              ]);
+''', [
+      error(CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, 59, 1),
+    ]);
   }
 
   test_nonConst_ifElement_thenElseFalse_intInt_dynamic() async {
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_list_element_from_deferred_library_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_list_element_from_deferred_library_test.dart
index 28ae14c..a0fcf9a 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_list_element_from_deferred_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_list_element_from_deferred_library_test.dart
@@ -9,33 +9,17 @@
 
 main() {
   defineReflectiveSuite(() {
-    defineReflectiveTests(NonConstantListValueFromDeferredLibraryTest);
-    defineReflectiveTests(
-        NonConstantListElementFromDeferredLibraryTest_language24);
+    defineReflectiveTests(NonConstantListElementFromDeferredLibraryTest);
   });
 }
 
 @reflectiveTest
-class NonConstantListElementFromDeferredLibraryTest_language24
+class NonConstantListElementFromDeferredLibraryTest
     extends PubPackageResolutionTest
-    with NonConstantListElementFromDeferredLibraryTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
+    with NonConstantListElementFromDeferredLibraryTestCases {}
 
 mixin NonConstantListElementFromDeferredLibraryTestCases
     on PubPackageResolutionTest {
-  bool get _constant_update_2018;
-
   @failingTest
   test_const_ifElement_thenTrue_deferredElse() async {
     // reports wrong error code (which is not crucial to fix)
@@ -56,23 +40,16 @@
   test_const_ifElement_thenTrue_deferredThen() async {
     newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const int c = 1;''');
-    await assertErrorsInCode(
-        r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
 const cond = true;
 var v = const [ if (cond) a.c ];
-''',
-        _constant_update_2018
-            ? [
-                error(
-                    CompileTimeErrorCode
-                        .NON_CONSTANT_LIST_ELEMENT_FROM_DEFERRED_LIBRARY,
-                    79,
-                    3),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 69, 13),
-              ]);
+''', [
+      error(
+          CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT_FROM_DEFERRED_LIBRARY,
+          79,
+          3),
+    ]);
   }
 
   test_const_topLevel_deferred() async {
@@ -103,11 +80,3 @@
     ]);
   }
 }
-
-@reflectiveTest
-class NonConstantListValueFromDeferredLibraryTest
-    extends PubPackageResolutionTest
-    with NonConstantListElementFromDeferredLibraryTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-}
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_list_element_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_list_element_test.dart
index f9038cd..5e51730 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_list_element_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_list_element_test.dart
@@ -10,36 +10,14 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(NonConstantListElementTest);
-    defineReflectiveTests(NonConstantListElementTest_language24);
   });
 }
 
 @reflectiveTest
 class NonConstantListElementTest extends PubPackageResolutionTest
-    with NonConstantListElementTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-}
-
-@reflectiveTest
-class NonConstantListElementTest_language24 extends PubPackageResolutionTest
-    with NonConstantListElementTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
+    with NonConstantListElementTestCases {}
 
 mixin NonConstantListElementTestCases on PubPackageResolutionTest {
-  bool get _constant_update_2018;
-
   test_const_forElement() async {
     await assertErrorsInCode(r'''
 const Set set = {};
@@ -50,119 +28,71 @@
   }
 
   test_const_ifElement_thenElseFalse_finalElse() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const [if (1 < 0) 0 else a];
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 54, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 36, 19),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 54, 1),
+    ]);
   }
 
   test_const_ifElement_thenElseFalse_finalThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const [if (1 < 0) a else 0];
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 47, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 36, 19),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 47, 1),
+    ]);
   }
 
   test_const_ifElement_thenElseTrue_finalElse() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const [if (1 > 0) 0 else a];
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 54, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 36, 19),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 54, 1),
+    ]);
   }
 
   test_const_ifElement_thenElseTrue_finalThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const [if (1 > 0) a else 0];
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 47, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 36, 19),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 47, 1),
+    ]);
   }
 
   test_const_ifElement_thenFalse_constThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = 0;
 var v = const [if (1 < 0) a];
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 36, 12),
-              ]);
+''');
   }
 
   test_const_ifElement_thenFalse_finalThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const [if (1 < 0) a];
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 47, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 36, 12),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 47, 1),
+    ]);
   }
 
   test_const_ifElement_thenTrue_constThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = 0;
 var v = const [if (1 > 0) a];
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 36, 12),
-              ]);
+''');
   }
 
   test_const_ifElement_thenTrue_finalThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const [if (1 > 0) a];
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 47, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 36, 12),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 47, 1),
+    ]);
   }
 
   test_const_topVar() async {
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_map_element_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_map_element_test.dart
index 26828b8..f60e50d 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_map_element_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_map_element_test.dart
@@ -10,40 +10,16 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(NonConstantMapElementTest);
-    defineReflectiveTests(NonConstantMapElementTest_language24);
     defineReflectiveTests(NonConstantMapKeyTest);
-    defineReflectiveTests(NonConstantMapKeyTest_language24);
     defineReflectiveTests(NonConstantMapValueTest);
-    defineReflectiveTests(NonConstantMapValueTest_language24);
   });
 }
 
 @reflectiveTest
 class NonConstantMapElementTest extends PubPackageResolutionTest
-    with NonConstantMapElementTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-}
-
-@reflectiveTest
-class NonConstantMapElementTest_language24 extends PubPackageResolutionTest
-    with NonConstantMapElementTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
+    with NonConstantMapElementTestCases {}
 
 mixin NonConstantMapElementTestCases on PubPackageResolutionTest {
-  bool get _constant_update_2018;
-
   test_forElement_cannotBeConst() async {
     await assertErrorsInCode('''
 void main() {
@@ -56,21 +32,14 @@
   }
 
   test_forElement_nested_cannotBeConst() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 void main() {
   const {1: null, if (true) for (final x in const []) null: null};
 }
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 42, 36),
-                error(HintCode.UNUSED_LOCAL_VARIABLE, 53, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 32, 46),
-                error(HintCode.UNUSED_LOCAL_VARIABLE, 53, 1),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 42, 36),
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 53, 1),
+    ]);
   }
 
   test_forElement_notConst_noError() async {
@@ -83,238 +52,133 @@
   }
 
   test_ifElement_mayBeConst() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 void main() {
   const {1: null, if (true) null: null};
 }
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 32, 20),
-              ]);
+''');
   }
 
   test_ifElement_nested_mayBeConst() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 void main() {
   const {1: null, if (true) if (true) null: null};
 }
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 32, 30),
-              ]);
+''');
   }
 
   test_ifElement_notConstCondition() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 void main() {
   bool notConst = true;
   const {1: null, if (notConst) null: null};
 }
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 60, 8),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 56, 24),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 60, 8),
+    ]);
   }
 
   test_ifElementWithElse_mayBeConst() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 void main() {
   const isTrue = true;
   const {1: null, if (isTrue) null: null else null: null};
 }
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 55, 38),
-              ]);
+''');
   }
 
   test_spreadElement_mayBeConst() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 void main() {
   const {1: null, ...{null: null}};
 }
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 32, 15),
-              ]);
+''');
   }
 
   test_spreadElement_notConst() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 void main() {
   var notConst = {};
   const {1: null, ...notConst};
 }
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 56, 8),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 53, 11),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 56, 8),
+    ]);
   }
 }
 
 @reflectiveTest
 class NonConstantMapKeyTest extends PubPackageResolutionTest
-    with NonConstantMapKeyTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-}
-
-@reflectiveTest
-class NonConstantMapKeyTest_language24 extends PubPackageResolutionTest
-    with NonConstantMapKeyTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
+    with NonConstantMapKeyTestCases {}
 
 @reflectiveTest
 mixin NonConstantMapKeyTestCases on PubPackageResolutionTest {
-  bool get _constant_update_2018;
-
   test_const_ifElement_thenElseFalse_finalElse() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const <int, int>{if (1 < 0) 0: 0 else a: 0};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, 67, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 46, 25),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, 67, 1),
+    ]);
   }
 
   test_const_ifElement_thenElseFalse_finalThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const <int, int>{if (1 < 0) a: 0 else 0: 0};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, 57, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 46, 25),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, 57, 1),
+    ]);
   }
 
   test_const_ifElement_thenElseTrue_finalElse() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const <int, int>{if (1 > 0) 0: 0 else a: 0};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, 67, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 46, 25),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, 67, 1),
+    ]);
   }
 
   test_const_ifElement_thenElseTrue_finalThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const <int, int>{if (1 > 0) a: 0 else 0: 0};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, 57, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 46, 25),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, 57, 1),
+    ]);
   }
 
   test_const_ifElement_thenFalse_constThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = 0;
 var v = const <int, int>{if (1 < 0) a: 0};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 46, 15),
-              ]);
+''');
   }
 
   test_const_ifElement_thenFalse_finalThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const <int, int>{if (1 < 0) a: 0};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, 57, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 46, 15),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, 57, 1),
+    ]);
   }
 
   test_const_ifElement_thenTrue_constThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = 0;
 var v = const <int, int>{if (1 > 0) a: 0};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 46, 15),
-              ]);
+''');
   }
 
   test_const_ifElement_thenTrue_finalThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const <int, int>{if (1 > 0) a: 0};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, 57, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 46, 15),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, 57, 1),
+    ]);
   }
 
   test_const_topVar() async {
@@ -336,144 +200,75 @@
 
 @reflectiveTest
 class NonConstantMapValueTest extends PubPackageResolutionTest
-    with NonConstantMapValueTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-}
-
-@reflectiveTest
-class NonConstantMapValueTest_language24 extends PubPackageResolutionTest
-    with NonConstantMapValueTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
+    with NonConstantMapValueTestCases {}
 
 mixin NonConstantMapValueTestCases on PubPackageResolutionTest {
-  bool get _constant_update_2018;
-
   test_const_ifElement_thenElseFalse_finalElse() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const <int, int>{if (1 < 0) 0: 0 else 0: a};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 70, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 46, 25),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 70, 1),
+    ]);
   }
 
   test_const_ifElement_thenElseFalse_finalThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const <int, int>{if (1 < 0) 0: a else 0: 0};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 60, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 46, 25),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 60, 1),
+    ]);
   }
 
   test_const_ifElement_thenElseTrue_finalElse() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const <int, int>{if (1 > 0) 0: 0 else 0: a};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 70, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 46, 25),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 70, 1),
+    ]);
   }
 
   test_const_ifElement_thenElseTrue_finalThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const <int, int>{if (1 > 0) 0: a else 0: 0};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 60, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 46, 25),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 60, 1),
+    ]);
   }
 
   test_const_ifElement_thenFalse_constThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = 0;
 var v = const <int, int>{if (1 < 0) 0: a};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 46, 15),
-              ]);
+''');
   }
 
   test_const_ifElement_thenFalse_finalThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const <int, int>{if (1 < 0) 0: a};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 60, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 46, 15),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 60, 1),
+    ]);
   }
 
   test_const_ifElement_thenTrue_constThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = 0;
 var v = const <int, int>{if (1 > 0) 0: a};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 46, 15),
-              ]);
+''');
   }
 
   test_const_ifElement_thenTrue_finalThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const <int, int>{if (1 > 0) 0: a};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 60, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 46, 15),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 60, 1),
+    ]);
   }
 
   test_const_topVar() async {
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_map_key_from_deferred_library_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_map_key_from_deferred_library_test.dart
index f6526ff..1d8f643 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_map_key_from_deferred_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_map_key_from_deferred_library_test.dart
@@ -10,38 +10,15 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(NonConstantMapKeyFromDeferredLibraryTest);
-    defineReflectiveTests(NonConstantMapKeyFromDeferredLibraryTest_language24);
   });
 }
 
 @reflectiveTest
 class NonConstantMapKeyFromDeferredLibraryTest extends PubPackageResolutionTest
-    with NonConstantMapKeyFromDeferredLibraryTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-}
-
-@reflectiveTest
-class NonConstantMapKeyFromDeferredLibraryTest_language24
-    extends PubPackageResolutionTest
-    with NonConstantMapKeyFromDeferredLibraryTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
+    with NonConstantMapKeyFromDeferredLibraryTestCases {}
 
 mixin NonConstantMapKeyFromDeferredLibraryTestCases
     on PubPackageResolutionTest {
-  bool get _constant_update_2018;
-
   @failingTest
   test_const_ifElement_thenTrue_deferredElse() async {
 // reports wrong error code
@@ -60,23 +37,14 @@
   test_const_ifElement_thenTrue_deferredThen() async {
     newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const int c = 1;''');
-    await assertErrorsInCode(
-        r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
 const cond = true;
 var v = const { if (cond) a.c : 0};
-''',
-        _constant_update_2018
-            ? [
-                error(
-                    CompileTimeErrorCode
-                        .NON_CONSTANT_MAP_KEY_FROM_DEFERRED_LIBRARY,
-                    79,
-                    3),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 69, 17),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_KEY_FROM_DEFERRED_LIBRARY, 79,
+          3),
+    ]);
   }
 
   test_const_topLevel_deferred() async {
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_map_key_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_map_key_test.dart
index f8b166b..8d42bf8 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_map_key_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_map_key_test.dart
@@ -10,66 +10,32 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(NonConstantMapKeyTest);
-    defineReflectiveTests(NonConstantMapKeyTest_language24);
   });
 }
 
 @reflectiveTest
 class NonConstantMapKeyTest extends PubPackageResolutionTest
-    with NonConstantMapKeyTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-}
-
-@reflectiveTest
-class NonConstantMapKeyTest_language24 extends PubPackageResolutionTest
-    with NonConstantMapKeyTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
+    with NonConstantMapKeyTestCases {}
 
 mixin NonConstantMapKeyTestCases on PubPackageResolutionTest {
-  bool get _constant_update_2018;
-
   test_const_ifElement_thenTrue_elseFinal() async {
-    await assertErrorsInCode(
-        r'''
+    await assertErrorsInCode(r'''
 final dynamic a = 0;
 const cond = true;
 var v = const {if (cond) 0: 1 else a : 0};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, 75, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 55, 25),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, 75, 1),
+    ]);
   }
 
   test_const_ifElement_thenTrue_thenFinal() async {
-    await assertErrorsInCode(
-        r'''
+    await assertErrorsInCode(r'''
 final dynamic a = 0;
 const cond = true;
 var v = const {if (cond) a : 0};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, 65, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 55, 15),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, 65, 1),
+    ]);
   }
 
   test_const_topLevel() async {
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_map_value_from_deferred_library_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_map_value_from_deferred_library_test.dart
index ad0ec5b..f7b72d4 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_map_value_from_deferred_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_map_value_from_deferred_library_test.dart
@@ -10,40 +10,16 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(NonConstantMapValueFromDeferredLibraryTest);
-    defineReflectiveTests(
-        NonConstantMapValueFromDeferredLibraryTest_language24);
   });
 }
 
 @reflectiveTest
 class NonConstantMapValueFromDeferredLibraryTest
     extends PubPackageResolutionTest
-    with NonConstantMapValueFromDeferredLibraryTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-}
-
-@reflectiveTest
-class NonConstantMapValueFromDeferredLibraryTest_language24
-    extends PubPackageResolutionTest
-    with NonConstantMapValueFromDeferredLibraryTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
+    with NonConstantMapValueFromDeferredLibraryTestCases {}
 
 mixin NonConstantMapValueFromDeferredLibraryTestCases
     on PubPackageResolutionTest {
-  bool get _constant_update_2018;
-
   @failingTest
   test_const_ifElement_thenTrue_elseDeferred() async {
     // reports wrong error code
@@ -62,23 +38,14 @@
   test_const_ifElement_thenTrue_thenDeferred() async {
     newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const int c = 1;''');
-    await assertErrorsInCode(
-        r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
 const cond = true;
 var v = const { if (cond) 'a' : a.c};
-''',
-        _constant_update_2018
-            ? [
-                error(
-                    CompileTimeErrorCode
-                        .NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY,
-                    85,
-                    3),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 69, 19),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY,
+          85, 3),
+    ]);
   }
 
   test_const_topLevel_deferred() async {
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_map_value_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_map_value_test.dart
index 74c3160..26a41df 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_map_value_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_map_value_test.dart
@@ -10,67 +10,32 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(NonConstantMapValueTest);
-    defineReflectiveTests(NonConstantMapValueTest_language24);
   });
 }
 
 @reflectiveTest
 class NonConstantMapValueTest extends PubPackageResolutionTest
-    with NonConstantMapValueTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-}
-
-@reflectiveTest
-class NonConstantMapValueTest_language24 extends PubPackageResolutionTest
-    with NonConstantMapValueTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
+    with NonConstantMapValueTestCases {}
 
 mixin NonConstantMapValueTestCases on PubPackageResolutionTest {
-  bool get _constant_update_2018;
-
   test_const_ifTrue_elseFinal() async {
-    await assertErrorsInCode(
-        r'''
+    await assertErrorsInCode(r'''
 final dynamic a = 0;
 const cond = true;
 var v = const {if (cond) 'a': 'b', 'c' : a};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 81, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 55, 18),
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 81, 1),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 81, 1),
+    ]);
   }
 
   test_const_ifTrue_thenFinal() async {
-    await assertErrorsInCode(
-        r'''
+    await assertErrorsInCode(r'''
 final dynamic a = 0;
 const cond = true;
 var v = const {if (cond) 'a' : a};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 71, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 55, 17),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 71, 1),
+    ]);
   }
 
   test_const_topLevel() async {
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_set_element_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_set_element_test.dart
index 8adf61f..5e28579 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_set_element_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_set_element_test.dart
@@ -10,36 +10,14 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(NonConstantSetElementTest);
-    defineReflectiveTests(NonConstantSetElementTest_language24);
   });
 }
 
 @reflectiveTest
 class NonConstantSetElementTest extends PubPackageResolutionTest
-    with NonConstantSetElementTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-}
-
-@reflectiveTest
-class NonConstantSetElementTest_language24 extends PubPackageResolutionTest
-    with NonConstantSetElementTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
+    with NonConstantSetElementTestCases {}
 
 mixin NonConstantSetElementTestCases on PubPackageResolutionTest {
-  bool get _constant_update_2018;
-
   test_const_forElement() async {
     await assertErrorsInCode(r'''
 const Set set = {};
@@ -50,119 +28,71 @@
   }
 
   test_const_ifElement_thenElseFalse_finalElse() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const <int>{if (1 < 0) 0 else a};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 59, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 41, 19),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 59, 1),
+    ]);
   }
 
   test_const_ifElement_thenElseFalse_finalThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const <int>{if (1 < 0) a else 0};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 52, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 41, 19),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 52, 1),
+    ]);
   }
 
   test_const_ifElement_thenElseTrue_finalElse() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const <int>{if (1 > 0) 0 else a};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 59, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 41, 19),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 59, 1),
+    ]);
   }
 
   test_const_ifElement_thenElseTrue_finalThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const <int>{if (1 > 0) a else 0};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 52, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 41, 19),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 52, 1),
+    ]);
   }
 
   test_const_ifElement_thenFalse_constThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = 0;
 var v = const <int>{if (1 < 0) a};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 41, 12),
-              ]);
+''');
   }
 
   test_const_ifElement_thenFalse_finalThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const <int>{if (1 < 0) a};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 52, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 41, 12),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 52, 1),
+    ]);
   }
 
   test_const_ifElement_thenTrue_constThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = 0;
 var v = const <int>{if (1 > 0) a};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 41, 12),
-              ]);
+''');
   }
 
   test_const_ifElement_thenTrue_finalThen() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const <int>{if (1 > 0) a};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 52, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 41, 12),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 52, 1),
+    ]);
   }
 
   test_const_parameter() async {
@@ -175,18 +105,12 @@
   }
 
   test_const_spread_final() async {
-    await assertErrorsInCode(
-        r'''
+    await assertErrorsInCode(r'''
 final Set x = null;
 var v = const {...x};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 38, 1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 35, 4),
-              ]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 38, 1),
+    ]);
   }
 
   test_const_topVar() async {
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 1ea665c..36645a4 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
@@ -157,7 +157,7 @@
       findNode.index('x[0]'),
       readElement: null,
       writeElement: null,
-      type: 'Never',
+      type: 'dynamic',
     );
 
     assertType(findNode.binary('1 + 2'), 'int');
diff --git a/pkg/analyzer/test/src/diagnostics/set_element_from_deferred_library_test.dart b/pkg/analyzer/test/src/diagnostics/set_element_from_deferred_library_test.dart
index 1a89d0a..044914b 100644
--- a/pkg/analyzer/test/src/diagnostics/set_element_from_deferred_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/set_element_from_deferred_library_test.dart
@@ -10,37 +10,14 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(SetElementFromDeferredLibraryTest);
-    defineReflectiveTests(SetElementFromDeferredLibraryTest_language24);
   });
 }
 
 @reflectiveTest
 class SetElementFromDeferredLibraryTest extends PubPackageResolutionTest
-    with SetElementFromDeferredLibraryTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-}
-
-@reflectiveTest
-class SetElementFromDeferredLibraryTest_language24
-    extends PubPackageResolutionTest
-    with SetElementFromDeferredLibraryTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
+    with SetElementFromDeferredLibraryTestCases {}
 
 mixin SetElementFromDeferredLibraryTestCases on PubPackageResolutionTest {
-  bool get _constant_update_2018;
-
   @failingTest
   test_const_ifElement_thenTrue_elseDeferred() async {
     // reports wrong error code
@@ -58,20 +35,13 @@
   test_const_ifElement_thenTrue_thenDeferred() async {
     newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const int c = 1;''');
-    await assertErrorsInCode(
-        r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
 const cond = true;
 var v = const {if (cond) a.c};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.SET_ELEMENT_FROM_DEFERRED_LIBRARY,
-                    78, 3),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 68, 13),
-              ]);
+''', [
+      error(CompileTimeErrorCode.SET_ELEMENT_FROM_DEFERRED_LIBRARY, 78, 3),
+    ]);
   }
 
   test_const_topLevel_deferred() async {
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 d7349b8..1d34872 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
@@ -10,136 +10,67 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(SetElementTypeNotAssignableTest);
-    defineReflectiveTests(SetElementTypeNotAssignableTest_language24);
   });
 }
 
 @reflectiveTest
 class SetElementTypeNotAssignableTest extends PubPackageResolutionTest
-    with SetElementTypeNotAssignableTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-}
-
-@reflectiveTest
-class SetElementTypeNotAssignableTest_language24
-    extends PubPackageResolutionTest with SetElementTypeNotAssignableTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
+    with SetElementTypeNotAssignableTestCases {}
 
 mixin SetElementTypeNotAssignableTestCases on PubPackageResolutionTest {
-  bool get _constant_update_2018;
-
   test_const_ifElement_thenElseFalse_intInt() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = 0;
 const dynamic b = 0;
 var v = const <int>{if (1 < 0) a else b};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 62, 19),
-              ]);
+''');
   }
 
   test_const_ifElement_thenElseFalse_intString() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic a = 0;
 const dynamic b = 'b';
 var v = const <int>{if (1 < 0) a else b};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 82,
-                    1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 64, 19),
-              ]);
+''', [
+      error(CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 82, 1),
+    ]);
   }
 
   test_const_ifElement_thenFalse_intString() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 var v = const <int>{if (1 < 0) 'a'};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 31,
-                    3),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 20, 14),
-                error(CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 31,
-                    3),
-              ]);
+''', [
+      error(CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 31, 3),
+    ]);
   }
 
   test_const_ifElement_thenFalse_intString_dynamic() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = 'a';
 var v = const <int>{if (1 < 0) a};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 43, 12),
-              ]);
+''');
   }
 
   test_const_ifElement_thenTrue_intInt() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 const dynamic a = 0;
 var v = const <int>{if (true) a};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 41, 11),
-              ]);
+''');
   }
 
   test_const_ifElement_thenTrue_intString() async {
-    await assertErrorsInCode(
-        '''
+    await assertErrorsInCode('''
 const dynamic a = 'a';
 var v = const <int>{if (true) a};
-''',
-        _constant_update_2018
-            ? [
-                error(CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 53,
-                    1),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 43, 11),
-              ]);
+''', [
+      error(CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 53, 1),
+    ]);
   }
 
   test_const_spread_intInt() async {
-    await assertErrorsInCode(
-        '''
+    await assertNoErrorsInCode('''
 var v = const <int>{...[0, 1]};
-''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 20, 9),
-              ]);
+''');
   }
 
   test_explicitTypeArgs_const() async {
diff --git a/pkg/analyzer/test/src/diagnostics/spread_expression_from_deferred_library_test.dart b/pkg/analyzer/test/src/diagnostics/spread_expression_from_deferred_library_test.dart
index 3c9b2a3..c868a771 100644
--- a/pkg/analyzer/test/src/diagnostics/spread_expression_from_deferred_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/spread_expression_from_deferred_library_test.dart
@@ -10,57 +10,25 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(SpreadExpressionFromDeferredLibraryTest);
-    defineReflectiveTests(SpreadExpressionFromDeferredLibraryTest_language24);
   });
 }
 
 @reflectiveTest
 class SpreadExpressionFromDeferredLibraryTest extends PubPackageResolutionTest
-    with SpreadExpressionFromDeferredLibraryTestCases {
-  @override
-  bool get _constant_update_2018 => true;
-}
-
-@reflectiveTest
-class SpreadExpressionFromDeferredLibraryTest_language24
-    extends PubPackageResolutionTest
-    with SpreadExpressionFromDeferredLibraryTestCases {
-  @override
-  bool get _constant_update_2018 => false;
-
-  @override
-  void setUp() {
-    super.setUp();
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.4',
-    );
-  }
-}
+    with SpreadExpressionFromDeferredLibraryTestCases {}
 
 mixin SpreadExpressionFromDeferredLibraryTestCases on PubPackageResolutionTest {
-  bool get _constant_update_2018;
-
   test_inList_deferred() async {
     newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const List c = [];''');
-    await assertErrorsInCode(
-        r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
 f() {
   return const [...a.c];
-}''',
-        _constant_update_2018
-            ? [
-                error(
-                    CompileTimeErrorCode
-                        .SPREAD_EXPRESSION_FROM_DEFERRED_LIBRARY,
-                    59,
-                    3),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 56, 6),
-              ]);
+}''', [
+      error(
+          CompileTimeErrorCode.SPREAD_EXPRESSION_FROM_DEFERRED_LIBRARY, 59, 3),
+    ]);
   }
 
   test_inList_deferred_notConst() async {
@@ -76,39 +44,24 @@
   test_inList_notDeferred() async {
     newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const List c = [];''');
-    await assertErrorsInCode(
-        r'''
+    await assertNoErrorsInCode(r'''
 import 'lib1.dart' as a;
 f() {
   return const [...a.c];
-}''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 47, 6),
-              ]);
+}''');
   }
 
   test_inMap_deferred() async {
     newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const Map c = <int, int>{};''');
-    await assertErrorsInCode(
-        r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
 f() {
   return const {...a.c};
-}''',
-        _constant_update_2018
-            ? [
-                error(
-                    CompileTimeErrorCode
-                        .SPREAD_EXPRESSION_FROM_DEFERRED_LIBRARY,
-                    59,
-                    3),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 56, 6),
-              ]);
+}''', [
+      error(
+          CompileTimeErrorCode.SPREAD_EXPRESSION_FROM_DEFERRED_LIBRARY, 59, 3),
+    ]);
   }
 
   test_inMap_notConst() async {
@@ -124,39 +77,24 @@
   test_inMap_notDeferred() async {
     newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const Map c = <int, int>{};''');
-    await assertErrorsInCode(
-        r'''
+    await assertNoErrorsInCode(r'''
 import 'lib1.dart' as a;
 f() {
   return const {...a.c};
-}''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 47, 6),
-              ]);
+}''');
   }
 
   test_inSet_deferred() async {
     newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const Set c = <int>{};''');
-    await assertErrorsInCode(
-        r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
 f() {
   return const {...a.c};
-}''',
-        _constant_update_2018
-            ? [
-                error(
-                    CompileTimeErrorCode
-                        .SPREAD_EXPRESSION_FROM_DEFERRED_LIBRARY,
-                    59,
-                    3),
-              ]
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 56, 6),
-              ]);
+}''', [
+      error(
+          CompileTimeErrorCode.SPREAD_EXPRESSION_FROM_DEFERRED_LIBRARY, 59, 3),
+    ]);
   }
 
   test_inSet_notConst() async {
@@ -172,16 +110,10 @@
   test_inSet_notDeferred() async {
     newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const Set c = <int>{};''');
-    await assertErrorsInCode(
-        r'''
+    await assertNoErrorsInCode(r'''
 import 'lib1.dart' as a;
 f() {
   return const {...a.c};
-}''',
-        _constant_update_2018
-            ? []
-            : [
-                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 47, 6),
-              ]);
+}''');
   }
 }
diff --git a/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart b/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart
index 01c5fd8..80a1d09 100644
--- a/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart
+++ b/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart
@@ -24,17 +24,17 @@
 }
 
 const Version enableAlternativeInvalidationStrategyVersion =
-    const Version(2, 11);
-const Version enableConstantUpdate2018Version = const Version(2, 4);
+    const Version(2, 10);
+const Version enableConstantUpdate2018Version = const Version(2, 0);
 const Version enableControlFlowCollectionsVersion = const Version(2, 0);
 const Version enableExtensionMethodsVersion = const Version(2, 6);
-const Version enableNonNullableVersion = const Version(2, 11);
-const Version enableNonfunctionTypeAliasesVersion = const Version(2, 11);
+const Version enableNonNullableVersion = const Version(2, 10);
+const Version enableNonfunctionTypeAliasesVersion = const Version(2, 10);
 const Version enableSetLiteralsVersion = const Version(2, 0);
 const Version enableSpreadCollectionsVersion = const Version(2, 0);
-const Version enableTripleShiftVersion = const Version(2, 11);
-const Version enableValueClassVersion = const Version(2, 11);
-const Version enableVarianceVersion = const Version(2, 11);
+const Version enableTripleShiftVersion = const Version(2, 10);
+const Version enableValueClassVersion = const Version(2, 10);
+const Version enableVarianceVersion = const Version(2, 10);
 
 ExperimentalFlag parseExperimentalFlag(String flag) {
   switch (flag) {
@@ -93,31 +93,31 @@
 };
 
 const Map<ExperimentalFlag, Version> experimentEnabledVersion = {
-  ExperimentalFlag.alternativeInvalidationStrategy: const Version(2, 11),
-  ExperimentalFlag.constantUpdate2018: const Version(2, 4),
-  ExperimentalFlag.controlFlowCollections: const Version(2, 0),
-  ExperimentalFlag.extensionMethods: const Version(2, 6),
-  ExperimentalFlag.nonNullable: const Version(2, 11),
-  ExperimentalFlag.nonfunctionTypeAliases: const Version(2, 11),
-  ExperimentalFlag.setLiterals: const Version(2, 0),
-  ExperimentalFlag.spreadCollections: const Version(2, 0),
-  ExperimentalFlag.tripleShift: const Version(2, 11),
-  ExperimentalFlag.valueClass: const Version(2, 11),
-  ExperimentalFlag.variance: const Version(2, 11),
-};
-
-const Map<ExperimentalFlag, Version> experimentReleasedVersion = {
-  ExperimentalFlag.alternativeInvalidationStrategy: const Version(2, 11),
-  ExperimentalFlag.constantUpdate2018: const Version(2, 4),
+  ExperimentalFlag.alternativeInvalidationStrategy: const Version(2, 10),
+  ExperimentalFlag.constantUpdate2018: const Version(2, 0),
   ExperimentalFlag.controlFlowCollections: const Version(2, 0),
   ExperimentalFlag.extensionMethods: const Version(2, 6),
   ExperimentalFlag.nonNullable: const Version(2, 10),
-  ExperimentalFlag.nonfunctionTypeAliases: const Version(2, 11),
+  ExperimentalFlag.nonfunctionTypeAliases: const Version(2, 10),
   ExperimentalFlag.setLiterals: const Version(2, 0),
   ExperimentalFlag.spreadCollections: const Version(2, 0),
-  ExperimentalFlag.tripleShift: const Version(2, 11),
-  ExperimentalFlag.valueClass: const Version(2, 11),
-  ExperimentalFlag.variance: const Version(2, 11),
+  ExperimentalFlag.tripleShift: const Version(2, 10),
+  ExperimentalFlag.valueClass: const Version(2, 10),
+  ExperimentalFlag.variance: const Version(2, 10),
+};
+
+const Map<ExperimentalFlag, Version> experimentReleasedVersion = {
+  ExperimentalFlag.alternativeInvalidationStrategy: const Version(2, 10),
+  ExperimentalFlag.constantUpdate2018: const Version(2, 0),
+  ExperimentalFlag.controlFlowCollections: const Version(2, 0),
+  ExperimentalFlag.extensionMethods: const Version(2, 6),
+  ExperimentalFlag.nonNullable: const Version(2, 10),
+  ExperimentalFlag.nonfunctionTypeAliases: const Version(2, 10),
+  ExperimentalFlag.setLiterals: const Version(2, 0),
+  ExperimentalFlag.spreadCollections: const Version(2, 0),
+  ExperimentalFlag.tripleShift: const Version(2, 10),
+  ExperimentalFlag.valueClass: const Version(2, 10),
+  ExperimentalFlag.variance: const Version(2, 10),
 };
 
 const AllowedExperimentalFlags defaultAllowedExperimentalFlags =
diff --git a/pkg/front_end/lib/src/fasta/source/value_kinds.dart b/pkg/front_end/lib/src/fasta/source/value_kinds.dart
index c16e23d..e533e56 100644
--- a/pkg/front_end/lib/src/fasta/source/value_kinds.dart
+++ b/pkg/front_end/lib/src/fasta/source/value_kinds.dart
@@ -14,32 +14,11 @@
 
 import 'package:kernel/ast.dart' as type;
 
-import '../builder/builder.dart' as type;
-import '../builder/builtin_type_declaration_builder.dart' as type;
-import '../builder/class_builder.dart' as type;
-import '../builder/constructor_reference_builder.dart' as type;
-import '../builder/dynamic_type_declaration_builder.dart' as type;
-import '../builder/enum_builder.dart' as type;
-import '../builder/field_builder.dart' as type;
 import '../builder/formal_parameter_builder.dart' as type;
-import '../builder/function_builder.dart' as type;
-import '../builder/function_type_builder.dart' as type;
-import '../builder/invalid_type_declaration_builder.dart' as type;
-import '../builder/library_builder.dart' as type;
-import '../builder/member_builder.dart' as type;
 import '../builder/metadata_builder.dart' as type;
-import '../builder/mixin_application_builder.dart' as type;
-import '../builder/modifier_builder.dart' as type;
-import '../builder/name_iterator.dart' as type;
-import '../builder/named_type_builder.dart' as type;
-import '../builder/nullability_builder.dart' as type;
-import '../builder/prefix_builder.dart' as type;
-import '../builder/type_alias_builder.dart' as type;
 import '../builder/type_builder.dart' as type;
-import '../builder/type_declaration_builder.dart' as type;
 import '../builder/type_variable_builder.dart' as type;
 import '../builder/unresolved_type.dart' as type;
-import '../builder/void_type_declaration_builder.dart' as type;
 
 import '../identifiers.dart' as type;
 
diff --git a/pkg/js/CHANGELOG.md b/pkg/js/CHANGELOG.md
index a996ef1..3728fa9 100644
--- a/pkg/js/CHANGELOG.md
+++ b/pkg/js/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.6.3-nullsafety.1
+
+* Allow 2.10 stable and 2.11.0 dev SDK versions.
+
 ## 0.6.3-nullsafety
 
 * Opt in to null safety.
diff --git a/pkg/js/pubspec.yaml b/pkg/js/pubspec.yaml
index 67165c3..b9d05c4 100644
--- a/pkg/js/pubspec.yaml
+++ b/pkg/js/pubspec.yaml
@@ -1,10 +1,10 @@
 name: js
-version: 0.6.3-nullsafety
+version: 0.6.3-nullsafety.1
 description: Annotations to create static Dart interfaces for JavaScript APIs.
 homepage: https://github.com/dart-lang/sdk/tree/master/pkg/js
 
 environment:
-  sdk: '>=2.10.0-0 <2.10.0'
+  sdk: '>=2.10.0-0 <2.11.0'
 
 dev_dependencies:
   pedantic: ^1.9.0
diff --git a/pkg/kernel/lib/default_language_version.dart b/pkg/kernel/lib/default_language_version.dart
index eb90980..6b7b18c 100644
--- a/pkg/kernel/lib/default_language_version.dart
+++ b/pkg/kernel/lib/default_language_version.dart
@@ -9,4 +9,4 @@
 
 import "ast.dart";
 
-Version defaultLanguageVersion = const Version(2, 11);
+Version defaultLanguageVersion = const Version(2, 10);
diff --git a/pkg/meta/CHANGELOG.md b/pkg/meta/CHANGELOG.md
index f79fbff..9e27c00 100644
--- a/pkg/meta/CHANGELOG.md
+++ b/pkg/meta/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.3.0-nullsafety.3
+
+* Allow 2.10 stable and 2.11.0 dev SDK versions.
+
 ## 1.3.0-nullsafety.2
 
 * Update for the 2.10 dev sdk.
diff --git a/pkg/meta/pubspec.yaml b/pkg/meta/pubspec.yaml
index dfad765..be6237c 100644
--- a/pkg/meta/pubspec.yaml
+++ b/pkg/meta/pubspec.yaml
@@ -1,5 +1,5 @@
 name: meta
-version: 1.3.0-nullsafety.2
+version: 1.3.0-nullsafety.3
 homepage: https://github.com/dart-lang/sdk/tree/master/pkg/meta
 description: >
  This library contains the declarations of annotations that developers can use
@@ -8,4 +8,4 @@
  to provide a better user experience.
 environment:
   # This must remain a tight constraint until nnbd is stable
-  sdk: '>=2.10.0-0 <2.10.0'
+  sdk: '>=2.10.0-0 <2.11.0'
diff --git a/runtime/bin/main_options.cc b/runtime/bin/main_options.cc
index 7c54268..1d2f619 100644
--- a/runtime/bin/main_options.cc
+++ b/runtime/bin/main_options.cc
@@ -487,7 +487,6 @@
 
   bool implicitly_use_dart_dev = false;
   bool run_script = false;
-  int script_or_cmd_index = -1;
 
   // Get the script name.
   if (i < argc) {
@@ -500,7 +499,6 @@
 #else
     bool is_potential_file_path = true;
 #endif  // !defined(DART_PRECOMPILED_RUNTIME)
-    script_or_cmd_index = i;
     if (Options::disable_dart_dev() ||
         (is_potential_file_path && !enable_vm_service_)) {
       *script_name = Utils::StrDup(argv[i]);
@@ -549,6 +547,9 @@
   else {  // NOLINT
     return -1;
   }
+  USE(enable_dartdev_analytics);
+  USE(disable_dartdev_analytics);
+
   const char** vm_argv = temp_vm_options.arguments();
   int vm_argc = temp_vm_options.count();
 
diff --git a/runtime/bin/main_options.h b/runtime/bin/main_options.h
index 48553df..6f612fd 100644
--- a/runtime/bin/main_options.h
+++ b/runtime/bin/main_options.h
@@ -79,9 +79,9 @@
   kAppJIT,
 };
 
-static const char* DEFAULT_VM_SERVICE_SERVER_IP = "localhost";
-static const int DEFAULT_VM_SERVICE_SERVER_PORT = 8181;
-static const int INVALID_VM_SERVICE_SERVER_PORT = -1;
+static constexpr const char* DEFAULT_VM_SERVICE_SERVER_IP = "localhost";
+static constexpr int DEFAULT_VM_SERVICE_SERVER_PORT = 8181;
+static constexpr int INVALID_VM_SERVICE_SERVER_PORT = -1;
 
 class Options {
  public:
diff --git a/runtime/include/dart_api_dl.c b/runtime/include/dart_api_dl.c
index 7709a02..1a49c9c 100644
--- a/runtime/include/dart_api_dl.c
+++ b/runtime/include/dart_api_dl.c
@@ -16,7 +16,7 @@
 
 #undef DART_API_DL_DEFINITIONS
 
-typedef void (*DartApiEntry_function)();
+typedef void* DartApiEntry_function;
 
 DartApiEntry_function FindFunctionPointer(const DartApiEntry* entries,
                                           const char* name) {
diff --git a/runtime/tests/vm/dart/regress_42799_test.dart b/runtime/tests/vm/dart/regress_42799_test.dart
new file mode 100644
index 0000000..c091da7
--- /dev/null
+++ b/runtime/tests/vm/dart/regress_42799_test.dart
@@ -0,0 +1,29 @@
+// 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.
+
+// Verifies that AOT compiler doesn't crash when constant folding 'is'
+// test for a value which is a result of unreachable code
+// (result of inlined call of a method which doesn't return).
+// Regression test for https://github.com/dart-lang/sdk/issues/42799.
+
+import "package:expect/expect.dart";
+
+@pragma('vm:prefer-inline')
+dynamic foo0(int par1) {
+  if (par1 >= 39) {
+    return <String>[];
+  }
+  if (par1 >= 37) {
+    return <int>[];
+  }
+  throw 'hi';
+}
+
+main() {
+  Expect.throws(() {
+    if (foo0(0) is List<int>) {
+      print('not reachable');
+    }
+  }, (e) => e == 'hi');
+}
diff --git a/runtime/tests/vm/dart/send_instantiated_fun_test.dart b/runtime/tests/vm/dart/send_instantiated_fun_test.dart
index 751e8f8..ab58c88 100644
--- a/runtime/tests/vm/dart/send_instantiated_fun_test.dart
+++ b/runtime/tests/vm/dart/send_instantiated_fun_test.dart
@@ -16,7 +16,7 @@
 // Prevent obfuscation.
 @pragma('vm:entry-point')
 List<T> decodeFrom<T>(String s) {
-  return List();
+  return [];
 }
 
 // Prevent obfuscation.
diff --git a/runtime/tests/vm/dart_2/regress_42799_test.dart b/runtime/tests/vm/dart_2/regress_42799_test.dart
new file mode 100644
index 0000000..c091da7
--- /dev/null
+++ b/runtime/tests/vm/dart_2/regress_42799_test.dart
@@ -0,0 +1,29 @@
+// 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.
+
+// Verifies that AOT compiler doesn't crash when constant folding 'is'
+// test for a value which is a result of unreachable code
+// (result of inlined call of a method which doesn't return).
+// Regression test for https://github.com/dart-lang/sdk/issues/42799.
+
+import "package:expect/expect.dart";
+
+@pragma('vm:prefer-inline')
+dynamic foo0(int par1) {
+  if (par1 >= 39) {
+    return <String>[];
+  }
+  if (par1 >= 37) {
+    return <int>[];
+  }
+  throw 'hi';
+}
+
+main() {
+  Expect.throws(() {
+    if (foo0(0) is List<int>) {
+      print('not reachable');
+    }
+  }, (e) => e == 'hi');
+}
diff --git a/runtime/tests/vm/vm.status b/runtime/tests/vm/vm.status
index 42a3df8..c228d58 100644
--- a/runtime/tests/vm/vm.status
+++ b/runtime/tests/vm/vm.status
@@ -174,6 +174,9 @@
 dart_2/data_uri_import_test/utf16: Crash
 dart_2/data_uri_import_test/wrongmime: Crash
 
+[ $builder_tag != bytecode_interpreter_nnbd && $builder_tag != bytecode_mixed_nnbd && $builder_tag != vm_nnbd ]
+dart/*: SkipByDesign # Migrated tests are not supposed to run on non-NNBD bots.
+
 [ $builder_tag == obfuscated && $compiler == dartkp ]
 dart/extension_names_test: SkipByDesign # No demangling (obfuscated).
 dart/extension_unnamed_names_test: SkipByDesign # No demangling (obfuscated).
@@ -382,9 +385,6 @@
 [ $builder_tag == bytecode_interpreter_nnbd || $builder_tag == bytecode_mixed_nnbd || $builder_tag == vm_nnbd ]
 dart_2/*: SkipByDesign # Legacy tests are not supposed to run on NNBD bots.
 
-[ $builder_tag != bytecode_interpreter_nnbd || $builder_tag != bytecode_mixed_nnbd || $builder_tag != vm_nnbd ]
-dart/*: SkipByDesign # Migrated tests are not supposed to run on non-NNBD bots.
-
 [ $builder_tag == crossword || $builder_tag == crossword_ast ]
 dart/bytecode_with_ast_in_aot_test: SkipByDesign # The test doesn't know location of cross-platform gen_snapshot
 dart/emit_aot_size_info_flag_test: SkipByDesign # The test itself cannot determine the location of gen_snapshot (only tools/test.py knows where it is).
diff --git a/runtime/vm/clustered_snapshot.cc b/runtime/vm/clustered_snapshot.cc
index 72c1210..1918244 100644
--- a/runtime/vm/clustered_snapshot.cc
+++ b/runtime/vm/clustered_snapshot.cc
@@ -2206,14 +2206,14 @@
     s->WriteUnsigned(WrittenCount());
 
     // Set up references for those objects that will be written.
-    for (auto const ref : canonical_wsrs_) {
+    for (auto const& ref : canonical_wsrs_) {
       s->AssignRef(ref);
     }
 
     // In precompiled mode, set the object ID of each non-canonical WSR to
     // its canonical counterpart's object ID. This ensures that any reference to
     // it is serialized as a reference to the canonicalized one.
-    for (auto const ref : objects_) {
+    for (auto const& ref : objects_) {
       ASSERT(IsReachableReference(heap_->GetObjectId(ref)));
       if (ShouldDrop(ref)) {
         // For dropped references, reset their ID to be the unreachable
@@ -2238,7 +2238,7 @@
 
   void WriteFill(Serializer* s) {
     ASSERT(s->kind() == Snapshot::kFullAOT);
-    for (auto const ref : canonical_wsrs_) {
+    for (auto const& ref : canonical_wsrs_) {
       AutoTraceObject(ref);
 
       // In precompiled mode, we drop the reference to the target and only
diff --git a/runtime/vm/compiler/backend/constant_propagator.cc b/runtime/vm/compiler/backend/constant_propagator.cc
index 20b25ca..5ed0188 100644
--- a/runtime/vm/compiler/backend/constant_propagator.cc
+++ b/runtime/vm/compiler/backend/constant_propagator.cc
@@ -438,29 +438,33 @@
 
   if (IsNonConstant(value) || IsNonConstant(dst_type)) {
     SetValue(instr, non_constant_);
-  } else if (IsConstant(value) && IsConstant(dst_type)) {
+    return;
+  } else if (IsUnknown(value) || IsUnknown(dst_type)) {
+    return;
+  }
+  ASSERT(IsConstant(value) && IsConstant(dst_type));
+  if (dst_type.IsAbstractType()) {
     // We are ignoring the instantiator and instantiator_type_arguments, but
     // still monotonic and safe.
     if (instr->value()->Type()->IsAssignableTo(AbstractType::Cast(dst_type))) {
       SetValue(instr, value);
-    } else {
-      SetValue(instr, non_constant_);
+      return;
     }
   }
+  SetValue(instr, non_constant_);
 }
 
 void ConstantPropagator::VisitAssertSubtype(AssertSubtypeInstr* instr) {}
 
 void ConstantPropagator::VisitAssertBoolean(AssertBooleanInstr* instr) {
   const Object& value = instr->value()->definition()->constant_value();
-  if (IsNonConstant(value)) {
+  if (IsUnknown(value)) {
+    return;
+  }
+  if (value.IsBool()) {
+    SetValue(instr, value);
+  } else {
     SetValue(instr, non_constant_);
-  } else if (IsConstant(value)) {
-    if (value.IsBool()) {
-      SetValue(instr, value);
-    } else {
-      SetValue(instr, non_constant_);
-    }
   }
 }
 
@@ -500,7 +504,7 @@
       // Otherwise evaluate string compare with propagated constants.
       const Object& o1 = instr->ArgumentAt(0)->constant_value();
       const Object& o2 = instr->ArgumentAt(1)->constant_value();
-      if (IsConstant(o1) && IsConstant(o2) && o1.IsString() && o2.IsString()) {
+      if (o1.IsString() && o2.IsString()) {
         SetValue(instr, Bool::Get(String::Cast(o1).Equals(String::Cast(o2))));
         return;
       }
@@ -511,7 +515,7 @@
       ASSERT(instr->FirstArgIndex() == 0);
       // Otherwise evaluate string length with propagated constants.
       const Object& o = instr->ArgumentAt(0)->constant_value();
-      if (IsConstant(o) && o.IsString()) {
+      if (o.IsString()) {
         const auto& str = String::Cast(o);
         if (kind == MethodRecognizer::kStringBaseLength) {
           SetValue(instr, Integer::ZoneHandle(Z, Integer::New(str.Length())));
@@ -551,14 +555,16 @@
 void ConstantPropagator::VisitIfThenElse(IfThenElseInstr* instr) {
   instr->comparison()->Accept(this);
   const Object& value = instr->comparison()->constant_value();
-  if (IsNonConstant(value)) {
-    SetValue(instr, non_constant_);
-  } else if (IsConstant(value)) {
-    ASSERT(!value.IsNull());
-    ASSERT(value.IsBool());
+  ASSERT(!value.IsNull());
+  if (IsUnknown(value)) {
+    return;
+  }
+  if (value.IsBool()) {
     bool result = Bool::Cast(value).value();
     SetValue(instr, Smi::Handle(Z, Smi::New(result ? instr->if_true()
                                                    : instr->if_false())));
+  } else {
+    SetValue(instr, non_constant_);
   }
 }
 
@@ -649,17 +655,20 @@
   const Object& right = instr->right()->definition()->constant_value();
   if (IsNonConstant(left) || IsNonConstant(right)) {
     SetValue(instr, non_constant_);
-  } else if (IsConstant(left) && IsConstant(right)) {
-    if (left.IsInteger() && right.IsInteger()) {
-      const bool result = CompareIntegers(
-          instr->kind(),
-          Integer::Handle(Z, Integer::Cast(left).BitOp(Token::kBIT_AND,
-                                                       Integer::Cast(right))),
-          Object::smi_zero());
-      SetValue(instr, result ? Bool::True() : Bool::False());
-    } else {
-      SetValue(instr, non_constant_);
-    }
+    return;
+  } else if (IsUnknown(left) || IsUnknown(right)) {
+    return;
+  }
+  ASSERT(IsConstant(left) && IsConstant(right));
+  if (left.IsInteger() && right.IsInteger()) {
+    const bool result = CompareIntegers(
+        instr->kind(),
+        Integer::Handle(Z, Integer::Cast(left).BitOp(Token::kBIT_AND,
+                                                     Integer::Cast(right))),
+        Object::smi_zero());
+    SetValue(instr, result ? Bool::True() : Bool::False());
+  } else {
+    SetValue(instr, non_constant_);
   }
 }
 
@@ -758,29 +767,33 @@
 void ConstantPropagator::VisitOneByteStringFromCharCode(
     OneByteStringFromCharCodeInstr* instr) {
   const Object& o = instr->char_code()->definition()->constant_value();
-  if (o.IsNull() || IsNonConstant(o)) {
-    SetValue(instr, non_constant_);
-  } else if (IsConstant(o)) {
+  if (IsUnknown(o)) {
+    return;
+  }
+  if (o.IsSmi()) {
     const intptr_t ch_code = Smi::Cast(o).Value();
     ASSERT(ch_code >= 0);
     if (ch_code < Symbols::kMaxOneCharCodeSymbol) {
       StringPtr* table = Symbols::PredefinedAddress();
       SetValue(instr, String::ZoneHandle(Z, table[ch_code]));
-    } else {
-      SetValue(instr, non_constant_);
+      return;
     }
   }
+  SetValue(instr, non_constant_);
 }
 
 void ConstantPropagator::VisitStringToCharCode(StringToCharCodeInstr* instr) {
   const Object& o = instr->str()->definition()->constant_value();
-  if (o.IsNull() || IsNonConstant(o)) {
-    SetValue(instr, non_constant_);
-  } else if (IsConstant(o)) {
+  if (IsUnknown(o)) {
+    return;
+  }
+  if (o.IsString()) {
     const String& str = String::Cast(o);
     const intptr_t result =
         (str.Length() == 1) ? static_cast<intptr_t>(str.CharAt(0)) : -1;
     SetValue(instr, Smi::ZoneHandle(Z, Smi::New(result)));
+  } else {
+    SetValue(instr, non_constant_);
   }
 }
 
@@ -858,11 +871,14 @@
 
 void ConstantPropagator::VisitBooleanNegate(BooleanNegateInstr* instr) {
   const Object& value = instr->value()->definition()->constant_value();
-  if (IsNonConstant(value)) {
-    SetValue(instr, non_constant_);
-  } else if (IsConstant(value)) {
+  if (IsUnknown(value)) {
+    return;
+  }
+  if (value.IsBool()) {
     bool val = value.raw() != Bool::True().raw();
     SetValue(instr, Bool::Get(val));
+  } else {
+    SetValue(instr, non_constant_);
   }
 }
 
@@ -892,7 +908,7 @@
       SetValue(instr, non_constant_);
     }
   } else if (IsConstant(value)) {
-    if (value.IsInstance()) {
+    if (value.IsInstance() && (value.raw() != Object::sentinel().raw())) {
       const Instance& instance = Instance::Cast(value);
       if (instr->instantiator_type_arguments()->BindsToConstantNull() &&
           instr->function_type_arguments()->BindsToConstantNull()) {
@@ -1001,13 +1017,13 @@
     // Type refers to class type parameters.
     const Object& instantiator_type_args_obj =
         instr->instantiator_type_arguments()->definition()->constant_value();
-    if (IsNonConstant(instantiator_type_args_obj)) {
-      SetValue(instr, non_constant_);
+    if (IsUnknown(instantiator_type_args_obj)) {
       return;
     }
-    if (IsConstant(instantiator_type_args_obj)) {
+    if (instantiator_type_args_obj.IsTypeArguments()) {
       instantiator_type_args ^= instantiator_type_args_obj.raw();
     } else {
+      SetValue(instr, non_constant_);
       return;
     }
   }
@@ -1015,13 +1031,13 @@
     // Type refers to function type parameters.
     const Object& function_type_args_obj =
         instr->function_type_arguments()->definition()->constant_value();
-    if (IsNonConstant(function_type_args_obj)) {
-      SetValue(instr, non_constant_);
+    if (IsUnknown(function_type_args_obj)) {
       return;
     }
-    if (IsConstant(function_type_args_obj)) {
+    if (function_type_args_obj.IsTypeArguments()) {
       function_type_args ^= function_type_args_obj.raw();
     } else {
+      SetValue(instr, non_constant_);
       return;
     }
   }
@@ -1040,13 +1056,14 @@
     InstantiateTypeArgumentsInstr* instr) {
   const auto& type_arguments_obj =
       instr->type_arguments()->definition()->constant_value();
-  if (!IsConstant(type_arguments_obj)) {
-    if (IsNonConstant(type_arguments_obj)) {
-      SetValue(instr, non_constant_);
-    }
+  ASSERT(!type_arguments_obj.IsNull());
+  if (IsUnknown(type_arguments_obj)) {
     return;
   }
-  ASSERT(!type_arguments_obj.IsNull());
+  if (!type_arguments_obj.IsTypeArguments()) {
+    SetValue(instr, non_constant_);
+    return;
+  }
   const auto& type_arguments = TypeArguments::Cast(type_arguments_obj);
   if (type_arguments.IsInstantiated()) {
     ASSERT(type_arguments.IsCanonical());
@@ -1058,19 +1075,18 @@
     // Type arguments refer to class type parameters.
     const Object& instantiator_type_args_obj =
         instr->instantiator_type_arguments()->definition()->constant_value();
-    if (IsNonConstant(instantiator_type_args_obj)) {
+    if (IsUnknown(instantiator_type_args_obj)) {
+      return;
+    }
+    if (!instantiator_type_args_obj.IsTypeArguments()) {
       SetValue(instr, non_constant_);
       return;
     }
-    if (IsConstant(instantiator_type_args_obj)) {
-      instantiator_type_args ^= instantiator_type_args_obj.raw();
-      ASSERT(!instr->instantiator_class().IsNull());
-      if (type_arguments.CanShareInstantiatorTypeArguments(
-              instr->instantiator_class())) {
-        SetValue(instr, instantiator_type_args);
-        return;
-      }
-    } else {
+    instantiator_type_args ^= instantiator_type_args_obj.raw();
+    ASSERT(!instr->instantiator_class().IsNull());
+    if (type_arguments.CanShareInstantiatorTypeArguments(
+            instr->instantiator_class())) {
+      SetValue(instr, instantiator_type_args);
       return;
     }
   }
@@ -1079,18 +1095,17 @@
     // Type arguments refer to function type parameters.
     const Object& function_type_args_obj =
         instr->function_type_arguments()->definition()->constant_value();
-    if (IsNonConstant(function_type_args_obj)) {
+    if (IsUnknown(function_type_args_obj)) {
+      return;
+    }
+    if (!function_type_args_obj.IsTypeArguments()) {
       SetValue(instr, non_constant_);
       return;
     }
-    if (IsConstant(function_type_args_obj)) {
-      function_type_args ^= function_type_args_obj.raw();
-      ASSERT(!instr->function().IsNull());
-      if (type_arguments.CanShareFunctionTypeArguments(instr->function())) {
-        SetValue(instr, function_type_args);
-        return;
-      }
-    } else {
+    function_type_args ^= function_type_args_obj.raw();
+    ASSERT(!instr->function().IsNull());
+    if (type_arguments.CanShareFunctionTypeArguments(instr->function())) {
+      SetValue(instr, function_type_args);
       return;
     }
   }
@@ -1118,7 +1133,14 @@
 void ConstantPropagator::VisitBinaryIntegerOp(BinaryIntegerOpInstr* binary_op) {
   const Object& left = binary_op->left()->definition()->constant_value();
   const Object& right = binary_op->right()->definition()->constant_value();
-  if (IsConstant(left) && IsConstant(right)) {
+  if (IsNonConstant(left) || IsNonConstant(right)) {
+    SetValue(binary_op, non_constant_);
+    return;
+  } else if (IsUnknown(left) || IsUnknown(right)) {
+    return;
+  }
+  ASSERT(IsConstant(left) && IsConstant(right));
+  if (left.IsInteger() && right.IsInteger()) {
     const Integer& result = Integer::Handle(
         Z, Evaluator::BinaryIntegerEvaluate(left, right, binary_op->op_kind(),
                                             binary_op->is_truncating(),
@@ -1186,7 +1208,10 @@
 
 void ConstantPropagator::VisitUnaryIntegerOp(UnaryIntegerOpInstr* unary_op) {
   const Object& value = unary_op->value()->definition()->constant_value();
-  if (IsConstant(value)) {
+  if (IsUnknown(value)) {
+    return;
+  }
+  if (value.IsInteger()) {
     const Integer& result = Integer::Handle(
         Z, Evaluator::UnaryIntegerEvaluate(value, unary_op->op_kind(),
                                            unary_op->representation(), T));
@@ -1195,7 +1220,6 @@
       return;
     }
   }
-
   SetValue(unary_op, non_constant_);
 }
 
@@ -1208,44 +1232,48 @@
 }
 
 void ConstantPropagator::VisitUnaryDoubleOp(UnaryDoubleOpInstr* instr) {
-  const Object& value = instr->value()->definition()->constant_value();
-  if (IsNonConstant(value)) {
-    SetValue(instr, non_constant_);
-  } else if (IsConstant(value)) {
-    // TODO(kmillikin): Handle unary operations.
-    SetValue(instr, non_constant_);
-  }
+  // TODO(kmillikin): Handle unary operations.
+  SetValue(instr, non_constant_);
 }
 
 void ConstantPropagator::VisitSmiToDouble(SmiToDoubleInstr* instr) {
   const Object& value = instr->value()->definition()->constant_value();
-  if (IsConstant(value) && value.IsInteger()) {
+  if (IsUnknown(value)) {
+    return;
+  }
+  if (value.IsInteger()) {
     SetValue(instr,
              Double::Handle(Z, Double::New(Integer::Cast(value).AsDoubleValue(),
                                            Heap::kOld)));
-  } else if (!IsUnknown(value)) {
+  } else {
     SetValue(instr, non_constant_);
   }
 }
 
 void ConstantPropagator::VisitInt64ToDouble(Int64ToDoubleInstr* instr) {
   const Object& value = instr->value()->definition()->constant_value();
-  if (IsConstant(value) && value.IsInteger()) {
+  if (IsUnknown(value)) {
+    return;
+  }
+  if (value.IsInteger()) {
     SetValue(instr,
              Double::Handle(Z, Double::New(Integer::Cast(value).AsDoubleValue(),
                                            Heap::kOld)));
-  } else if (!IsUnknown(value)) {
+  } else {
     SetValue(instr, non_constant_);
   }
 }
 
 void ConstantPropagator::VisitInt32ToDouble(Int32ToDoubleInstr* instr) {
   const Object& value = instr->value()->definition()->constant_value();
-  if (IsConstant(value) && value.IsInteger()) {
+  if (IsUnknown(value)) {
+    return;
+  }
+  if (value.IsInteger()) {
     SetValue(instr,
              Double::Handle(Z, Double::New(Integer::Cast(value).AsDoubleValue(),
                                            Heap::kOld)));
-  } else if (!IsUnknown(value)) {
+  } else {
     SetValue(instr, non_constant_);
   }
 }
@@ -1320,23 +1348,30 @@
 void ConstantPropagator::VisitBinaryDoubleOp(BinaryDoubleOpInstr* instr) {
   const Object& left = instr->left()->definition()->constant_value();
   const Object& right = instr->right()->definition()->constant_value();
-  if (IsConstant(left) && IsConstant(right)) {
-    const bool both_are_integers = left.IsInteger() && right.IsInteger();
-    if (IsIntegerOrDouble(left) && IsIntegerOrDouble(right) &&
-        !both_are_integers) {
-      const double result_val = Evaluator::EvaluateDoubleOp(
-          ToDouble(left), ToDouble(right), instr->op_kind());
-      const Double& result =
-          Double::ZoneHandle(Double::NewCanonical(result_val));
-      SetValue(instr, result);
-      return;
-    }
+  if (IsNonConstant(left) || IsNonConstant(right)) {
+    SetValue(instr, non_constant_);
+    return;
+  } else if (IsUnknown(left) || IsUnknown(right)) {
+    return;
+  }
+  ASSERT(IsConstant(left) && IsConstant(right));
+  const bool both_are_integers = left.IsInteger() && right.IsInteger();
+  if (IsIntegerOrDouble(left) && IsIntegerOrDouble(right) &&
+      !both_are_integers) {
+    const double result_val = Evaluator::EvaluateDoubleOp(
+        ToDouble(left), ToDouble(right), instr->op_kind());
+    const Double& result = Double::ZoneHandle(Double::NewCanonical(result_val));
+    SetValue(instr, result);
+    return;
   }
   SetValue(instr, non_constant_);
 }
 
 void ConstantPropagator::VisitDoubleTestOp(DoubleTestOpInstr* instr) {
   const Object& value = instr->value()->definition()->constant_value();
+  if (IsUnknown(value)) {
+    return;
+  }
   const bool is_negated = instr->kind() != Token::kEQ;
   if (value.IsInteger()) {
     SetValue(instr, is_negated ? Bool::True() : Bool::False());
@@ -1365,24 +1400,13 @@
 }
 
 void ConstantPropagator::VisitMathUnary(MathUnaryInstr* instr) {
-  const Object& value = instr->value()->definition()->constant_value();
-  if (IsNonConstant(value)) {
-    SetValue(instr, non_constant_);
-  } else if (IsConstant(value)) {
-    // TODO(kmillikin): Handle Math's unary operations (sqrt, cos, sin).
-    SetValue(instr, non_constant_);
-  }
+  // TODO(kmillikin): Handle Math's unary operations (sqrt, cos, sin).
+  SetValue(instr, non_constant_);
 }
 
 void ConstantPropagator::VisitMathMinMax(MathMinMaxInstr* instr) {
-  const Object& left = instr->left()->definition()->constant_value();
-  const Object& right = instr->right()->definition()->constant_value();
-  if (IsNonConstant(left) || IsNonConstant(right)) {
-    SetValue(instr, non_constant_);
-  } else if (IsConstant(left) && IsConstant(right)) {
-    // TODO(srdjan): Handle min and max.
-    SetValue(instr, non_constant_);
-  }
+  // TODO(srdjan): Handle min and max.
+  SetValue(instr, non_constant_);
 }
 
 void ConstantPropagator::VisitCaseInsensitiveCompare(
@@ -1391,23 +1415,13 @@
 }
 
 void ConstantPropagator::VisitUnbox(UnboxInstr* instr) {
-  const Object& value = instr->value()->definition()->constant_value();
-  if (IsNonConstant(value)) {
-    SetValue(instr, non_constant_);
-  } else if (IsConstant(value)) {
-    // TODO(kmillikin): Handle conversion.
-    SetValue(instr, non_constant_);
-  }
+  // TODO(kmillikin): Handle conversion.
+  SetValue(instr, non_constant_);
 }
 
 void ConstantPropagator::VisitBox(BoxInstr* instr) {
-  const Object& value = instr->value()->definition()->constant_value();
-  if (IsNonConstant(value)) {
-    SetValue(instr, non_constant_);
-  } else if (IsConstant(value)) {
-    // TODO(kmillikin): Handle conversion.
-    SetValue(instr, non_constant_);
-  }
+  // TODO(kmillikin): Handle conversion.
+  SetValue(instr, non_constant_);
 }
 
 void ConstantPropagator::VisitBoxUint32(BoxUint32Instr* instr) {
diff --git a/runtime/vm/compiler/frontend/kernel_translation_helper.cc b/runtime/vm/compiler/frontend/kernel_translation_helper.cc
index 3c2b977..da62873 100644
--- a/runtime/vm/compiler/frontend/kernel_translation_helper.cc
+++ b/runtime/vm/compiler/frontend/kernel_translation_helper.cc
@@ -1826,13 +1826,13 @@
   AlternativeReadingScopeWithNewData alt(&helper_->reader_,
                                          &H.metadata_payloads(), md_offset);
 
-  Thread* T = Thread::Current();
-  Zone* Z = T->zone();
+  Thread* thread = Thread::Current();
+  Zone* zone = thread->zone();
   intptr_t unit_count = helper_->ReadUInt();
-  Array& loading_units = Array::Handle(Z, Array::New(unit_count + 1));
-  LoadingUnit& unit = LoadingUnit::Handle(Z);
-  LoadingUnit& parent = LoadingUnit::Handle(Z);
-  Library& lib = Library::Handle(Z);
+  Array& loading_units = Array::Handle(zone, Array::New(unit_count + 1));
+  LoadingUnit& unit = LoadingUnit::Handle(zone);
+  LoadingUnit& parent = LoadingUnit::Handle(zone);
+  Library& lib = Library::Handle(zone);
 
   for (int i = 0; i < unit_count; i++) {
     intptr_t id = helper_->ReadUInt();
@@ -1849,7 +1849,7 @@
     for (intptr_t j = 0; j < library_count; j++) {
       const String& uri =
           translation_helper_.DartSymbolPlain(helper_->ReadStringReference());
-      lib = Library::LookupLibrary(T, uri);
+      lib = Library::LookupLibrary(thread, uri);
       if (lib.IsNull()) {
         FATAL1("Missing library: %s\n", uri.ToCString());
       }
diff --git a/runtime/vm/compiler/frontend/scope_builder.cc b/runtime/vm/compiler/frontend/scope_builder.cc
index f28890b..bb55bba 100644
--- a/runtime/vm/compiler/frontend/scope_builder.cc
+++ b/runtime/vm/compiler/frontend/scope_builder.cc
@@ -148,8 +148,8 @@
           (parent.num_fixed_parameters() != target.num_fixed_parameters())) {
         needs_expr_temp_ = true;
       }
-      FALL_THROUGH;
     }
+      FALL_THROUGH;
     case FunctionLayout::kClosureFunction:
     case FunctionLayout::kRegularFunction:
     case FunctionLayout::kGetterFunction:
@@ -442,8 +442,8 @@
         FOR_EACH_DYNAMIC_CLOSURE_CALL_VARIABLE(ADD_VAR);
 #undef ADD_VAR
       }
-      FALL_THROUGH;
     }
+      FALL_THROUGH;
     case FunctionLayout::kNoSuchMethodDispatcher: {
       for (intptr_t i = 0; i < function.NumParameters(); ++i) {
         LocalVariable* variable = MakeVariable(
diff --git a/runtime/vm/compiler/stub_code_compiler_ia32.cc b/runtime/vm/compiler/stub_code_compiler_ia32.cc
index 4e81b70..369f95b 100644
--- a/runtime/vm/compiler/stub_code_compiler_ia32.cc
+++ b/runtime/vm/compiler/stub_code_compiler_ia32.cc
@@ -3121,6 +3121,7 @@
   __ pushl(AllocateTypedDataArrayABI::kLengthReg);
 
   NOT_IN_PRODUCT(__ MaybeTraceAllocation(cid, ECX, &call_runtime, false));
+  __ movl(EDI, AllocateTypedDataArrayABI::kLengthReg);
   /* Check that length is a positive Smi. */
   /* EDI: requested array length argument. */
   __ testl(EDI, Immediate(kSmiTagMask));
diff --git a/runtime/vm/dart_api_impl_test.cc b/runtime/vm/dart_api_impl_test.cc
index 8c96d22..0046562 100644
--- a/runtime/vm/dart_api_impl_test.cc
+++ b/runtime/vm/dart_api_impl_test.cc
@@ -3528,14 +3528,12 @@
 }
 
 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);
+    Dart_NewFinalizableHandle(obj, &peer, 0, FinalizableHandlePeerFinalizer);
     EXPECT(peer == 0);
     Dart_ExitScope();
   }
@@ -3676,26 +3674,22 @@
   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_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);
+    Dart_NewFinalizableHandle(obj, nullptr, kWeak2ExternalSize, NopCallback);
     EXPECT_VALID(AsHandle(strong_ref));
     Dart_ExitScope();
   }
@@ -3810,7 +3804,6 @@
   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.
@@ -3834,8 +3827,7 @@
   }
   // Large enough to trigger GC in old space. Not actually allocated.
   const intptr_t kHugeExternalSize = (kWordSize == 4) ? 513 * MB : 1025 * MB;
-  weak2 =
-      Dart_NewWeakPersistentHandle(live, NULL, kHugeExternalSize, NopCallback);
+  Dart_NewWeakPersistentHandle(live, NULL, kHugeExternalSize, NopCallback);
   {
     TransitionNativeToVM transition(thread);
     GCTestHelper::WaitForGCTasks();  // Finalize GC for accurate live size.
@@ -3852,7 +3844,6 @@
   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.
@@ -3863,8 +3854,7 @@
     Dart_EnterScope();
     Dart_Handle dead = AllocateOldString("dead");
     EXPECT_VALID(dead);
-    weak = Dart_NewFinalizableHandle(dead, nullptr, kSmallExternalSize,
-                                     NopCallback);
+    Dart_NewFinalizableHandle(dead, nullptr, kSmallExternalSize, NopCallback);
     Dart_ExitScope();
   }
   {
diff --git a/runtime/vm/heap/scavenger.cc b/runtime/vm/heap/scavenger.cc
index cfed7d7..41f1f99 100644
--- a/runtime/vm/heap/scavenger.cc
+++ b/runtime/vm/heap/scavenger.cc
@@ -50,7 +50,8 @@
 
 // If the forwarded bit and pointer tag bit are the same, we can avoid a few
 // conversions.
-COMPILE_ASSERT(kForwarded == kHeapObjectTag);
+COMPILE_ASSERT(static_cast<uword>(kForwarded) ==
+               static_cast<uword>(kHeapObjectTag));
 
 static inline bool IsForwarding(uword header) {
   uword bits = header & kForwardingMask;
diff --git a/runtime/vm/image_snapshot.cc b/runtime/vm/image_snapshot.cc
index 7c8ba6a..3d52db5 100644
--- a/runtime/vm/image_snapshot.cc
+++ b/runtime/vm/image_snapshot.cc
@@ -259,7 +259,7 @@
   ASSERT(count != nullptr && size != nullptr);
   *count = 0;
   *size = 0;
-  for (auto const data : instructions_) {
+  for (auto const& data : instructions_) {
     if (data.trampoline_length != 0) {
       *count += 1;
       *size += data.trampoline_length;
diff --git a/runtime/vm/kernel_isolate.cc b/runtime/vm/kernel_isolate.cc
index 8fdc9d0..d2cdbb5 100644
--- a/runtime/vm/kernel_isolate.cc
+++ b/runtime/vm/kernel_isolate.cc
@@ -1055,17 +1055,11 @@
                                      const char* original_working_directory) {
   // Start the kernel Isolate if it is not already running.
   if (!Start()) {
-    Dart_KernelCompilationResult result = {};
-    result.status = Dart_KernelCompilationStatus_Unknown;
-    result.error = Utils::StrDup("Error while starting Kernel isolate task");
     return false;
   }
   // Wait for Kernel isolate to finish initialization.
   Dart_Port kernel_port = WaitForKernelPort();
   if (kernel_port == ILLEGAL_PORT) {
-    Dart_KernelCompilationResult result = {};
-    result.status = Dart_KernelCompilationStatus_Unknown;
-    result.error = Utils::StrDup("Error while initializing Kernel isolate");
     return false;
   }
   KernelCompilationRequest request;
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index b14b8e9..22e2810 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -4923,8 +4923,8 @@
 
   intptr_t index() const { return raw_ptr()->index_; }
   void set_index(intptr_t value) const {
-    ASSERT(value == -1 ||
-           value >= 0 && value < std::numeric_limits<classid_t>::max());
+    ASSERT((value == -1) ||
+           ((value >= 0) && (value < std::numeric_limits<classid_t>::max())));
     StoreNonPointer(&raw_ptr()->index_, value);
   }
 
diff --git a/sdk/lib/_internal/js_runtime/pubspec.yaml b/sdk/lib/_internal/js_runtime/pubspec.yaml
index f42b2cd..96abf65 100644
--- a/sdk/lib/_internal/js_runtime/pubspec.yaml
+++ b/sdk/lib/_internal/js_runtime/pubspec.yaml
@@ -2,3 +2,5 @@
 # make it easier to develop on dart2js.
 name: js_runtime
 publish_to: none
+environment:
+  sdk: '>=2.10.0-0.0 <3.0.0'
diff --git a/sdk/lib/_internal/sdk_library_metadata/pubspec.yaml b/sdk/lib/_internal/sdk_library_metadata/pubspec.yaml
index 79b69ee..8f46e53 100644
--- a/sdk/lib/_internal/sdk_library_metadata/pubspec.yaml
+++ b/sdk/lib/_internal/sdk_library_metadata/pubspec.yaml
@@ -2,3 +2,5 @@
 # make it easer to depend on libraries.dart from sdk packages like dart2js.
 name: sdk_library_metadata
 publish_to: none
+environment:
+  sdk: '>=2.10.0-0.0 <3.0.0'
diff --git a/tools/VERSION b/tools/VERSION
index e02ec4d..6b0416f 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -25,7 +25,7 @@
 #
 CHANNEL dev
 MAJOR 2
-MINOR 11
+MINOR 10
 PATCH 0
-PRERELEASE 155
+PRERELEASE 156
 PRERELEASE_PATCH 0
\ No newline at end of file
diff --git a/tools/experimental_features.yaml b/tools/experimental_features.yaml
index 8446bb3..b7276b8 100644
--- a/tools/experimental_features.yaml
+++ b/tools/experimental_features.yaml
@@ -93,7 +93,7 @@
 # default 'language' "category" with code generated for both CFE and Analyzer,
 # while other categories can be tailored more specifically.
 
-current-version: '2.11.0'
+current-version: '2.10.0'
 
 features:
   non-nullable:
@@ -126,7 +126,7 @@
 
   constant-update-2018:
     help: "Enhanced constant expressions"
-    enabledIn: '2.4.1'
+    enabledIn: '2.0.0'
     expired: true
 
   control-flow-collections: