Version 2.10.0-94.0.dev

Merge commit '90652bc314c12865c258ddda580493e1db173a20' into 'dev'
diff --git a/pkg/analyzer/test/verify_diagnostics_test.dart b/pkg/analyzer/test/verify_diagnostics_test.dart
index 57b16e8..815b3db 100644
--- a/pkg/analyzer/test/verify_diagnostics_test.dart
+++ b/pkg/analyzer/test/verify_diagnostics_test.dart
@@ -56,6 +56,9 @@
     // Produces two diagnostics when it should only produce one (see
     // https://github.com/dart-lang/sdk/issues/43051)
     'HintCode.UNNECESSARY_NULL_COMPARISON_FALSE',
+    // Produces two diagnostics when it should only produce one (see
+    // https://github.com/dart-lang/sdk/issues/43263)
+    'StaticWarningCode.DEAD_NULL_AWARE_EXPRESSION',
   ];
 
   /// The prefix used on directive lines to specify the experiments that should
diff --git a/pkg/front_end/lib/src/api_prototype/experimental_flags.dart b/pkg/front_end/lib/src/api_prototype/experimental_flags.dart
index 42230ec..582b79e 100644
--- a/pkg/front_end/lib/src/api_prototype/experimental_flags.dart
+++ b/pkg/front_end/lib/src/api_prototype/experimental_flags.dart
@@ -119,37 +119,13 @@
   return enabled;
 }
 
-Version getExperimentEnabledVersionInLibrary(
-    ExperimentalFlag flag, Uri canonicalUri,
-    {AllowedExperimentalFlags allowedExperimentalFlags,
-    Map<ExperimentalFlag, Version> experimentEnabledVersionForTesting,
-    Map<ExperimentalFlag, Version> experimentReleasedVersionForTesting}) {
-  allowedExperimentalFlags ??= defaultAllowedExperimentalFlags;
-  Set<ExperimentalFlag> allowedFlags;
-  if (canonicalUri.scheme == 'dart') {
-    allowedFlags = allowedExperimentalFlags.forSdkLibrary(canonicalUri.path);
-  } else if (canonicalUri.scheme == 'package') {
-    int index = canonicalUri.path.indexOf('/');
-    String packageName;
-    if (index >= 0) {
-      packageName = canonicalUri.path.substring(0, index);
-    } else {
-      packageName = canonicalUri.path;
-    }
-    allowedFlags = allowedExperimentalFlags.forPackage(packageName);
-  }
+Version getExperimentEnabledVersion(ExperimentalFlag flag,
+    {Map<ExperimentalFlag, Version> experimentReleasedVersionForTesting}) {
   Version version;
-  if (allowedFlags != null && allowedFlags.contains(flag)) {
-    if (experimentReleasedVersionForTesting != null) {
-      version = experimentReleasedVersionForTesting[flag];
-    }
-    version ??= experimentReleasedVersion[flag];
-  } else {
-    if (experimentEnabledVersionForTesting != null) {
-      version = experimentEnabledVersionForTesting[flag];
-    }
-    version = experimentEnabledVersion[flag];
+  if (experimentReleasedVersionForTesting != null) {
+    version = experimentReleasedVersionForTesting[flag];
   }
-  assert(version != null, "No version for enabling $flag in $canonicalUri.");
+  version ??= experimentReleasedVersion[flag];
+  assert(version != null, "No version for enabling $flag.");
   return version;
 }
diff --git a/pkg/front_end/lib/src/base/processed_options.dart b/pkg/front_end/lib/src/base/processed_options.dart
index 87bf120..5e51442 100644
--- a/pkg/front_end/lib/src/base/processed_options.dart
+++ b/pkg/front_end/lib/src/base/processed_options.dart
@@ -351,12 +351,8 @@
         allowedExperimentalFlags: _raw.allowedExperimentalFlagsForTesting);
   }
 
-  Version getExperimentEnabledVersionInLibrary(
-      flags.ExperimentalFlag flag, Uri importUri) {
-    return flags.getExperimentEnabledVersionInLibrary(flag, importUri,
-        allowedExperimentalFlags: _raw.allowedExperimentalFlagsForTesting,
-        experimentEnabledVersionForTesting:
-            _raw.experimentEnabledVersionForTesting,
+  Version getExperimentEnabledVersion(flags.ExperimentalFlag flag) {
+    return flags.getExperimentEnabledVersion(flag,
         experimentReleasedVersionForTesting:
             _raw.experimentReleasedVersionForTesting);
   }
diff --git a/pkg/front_end/lib/src/fasta/builder/field_builder.dart b/pkg/front_end/lib/src/fasta/builder/field_builder.dart
index 6dcd093..156f55c 100644
--- a/pkg/front_end/lib/src/fasta/builder/field_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/field_builder.dart
@@ -177,6 +177,7 @@
     } else if (libraryBuilder.isNonNullableByDefault &&
         libraryBuilder.loader.target.backendTarget.useStaticFieldLowering &&
         (isStatic || isTopLevel) &&
+        !isConst &&
         hasInitializer) {
       if (isFinal) {
         _fieldEncoding = new LateFinalFieldWithInitializerEncoding(
diff --git a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
index d7755a4..a15f7be 100644
--- a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
@@ -47,6 +47,7 @@
         messageConstEvalStartingPoint,
         messageConstEvalUnevaluated,
         messageNonAgnosticConstant,
+        messageNotAConstantExpression,
         noLength,
         templateConstEvalCaseImplementsEqual,
         templateConstEvalDeferredLibrary,
@@ -1822,7 +1823,7 @@
     if (node.receiver is ThisExpression) {
       // Access "this" during instance creation.
       if (instanceBuilder == null) {
-        return reportInvalid(node, 'Instance field access outside constructor');
+        return report(node, messageNotAConstantExpression);
       }
       for (final Field field in instanceBuilder.fields.keys) {
         if (field.name == node.name) {
diff --git a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
index 08bf137..066cf2b 100644
--- a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
@@ -338,7 +338,7 @@
   bool _enableVarianceInLibrary;
   bool _enableNonfunctionTypeAliasesInLibrary;
   bool _enableNonNullableInLibrary;
-  Version _enableNonNullableVersionInLibrary;
+  Version _enableNonNullableVersionCache;
   bool _enableTripleShiftInLibrary;
   bool _enableExtensionMethodsInLibrary;
 
@@ -360,10 +360,8 @@
       loader.target.isExperimentEnabledInLibrary(
           ExperimentalFlag.nonNullable, _packageUri ?? importUri);
 
-  Version get enableNonNullableVersionInLibrary =>
-      _enableNonNullableVersionInLibrary ??= loader.target
-          .getExperimentEnabledVersionInLibrary(
-              ExperimentalFlag.nonNullable, _packageUri ?? importUri);
+  Version get _enableNonNullableVersion => _enableNonNullableVersionCache ??=
+      loader.target.getExperimentEnabledVersion(ExperimentalFlag.nonNullable);
 
   bool get enableTripleShiftInLibrary => _enableTripleShiftInLibrary ??=
       loader.target.isExperimentEnabledInLibrary(
@@ -439,7 +437,7 @@
   @override
   bool get isNonNullableByDefault =>
       enableNonNullableInLibrary &&
-      languageVersion.version >= enableNonNullableVersionInLibrary &&
+      languageVersion.version >= _enableNonNullableVersion &&
       !isOptOutTest(library.importUri);
 
   static bool isOptOutTest(Uri uri) {
diff --git a/pkg/front_end/lib/src/fasta/source/source_loader.dart b/pkg/front_end/lib/src/fasta/source/source_loader.dart
index 575f6f0..f5f0588 100644
--- a/pkg/front_end/lib/src/fasta/source/source_loader.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_loader.dart
@@ -352,7 +352,8 @@
       // libraries with no corresponding package config we generate a message
       // per library.
       Map<String, List<LibraryBuilder>> libraryByPackage = {};
-      Map<Package, Version> enableNonNullableVersionByPackage = {};
+      Version enableNonNullableVersion =
+          target.getExperimentEnabledVersion(ExperimentalFlag.nonNullable);
       for (LibraryBuilder libraryBuilder in _strongOptOutLibraries) {
         Package package =
             target.uriTranslator.getPackage(libraryBuilder.importUri);
@@ -360,11 +361,6 @@
         if (package != null &&
             package.languageVersion != null &&
             package.languageVersion is! InvalidLanguageVersion) {
-          Version enableNonNullableVersion =
-              enableNonNullableVersionByPackage[package] ??=
-                  target.getExperimentEnabledVersionInLibrary(
-                      ExperimentalFlag.nonNullable,
-                      new Uri(scheme: 'package', path: package.name));
           Version version = new Version(
               package.languageVersion.major, package.languageVersion.minor);
           if (version < enableNonNullableVersion) {
diff --git a/pkg/front_end/lib/src/fasta/source/stack_listener_impl.dart b/pkg/front_end/lib/src/fasta/source/stack_listener_impl.dart
index 0e6a737..ba35905 100644
--- a/pkg/front_end/lib/src/fasta/source/stack_listener_impl.dart
+++ b/pkg/front_end/lib/src/fasta/source/stack_listener_impl.dart
@@ -14,7 +14,7 @@
 import 'package:front_end/src/api_prototype/experimental_flags.dart';
 
 import 'package:kernel/ast.dart'
-    show AsyncMarker, Expression, FunctionNode, TreeNode;
+    show AsyncMarker, Expression, FunctionNode, TreeNode, Version;
 
 import '../fasta_codes.dart';
 
@@ -90,11 +90,13 @@
   void reportMissingNonNullableSupport(Token token) {
     assert(!libraryBuilder.isNonNullableByDefault);
     assert(token != null);
+    Version enableNonNullableVersion = libraryBuilder.loader.target
+        .getExperimentEnabledVersion(ExperimentalFlag.nonNullable);
     if (libraryBuilder.enableNonNullableInLibrary) {
       if (libraryBuilder.languageVersion.isExplicit) {
         addProblem(
-            templateNonNullableOptOutExplicit.withArguments(
-                libraryBuilder.enableNonNullableVersionInLibrary.toText()),
+            templateNonNullableOptOutExplicit
+                .withArguments(enableNonNullableVersion.toText()),
             token.charOffset,
             token.charCount,
             context: <LocatedMessage>[
@@ -105,19 +107,17 @@
             ]);
       } else {
         addProblem(
-            templateNonNullableOptOutImplicit.withArguments(
-                libraryBuilder.enableNonNullableVersionInLibrary.toText()),
+            templateNonNullableOptOutImplicit
+                .withArguments(enableNonNullableVersion.toText()),
             token.charOffset,
             token.charCount);
       }
     } else if (!libraryBuilder.loader.target
         .isExperimentEnabledGlobally(ExperimentalFlag.nonNullable)) {
-      if (libraryBuilder.languageVersion.version <
-          libraryBuilder.enableNonNullableVersionInLibrary) {
+      if (libraryBuilder.languageVersion.version < enableNonNullableVersion) {
         addProblem(
             templateExperimentNotEnabledNoFlagInvalidLanguageVersion
-                .withArguments(
-                    libraryBuilder.enableNonNullableVersionInLibrary.toText()),
+                .withArguments(enableNonNullableVersion.toText()),
             token.offset,
             noLength);
       } else {
@@ -125,8 +125,8 @@
       }
     } else {
       addProblem(
-          templateExperimentNotEnabled.withArguments('non-nullable',
-              libraryBuilder.enableNonNullableVersionInLibrary.toText()),
+          templateExperimentNotEnabled.withArguments(
+              'non-nullable', enableNonNullableVersion.toText()),
           token.offset,
           noLength);
     }
diff --git a/pkg/front_end/lib/src/fasta/target_implementation.dart b/pkg/front_end/lib/src/fasta/target_implementation.dart
index 57a4369..ebacbfc 100644
--- a/pkg/front_end/lib/src/fasta/target_implementation.dart
+++ b/pkg/front_end/lib/src/fasta/target_implementation.dart
@@ -61,9 +61,8 @@
     return _options.isExperimentEnabledInLibrary(flag, importUri);
   }
 
-  Version getExperimentEnabledVersionInLibrary(
-      ExperimentalFlag flag, Uri importUri) {
-    return _options.getExperimentEnabledVersionInLibrary(flag, importUri);
+  Version getExperimentEnabledVersion(ExperimentalFlag flag) {
+    return _options.getExperimentEnabledVersion(flag);
   }
 
   bool isExperimentEnabledGlobally(ExperimentalFlag flag) {
diff --git a/pkg/front_end/testcases/general/async_function.dart.strong.transformed.expect b/pkg/front_end/testcases/general/async_function.dart.strong.transformed.expect
index 742f696..d341b2a 100644
--- a/pkg/front_end/testcases/general/async_function.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/async_function.dart.strong.transformed.expect
@@ -62,10 +62,10 @@
   return :async_completer.{asy::Completer::future};
 }
 static method syncStarString() → core::Iterable<core::String*>* /* originally sync* */ {
-  function :sync_op_gen() → (core::_SyncIterator<core::String*>*) →* core::bool* {
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>*) →* core::bool* {
     core::int* :await_jump_var = 0;
     dynamic :await_ctx_var;
-    return (core::_SyncIterator<core::String*>* :iterator) → core::bool* yielding {
+    return (core::_SyncIterator<dynamic>* :iterator) → core::bool* yielding {
       {
         {
           :iterator.{core::_SyncIterator::_current} = "foo";
@@ -86,10 +86,10 @@
   return new core::_SyncIterable::•<core::String*>(:sync_op_gen);
 }
 static method syncStarString2() → core::Iterable<core::String*>* /* originally sync* */ {
-  function :sync_op_gen() → (core::_SyncIterator<core::String*>*) →* core::bool* {
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>*) →* core::bool* {
     core::int* :await_jump_var = 0;
     dynamic :await_ctx_var;
-    return (core::_SyncIterator<core::String*>* :iterator) → core::bool* yielding {
+    return (core::_SyncIterator<dynamic>* :iterator) → core::bool* yielding {
       {
         {
           :iterator.{core::_SyncIterator::_current} = "foo";
diff --git a/pkg/front_end/testcases/general/experiment_release_version/main.dart.outline.expect b/pkg/front_end/testcases/general/experiment_release_version/main.dart.outline.expect
index d326d68..dbdc77e 100644
--- a/pkg/front_end/testcases/general/experiment_release_version/main.dart.outline.expect
+++ b/pkg/front_end/testcases/general/experiment_release_version/main.dart.outline.expect
@@ -9,17 +9,17 @@
 // // @dart=2.8
 // ^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/experiment_release_version/not_allowed_package/lib/unversioned_lib.dart:5:4: Error: This requires the null safety language feature, which is experimental and requires language version of 2.10 or higher.
+// pkg/front_end/testcases/general/experiment_release_version/not_allowed_package/lib/unversioned_lib.dart:5:4: Error: This requires the null safety language feature, which is experimental.
 // You can enable the experiment using the '--enable-experiment=non-nullable' command line option.
 // int? versionedUnallowedPackage; // error
 //    ^
 //
-// pkg/front_end/testcases/general/experiment_release_version/not_allowed_package/lib/versioned_2_8_lib.dart:7:4: Error: This requires the null safety language feature, which is experimental and requires language version of 2.10 or higher.
+// pkg/front_end/testcases/general/experiment_release_version/not_allowed_package/lib/versioned_2_8_lib.dart:7:4: Error: This requires the null safety language feature, which is experimental and requires language version of 2.9 or higher.
 // You can enable the experiment using the '--enable-experiment=non-nullable' command line option.
 // int? versioned_2_8_AllowedPackage; // error
 //    ^
 //
-// pkg/front_end/testcases/general/experiment_release_version/not_allowed_package/lib/versioned_2_9_lib.dart:7:4: Error: This requires the null safety language feature, which is experimental and requires language version of 2.10 or higher.
+// pkg/front_end/testcases/general/experiment_release_version/not_allowed_package/lib/versioned_2_9_lib.dart:7:4: Error: This requires the null safety language feature, which is experimental.
 // You can enable the experiment using the '--enable-experiment=non-nullable' command line option.
 // int? versioned_2_9_AllowedPackage; // error
 //    ^
@@ -66,7 +66,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/experiment_release_version/versioned_2_8_lib.dart:7:4: Error: This requires the null safety language feature, which is experimental and requires language version of 2.10 or higher.
+// pkg/front_end/testcases/general/experiment_release_version/versioned_2_8_lib.dart:7:4: Error: This requires the null safety language feature, which is experimental and requires language version of 2.9 or higher.
 // You can enable the experiment using the '--enable-experiment=non-nullable' command line option.
 // int? versioned_2_8_Library; // error
 //    ^
@@ -80,7 +80,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/experiment_release_version/versioned_2_9_lib.dart:7:4: Error: This requires the null safety language feature, which is experimental and requires language version of 2.10 or higher.
+// pkg/front_end/testcases/general/experiment_release_version/versioned_2_9_lib.dart:7:4: Error: This requires the null safety language feature, which is experimental.
 // You can enable the experiment using the '--enable-experiment=non-nullable' command line option.
 // int? versioned_2_9_Library; // error
 //    ^
diff --git a/pkg/front_end/testcases/general/experiment_release_version/main.dart.strong.expect b/pkg/front_end/testcases/general/experiment_release_version/main.dart.strong.expect
index ee91545..2846fe1 100644
--- a/pkg/front_end/testcases/general/experiment_release_version/main.dart.strong.expect
+++ b/pkg/front_end/testcases/general/experiment_release_version/main.dart.strong.expect
@@ -9,17 +9,17 @@
 // // @dart=2.8
 // ^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/experiment_release_version/not_allowed_package/lib/unversioned_lib.dart:5:4: Error: This requires the null safety language feature, which is experimental and requires language version of 2.10 or higher.
+// pkg/front_end/testcases/general/experiment_release_version/not_allowed_package/lib/unversioned_lib.dart:5:4: Error: This requires the null safety language feature, which is experimental.
 // You can enable the experiment using the '--enable-experiment=non-nullable' command line option.
 // int? versionedUnallowedPackage; // error
 //    ^
 //
-// pkg/front_end/testcases/general/experiment_release_version/not_allowed_package/lib/versioned_2_8_lib.dart:7:4: Error: This requires the null safety language feature, which is experimental and requires language version of 2.10 or higher.
+// pkg/front_end/testcases/general/experiment_release_version/not_allowed_package/lib/versioned_2_8_lib.dart:7:4: Error: This requires the null safety language feature, which is experimental and requires language version of 2.9 or higher.
 // You can enable the experiment using the '--enable-experiment=non-nullable' command line option.
 // int? versioned_2_8_AllowedPackage; // error
 //    ^
 //
-// pkg/front_end/testcases/general/experiment_release_version/not_allowed_package/lib/versioned_2_9_lib.dart:7:4: Error: This requires the null safety language feature, which is experimental and requires language version of 2.10 or higher.
+// pkg/front_end/testcases/general/experiment_release_version/not_allowed_package/lib/versioned_2_9_lib.dart:7:4: Error: This requires the null safety language feature, which is experimental.
 // You can enable the experiment using the '--enable-experiment=non-nullable' command line option.
 // int? versioned_2_9_AllowedPackage; // error
 //    ^
@@ -65,7 +65,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/experiment_release_version/versioned_2_8_lib.dart:7:4: Error: This requires the null safety language feature, which is experimental and requires language version of 2.10 or higher.
+// pkg/front_end/testcases/general/experiment_release_version/versioned_2_8_lib.dart:7:4: Error: This requires the null safety language feature, which is experimental and requires language version of 2.9 or higher.
 // You can enable the experiment using the '--enable-experiment=non-nullable' command line option.
 // int? versioned_2_8_Library; // error
 //    ^
@@ -79,7 +79,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/experiment_release_version/versioned_2_9_lib.dart:7:4: Error: This requires the null safety language feature, which is experimental and requires language version of 2.10 or higher.
+// pkg/front_end/testcases/general/experiment_release_version/versioned_2_9_lib.dart:7:4: Error: This requires the null safety language feature, which is experimental.
 // You can enable the experiment using the '--enable-experiment=non-nullable' command line option.
 // int? versioned_2_9_Library; // error
 //    ^
diff --git a/pkg/front_end/testcases/general/experiment_release_version/main.dart.strong.transformed.expect b/pkg/front_end/testcases/general/experiment_release_version/main.dart.strong.transformed.expect
index 29a26a3..43eedc9 100644
--- a/pkg/front_end/testcases/general/experiment_release_version/main.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/experiment_release_version/main.dart.strong.transformed.expect
@@ -34,7 +34,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/experiment_release_version/versioned_2_8_lib.dart:7:4: Error: This requires the null safety language feature, which is experimental and requires language version of 2.10 or higher.
+// pkg/front_end/testcases/general/experiment_release_version/versioned_2_8_lib.dart:7:4: Error: This requires the null safety language feature, which is experimental and requires language version of 2.9 or higher.
 // You can enable the experiment using the '--enable-experiment=non-nullable' command line option.
 // int? versioned_2_8_Library; // error
 //    ^
@@ -48,7 +48,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/experiment_release_version/versioned_2_9_lib.dart:7:4: Error: This requires the null safety language feature, which is experimental and requires language version of 2.10 or higher.
+// pkg/front_end/testcases/general/experiment_release_version/versioned_2_9_lib.dart:7:4: Error: This requires the null safety language feature, which is experimental.
 // You can enable the experiment using the '--enable-experiment=non-nullable' command line option.
 // int? versioned_2_9_Library; // error
 //    ^
diff --git a/pkg/front_end/testcases/general/issue43290.dart b/pkg/front_end/testcases/general/issue43290.dart
new file mode 100644
index 0000000..bdd22fa
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue43290.dart
@@ -0,0 +1,23 @@
+class Class {
+  final int length;
+
+  const Class({this.length});
+
+  method1a() {
+    const Class(length: this.length);
+  }
+
+  method1b() {
+    const Class(length: length);
+  }
+
+  method2a() {
+    const a = this.length;
+  }
+
+  method2b() {
+    const a = length;
+  }
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/issue43290.dart.outline.expect b/pkg/front_end/testcases/general/issue43290.dart.outline.expect
new file mode 100644
index 0000000..51f0c9f
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue43290.dart.outline.expect
@@ -0,0 +1,30 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object /*hasConstConstructor*/  {
+  final field core::int* length;
+  const constructor •({core::int* length}) → self::Class*
+    : self::Class::length = length, super core::Object::•()
+    ;
+  method method1a() → dynamic
+    ;
+  method method1b() → dynamic
+    ;
+  method method2a() → dynamic
+    ;
+  method method2b() → dynamic
+    ;
+  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+  abstract member-signature method toString() → core::String*; -> core::Object::toString
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/issue43290.dart.strong.expect b/pkg/front_end/testcases/general/issue43290.dart.strong.expect
new file mode 100644
index 0000000..9edb793
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue43290.dart.strong.expect
@@ -0,0 +1,85 @@
+//
+// Problems in component:
+//
+// pkg/front_end/testcases/general/issue43290.dart:7:11: Error: Constant evaluation error:
+//     const Class(length: this.length);
+//           ^
+// pkg/front_end/testcases/general/issue43290.dart:7:30: Context: Not a constant expression.
+//     const Class(length: this.length);
+//                              ^
+//
+// pkg/front_end/testcases/general/issue43290.dart:11:11: Error: Constant evaluation error:
+//     const Class(length: length);
+//           ^
+// pkg/front_end/testcases/general/issue43290.dart:11:25: Context: Not a constant expression.
+//     const Class(length: length);
+//                         ^
+//
+// pkg/front_end/testcases/general/issue43290.dart:15:20: Error: Constant evaluation error:
+//     const a = this.length;
+//                    ^
+// pkg/front_end/testcases/general/issue43290.dart:15:20: Context: Not a constant expression.
+//     const a = this.length;
+//                    ^
+// pkg/front_end/testcases/general/issue43290.dart:15:11: Context: While analyzing:
+//     const a = this.length;
+//           ^
+//
+// pkg/front_end/testcases/general/issue43290.dart:19:15: Error: Constant evaluation error:
+//     const a = length;
+//               ^
+// pkg/front_end/testcases/general/issue43290.dart:19:15: Context: Not a constant expression.
+//     const a = length;
+//               ^
+// pkg/front_end/testcases/general/issue43290.dart:19:11: Context: While analyzing:
+//     const a = length;
+//           ^
+//
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue43290.dart:11:25: Error: Not a constant expression.
+//     const Class(length: length);
+//                         ^^^^^^
+//
+// pkg/front_end/testcases/general/issue43290.dart:19:15: Error: Not a constant expression.
+//     const a = length;
+//               ^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object /*hasConstConstructor*/  {
+  final field core::int* length;
+  const constructor •({core::int* length = #C1}) → self::Class*
+    : self::Class::length = length, super core::Object::•()
+    ;
+  method method1a() → dynamic {
+    invalid-expression "Not a constant expression.";
+  }
+  method method1b() → dynamic {
+    invalid-expression "Not a constant expression.";
+  }
+  method method2a() → dynamic {
+    const core::int* a = invalid-expression "Not a constant expression.";
+  }
+  method method2b() → dynamic {
+    const core::int* a = invalid-expression "Not a constant expression.";
+  }
+  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+  abstract member-signature method toString() → core::String*; -> core::Object::toString
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+static method main() → dynamic {}
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/general/issue43290.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue43290.dart.strong.transformed.expect
new file mode 100644
index 0000000..9edb793
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue43290.dart.strong.transformed.expect
@@ -0,0 +1,85 @@
+//
+// Problems in component:
+//
+// pkg/front_end/testcases/general/issue43290.dart:7:11: Error: Constant evaluation error:
+//     const Class(length: this.length);
+//           ^
+// pkg/front_end/testcases/general/issue43290.dart:7:30: Context: Not a constant expression.
+//     const Class(length: this.length);
+//                              ^
+//
+// pkg/front_end/testcases/general/issue43290.dart:11:11: Error: Constant evaluation error:
+//     const Class(length: length);
+//           ^
+// pkg/front_end/testcases/general/issue43290.dart:11:25: Context: Not a constant expression.
+//     const Class(length: length);
+//                         ^
+//
+// pkg/front_end/testcases/general/issue43290.dart:15:20: Error: Constant evaluation error:
+//     const a = this.length;
+//                    ^
+// pkg/front_end/testcases/general/issue43290.dart:15:20: Context: Not a constant expression.
+//     const a = this.length;
+//                    ^
+// pkg/front_end/testcases/general/issue43290.dart:15:11: Context: While analyzing:
+//     const a = this.length;
+//           ^
+//
+// pkg/front_end/testcases/general/issue43290.dart:19:15: Error: Constant evaluation error:
+//     const a = length;
+//               ^
+// pkg/front_end/testcases/general/issue43290.dart:19:15: Context: Not a constant expression.
+//     const a = length;
+//               ^
+// pkg/front_end/testcases/general/issue43290.dart:19:11: Context: While analyzing:
+//     const a = length;
+//           ^
+//
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue43290.dart:11:25: Error: Not a constant expression.
+//     const Class(length: length);
+//                         ^^^^^^
+//
+// pkg/front_end/testcases/general/issue43290.dart:19:15: Error: Not a constant expression.
+//     const a = length;
+//               ^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object /*hasConstConstructor*/  {
+  final field core::int* length;
+  const constructor •({core::int* length = #C1}) → self::Class*
+    : self::Class::length = length, super core::Object::•()
+    ;
+  method method1a() → dynamic {
+    invalid-expression "Not a constant expression.";
+  }
+  method method1b() → dynamic {
+    invalid-expression "Not a constant expression.";
+  }
+  method method2a() → dynamic {
+    const core::int* a = invalid-expression "Not a constant expression.";
+  }
+  method method2b() → dynamic {
+    const core::int* a = invalid-expression "Not a constant expression.";
+  }
+  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+  abstract member-signature method toString() → core::String*; -> core::Object::toString
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+static method main() → dynamic {}
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/general/issue43290.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue43290.dart.textual_outline.expect
new file mode 100644
index 0000000..d62986c
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue43290.dart.textual_outline.expect
@@ -0,0 +1,10 @@
+class Class {
+  final int length;
+  const Class({this.length});
+  method1a() {}
+  method1b() {}
+  method2a() {}
+  method2b() {}
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/issue43290.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue43290.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..90d9993
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue43290.dart.textual_outline_modelled.expect
@@ -0,0 +1,10 @@
+class Class {
+  const Class({this.length});
+  final int length;
+  method1a() {}
+  method1b() {}
+  method2a() {}
+  method2b() {}
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/async_function.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/async_function.dart.weak.transformed.expect
index 742f696..d341b2a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/async_function.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/async_function.dart.weak.transformed.expect
@@ -62,10 +62,10 @@
   return :async_completer.{asy::Completer::future};
 }
 static method syncStarString() → core::Iterable<core::String*>* /* originally sync* */ {
-  function :sync_op_gen() → (core::_SyncIterator<core::String*>*) →* core::bool* {
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>*) →* core::bool* {
     core::int* :await_jump_var = 0;
     dynamic :await_ctx_var;
-    return (core::_SyncIterator<core::String*>* :iterator) → core::bool* yielding {
+    return (core::_SyncIterator<dynamic>* :iterator) → core::bool* yielding {
       {
         {
           :iterator.{core::_SyncIterator::_current} = "foo";
@@ -86,10 +86,10 @@
   return new core::_SyncIterable::•<core::String*>(:sync_op_gen);
 }
 static method syncStarString2() → core::Iterable<core::String*>* /* originally sync* */ {
-  function :sync_op_gen() → (core::_SyncIterator<core::String*>*) →* core::bool* {
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>*) →* core::bool* {
     core::int* :await_jump_var = 0;
     dynamic :await_ctx_var;
-    return (core::_SyncIterator<core::String*>* :iterator) → core::bool* yielding {
+    return (core::_SyncIterator<dynamic>* :iterator) → core::bool* yielding {
       {
         {
           :iterator.{core::_SyncIterator::_current} = "foo";
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync_star.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync_star.dart.strong.transformed.expect
index 3ed4d9f..8ef54ea 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync_star.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync_star.dart.strong.transformed.expect
@@ -4,10 +4,10 @@
 
 static method main() → dynamic {
   () →* core::Iterable<core::Null?>* f = () → core::Iterable<core::Null?>* /* originally sync* */ {
-    function :sync_op_gen() → (core::_SyncIterator<core::Null?>*) →* core::bool* {
+    function :sync_op_gen() → (core::_SyncIterator<dynamic>*) →* core::bool* {
       core::int* :await_jump_var = 0;
       dynamic :await_ctx_var;
-      return (core::_SyncIterator<core::Null?>* :iterator) → core::bool* yielding {
+      return (core::_SyncIterator<dynamic>* :iterator) → core::bool* yielding {
         {
           {
             :iterator.{core::_SyncIterator::_current} = null;
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_sync_star.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_sync_star.dart.strong.transformed.expect
index dcd483a..8ba245d 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_sync_star.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_sync_star.dart.strong.transformed.expect
@@ -4,10 +4,10 @@
 
 static method test() → dynamic {
   () →* core::Iterable<core::num*>* f = () → core::Iterable<core::num*>* /* originally sync* */ {
-    function :sync_op_gen() → (core::_SyncIterator<core::num*>*) →* core::bool* {
+    function :sync_op_gen() → (core::_SyncIterator<dynamic>*) →* core::bool* {
       core::int* :await_jump_var = 0;
       dynamic :await_ctx_var;
-      return (core::_SyncIterator<core::num*>* :iterator) → core::bool* yielding {
+      return (core::_SyncIterator<dynamic>* :iterator) → core::bool* yielding {
         {
           {
             :iterator.{core::_SyncIterator::_current} = 1;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.strong.transformed.expect
index c081471..2cef8c5 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.strong.transformed.expect
@@ -139,10 +139,10 @@
   return :controller_stream;
 }
 static method bar() → core::Iterable<core::Map<core::int*, core::int*>*>* /* originally sync* */ {
-  function :sync_op_gen() → (core::_SyncIterator<core::Map<core::int*, core::int*>*>*) →* core::bool* {
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>*) →* core::bool* {
     core::int* :await_jump_var = 0;
     dynamic :await_ctx_var;
-    return (core::_SyncIterator<core::Map<core::int*, core::int*>*>* :iterator) → core::bool* yielding {
+    return (core::_SyncIterator<dynamic>* :iterator) → core::bool* yielding {
       {
         {
           :iterator.{core::_SyncIterator::_current} = core::Map::•<core::int*, core::int*>();
diff --git a/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.strong.transformed.expect
index 0a2e77a..f330a82 100644
--- a/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.strong.transformed.expect
@@ -64,10 +64,10 @@
     return :async_completer.{asy::Completer::future};
   }
   function f4() → core::Iterable<core::int*>* /* originally sync* */ {
-    function :sync_op_gen() → (core::_SyncIterator<core::int*>*) →* core::bool* {
+    function :sync_op_gen() → (core::_SyncIterator<dynamic>*) →* core::bool* {
       core::int* :await_jump_var = 0;
       dynamic :await_ctx_var;
-      return (core::_SyncIterator<core::int*>* :iterator) → core::bool* yielding {
+      return (core::_SyncIterator<dynamic>* :iterator) → core::bool* yielding {
         {
           {
             :iterator.{core::_SyncIterator::_current} = 42;
diff --git a/pkg/front_end/testcases/inference/local_return_and_yield.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/local_return_and_yield.dart.strong.transformed.expect
index 0bbb7a1..61d7ab7 100644
--- a/pkg/front_end/testcases/inference/local_return_and_yield.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/local_return_and_yield.dart.strong.transformed.expect
@@ -49,10 +49,10 @@
     return :async_completer.{asy::Completer::future};
   }
   function c() → core::Iterable<(core::int*) →* core::int*>* /* originally sync* */ {
-    function :sync_op_gen() → (core::_SyncIterator<(core::int*) →* core::int*>*) →* core::bool* {
+    function :sync_op_gen() → (core::_SyncIterator<dynamic>*) →* core::bool* {
       core::int* :await_jump_var = 0;
       dynamic :await_ctx_var;
-      return (core::_SyncIterator<(core::int*) →* core::int*>* :iterator) → core::bool* yielding {
+      return (core::_SyncIterator<dynamic>* :iterator) → core::bool* yielding {
         {
           {
             :iterator.{core::_SyncIterator::_current} = (core::int* x) → core::int* => x;
@@ -65,10 +65,10 @@
     return new core::_SyncIterable::•<(core::int*) →* core::int*>(:sync_op_gen);
   }
   function d() → core::Iterable<(core::int*) →* core::int*>* /* originally sync* */ {
-    function :sync_op_gen() → (core::_SyncIterator<(core::int*) →* core::int*>*) →* core::bool* {
+    function :sync_op_gen() → (core::_SyncIterator<dynamic>*) →* core::bool* {
       core::int* :await_jump_var = 0;
       dynamic :await_ctx_var;
-      return (core::_SyncIterator<(core::int*) →* core::int*>* :iterator) → core::bool* yielding {
+      return (core::_SyncIterator<dynamic>* :iterator) → core::bool* yielding {
         {
           {
             :iterator.{core::_SyncIterator::_yieldEachIterable} = <(core::int*) →* core::int*>[(core::int* x) → core::int* => x];
diff --git a/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.strong.transformed.expect
index 816f890..e58866d 100644
--- a/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.strong.transformed.expect
@@ -48,10 +48,10 @@
   return :async_completer.{asy::Completer::future};
 }
 static method c() → core::Iterable<(core::int*) →* core::int*>* /* originally sync* */ {
-  function :sync_op_gen() → (core::_SyncIterator<(core::int*) →* core::int*>*) →* core::bool* {
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>*) →* core::bool* {
     core::int* :await_jump_var = 0;
     dynamic :await_ctx_var;
-    return (core::_SyncIterator<(core::int*) →* core::int*>* :iterator) → core::bool* yielding {
+    return (core::_SyncIterator<dynamic>* :iterator) → core::bool* yielding {
       {
         {
           :iterator.{core::_SyncIterator::_current} = (core::int* x) → core::int* => x;
@@ -64,10 +64,10 @@
   return new core::_SyncIterable::•<(core::int*) →* core::int*>(:sync_op_gen);
 }
 static method d() → core::Iterable<(core::int*) →* core::int*>* /* originally sync* */ {
-  function :sync_op_gen() → (core::_SyncIterator<(core::int*) →* core::int*>*) →* core::bool* {
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>*) →* core::bool* {
     core::int* :await_jump_var = 0;
     dynamic :await_ctx_var;
-    return (core::_SyncIterator<(core::int*) →* core::int*>* :iterator) → core::bool* yielding {
+    return (core::_SyncIterator<dynamic>* :iterator) → core::bool* yielding {
       {
         {
           :iterator.{core::_SyncIterator::_yieldEachIterable} = <(core::int*) →* core::int*>[(core::int* x) → core::int* => x];
diff --git a/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.transformed.expect
index 36cb9dd..bc6171e 100644
--- a/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.transformed.expect
@@ -60,10 +60,10 @@
   return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
 }
 static method getIterableBool() → core::Iterable<core::bool> /* originally sync* */ {
-  function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
     core::int :await_jump_var = 0;
     dynamic :await_ctx_var;
-    return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
+    return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
       {
         {
           :iterator.{core::_SyncIterator::_current} = true;
@@ -76,10 +76,10 @@
   return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
 }
 static method test1() → core::Iterable<core::bool> /* originally sync* */ {
-  function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
     core::int :await_jump_var = 0;
     dynamic :await_ctx_var;
-    return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
+    return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
       {
         {
           :iterator.{core::_SyncIterator::_current} = self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
@@ -96,10 +96,10 @@
 static method test3() → core::bool
   return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
 static method test4() → core::Iterable<core::bool> /* originally sync* */ {
-  function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
     core::int :await_jump_var = 0;
     dynamic :await_ctx_var;
-    return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
+    return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
       {
         {
           :iterator.{core::_SyncIterator::_yieldEachIterable} = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:21:10: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
@@ -122,10 +122,10 @@
 static method test6() → core::Iterable<core::bool>
   return self::getIterableBool();
 static method test7() → core::Iterable<core::bool> /* originally sync* */ {
-  function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
     core::int :await_jump_var = 0;
     dynamic :await_ctx_var;
-    return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
+    return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
       {
         {
           :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
@@ -150,10 +150,10 @@
       #L1:
       {
         function test1() → core::Iterable<core::bool> /* originally sync* */ {
-          function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+          function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
             core::int :await_jump_var = 0;
             dynamic :await_ctx_var;
-            return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
+            return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
               {
                 {
                   :iterator.{core::_SyncIterator::_current} = self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
@@ -170,10 +170,10 @@
         function test3() → core::bool
           return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
         function test4() → core::Iterable<core::bool> /* originally sync* */ {
-          function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+          function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
             core::int :await_jump_var = 0;
             dynamic :await_ctx_var;
-            return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
+            return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
               {
                 {
                   :iterator.{core::_SyncIterator::_yieldEachIterable} = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:38:12: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
@@ -196,10 +196,10 @@
         function test6() → core::Iterable<core::bool>
           return self::getIterableBool();
         function test7() → core::Iterable<core::bool> /* originally sync* */ {
-          function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+          function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
             core::int :await_jump_var = 0;
             dynamic :await_ctx_var;
-            return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
+            return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
               {
                 {
                   :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
@@ -257,10 +257,10 @@
                                                  ^" in (() → core::Iterable<dynamic> => self::getIterableNull()).call() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
         core::Iterable<core::bool> var6 = (() → core::Iterable<core::bool> => self::getIterableBool()).call();
         core::Iterable<core::bool> var7 = (() → core::Iterable<core::bool> /* originally sync* */ {
-          function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+          function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
             core::int :await_jump_var = 0;
             dynamic :await_ctx_var;
-            return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
+            return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
               {
                 {
                   :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
diff --git a/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.transformed.expect
index 36cb9dd..bc6171e 100644
--- a/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.transformed.expect
@@ -60,10 +60,10 @@
   return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
 }
 static method getIterableBool() → core::Iterable<core::bool> /* originally sync* */ {
-  function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
     core::int :await_jump_var = 0;
     dynamic :await_ctx_var;
-    return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
+    return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
       {
         {
           :iterator.{core::_SyncIterator::_current} = true;
@@ -76,10 +76,10 @@
   return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
 }
 static method test1() → core::Iterable<core::bool> /* originally sync* */ {
-  function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
     core::int :await_jump_var = 0;
     dynamic :await_ctx_var;
-    return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
+    return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
       {
         {
           :iterator.{core::_SyncIterator::_current} = self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
@@ -96,10 +96,10 @@
 static method test3() → core::bool
   return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
 static method test4() → core::Iterable<core::bool> /* originally sync* */ {
-  function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
     core::int :await_jump_var = 0;
     dynamic :await_ctx_var;
-    return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
+    return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
       {
         {
           :iterator.{core::_SyncIterator::_yieldEachIterable} = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:21:10: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
@@ -122,10 +122,10 @@
 static method test6() → core::Iterable<core::bool>
   return self::getIterableBool();
 static method test7() → core::Iterable<core::bool> /* originally sync* */ {
-  function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
     core::int :await_jump_var = 0;
     dynamic :await_ctx_var;
-    return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
+    return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
       {
         {
           :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
@@ -150,10 +150,10 @@
       #L1:
       {
         function test1() → core::Iterable<core::bool> /* originally sync* */ {
-          function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+          function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
             core::int :await_jump_var = 0;
             dynamic :await_ctx_var;
-            return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
+            return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
               {
                 {
                   :iterator.{core::_SyncIterator::_current} = self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
@@ -170,10 +170,10 @@
         function test3() → core::bool
           return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
         function test4() → core::Iterable<core::bool> /* originally sync* */ {
-          function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+          function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
             core::int :await_jump_var = 0;
             dynamic :await_ctx_var;
-            return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
+            return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
               {
                 {
                   :iterator.{core::_SyncIterator::_yieldEachIterable} = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:38:12: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
@@ -196,10 +196,10 @@
         function test6() → core::Iterable<core::bool>
           return self::getIterableBool();
         function test7() → core::Iterable<core::bool> /* originally sync* */ {
-          function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+          function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
             core::int :await_jump_var = 0;
             dynamic :await_ctx_var;
-            return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
+            return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
               {
                 {
                   :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
@@ -257,10 +257,10 @@
                                                  ^" in (() → core::Iterable<dynamic> => self::getIterableNull()).call() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
         core::Iterable<core::bool> var6 = (() → core::Iterable<core::bool> => self::getIterableBool()).call();
         core::Iterable<core::bool> var7 = (() → core::Iterable<core::bool> /* originally sync* */ {
-          function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+          function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
             core::int :await_jump_var = 0;
             dynamic :await_ctx_var;
-            return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
+            return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
               {
                 {
                   :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
diff --git a/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.expect
index d4de37b..c353251 100644
--- a/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.expect
@@ -9,27 +9,14 @@
 // // @dart=2.8
 // ^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd_mixed/experiment_release_version/not_allowed_package/lib/unversioned_lib.dart:5:4: Error: Null safety features are disabled for this library.
-// Try removing the package language version or setting the language version to 2.10 or higher.
-// int? versionedUnallowedPackage; // error
-//    ^
-//
 // pkg/front_end/testcases/nnbd_mixed/experiment_release_version/not_allowed_package/lib/versioned_2_8_lib.dart:7:4: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version to 2.10 or higher.
+// Try removing the `@dart=` annotation or setting the language version to 2.9 or higher.
 // int? versioned_2_8_AllowedPackage; // error
 //    ^
 // pkg/front_end/testcases/nnbd_mixed/experiment_release_version/not_allowed_package/lib/versioned_2_8_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
 // // @dart=2.8
 // ^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd_mixed/experiment_release_version/not_allowed_package/lib/versioned_2_9_lib.dart:7:4: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version to 2.10 or higher.
-// int? versioned_2_9_AllowedPackage; // error
-//    ^
-// pkg/front_end/testcases/nnbd_mixed/experiment_release_version/not_allowed_package/lib/versioned_2_9_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.9
-// ^^^^^^^^^^^^
-//
 library /*isNonNullableByDefault*/;
 import self as self;
 
@@ -59,7 +46,7 @@
 // Problems in library:
 //
 // pkg/front_end/testcases/nnbd_mixed/experiment_release_version/versioned_2_8_lib.dart:7:4: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version to 2.10 or higher.
+// Try removing the `@dart=` annotation or setting the language version to 2.9 or higher.
 // int? versioned_2_8_Library; // error
 //    ^
 // pkg/front_end/testcases/nnbd_mixed/experiment_release_version/versioned_2_8_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
@@ -71,18 +58,7 @@
 
 static field core::int? versioned_2_8_Library;
 
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd_mixed/experiment_release_version/versioned_2_9_lib.dart:7:4: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version to 2.10 or higher.
-// int? versioned_2_9_Library; // error
-//    ^
-// pkg/front_end/testcases/nnbd_mixed/experiment_release_version/versioned_2_9_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.9
-// ^^^^^^^^^^^^
-//
+library /*isNonNullableByDefault*/;
 import self as self4;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.transformed.expect
index 65936ca..833aacd 100644
--- a/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.transformed.expect
@@ -27,7 +27,7 @@
 // Problems in library:
 //
 // pkg/front_end/testcases/nnbd_mixed/experiment_release_version/versioned_2_8_lib.dart:7:4: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version to 2.10 or higher.
+// Try removing the `@dart=` annotation or setting the language version to 2.9 or higher.
 // int? versioned_2_8_Library; // error
 //    ^
 // pkg/front_end/testcases/nnbd_mixed/experiment_release_version/versioned_2_8_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
@@ -39,18 +39,7 @@
 
 static field core::int? versioned_2_8_Library;
 
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/nnbd_mixed/experiment_release_version/versioned_2_9_lib.dart:7:4: Error: Null safety features are disabled for this library.
-// Try removing the `@dart=` annotation or setting the language version to 2.10 or higher.
-// int? versioned_2_9_Library; // error
-//    ^
-// pkg/front_end/testcases/nnbd_mixed/experiment_release_version/versioned_2_9_lib.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
-// // @dart=2.9
-// ^^^^^^^^^^^^
-//
+library /*isNonNullableByDefault*/;
 import self as self4;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/not_allowed_package/lib/versioned_2_9_lib.dart b/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/not_allowed_package/lib/versioned_2_9_lib.dart
index ff693f6..43a931e 100644
--- a/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/not_allowed_package/lib/versioned_2_9_lib.dart
+++ b/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/not_allowed_package/lib/versioned_2_9_lib.dart
@@ -4,4 +4,4 @@
 
 // @dart=2.9
 
-int? versioned_2_9_AllowedPackage; // error
\ No newline at end of file
+int? versioned_2_9_AllowedPackage; // ok
\ No newline at end of file
diff --git a/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/versioned_2_9_lib.dart b/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/versioned_2_9_lib.dart
index 7a9a3ee..6df385a 100644
--- a/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/versioned_2_9_lib.dart
+++ b/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/versioned_2_9_lib.dart
@@ -4,4 +4,4 @@
 
 // @dart=2.9
 
-int? versioned_2_9_Library; // error
\ No newline at end of file
+int? versioned_2_9_Library; // ok
\ No newline at end of file
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_in.dart b/pkg/front_end/testcases/static_field_lowering/opt_in.dart
index 6d9235d..2b45286 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_in.dart
+++ b/pkg/front_end/testcases/static_field_lowering/opt_in.dart
@@ -9,6 +9,8 @@
   return value;
 }
 
+const int constTopLevelField = 324;
+
 int? topLevelFieldWithoutInitializer;
 
 int nonNullableTopLevelFieldWithInitializer1 = init(42);
@@ -32,6 +34,8 @@
         : 32;
 
 class Class {
+  static const int staticConstField = 123;
+
   static int? staticFieldWithoutInitializer;
 
   static int nonNullableStaticFieldWithInitializer1 = init(55);
@@ -58,7 +62,9 @@
 main() {
   expect(null, lastInit);
   expect(null, topLevelFieldWithoutInitializer);
+  expect(324, constTopLevelField);
   expect(null, Class.staticFieldWithoutInitializer);
+  expect(123, Class.staticConstField);
 
   expect(42, nonNullableTopLevelFieldWithInitializer1);
   expect(42, lastInit);
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_in.dart.textual_outline.expect b/pkg/front_end/testcases/static_field_lowering/opt_in.dart.textual_outline.expect
index 93e4a3c..f578832 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_in.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/static_field_lowering/opt_in.dart.textual_outline.expect
@@ -1,5 +1,6 @@
 dynamic lastInit;
 T init<T>(T value) {}
+const int constTopLevelField = 324;
 int? topLevelFieldWithoutInitializer;
 int nonNullableTopLevelFieldWithInitializer1 = init(42);
 int? nullableTopLevelFieldWithInitializer = init(123);
@@ -19,6 +20,7 @@
         : 32;
 
 class Class {
+  static const int staticConstField = 123;
   static int? staticFieldWithoutInitializer;
   static int nonNullableStaticFieldWithInitializer1 = init(55);
   static int? nullableStaticFieldWithInitializer1 = init(17);
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_in.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/static_field_lowering/opt_in.dart.textual_outline_modelled.expect
index a9b7d4d..d41b0be 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_in.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/static_field_lowering/opt_in.dart.textual_outline_modelled.expect
@@ -1,6 +1,7 @@
 T init<T>(T value) {}
 
 class Class {
+  static const int staticConstField = 123;
   static final int? nullableStaticFinalFieldWithInitializer1 = init(19);
   static final int? nullableStaticFinalFieldWithInitializer2 =
       nullableStaticFinalFieldWithInitializer2Init++ == 0
@@ -20,6 +21,7 @@
   static int nullableStaticFinalFieldWithInitializer2Init = 0;
 }
 
+const int constTopLevelField = 324;
 dynamic lastInit;
 expect(expected, actual) {}
 final int? nullableFinalTopLevelFieldWithInitializer1 = init(32);
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.expect b/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.expect
index b11f2bb..39e6731 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.expect
+++ b/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.expect
@@ -4,6 +4,7 @@
 import "dart:_internal" as _in;
 
 class Class extends core::Object {
+  static const field core::int staticConstField = #C1;
   static field core::int? staticFieldWithoutInitializer = null;
   static field core::int? _#nonNullableStaticFieldWithInitializer1 = null;
   static field core::int? _#nullableStaticFieldWithInitializer1 = null;
@@ -86,6 +87,7 @@
   }
 }
 static field dynamic lastInit;
+static const field core::int constTopLevelField = #C2;
 static field core::int? topLevelFieldWithoutInitializer;
 static field core::int? _#nonNullableTopLevelFieldWithInitializer1 = null;
 static field core::int? _#nullableTopLevelFieldWithInitializer = null;
@@ -170,7 +172,9 @@
 static method main() → dynamic {
   self::expect(null, self::lastInit);
   self::expect(null, self::topLevelFieldWithoutInitializer);
+  self::expect(324, #C2);
   self::expect(null, self::Class::staticFieldWithoutInitializer);
+  self::expect(123, #C1);
   self::expect(42, self::nonNullableTopLevelFieldWithInitializer1);
   self::expect(42, self::lastInit);
   self::expect(123, self::nullableTopLevelFieldWithInitializer);
@@ -223,3 +227,8 @@
   }
   throw "${message}: ${value}";
 }
+
+constants  {
+  #C1 = 123
+  #C2 = 324
+}
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.transformed.expect
index b11f2bb..39e6731 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/static_field_lowering/opt_in.dart.weak.transformed.expect
@@ -4,6 +4,7 @@
 import "dart:_internal" as _in;
 
 class Class extends core::Object {
+  static const field core::int staticConstField = #C1;
   static field core::int? staticFieldWithoutInitializer = null;
   static field core::int? _#nonNullableStaticFieldWithInitializer1 = null;
   static field core::int? _#nullableStaticFieldWithInitializer1 = null;
@@ -86,6 +87,7 @@
   }
 }
 static field dynamic lastInit;
+static const field core::int constTopLevelField = #C2;
 static field core::int? topLevelFieldWithoutInitializer;
 static field core::int? _#nonNullableTopLevelFieldWithInitializer1 = null;
 static field core::int? _#nullableTopLevelFieldWithInitializer = null;
@@ -170,7 +172,9 @@
 static method main() → dynamic {
   self::expect(null, self::lastInit);
   self::expect(null, self::topLevelFieldWithoutInitializer);
+  self::expect(324, #C2);
   self::expect(null, self::Class::staticFieldWithoutInitializer);
+  self::expect(123, #C1);
   self::expect(42, self::nonNullableTopLevelFieldWithInitializer1);
   self::expect(42, self::lastInit);
   self::expect(123, self::nullableTopLevelFieldWithInitializer);
@@ -223,3 +227,8 @@
   }
   throw "${message}: ${value}";
 }
+
+constants  {
+  #C1 = 123
+  #C2 = 324
+}
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_out.dart b/pkg/front_end/testcases/static_field_lowering/opt_out.dart
index 10bc21d..9ccd9b4 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_out.dart
+++ b/pkg/front_end/testcases/static_field_lowering/opt_out.dart
@@ -11,6 +11,8 @@
   return value;
 }
 
+const int constTopLevelField = 324;
+
 int topLevelFieldWithoutInitializer;
 
 int topLevelFieldWithInitializer1 = init(42);
@@ -26,6 +28,8 @@
         : 87;
 
 class Class {
+  static const int staticConstField = 123;
+
   static int staticFieldWithoutInitializer;
 
   static int staticFieldWithInitializer1 = init(55);
@@ -44,7 +48,9 @@
 main() {
   expect(null, lastInit);
   expect(null, topLevelFieldWithoutInitializer);
+  expect(324, constTopLevelField);
   expect(null, Class.staticFieldWithoutInitializer);
+  expect(123, Class.staticConstField);
 
   expect(42, topLevelFieldWithInitializer1);
   expect(42, lastInit);
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_out.dart.textual_outline.expect b/pkg/front_end/testcases/static_field_lowering/opt_out.dart.textual_outline.expect
index 3e7aff7..e20bb46 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_out.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/static_field_lowering/opt_out.dart.textual_outline.expect
@@ -1,6 +1,7 @@
 // @dart = 2.8
 dynamic lastInit;
 T init<T>(T value) {}
+const int constTopLevelField = 324;
 int topLevelFieldWithoutInitializer;
 int topLevelFieldWithInitializer1 = init(42);
 int topLevelFieldWithInitializer2 = init(42);
@@ -12,6 +13,7 @@
         : 87;
 
 class Class {
+  static const int staticConstField = 123;
   static int staticFieldWithoutInitializer;
   static int staticFieldWithInitializer1 = init(55);
   static int staticFieldWithInitializer2 = init(55);
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_out.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/static_field_lowering/opt_out.dart.textual_outline_modelled.expect
index 494c66e8..8a89bd3 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_out.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/static_field_lowering/opt_out.dart.textual_outline_modelled.expect
@@ -2,6 +2,7 @@
 T init<T>(T value) {}
 
 class Class {
+  static const int staticConstField = 123;
   static final int staticFinalFieldWithInitializer1 = init(73);
   static final int staticFinalFieldWithInitializer2 =
       staticFinalFieldWithInitializer2Init++ == 0
@@ -13,6 +14,7 @@
   static int staticFinalFieldWithInitializer2Init = 0;
 }
 
+const int constTopLevelField = 324;
 dynamic lastInit;
 expect(expected, actual) {}
 final int finalTopLevelFieldWithInitializer1 = init(87);
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.expect b/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.expect
index 9f52494..3b4d666 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.expect
+++ b/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.expect
@@ -3,6 +3,7 @@
 import "dart:core" as core;
 
 class Class extends core::Object {
+  static const field core::int* staticConstField = #C1;
   static field core::int* staticFieldWithoutInitializer = null;
   static field core::int* staticFieldWithInitializer1 = self::init<core::int*>(55);
   static field core::int* staticFieldWithInitializer2 = self::init<core::int*>(55);
@@ -24,6 +25,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field dynamic lastInit;
+static const field core::int* constTopLevelField = #C2;
 static field core::int* topLevelFieldWithoutInitializer;
 static field core::int* topLevelFieldWithInitializer1 = self::init<core::int*>(42);
 static field core::int* topLevelFieldWithInitializer2 = self::init<core::int*>(42);
@@ -37,7 +39,9 @@
 static method main() → dynamic {
   self::expect(null, self::lastInit);
   self::expect(null, self::topLevelFieldWithoutInitializer);
+  self::expect(324, #C2);
   self::expect(null, self::Class::staticFieldWithoutInitializer);
+  self::expect(123, #C1);
   self::expect(42, self::topLevelFieldWithInitializer1);
   self::expect(42, self::lastInit);
   self::topLevelFieldWithInitializer2 = 56;
@@ -75,3 +79,8 @@
   }
   throw "${message}: ${value}";
 }
+
+constants  {
+  #C1 = 123
+  #C2 = 324
+}
diff --git a/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.transformed.expect
index 9f52494..3b4d666 100644
--- a/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/static_field_lowering/opt_out.dart.weak.transformed.expect
@@ -3,6 +3,7 @@
 import "dart:core" as core;
 
 class Class extends core::Object {
+  static const field core::int* staticConstField = #C1;
   static field core::int* staticFieldWithoutInitializer = null;
   static field core::int* staticFieldWithInitializer1 = self::init<core::int*>(55);
   static field core::int* staticFieldWithInitializer2 = self::init<core::int*>(55);
@@ -24,6 +25,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static field dynamic lastInit;
+static const field core::int* constTopLevelField = #C2;
 static field core::int* topLevelFieldWithoutInitializer;
 static field core::int* topLevelFieldWithInitializer1 = self::init<core::int*>(42);
 static field core::int* topLevelFieldWithInitializer2 = self::init<core::int*>(42);
@@ -37,7 +39,9 @@
 static method main() → dynamic {
   self::expect(null, self::lastInit);
   self::expect(null, self::topLevelFieldWithoutInitializer);
+  self::expect(324, #C2);
   self::expect(null, self::Class::staticFieldWithoutInitializer);
+  self::expect(123, #C1);
   self::expect(42, self::topLevelFieldWithInitializer1);
   self::expect(42, self::lastInit);
   self::topLevelFieldWithInitializer2 = 56;
@@ -75,3 +79,8 @@
   }
   throw "${message}: ${value}";
 }
+
+constants  {
+  #C1 = 123
+  #C2 = 324
+}
diff --git a/pkg/kernel/lib/transformations/continuation.dart b/pkg/kernel/lib/transformations/continuation.dart
index 09c16af..5ec1e6c 100644
--- a/pkg/kernel/lib/transformations/continuation.dart
+++ b/pkg/kernel/lib/transformations/continuation.dart
@@ -392,8 +392,10 @@
             VariableDeclaration(ContinuationVariables.iteratorParam)
               ..type = InterfaceType(
                   helper.syncIteratorClass, staticTypeContext.nullable, [
-                ContinuationRewriterBase.elementTypeFrom(
-                    helper.iterableClass, enclosingFunction.returnType)
+                // Note: This is dynamic since nested iterators (of potentially
+                // different type) are handled by shared internal synthetic
+                // code.
+                const DynamicType(),
               ]),
         super(helper, enclosingFunction, staticTypeContext);
 
diff --git a/runtime/BUILD.gn b/runtime/BUILD.gn
index a183272..e4b4445 100644
--- a/runtime/BUILD.gn
+++ b/runtime/BUILD.gn
@@ -284,4 +284,7 @@
   if (!dart_version_git_info) {
     args += [ "--no_git_hash" ]
   }
+  if (!verify_sdk_hash) {
+    args += [ "--no_sdk_hash" ]
+  }
 }
diff --git a/tests/co19/co19-co19.status b/tests/co19/co19-co19.status
index a0fc6dd..76666e6 100644
--- a/tests/co19/co19-co19.status
+++ b/tests/co19/co19-co19.status
@@ -37,7 +37,6 @@
 LanguageFeatures/Instantiate-to-bound/typedef/*: Skip # Not migrated to NNBD
 LanguageFeatures/Instantiate-to-bound/typedef/dynamic/*: Skip # Not migrated to NNBD
 LanguageFeatures/Instantiate-to-bound/typedef/static/*: Skip # Not migrated to NNBD
-LanguageFeatures/Set-literals/*: Skip # Not migrated to NNBD
 LanguageFeatures/Simple-bounds/*: Skip # Not migrated to NNBD
 LanguageFeatures/Simple-bounds/dynamic/*: Skip # Not migrated to NNBD
 LanguageFeatures/Simple-bounds/dynamic/type-aliases/*: Skip # Not migrated to NNBD
diff --git a/tests/language/sync_star/nested_subtype_test.dart b/tests/language/sync_star/nested_subtype_test.dart
new file mode 100644
index 0000000..f5f29ca
--- /dev/null
+++ b/tests/language/sync_star/nested_subtype_test.dart
@@ -0,0 +1,20 @@
+// Copyright (c) 2020, the Dart Team. All rights reserved. Use of this
+// source code is governed by a BSD-style license that can be found in
+// the LICENSE file.
+
+// Regression test for: https://github.com/dart-lang/sdk/issues/42234
+
+Iterable<Object> f() sync* {
+  yield* g();
+}
+
+Iterable<int> g() sync* {
+  yield 1;
+  yield 2;
+}
+
+main() {
+  for (var i in f()) {
+    print(i);
+  }
+}
diff --git a/tests/language_2/sync_star/nested_subtype_test.dart b/tests/language_2/sync_star/nested_subtype_test.dart
new file mode 100644
index 0000000..f5f29ca
--- /dev/null
+++ b/tests/language_2/sync_star/nested_subtype_test.dart
@@ -0,0 +1,20 @@
+// Copyright (c) 2020, the Dart Team. All rights reserved. Use of this
+// source code is governed by a BSD-style license that can be found in
+// the LICENSE file.
+
+// Regression test for: https://github.com/dart-lang/sdk/issues/42234
+
+Iterable<Object> f() sync* {
+  yield* g();
+}
+
+Iterable<int> g() sync* {
+  yield 1;
+  yield 2;
+}
+
+main() {
+  for (var i in f()) {
+    print(i);
+  }
+}
diff --git a/tools/VERSION b/tools/VERSION
index fc575db..f93499e 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 10
 PATCH 0
-PRERELEASE 93
+PRERELEASE 94
 PRERELEASE_PATCH 0
\ No newline at end of file
diff --git a/tools/make_version.py b/tools/make_version.py
index fdae0aa..0e6e8be 100755
--- a/tools/make_version.py
+++ b/tools/make_version.py
@@ -55,10 +55,9 @@
 
 def FormatVersionString(version,
                         no_git_hash,
+                        no_sdk_hash,
                         version_file=None,
                         git_revision_file=None):
-    use_git_hash = not no_git_hash
-
     semantic_sdk_version = utils.GetSemanticSDKVersion(no_git_hash,
                                                        version_file,
                                                        git_revision_file)
@@ -71,7 +70,8 @@
     version = version.replace('{{SEMANTIC_SDK_VERSION}}', semantic_sdk_version)
 
     git_hash = None
-    if use_git_hash:
+    # If we need SDK hash and git usage is not suppressed then try to get it.
+    if not no_sdk_hash and not no_git_hash:
         git_hash = utils.GetShortGitHash()
     if git_hash is None or len(git_hash) != 10:
         git_hash = '0000000000'
@@ -81,7 +81,7 @@
     version = version.replace('{{CHANNEL}}', channel)
 
     version_time = None
-    if use_git_hash:
+    if not no_git_hash:
         version_time = utils.GetGitTimestamp()
     if version_time == None:
         version_time = 'Unknown timestamp'
@@ -104,6 +104,11 @@
             default=False,
             help=('Don\'t try to call git to derive things like '
                   'git revision hash.'))
+        parser.add_argument(
+            '--no_sdk_hash',
+            action='store_true',
+            default=False,
+            help='Use null SDK hash to disable SDK verification in the VM')
         parser.add_argument('--output', help='output file name')
         parser.add_argument('-q',
                             '--quiet',
@@ -133,7 +138,8 @@
             raise 'No version template given! Set either --input or --format.'
 
         version = FormatVersionString(version_template, args.no_git_hash,
-                                      args.version_file, args.git_revision_file)
+                                      args.no_sdk_hash, args.version_file,
+                                      args.git_revision_file)
 
         if args.output:
             with open(args.output, 'w') as fh: