Prevent serialization of synthetic kernel nodes

Change-Id: Iad2300d8fa5384b5d692c5598c9311e600427dd2
Reviewed-on: https://dart-review.googlesource.com/c/90003
Commit-Queue: Peter von der Ahé <ahe@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index 624c748..21f1eff 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -862,8 +862,14 @@
       builder.body = body;
     } else {
       if (body != null) {
-        builder.body =
-            wrapInProblemStatement(body, fasta.messageExternalMethodWithBody);
+        builder.body = new Block(<Statement>[
+          new ExpressionStatementJudgment(desugarSyntheticExpression(
+              buildProblem(fasta.messageExternalMethodWithBody, body.fileOffset,
+                  noLength)))
+            ..fileOffset = body.fileOffset,
+          body,
+        ])
+          ..fileOffset = body.fileOffset;
       }
     }
     Member target = builder.target;
@@ -1118,7 +1124,8 @@
       // TODO(ahe): Change this to a null check.
       int offset = builder.body?.fileOffset ?? builder.charOffset;
       constructor.initializers.add(buildInvalidInitializer(
-          buildProblem(fasta.messageConstructorNotSync, offset, noLength),
+          desugarSyntheticExpression(
+              buildProblem(fasta.messageConstructorNotSync, offset, noLength)),
           offset));
     }
     if (needsImplicitSuperInitializer) {
@@ -4466,16 +4473,17 @@
     // TODO(ahe): The following doesn't make sense to Analyzer AST.
     Declaration constructor =
         library.loader.getAbstractClassInstantiationError();
-    return forest.throwExpression(
-        null,
-        buildStaticInvocation(
-            constructor.target,
-            forest.arguments(<Expression>[
-              forest.literalString(className, null)..fileOffset = charOffset
-            ], noLocation)
-              ..fileOffset = charOffset,
-            charOffset: charOffset))
-      ..fileOffset = charOffset;
+    Expression invocation = buildStaticInvocation(
+        constructor.target,
+        forest.arguments(<Expression>[
+          forest.literalString(className, null)..fileOffset = charOffset
+        ], noLocation)
+          ..fileOffset = charOffset,
+        charOffset: charOffset);
+    if (invocation is shadow.SyntheticExpressionJudgment) {
+      invocation = desugarSyntheticExpression(invocation);
+    }
+    return forest.throwExpression(null, invocation)..fileOffset = charOffset;
   }
 
   Statement buildProblemStatement(Message message, int charOffset,
@@ -4570,20 +4578,22 @@
             ]);
         Declaration constructor =
             library.loader.getDuplicatedFieldInitializerError();
+        Expression invocation = buildStaticInvocation(
+            constructor.target,
+            forest.arguments(<Expression>[
+              forest.literalString(name, null)..fileOffset = assignmentOffset
+            ], noLocation)
+              ..fileOffset = assignmentOffset,
+            charOffset: assignmentOffset);
+        if (invocation is shadow.SyntheticExpressionJudgment) {
+          invocation = desugarSyntheticExpression(invocation);
+        }
         return new ShadowInvalidFieldInitializer(
             builder.field,
             expression,
-            new VariableDeclaration.forValue(forest.throwExpression(
-                null,
-                buildStaticInvocation(
-                    constructor.target,
-                    forest.arguments(<Expression>[
-                      forest.literalString(name, null)
-                        ..fileOffset = assignmentOffset
-                    ], noLocation)
-                      ..fileOffset = assignmentOffset,
-                    charOffset: assignmentOffset))
-              ..fileOffset = assignmentOffset))
+            new VariableDeclaration.forValue(
+                forest.throwExpression(null, invocation)
+                  ..fileOffset = assignmentOffset))
           ..fileOffset = assignmentOffset;
       } else {
         if (!legacyMode &&
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
index 21ca7db..7aaf5da 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
@@ -45,7 +45,7 @@
         templateSwitchExpressionNotAssignable,
         templateWebLiteralCannotBeRepresentedExactly;
 
-import '../problems.dart' show unhandled, unsupported;
+import '../problems.dart' show getFileUri, unhandled, unsupported;
 
 import '../source/source_class_builder.dart' show SourceClassBuilder;
 
@@ -1390,6 +1390,25 @@
       }
     }
   }
+
+  @override
+  accept(ExpressionVisitor v) {
+    // This is designed to throw an exception during serialization. It can also
+    // lead to exceptions during transformations, but we have to accept a
+    // [Transformer] as this is used to implement `replaceChild`.
+    if (v is Transformer) return super.accept(v);
+    unsupported("accept", fileOffset, getFileUri(this));
+  }
+
+  @override
+  accept1(ExpressionVisitor1 v, arg) {
+    unsupported("accept1", fileOffset, getFileUri(this));
+  }
+
+  @override
+  visitChildren(Visitor v) {
+    unsupported("visitChildren", fileOffset, getFileUri(this));
+  }
 }
 
 /// Concrete shadow object representing a catch clause.
diff --git a/pkg/front_end/lib/src/fasta/problems.dart b/pkg/front_end/lib/src/fasta/problems.dart
index bf17812..09ec70c 100644
--- a/pkg/front_end/lib/src/fasta/problems.dart
+++ b/pkg/front_end/lib/src/fasta/problems.dart
@@ -4,6 +4,8 @@
 
 library fasta.problems;
 
+import 'package:kernel/ast.dart' show FileUriNode, TreeNode;
+
 import 'compiler_context.dart' show CompilerContext;
 
 import 'messages.dart'
@@ -72,3 +74,11 @@
       charOffset,
       uri);
 }
+
+Uri getFileUri(TreeNode node) {
+  do {
+    if (node is FileUriNode) return node.fileUri;
+    node = node.parent;
+  } while (node is TreeNode);
+  return null;
+}
diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
index 393c70b..7ab2ba3 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
@@ -769,14 +769,10 @@
       }
       expression.parent.replaceChild(
           expression,
-          new Let(
-              new VariableDeclaration.forValue(receiver)
-                ..fileOffset = receiver.fileOffset,
-              helper.desugarSyntheticExpression(helper.buildProblem(
-                  errorTemplate.withArguments(name.name, receiverType),
-                  fileOffset,
-                  length)))
-            ..fileOffset = fileOffset);
+          helper.desugarSyntheticExpression(helper.buildProblem(
+              errorTemplate.withArguments(name.name, receiverType),
+              fileOffset,
+              length)));
     }
     return interfaceMember;
   }
diff --git a/pkg/front_end/testcases/accessors.dart.strong.expect b/pkg/front_end/testcases/accessors.dart.strong.expect
index 01820b8..45fbbc5 100644
--- a/pkg/front_end/testcases/accessors.dart.strong.expect
+++ b/pkg/front_end/testcases/accessors.dart.strong.expect
@@ -38,7 +38,7 @@
   }
   method testC() → dynamic {
     try {
-      core::print(let final dynamic #t1 = this in invalid-expression "pkg/front_end/testcases/accessors.dart:16:13: Error: The getter 'onlySetter' isn't defined for the class 'C'.
+      core::print(invalid-expression "pkg/front_end/testcases/accessors.dart:16:13: Error: The getter 'onlySetter' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/accessors.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'onlySetter'.
       print(onlySetter);
@@ -51,7 +51,7 @@
     this.{self::C::onlySetter} = "hest";
   }
   method testD() → dynamic {
-    core::print(let final dynamic #t2 = this in invalid-expression "pkg/front_end/testcases/accessors.dart:25:11: Error: The getter 'onlySetter' isn't defined for the class 'C'.
+    core::print(invalid-expression "pkg/front_end/testcases/accessors.dart:25:11: Error: The getter 'onlySetter' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/accessors.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'onlySetter'.
     print(onlySetter);
diff --git a/pkg/front_end/testcases/accessors.dart.strong.transformed.expect b/pkg/front_end/testcases/accessors.dart.strong.transformed.expect
index 77ef07b..45fbbc5 100644
--- a/pkg/front_end/testcases/accessors.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/accessors.dart.strong.transformed.expect
@@ -38,7 +38,7 @@
   }
   method testC() → dynamic {
     try {
-      core::print(let final self::C #t1 = this in invalid-expression "pkg/front_end/testcases/accessors.dart:16:13: Error: The getter 'onlySetter' isn't defined for the class 'C'.
+      core::print(invalid-expression "pkg/front_end/testcases/accessors.dart:16:13: Error: The getter 'onlySetter' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/accessors.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'onlySetter'.
       print(onlySetter);
@@ -51,7 +51,7 @@
     this.{self::C::onlySetter} = "hest";
   }
   method testD() → dynamic {
-    core::print(let final self::C #t2 = this in invalid-expression "pkg/front_end/testcases/accessors.dart:25:11: Error: The getter 'onlySetter' isn't defined for the class 'C'.
+    core::print(invalid-expression "pkg/front_end/testcases/accessors.dart:25:11: Error: The getter 'onlySetter' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/accessors.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'onlySetter'.
     print(onlySetter);
diff --git a/pkg/front_end/testcases/bug21938.dart.strong.expect b/pkg/front_end/testcases/bug21938.dart.strong.expect
index 1d9accb..25e833b 100644
--- a/pkg/front_end/testcases/bug21938.dart.strong.expect
+++ b/pkg/front_end/testcases/bug21938.dart.strong.expect
@@ -26,18 +26,18 @@
 static method test() → dynamic {
   core::Object x;
   core::Function f;
-  let final dynamic #t1 = x in invalid-expression "pkg/front_end/testcases/bug21938.dart:10:4: Error: The method 'call' isn't defined for the class 'Object'.
+  invalid-expression "pkg/front_end/testcases/bug21938.dart:10:4: Error: The method 'call' isn't defined for the class 'Object'.
  - 'Object' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'call'.
   x /*@error=UndefinedMethod*/ ();
    ^";
-  let final dynamic #t2 = x in invalid-expression "pkg/front_end/testcases/bug21938.dart:11:4: Error: The method 'call' isn't defined for the class 'Object'.
+  invalid-expression "pkg/front_end/testcases/bug21938.dart:11:4: Error: The method 'call' isn't defined for the class 'Object'.
  - 'Object' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'call'.
   x /*@error=UndefinedMethod*/ (3);
    ^";
   f.call(5, 2);
-  let final dynamic #t3 = x in invalid-expression "pkg/front_end/testcases/bug21938.dart:13:33: Error: The method 'call' isn't defined for the class 'Object'.
+  invalid-expression "pkg/front_end/testcases/bug21938.dart:13:33: Error: The method 'call' isn't defined for the class 'Object'.
  - 'Object' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'call'.
   x. /*@error=UndefinedMethod*/ call();
diff --git a/pkg/front_end/testcases/cascade.dart.strong.expect b/pkg/front_end/testcases/cascade.dart.strong.expect
index ad65f1c..410fa63 100644
--- a/pkg/front_end/testcases/cascade.dart.strong.expect
+++ b/pkg/front_end/testcases/cascade.dart.strong.expect
@@ -37,15 +37,15 @@
  - 'List' is from 'dart:core'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
     [1]
-    ^" in <core::int>[1] as{TypeError} core::int] in let final dynamic #t15 = (let final dynamic #t16 = #t13.{core::Iterable::first} in invalid-expression "pkg/front_end/testcases/cascade.dart:28:13: Error: The getter 'last' isn't defined for the class 'int'.
+    ^" in <core::int>[1] as{TypeError} core::int] in let final dynamic #t15 = invalid-expression "pkg/front_end/testcases/cascade.dart:28:13: Error: The getter 'last' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'last'.
     ..first.last.toString()
-            ^^^^").{core::Object::toString}() in let final dynamic #t17 = (let final dynamic #t18 = #t13.{core::Iterable::first} in invalid-expression "pkg/front_end/testcases/cascade.dart:29:12: Error: The method '[]' isn't defined for the class 'int'.
+            ^^^^".{core::Object::toString}() in let final dynamic #t16 = invalid-expression "pkg/front_end/testcases/cascade.dart:29:12: Error: The method '[]' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing method, or defining a method named '[]'.
     ..first[0].toString()
-           ^^").{core::Object::toString}() in let final dynamic #t19 = (let final dynamic #t20 = #t13.{core::List::[]}(0) in invalid-expression "pkg/front_end/testcases/cascade.dart:30:11: Error: The getter 'last' isn't defined for the class 'int'.
+           ^^".{core::Object::toString}() in let final dynamic #t17 = invalid-expression "pkg/front_end/testcases/cascade.dart:30:11: Error: The getter 'last' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'last'.
     ..[0].last.toString();
-          ^^^^").{core::Object::toString}() in #t13;
+          ^^^^".{core::Object::toString}() in #t13;
   core::print(list);
 }
diff --git a/pkg/front_end/testcases/cascade.dart.strong.transformed.expect b/pkg/front_end/testcases/cascade.dart.strong.transformed.expect
index 65d6f3b..0c5c75b 100644
--- a/pkg/front_end/testcases/cascade.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/cascade.dart.strong.transformed.expect
@@ -37,15 +37,15 @@
  - 'List' is from 'dart:core'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
     [1]
-    ^" in <core::int>[1] as{TypeError} core::int] in let final core::String #t15 = (let final core::int #t16 = #t13.{core::Iterable::first} in invalid-expression "pkg/front_end/testcases/cascade.dart:28:13: Error: The getter 'last' isn't defined for the class 'int'.
+    ^" in <core::int>[1] as{TypeError} core::int] in let final core::String #t15 = invalid-expression "pkg/front_end/testcases/cascade.dart:28:13: Error: The getter 'last' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'last'.
     ..first.last.toString()
-            ^^^^").{core::Object::toString}() in let final core::String #t17 = (let final core::int #t18 = #t13.{core::Iterable::first} in invalid-expression "pkg/front_end/testcases/cascade.dart:29:12: Error: The method '[]' isn't defined for the class 'int'.
+            ^^^^".{core::Object::toString}() in let final core::String #t16 = invalid-expression "pkg/front_end/testcases/cascade.dart:29:12: Error: The method '[]' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing method, or defining a method named '[]'.
     ..first[0].toString()
-           ^^").{core::Object::toString}() in let final core::String #t19 = (let final core::int #t20 = #t13.{core::List::[]}(0) in invalid-expression "pkg/front_end/testcases/cascade.dart:30:11: Error: The getter 'last' isn't defined for the class 'int'.
+           ^^".{core::Object::toString}() in let final core::String #t17 = invalid-expression "pkg/front_end/testcases/cascade.dart:30:11: Error: The getter 'last' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'last'.
     ..[0].last.toString();
-          ^^^^").{core::Object::toString}() in #t13;
+          ^^^^".{core::Object::toString}() in #t13;
   core::print(list);
 }
diff --git a/pkg/front_end/testcases/continue_inference_after_error.dart.strong.expect b/pkg/front_end/testcases/continue_inference_after_error.dart.strong.expect
index b0aeb7b..c8d3090 100644
--- a/pkg/front_end/testcases/continue_inference_after_error.dart.strong.expect
+++ b/pkg/front_end/testcases/continue_inference_after_error.dart.strong.expect
@@ -25,7 +25,7 @@
 static method test() → dynamic {
   let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/continue_inference_after_error.dart:10:3: Error: A prefix can't be used as an expression.
   lib(new C().missing());
-  ^^^" in let final core::Object #t2 = let final dynamic #t3 = new self::C::•() in invalid-expression "pkg/front_end/testcases/continue_inference_after_error.dart:10:15: Error: The method 'missing' isn't defined for the class 'C'.
+  ^^^" in let final core::Object #t2 = invalid-expression "pkg/front_end/testcases/continue_inference_after_error.dart:10:15: Error: The method 'missing' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/continue_inference_after_error.dart'.
 Try correcting the name to the name of an existing method, or defining a method named 'missing'.
   lib(new C().missing());
diff --git a/pkg/front_end/testcases/continue_inference_after_error.dart.strong.transformed.expect b/pkg/front_end/testcases/continue_inference_after_error.dart.strong.transformed.expect
index 401371d..c8d3090 100644
--- a/pkg/front_end/testcases/continue_inference_after_error.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/continue_inference_after_error.dart.strong.transformed.expect
@@ -25,7 +25,7 @@
 static method test() → dynamic {
   let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/continue_inference_after_error.dart:10:3: Error: A prefix can't be used as an expression.
   lib(new C().missing());
-  ^^^" in let final core::Object #t2 = let final self::C #t3 = new self::C::•() in invalid-expression "pkg/front_end/testcases/continue_inference_after_error.dart:10:15: Error: The method 'missing' isn't defined for the class 'C'.
+  ^^^" in let final core::Object #t2 = invalid-expression "pkg/front_end/testcases/continue_inference_after_error.dart:10:15: Error: The method 'missing' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/continue_inference_after_error.dart'.
 Try correcting the name to the name of an existing method, or defining a method named 'missing'.
   lib(new C().missing());
diff --git a/pkg/front_end/testcases/for_in_without_declaration.dart.strong.expect b/pkg/front_end/testcases/for_in_without_declaration.dart.strong.expect
index 4e9b297..cc7b291 100644
--- a/pkg/front_end/testcases/for_in_without_declaration.dart.strong.expect
+++ b/pkg/front_end/testcases/for_in_without_declaration.dart.strong.expect
@@ -131,21 +131,21 @@
       c.{self::Super::untypedSuperInstanceField} = #t12;
     }
     for (final dynamic #t13 in <dynamic>[]) {
-      let final dynamic #t14 = this in invalid-expression "pkg/front_end/testcases/for_in_without_declaration.dart:37:10: Error: The setter 'unresolved' isn't defined for the class 'C'.
+      invalid-expression "pkg/front_end/testcases/for_in_without_declaration.dart:37:10: Error: The setter 'unresolved' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/for_in_without_declaration.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'unresolved'.
     for (unresolved in []) {}
          ^^^^^^^^^^";
     }
-    for (final dynamic #t15 in <dynamic>[]) {
-      let final dynamic #t16 = this.unresolved in invalid-expression "pkg/front_end/testcases/for_in_without_declaration.dart:38:21: Error: The setter 'foo' isn't defined for the class 'C'.
+    for (final dynamic #t14 in <dynamic>[]) {
+      invalid-expression "pkg/front_end/testcases/for_in_without_declaration.dart:38:21: Error: The setter 'foo' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/for_in_without_declaration.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'foo'.
     for (unresolved.foo in []) {}
                     ^^^";
     }
-    for (final dynamic #t17 in <dynamic>[]) {
-      let final dynamic #t18 = c in invalid-expression "pkg/front_end/testcases/for_in_without_declaration.dart:39:12: Error: The setter 'unresolved' isn't defined for the class 'C'.
+    for (final dynamic #t15 in <dynamic>[]) {
+      invalid-expression "pkg/front_end/testcases/for_in_without_declaration.dart:39:12: Error: The setter 'unresolved' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/for_in_without_declaration.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'unresolved'.
     for (c.unresolved in []) {}
@@ -155,7 +155,7 @@
       invalid-expression "pkg/front_end/testcases/for_in_without_declaration.dart:40:10: Error: Can't assign to this, so it can't be used in a for-in loop.
     for (main() in []) {}
          ^^^^";
-      for (final dynamic #t19 in <dynamic>[]) {
+      for (final dynamic #t16 in <dynamic>[]) {
         invalid-expression "pkg/front_end/testcases/for_in_without_declaration.dart:40:10: Error: Can't assign to this, so it can't be used in a for-in loop.
     for (main() in []) {}
          ^^^^";
@@ -166,7 +166,7 @@
       invalid-expression "pkg/front_end/testcases/for_in_without_declaration.dart:41:10: Error: A for-in loop can't have more than one loop variable.
     for (var x, y in <int>[]) {
          ^^^";
-      for (final core::int #t20 in <core::int>[]) {
+      for (final core::int #t17 in <core::int>[]) {
         invalid-expression "pkg/front_end/testcases/for_in_without_declaration.dart:41:10: Error: A for-in loop can't have more than one loop variable.
     for (var x, y in <int>[]) {
          ^^^";
@@ -179,7 +179,7 @@
       }
     }
     const core::int constant = 0;
-    for (final dynamic #t21 in <dynamic>[]) {
+    for (final dynamic #t18 in <dynamic>[]) {
       invalid-expression "pkg/front_end/testcases/for_in_without_declaration.dart:46:10: Error: Setter not found: 'constant'.
     for (constant in []) {}
          ^^^^^^^^";
diff --git a/pkg/front_end/testcases/for_in_without_declaration.dart.strong.transformed.expect b/pkg/front_end/testcases/for_in_without_declaration.dart.strong.transformed.expect
new file mode 100644
index 0000000..cc7b291
--- /dev/null
+++ b/pkg/front_end/testcases/for_in_without_declaration.dart.strong.transformed.expect
@@ -0,0 +1,191 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/for_in_without_declaration.dart:32:10: Error: Expected an identifier, but got 'super'.
+//     for (super.superInstanceField in []) {}
+//          ^^^^^
+//
+// pkg/front_end/testcases/for_in_without_declaration.dart:33:10: Error: Expected an identifier, but got 'super'.
+//     for (super.untypedSuperInstanceField in []) {}
+//          ^^^^^
+//
+// pkg/front_end/testcases/for_in_without_declaration.dart:35:11: Error: Unexpected token '.'.
+//     for (c.instanceField in []) {}
+//           ^
+//
+// pkg/front_end/testcases/for_in_without_declaration.dart:36:11: Error: Unexpected token '.'.
+//     for (c.untypedSuperInstanceField in []) {}
+//           ^
+//
+// pkg/front_end/testcases/for_in_without_declaration.dart:37:10: Error: Setter not found: 'unresolved'.
+//     for (unresolved in []) {}
+//          ^^^^^^^^^^
+//
+// pkg/front_end/testcases/for_in_without_declaration.dart:38:10: Error: Getter not found: 'unresolved'.
+//     for (unresolved.foo in []) {}
+//          ^^^^^^^^^^
+//
+// pkg/front_end/testcases/for_in_without_declaration.dart:38:20: Error: Unexpected token '.'.
+//     for (unresolved.foo in []) {}
+//                    ^
+//
+// pkg/front_end/testcases/for_in_without_declaration.dart:39:11: Error: Unexpected token '.'.
+//     for (c.unresolved in []) {}
+//           ^
+//
+// pkg/front_end/testcases/for_in_without_declaration.dart:40:14: Error: Unexpected token '('.
+//     for (main() in []) {}
+//              ^
+//
+// pkg/front_end/testcases/for_in_without_declaration.dart:40:10: Error: Can't assign to this, so it can't be used in a for-in loop.
+//     for (main() in []) {}
+//          ^^^^
+//
+// pkg/front_end/testcases/for_in_without_declaration.dart:41:15: Error: Unexpected token ','.
+//     for (var x, y in <int>[]) {
+//               ^
+//
+// pkg/front_end/testcases/for_in_without_declaration.dart:41:10: Error: A for-in loop can't have more than one loop variable.
+//     for (var x, y in <int>[]) {
+//          ^^^
+//
+// pkg/front_end/testcases/for_in_without_declaration.dart:46:10: Error: Setter not found: 'constant'.
+//     for (constant in []) {}
+//          ^^^^^^^^
+//
+// pkg/front_end/testcases/for_in_without_declaration.dart:37:10: Error: The setter 'unresolved' isn't defined for the class 'C'.
+//  - 'C' is from 'pkg/front_end/testcases/for_in_without_declaration.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'unresolved'.
+//     for (unresolved in []) {}
+//          ^^^^^^^^^^
+//
+// pkg/front_end/testcases/for_in_without_declaration.dart:38:21: Error: The setter 'foo' isn't defined for the class 'C'.
+//  - 'C' is from 'pkg/front_end/testcases/for_in_without_declaration.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'foo'.
+//     for (unresolved.foo in []) {}
+//                     ^^^
+//
+// pkg/front_end/testcases/for_in_without_declaration.dart:39:12: Error: The setter 'unresolved' isn't defined for the class 'C'.
+//  - 'C' is from 'pkg/front_end/testcases/for_in_without_declaration.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'unresolved'.
+//     for (c.unresolved in []) {}
+//            ^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Super extends core::Object {
+  field core::int superInstanceField = null;
+  field dynamic untypedSuperInstanceField = null;
+  synthetic constructor •() → self::Super
+    : super core::Object::•()
+    ;
+}
+class C extends self::Super {
+  field core::int instanceField = null;
+  field dynamic untypedInstanceField = null;
+  static field core::double staticField = null;
+  static field dynamic untypedStaticField = null;
+  synthetic constructor •() → self::C
+    : super self::Super::•()
+    ;
+  method m() → dynamic {
+    core::String local;
+    dynamic untypedLocal;
+    for (final core::String #t1 in <core::String>[]) {
+      local = #t1;
+    }
+    for (final dynamic #t2 in <dynamic>[]) {
+      untypedLocal = #t2;
+    }
+    for (final core::int #t3 in <core::int>[]) {
+      this.{self::C::instanceField} = #t3;
+    }
+    for (final dynamic #t4 in <dynamic>[]) {
+      this.{self::C::untypedInstanceField} = #t4;
+    }
+    for (final core::double #t5 in <core::double>[]) {
+      self::C::staticField = #t5;
+    }
+    for (final dynamic #t6 in <dynamic>[]) {
+      self::C::untypedStaticField = #t6;
+    }
+    for (final core::bool #t7 in <core::bool>[]) {
+      self::topLevelField = #t7;
+    }
+    for (final dynamic #t8 in <dynamic>[]) {
+      self::untypedTopLevelField = #t8;
+    }
+    for (final core::int #t9 in <core::int>[]) {
+      super.{self::Super::superInstanceField} = #t9;
+    }
+    for (final dynamic #t10 in <dynamic>[]) {
+      super.{self::Super::untypedSuperInstanceField} = #t10;
+    }
+    self::C c = new self::C::•();
+    for (final core::int #t11 in <core::int>[]) {
+      c.{self::C::instanceField} = #t11;
+    }
+    for (final dynamic #t12 in <dynamic>[]) {
+      c.{self::Super::untypedSuperInstanceField} = #t12;
+    }
+    for (final dynamic #t13 in <dynamic>[]) {
+      invalid-expression "pkg/front_end/testcases/for_in_without_declaration.dart:37:10: Error: The setter 'unresolved' isn't defined for the class 'C'.
+ - 'C' is from 'pkg/front_end/testcases/for_in_without_declaration.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'unresolved'.
+    for (unresolved in []) {}
+         ^^^^^^^^^^";
+    }
+    for (final dynamic #t14 in <dynamic>[]) {
+      invalid-expression "pkg/front_end/testcases/for_in_without_declaration.dart:38:21: Error: The setter 'foo' isn't defined for the class 'C'.
+ - 'C' is from 'pkg/front_end/testcases/for_in_without_declaration.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'foo'.
+    for (unresolved.foo in []) {}
+                    ^^^";
+    }
+    for (final dynamic #t15 in <dynamic>[]) {
+      invalid-expression "pkg/front_end/testcases/for_in_without_declaration.dart:39:12: Error: The setter 'unresolved' isn't defined for the class 'C'.
+ - 'C' is from 'pkg/front_end/testcases/for_in_without_declaration.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'unresolved'.
+    for (c.unresolved in []) {}
+           ^^^^^^^^^^";
+    }
+    {
+      invalid-expression "pkg/front_end/testcases/for_in_without_declaration.dart:40:10: Error: Can't assign to this, so it can't be used in a for-in loop.
+    for (main() in []) {}
+         ^^^^";
+      for (final dynamic #t16 in <dynamic>[]) {
+        invalid-expression "pkg/front_end/testcases/for_in_without_declaration.dart:40:10: Error: Can't assign to this, so it can't be used in a for-in loop.
+    for (main() in []) {}
+         ^^^^";
+        self::main();
+      }
+    }
+    {
+      invalid-expression "pkg/front_end/testcases/for_in_without_declaration.dart:41:10: Error: A for-in loop can't have more than one loop variable.
+    for (var x, y in <int>[]) {
+         ^^^";
+      for (final core::int #t17 in <core::int>[]) {
+        invalid-expression "pkg/front_end/testcases/for_in_without_declaration.dart:41:10: Error: A for-in loop can't have more than one loop variable.
+    for (var x, y in <int>[]) {
+         ^^^";
+        dynamic x;
+        dynamic y;
+        {
+          core::print(x);
+          core::print(y);
+        }
+      }
+    }
+    const core::int constant = 0;
+    for (final dynamic #t18 in <dynamic>[]) {
+      invalid-expression "pkg/front_end/testcases/for_in_without_declaration.dart:46:10: Error: Setter not found: 'constant'.
+    for (constant in []) {}
+         ^^^^^^^^";
+    }
+  }
+}
+static field core::bool topLevelField;
+static field dynamic untypedTopLevelField;
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.strong.expect
index 225aa59..1788de2 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.strong.expect
@@ -127,10 +127,10 @@
 Try changing the type of the left hand side, or casting the right hand side to 'String'.
             x;
             ^" in x as{TypeError} core::String;
-    (core::int) → core::String l3 = (core::int x) → core::String => (let final dynamic #t11 = x in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:63:14: Error: The method 'substring' isn't defined for the class 'int'.
+    (core::int) → core::String l3 = (core::int x) → core::String => invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:63:14: Error: The method 'substring' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing method, or defining a method named 'substring'.
             .substring(3);
-             ^^^^^^^^^") as{TypeError} core::String;
+             ^^^^^^^^^" as{TypeError} core::String;
     (core::String) → core::String l4 = (core::String x) → core::String => x.{core::String::substring}(3);
   }
 }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.strong.transformed.expect
index 1d1b281..1788de2 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.strong.transformed.expect
@@ -127,10 +127,10 @@
 Try changing the type of the left hand side, or casting the right hand side to 'String'.
             x;
             ^" in x as{TypeError} core::String;
-    (core::int) → core::String l3 = (core::int x) → core::String => (let final core::int #t11 = x in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:63:14: Error: The method 'substring' isn't defined for the class 'int'.
+    (core::int) → core::String l3 = (core::int x) → core::String => invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:63:14: Error: The method 'substring' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing method, or defining a method named 'substring'.
             .substring(3);
-             ^^^^^^^^^") as{TypeError} core::String;
+             ^^^^^^^^^" as{TypeError} core::String;
     (core::String) → core::String l4 = (core::String x) → core::String => x.{core::String::substring}(3);
   }
 }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.strong.expect
index 22ce919..c0a2ae8 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.strong.expect
@@ -143,10 +143,10 @@
 Try changing the type of the left hand side, or casting the right hand side to 'String'.
         x;
         ^" in x as{TypeError} core::String;
-    y = <T extends core::Object = dynamic>(core::int x) → core::String => (let final dynamic #t11 = x in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:66:10: Error: The method 'substring' isn't defined for the class 'int'.
+    y = <T extends core::Object = dynamic>(core::int x) → core::String => invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:66:10: Error: The method 'substring' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing method, or defining a method named 'substring'.
         .substring(3);
-         ^^^^^^^^^") as{TypeError} core::String;
+         ^^^^^^^^^" as{TypeError} core::String;
     <T extends core::Object = dynamic>(core::String) → core::String z = string2String;
     z = <T extends core::Object = dynamic>(core::String x) → core::String => x.{core::String::substring}(3);
   }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.strong.transformed.expect
index 77683db..c0a2ae8 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.strong.transformed.expect
@@ -143,10 +143,10 @@
 Try changing the type of the left hand side, or casting the right hand side to 'String'.
         x;
         ^" in x as{TypeError} core::String;
-    y = <T extends core::Object = dynamic>(core::int x) → core::String => (let final core::int #t11 = x in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:66:10: Error: The method 'substring' isn't defined for the class 'int'.
+    y = <T extends core::Object = dynamic>(core::int x) → core::String => invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:66:10: Error: The method 'substring' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing method, or defining a method named 'substring'.
         .substring(3);
-         ^^^^^^^^^") as{TypeError} core::String;
+         ^^^^^^^^^" as{TypeError} core::String;
     <T extends core::Object = dynamic>(core::String) → core::String z = string2String;
     z = <T extends core::Object = dynamic>(core::String x) → core::String => x.{core::String::substring}(3);
   }
diff --git a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.expect b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.expect
index fd1bbdf..6181d32 100644
--- a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.expect
@@ -25,12 +25,12 @@
 static method test() → dynamic {
   core::Iterable<asy::Future<core::int>> list = <core::int>[1, 2, 3].{core::Iterable::map}<asy::Future<core::int>>(self::make);
   asy::Future<core::List<core::int>> results = asy::Future::wait<core::int>(list);
-  asy::Future<core::String> results2 = results.{asy::Future::then}<core::String>((core::List<core::int> list) → asy::FutureOr<core::String> => list.{core::Iterable::fold}<asy::FutureOr<core::String>>("", (asy::FutureOr<core::String> x, core::int y) → asy::FutureOr<core::String> => (let final dynamic #t1 = x in invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:23:120: Error: The method '+' isn't defined for the class 'FutureOr<String>'.
+  asy::Future<core::String> results2 = results.{asy::Future::then}<core::String>((core::List<core::int> list) → asy::FutureOr<core::String> => list.{core::Iterable::fold}<asy::FutureOr<core::String>>("", (asy::FutureOr<core::String> x, core::int y) → asy::FutureOr<core::String> => invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:23:120: Error: The method '+' isn't defined for the class 'FutureOr<String>'.
  - 'FutureOr' is from 'dart:async'.
 Try correcting the name to the name of an existing method, or defining a method named '+'.
                           /*@type=int*/ y) => /*info:DYNAMIC_CAST,info:DYNAMIC_INVOKE*/ x /*error:UNDEFINED_OPERATOR*/ +
-                                                                                                                       ^") as{TypeError} asy::FutureOr<core::String>));
-  asy::Future<core::String> results3 = results.{asy::Future::then}<core::String>((core::List<core::int> list) → asy::FutureOr<core::String> => list.{core::Iterable::fold}<asy::FutureOr<core::String>>("", let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:31:108: Error: The argument type 'String Function(String, int)' can't be assigned to the parameter type 'FutureOr<String> Function(FutureOr<String>, int)'.
+                                                                                                                       ^" as{TypeError} asy::FutureOr<core::String>));
+  asy::Future<core::String> results3 = results.{asy::Future::then}<core::String>((core::List<core::int> list) → asy::FutureOr<core::String> => list.{core::Iterable::fold}<asy::FutureOr<core::String>>("", let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:31:108: Error: The argument type 'String Function(String, int)' can't be assigned to the parameter type 'FutureOr<String> Function(FutureOr<String>, int)'.
  - 'FutureOr' is from 'dart:async'.
 Try changing the type of the parameter, or casting the argument to 'FutureOr<String> Function(FutureOr<String>, int)'.
                   /*info:INFERRED_TYPE_CLOSURE,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ /*@returnType=String*/ (String
diff --git a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.transformed.expect
index 9a7ba76..6181d32 100644
--- a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.transformed.expect
@@ -25,12 +25,12 @@
 static method test() → dynamic {
   core::Iterable<asy::Future<core::int>> list = <core::int>[1, 2, 3].{core::Iterable::map}<asy::Future<core::int>>(self::make);
   asy::Future<core::List<core::int>> results = asy::Future::wait<core::int>(list);
-  asy::Future<core::String> results2 = results.{asy::Future::then}<core::String>((core::List<core::int> list) → asy::FutureOr<core::String> => list.{core::Iterable::fold}<asy::FutureOr<core::String>>("", (asy::FutureOr<core::String> x, core::int y) → asy::FutureOr<core::String> => (let final asy::FutureOr<core::String> #t1 = x in invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:23:120: Error: The method '+' isn't defined for the class 'FutureOr<String>'.
+  asy::Future<core::String> results2 = results.{asy::Future::then}<core::String>((core::List<core::int> list) → asy::FutureOr<core::String> => list.{core::Iterable::fold}<asy::FutureOr<core::String>>("", (asy::FutureOr<core::String> x, core::int y) → asy::FutureOr<core::String> => invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:23:120: Error: The method '+' isn't defined for the class 'FutureOr<String>'.
  - 'FutureOr' is from 'dart:async'.
 Try correcting the name to the name of an existing method, or defining a method named '+'.
                           /*@type=int*/ y) => /*info:DYNAMIC_CAST,info:DYNAMIC_INVOKE*/ x /*error:UNDEFINED_OPERATOR*/ +
-                                                                                                                       ^") as{TypeError} asy::FutureOr<core::String>));
-  asy::Future<core::String> results3 = results.{asy::Future::then}<core::String>((core::List<core::int> list) → asy::FutureOr<core::String> => list.{core::Iterable::fold}<asy::FutureOr<core::String>>("", let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:31:108: Error: The argument type 'String Function(String, int)' can't be assigned to the parameter type 'FutureOr<String> Function(FutureOr<String>, int)'.
+                                                                                                                       ^" as{TypeError} asy::FutureOr<core::String>));
+  asy::Future<core::String> results3 = results.{asy::Future::then}<core::String>((core::List<core::int> list) → asy::FutureOr<core::String> => list.{core::Iterable::fold}<asy::FutureOr<core::String>>("", let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:31:108: Error: The argument type 'String Function(String, int)' can't be assigned to the parameter type 'FutureOr<String> Function(FutureOr<String>, int)'.
  - 'FutureOr' is from 'dart:async'.
 Try changing the type of the parameter, or casting the argument to 'FutureOr<String> Function(FutureOr<String>, int)'.
                   /*info:INFERRED_TYPE_CLOSURE,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ /*@returnType=String*/ (String
diff --git a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.expect b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.expect
index 565c892..0b2998b 100644
--- a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.expect
@@ -114,53 +114,53 @@
 static field core::int f = 2.{core::num::+}(3);
 static field core::int g = 3.{core::int::unary-}();
 static field self::B h = new self::A::•().{self::A::+}(3);
-static field dynamic i = let final dynamic #t3 = new self::A::•() in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:34:79: Error: The method 'unary-' isn't defined for the class 'A'.
+static field dynamic i = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:34:79: Error: The method 'unary-' isn't defined for the class 'A'.
  - 'A' is from 'pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart'.
 Try correcting the name to the name of an existing method, or defining a method named 'unary-'.
 var /*@topType=dynamic*/ i = /*error:UNDEFINED_OPERATOR,info:DYNAMIC_INVOKE*/ -new A();
                                                                               ^";
 static field self::B j = null as self::B;
 static method test1() → dynamic {
-  self::a = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:38:36: Error: A value of type 'String' can't be assigned to a variable of type 'A'.
+  self::a = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:38:36: Error: A value of type 'String' can't be assigned to a variable of type 'A'.
  - 'A' is from 'pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart'.
 Try changing the type of the left hand side, or casting the right hand side to 'A'.
   a = /*error:INVALID_ASSIGNMENT*/ \"hi\";
                                    ^" in "hi" as{TypeError} self::A;
   self::a = new self::B::•(3);
-  self::b = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:40:36: Error: A value of type 'String' can't be assigned to a variable of type 'B'.
+  self::b = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:40:36: Error: A value of type 'String' can't be assigned to a variable of type 'B'.
  - 'B' is from 'pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart'.
 Try changing the type of the left hand side, or casting the right hand side to 'B'.
   b = /*error:INVALID_ASSIGNMENT*/ \"hi\";
                                    ^" in "hi" as{TypeError} self::B;
   self::b = new self::B::•(3);
   self::c1 = <dynamic>[];
-  self::c1 = let final core::Set<dynamic> #t6 = col::LinkedHashSet::•<dynamic>() in #t6;
+  self::c1 = let final core::Set<dynamic> #t5 = col::LinkedHashSet::•<dynamic>() in #t5;
   self::c2 = <dynamic>[];
-  self::c2 = let final core::Set<dynamic> #t7 = col::LinkedHashSet::•<dynamic>() in #t7;
+  self::c2 = let final core::Set<dynamic> #t6 = col::LinkedHashSet::•<dynamic>() in #t6;
   self::d = <dynamic, dynamic>{};
-  self::d = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:47:36: Error: A value of type 'int' can't be assigned to a variable of type 'Map<dynamic, dynamic>'.
+  self::d = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:47:36: Error: A value of type 'int' can't be assigned to a variable of type 'Map<dynamic, dynamic>'.
  - 'Map' is from 'dart:core'.
 Try changing the type of the left hand side, or casting the right hand side to 'Map<dynamic, dynamic>'.
   d = /*error:INVALID_ASSIGNMENT*/ 3;
                                    ^" in 3 as{TypeError} core::Map<dynamic, dynamic>;
   self::e = new self::A::•();
-  self::e = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:49:67: Error: A value of type 'Map<dynamic, dynamic>' can't be assigned to a variable of type 'A'.
+  self::e = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:49:67: Error: A value of type 'Map<dynamic, dynamic>' can't be assigned to a variable of type 'A'.
  - 'Map' is from 'dart:core'.
  - 'A' is from 'pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart'.
 Try changing the type of the left hand side, or casting the right hand side to 'A'.
   e = /*error:INVALID_ASSIGNMENT*/ /*@typeArgs=dynamic, dynamic*/ {};
                                                                   ^" in <dynamic, dynamic>{} as{TypeError} self::A;
   self::f = 3;
-  self::f = let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:51:36: Error: A value of type 'bool' can't be assigned to a variable of type 'int'.
+  self::f = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:51:36: Error: A value of type 'bool' can't be assigned to a variable of type 'int'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
   f = /*error:INVALID_ASSIGNMENT*/ false;
                                    ^" in false as{TypeError} core::int;
   self::g = 1;
-  self::g = let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:53:36: Error: A value of type 'bool' can't be assigned to a variable of type 'int'.
+  self::g = let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:53:36: Error: A value of type 'bool' can't be assigned to a variable of type 'int'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
   g = /*error:INVALID_ASSIGNMENT*/ false;
                                    ^" in false as{TypeError} core::int;
-  self::h = let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:54:36: Error: A value of type 'bool' can't be assigned to a variable of type 'B'.
+  self::h = let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:54:36: Error: A value of type 'bool' can't be assigned to a variable of type 'B'.
  - 'B' is from 'pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart'.
 Try changing the type of the left hand side, or casting the right hand side to 'B'.
   h = /*error:INVALID_ASSIGNMENT*/ false;
@@ -168,12 +168,12 @@
   self::h = new self::B::•("b");
   self::i = false;
   self::j = new self::B::•("b");
-  self::j = let final<BottomType> #t13 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:58:36: Error: A value of type 'bool' can't be assigned to a variable of type 'B'.
+  self::j = let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:58:36: Error: A value of type 'bool' can't be assigned to a variable of type 'B'.
  - 'B' is from 'pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart'.
 Try changing the type of the left hand side, or casting the right hand side to 'B'.
   j = /*error:INVALID_ASSIGNMENT*/ false;
                                    ^" in false as{TypeError} self::B;
-  self::j = let final<BottomType> #t14 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:59:58: Error: A value of type 'List<dynamic>' can't be assigned to a variable of type 'B'.
+  self::j = let final<BottomType> #t13 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:59:58: Error: A value of type 'List<dynamic>' can't be assigned to a variable of type 'B'.
  - 'List' is from 'dart:core'.
  - 'B' is from 'pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart'.
 Try changing the type of the left hand side, or casting the right hand side to 'B'.
diff --git a/pkg/front_end/testcases/invalid_type.dart.strong.expect b/pkg/front_end/testcases/invalid_type.dart.strong.expect
index 3bd6201..f26928f 100644
--- a/pkg/front_end/testcases/invalid_type.dart.strong.expect
+++ b/pkg/front_end/testcases/invalid_type.dart.strong.expect
@@ -30,7 +30,7 @@
 }
 static method test() → dynamic {
   (null as invalid-type).bar();
-  let final dynamic #t1 = null in invalid-expression "pkg/front_end/testcases/invalid_type.dart:13:8: Error: The method 'bar' isn't defined for the class 'Null'.
+  invalid-expression "pkg/front_end/testcases/invalid_type.dart:13:8: Error: The method 'bar' isn't defined for the class 'Null'.
 Try correcting the name to the name of an existing method, or defining a method named 'bar'.
   null.bar();
        ^^^";
diff --git a/pkg/front_end/testcases/many_errors.dart.legacy.expect b/pkg/front_end/testcases/many_errors.dart.legacy.expect
index 119e782..07f53cf 100644
--- a/pkg/front_end/testcases/many_errors.dart.legacy.expect
+++ b/pkg/front_end/testcases/many_errors.dart.legacy.expect
@@ -76,10 +76,14 @@
     : super core::Object::•()
     ;
 }
-external static method foo(core::String x) → dynamic
+external static method foo(core::String x) → dynamic {
   invalid-expression "pkg/front_end/testcases/many_errors.dart:13:24: Error: An external or native method can't have a body.
 external foo(String x) {
                        ^";
+  {
+    return x.length;
+  }
+}
 static method m() → dynamic {
   throw invalid-expression "pkg/front_end/testcases/many_errors.dart:28:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
 Try using a constructor or factory that is 'const'.
diff --git a/pkg/front_end/testcases/many_errors.dart.legacy.transformed.expect b/pkg/front_end/testcases/many_errors.dart.legacy.transformed.expect
index 119e782..07f53cf 100644
--- a/pkg/front_end/testcases/many_errors.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/many_errors.dart.legacy.transformed.expect
@@ -76,10 +76,14 @@
     : super core::Object::•()
     ;
 }
-external static method foo(core::String x) → dynamic
+external static method foo(core::String x) → dynamic {
   invalid-expression "pkg/front_end/testcases/many_errors.dart:13:24: Error: An external or native method can't have a body.
 external foo(String x) {
                        ^";
+  {
+    return x.length;
+  }
+}
 static method m() → dynamic {
   throw invalid-expression "pkg/front_end/testcases/many_errors.dart:28:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
 Try using a constructor or factory that is 'const'.
diff --git a/pkg/front_end/testcases/many_errors.dart.strong.expect b/pkg/front_end/testcases/many_errors.dart.strong.expect
new file mode 100644
index 0000000..37fcff8
--- /dev/null
+++ b/pkg/front_end/testcases/many_errors.dart.strong.expect
@@ -0,0 +1,104 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/many_errors.dart:8:3: Error: A const constructor can't have a body.
+// Try removing either the 'const' keyword or the body.
+//   const A.named1() sync* {}
+//   ^^^^^
+//
+// pkg/front_end/testcases/many_errors.dart:13:1: Error: An external or native method can't have a body.
+// external foo(String x) {
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/many_errors.dart:8:26: Error: Constructor bodies can't use 'async', 'async*', or 'sync*'.
+//   const A.named1() sync* {}
+//                          ^
+//
+// pkg/front_end/testcases/many_errors.dart:10:26: Error: New expression is not a constant expression.
+//   const A.named2() : x = new Object();
+//                          ^^^
+//
+// pkg/front_end/testcases/many_errors.dart:10:24: Error: 'x' is a final instance variable that has already been initialized.
+//   const A.named2() : x = new Object();
+//                        ^
+// pkg/front_end/testcases/many_errors.dart:6:9: Context: 'x' was initialized here.
+//   final x = null;
+//         ^
+//
+// pkg/front_end/testcases/many_errors.dart:10:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+// Try using a constructor or factory that is 'const'.
+//   const A.named2() : x = new Object();
+//                        ^
+//
+// pkg/front_end/testcases/many_errors.dart:13:24: Error: An external or native method can't have a body.
+// external foo(String x) {
+//                        ^
+//
+// pkg/front_end/testcases/many_errors.dart:28:9: Error: The class 'AbstractClass' is abstract and can't be instantiated.
+//   const AbstractClass.id();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/many_errors.dart:28:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+// Try using a constructor or factory that is 'const'.
+//   const AbstractClass.id();
+//         ^
+//
+// pkg/front_end/testcases/many_errors.dart:29:28: Error: The getter 'b' isn't defined for the class 'B'.
+//  - 'B' is from 'pkg/front_end/testcases/many_errors.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'b'.
+//   (new C()?.b ??= new B()).b;
+//                            ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+  final field dynamic x = null;
+  constructor named1() → self::A
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/many_errors.dart:8:26: Error: Constructor bodies can't use 'async', 'async*', or 'sync*'.
+  const A.named1() sync* {}
+                         ^" {}
+  const constructor named2() → self::A
+    : final dynamic #t2 = throw invalid-expression "pkg/front_end/testcases/many_errors.dart:10:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+Try using a constructor or factory that is 'const'.
+  const A.named2() : x = new Object();
+                       ^", super core::Object::•()
+    ;
+}
+class B extends core::Object {
+  synthetic constructor •() → self::B
+    : super core::Object::•()
+    ;
+}
+class C extends core::Object {
+  field self::B b = null;
+  synthetic constructor •() → self::C
+    : super core::Object::•()
+    ;
+}
+abstract class AbstractClass extends core::Object {
+  const constructor id() → self::AbstractClass
+    : super core::Object::•()
+    ;
+}
+external static method foo(core::String x) → dynamic {
+  invalid-expression "pkg/front_end/testcases/many_errors.dart:13:24: Error: An external or native method can't have a body.
+external foo(String x) {
+                       ^";
+  {
+    return x.{core::String::length};
+  }
+}
+static method m() → dynamic {
+  throw invalid-expression "pkg/front_end/testcases/many_errors.dart:28:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+Try using a constructor or factory that is 'const'.
+  const AbstractClass.id();
+        ^";
+  invalid-expression "pkg/front_end/testcases/many_errors.dart:29:28: Error: The getter 'b' isn't defined for the class 'B'.
+ - 'B' is from 'pkg/front_end/testcases/many_errors.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'b'.
+  (new C()?.b ??= new B()).b;
+                           ^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/many_errors.dart.strong.transformed.expect b/pkg/front_end/testcases/many_errors.dart.strong.transformed.expect
new file mode 100644
index 0000000..37fcff8
--- /dev/null
+++ b/pkg/front_end/testcases/many_errors.dart.strong.transformed.expect
@@ -0,0 +1,104 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/many_errors.dart:8:3: Error: A const constructor can't have a body.
+// Try removing either the 'const' keyword or the body.
+//   const A.named1() sync* {}
+//   ^^^^^
+//
+// pkg/front_end/testcases/many_errors.dart:13:1: Error: An external or native method can't have a body.
+// external foo(String x) {
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/many_errors.dart:8:26: Error: Constructor bodies can't use 'async', 'async*', or 'sync*'.
+//   const A.named1() sync* {}
+//                          ^
+//
+// pkg/front_end/testcases/many_errors.dart:10:26: Error: New expression is not a constant expression.
+//   const A.named2() : x = new Object();
+//                          ^^^
+//
+// pkg/front_end/testcases/many_errors.dart:10:24: Error: 'x' is a final instance variable that has already been initialized.
+//   const A.named2() : x = new Object();
+//                        ^
+// pkg/front_end/testcases/many_errors.dart:6:9: Context: 'x' was initialized here.
+//   final x = null;
+//         ^
+//
+// pkg/front_end/testcases/many_errors.dart:10:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+// Try using a constructor or factory that is 'const'.
+//   const A.named2() : x = new Object();
+//                        ^
+//
+// pkg/front_end/testcases/many_errors.dart:13:24: Error: An external or native method can't have a body.
+// external foo(String x) {
+//                        ^
+//
+// pkg/front_end/testcases/many_errors.dart:28:9: Error: The class 'AbstractClass' is abstract and can't be instantiated.
+//   const AbstractClass.id();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/many_errors.dart:28:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+// Try using a constructor or factory that is 'const'.
+//   const AbstractClass.id();
+//         ^
+//
+// pkg/front_end/testcases/many_errors.dart:29:28: Error: The getter 'b' isn't defined for the class 'B'.
+//  - 'B' is from 'pkg/front_end/testcases/many_errors.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'b'.
+//   (new C()?.b ??= new B()).b;
+//                            ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+  final field dynamic x = null;
+  constructor named1() → self::A
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/many_errors.dart:8:26: Error: Constructor bodies can't use 'async', 'async*', or 'sync*'.
+  const A.named1() sync* {}
+                         ^" {}
+  const constructor named2() → self::A
+    : final dynamic #t2 = throw invalid-expression "pkg/front_end/testcases/many_errors.dart:10:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+Try using a constructor or factory that is 'const'.
+  const A.named2() : x = new Object();
+                       ^", super core::Object::•()
+    ;
+}
+class B extends core::Object {
+  synthetic constructor •() → self::B
+    : super core::Object::•()
+    ;
+}
+class C extends core::Object {
+  field self::B b = null;
+  synthetic constructor •() → self::C
+    : super core::Object::•()
+    ;
+}
+abstract class AbstractClass extends core::Object {
+  const constructor id() → self::AbstractClass
+    : super core::Object::•()
+    ;
+}
+external static method foo(core::String x) → dynamic {
+  invalid-expression "pkg/front_end/testcases/many_errors.dart:13:24: Error: An external or native method can't have a body.
+external foo(String x) {
+                       ^";
+  {
+    return x.{core::String::length};
+  }
+}
+static method m() → dynamic {
+  throw invalid-expression "pkg/front_end/testcases/many_errors.dart:28:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+Try using a constructor or factory that is 'const'.
+  const AbstractClass.id();
+        ^";
+  invalid-expression "pkg/front_end/testcases/many_errors.dart:29:28: Error: The getter 'b' isn't defined for the class 'B'.
+ - 'B' is from 'pkg/front_end/testcases/many_errors.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'b'.
+  (new C()?.b ??= new B()).b;
+                           ^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.strong.expect b/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.strong.expect
index 04f0a8f..cecd01b 100644
--- a/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.strong.expect
@@ -13,7 +13,7 @@
 static const field core::int c = 1;
 static method main() → dynamic {
   self::c;
-  let final dynamic #t1 = self::c in invalid-expression "pkg/front_end/testcases/rasta/constant_get_and_invoke.dart:8:4: Error: The method 'call' isn't defined for the class 'int'.
+  invalid-expression "pkg/front_end/testcases/rasta/constant_get_and_invoke.dart:8:4: Error: The method 'call' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing method, or defining a method named 'call'.
   c();
    ^";
diff --git a/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.strong.transformed.expect
index cc89059..cecd01b 100644
--- a/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.strong.transformed.expect
@@ -13,7 +13,7 @@
 static const field core::int c = 1;
 static method main() → dynamic {
   self::c;
-  let final core::int #t1 = self::c in invalid-expression "pkg/front_end/testcases/rasta/constant_get_and_invoke.dart:8:4: Error: The method 'call' isn't defined for the class 'int'.
+  invalid-expression "pkg/front_end/testcases/rasta/constant_get_and_invoke.dart:8:4: Error: The method 'call' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing method, or defining a method named 'call'.
   c();
    ^";
diff --git a/pkg/front_end/testcases/rasta/issue_000032.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000032.dart.strong.expect
index da9ea12..c9b5781 100644
--- a/pkg/front_end/testcases/rasta/issue_000032.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000032.dart.strong.expect
@@ -41,7 +41,7 @@
     : super core::Object::•() {}
 }
 static method main() → dynamic {
-  let final dynamic #t1 = self::C in invalid-expression "pkg/front_end/testcases/rasta/issue_000032.dart:10:4: Error: The method '<' isn't defined for the class 'Type'.
+  invalid-expression "pkg/front_end/testcases/rasta/issue_000032.dart:10:4: Error: The method '<' isn't defined for the class 'Type'.
  - 'Type' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named '<'.
   C<
diff --git a/pkg/front_end/testcases/rasta/issue_000032.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000032.dart.strong.transformed.expect
index 4a010d8..c9b5781 100644
--- a/pkg/front_end/testcases/rasta/issue_000032.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000032.dart.strong.transformed.expect
@@ -41,7 +41,7 @@
     : super core::Object::•() {}
 }
 static method main() → dynamic {
-  let final core::Type #t1 = self::C in invalid-expression "pkg/front_end/testcases/rasta/issue_000032.dart:10:4: Error: The method '<' isn't defined for the class 'Type'.
+  invalid-expression "pkg/front_end/testcases/rasta/issue_000032.dart:10:4: Error: The method '<' isn't defined for the class 'Type'.
  - 'Type' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named '<'.
   C<
diff --git a/pkg/front_end/testcases/rasta/issue_000044.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000044.dart.strong.expect
index 75306d4..801849b 100644
--- a/pkg/front_end/testcases/rasta/issue_000044.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000044.dart.strong.expect
@@ -80,11 +80,11 @@
   static factory good() → self::C
     let dynamic #redirecting_factory = self::C::constant in invalid-expression;
   method notEvenAConstructor(dynamic a) → self::C
-    return (let final dynamic #t1 = this in invalid-expression "pkg/front_end/testcases/rasta/issue_000044.dart:21:30: Error: The getter 'h' isn't defined for the class 'C'.
+    return invalid-expression "pkg/front_end/testcases/rasta/issue_000044.dart:21:30: Error: The getter 'h' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/rasta/issue_000044.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'h'.
   C notEvenAConstructor(a) = h;
-                             ^") as{TypeError} self::C;
+                             ^" as{TypeError} self::C;
 }
 static method b(dynamic c) → invalid-type
   return invalid-expression "pkg/front_end/testcases/rasta/issue_000044.dart:7:10: Error: Getter not found: 'd'.
diff --git a/pkg/front_end/testcases/rasta/issue_000044.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000044.dart.strong.transformed.expect
index dd30341..6ea0318 100644
--- a/pkg/front_end/testcases/rasta/issue_000044.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000044.dart.strong.transformed.expect
@@ -80,11 +80,11 @@
   static factory good() → self::C
     let<BottomType> #redirecting_factory = self::C::constant in invalid-expression;
   method notEvenAConstructor(dynamic a) → self::C
-    return (let final self::C #t1 = this in invalid-expression "pkg/front_end/testcases/rasta/issue_000044.dart:21:30: Error: The getter 'h' isn't defined for the class 'C'.
+    return invalid-expression "pkg/front_end/testcases/rasta/issue_000044.dart:21:30: Error: The getter 'h' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/rasta/issue_000044.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'h'.
   C notEvenAConstructor(a) = h;
-                             ^") as{TypeError} self::C;
+                             ^" as{TypeError} self::C;
 }
 static method b(dynamic c) → invalid-type
   return invalid-expression "pkg/front_end/testcases/rasta/issue_000044.dart:7:10: Error: Getter not found: 'd'.
diff --git a/pkg/front_end/testcases/rasta/static.dart.strong.expect b/pkg/front_end/testcases/rasta/static.dart.strong.expect
index 34781bf..34a6ee1 100644
--- a/pkg/front_end/testcases/rasta/static.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/static.dart.strong.expect
@@ -264,19 +264,19 @@
     self::use(self::Foo::staticSetter = invalid-expression "pkg/front_end/testcases/rasta/static.dart:51:15: Error: Getter not found: 'staticSetter'.
     use(++Foo.staticSetter);
               ^^^^^^^^^^^^".+(1));
-    let final dynamic #t11 = self::Foo::staticConstant in invalid-expression "pkg/front_end/testcases/rasta/static.dart:53:23: Error: The method 'call' isn't defined for the class 'int'.
+    invalid-expression "pkg/front_end/testcases/rasta/static.dart:53:23: Error: The method 'call' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing method, or defining a method named 'call'.
     Foo.staticConstant();
                       ^";
-    self::use(let final dynamic #t12 = self::Foo::staticConstant in invalid-expression "pkg/front_end/testcases/rasta/static.dart:54:27: Error: The method 'call' isn't defined for the class 'int'.
+    self::use(invalid-expression "pkg/front_end/testcases/rasta/static.dart:54:27: Error: The method 'call' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing method, or defining a method named 'call'.
     use(Foo.staticConstant());
                           ^");
-    let final dynamic #t13 = self::Foo::staticField in invalid-expression "pkg/front_end/testcases/rasta/static.dart:55:20: Error: The method 'call' isn't defined for the class 'int'.
+    invalid-expression "pkg/front_end/testcases/rasta/static.dart:55:20: Error: The method 'call' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing method, or defining a method named 'call'.
     Foo.staticField();
                    ^";
-    self::use(let final dynamic #t14 = self::Foo::staticField in invalid-expression "pkg/front_end/testcases/rasta/static.dart:56:24: Error: The method 'call' isn't defined for the class 'int'.
+    self::use(invalid-expression "pkg/front_end/testcases/rasta/static.dart:56:24: Error: The method 'call' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing method, or defining a method named 'call'.
     use(Foo.staticField());
                        ^");
@@ -315,29 +315,29 @@
     self::Foo::staticConstant.{core::Object::==}(null) ?{core::int} invalid-expression "pkg/front_end/testcases/rasta/static.dart:75:9: Error: Setter not found: 'staticConstant'.
     Foo.staticConstant ??= 87;
         ^^^^^^^^^^^^^^" : null;
-    self::use(let final core::int #t15 = self::Foo::staticConstant in #t15.{core::Object::==}(null) ?{core::int} invalid-expression "pkg/front_end/testcases/rasta/static.dart:76:13: Error: Setter not found: 'staticConstant'.
+    self::use(let final core::int #t11 = self::Foo::staticConstant in #t11.{core::Object::==}(null) ?{core::int} invalid-expression "pkg/front_end/testcases/rasta/static.dart:76:13: Error: Setter not found: 'staticConstant'.
     use(Foo.staticConstant ??= 87);
-            ^^^^^^^^^^^^^^" : #t15);
+            ^^^^^^^^^^^^^^" : #t11);
     self::Foo::staticField.{core::num::==}(null) ?{core::int} self::Foo::staticField = 87 : null;
-    self::use(let final core::int #t16 = self::Foo::staticField in #t16.{core::num::==}(null) ?{core::int} self::Foo::staticField = 87 : #t16);
+    self::use(let final core::int #t12 = self::Foo::staticField in #t12.{core::num::==}(null) ?{core::int} self::Foo::staticField = 87 : #t12);
     self::Foo::staticFunction.{core::Object::==}(null) ?{core::Object} invalid-expression "pkg/front_end/testcases/rasta/static.dart:79:9: Error: Setter not found: 'staticFunction'.
     Foo.staticFunction ??= 87;
         ^^^^^^^^^^^^^^" : null;
-    self::use(let final () → dynamic #t17 = self::Foo::staticFunction in #t17.{core::Object::==}(null) ?{core::Object} invalid-expression "pkg/front_end/testcases/rasta/static.dart:80:13: Error: Setter not found: 'staticFunction'.
+    self::use(let final () → dynamic #t13 = self::Foo::staticFunction in #t13.{core::Object::==}(null) ?{core::Object} invalid-expression "pkg/front_end/testcases/rasta/static.dart:80:13: Error: Setter not found: 'staticFunction'.
     use(Foo.staticFunction ??= 87);
-            ^^^^^^^^^^^^^^" : #t17);
+            ^^^^^^^^^^^^^^" : #t13);
     self::Foo::staticGetter.{core::Object::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:81:9: Error: Setter not found: 'staticGetter'.
     Foo.staticGetter ??= 87;
         ^^^^^^^^^^^^" : null;
-    self::use(let final dynamic #t18 = self::Foo::staticGetter in #t18.{core::Object::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:82:13: Error: Setter not found: 'staticGetter'.
+    self::use(let final dynamic #t14 = self::Foo::staticGetter in #t14.{core::Object::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:82:13: Error: Setter not found: 'staticGetter'.
     use(Foo.staticGetter ??= 87);
-            ^^^^^^^^^^^^" : #t18);
+            ^^^^^^^^^^^^" : #t14);
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:83:9: Error: Getter not found: 'staticSetter'.
     Foo.staticSetter ??= 87;
         ^^^^^^^^^^^^".{core::Object::==}(null) ?{dynamic} self::Foo::staticSetter = 87 : null;
-    self::use(let final dynamic #t19 = invalid-expression "pkg/front_end/testcases/rasta/static.dart:84:13: Error: Getter not found: 'staticSetter'.
+    self::use(let final dynamic #t15 = invalid-expression "pkg/front_end/testcases/rasta/static.dart:84:13: Error: Getter not found: 'staticSetter'.
     use(Foo.staticSetter ??= 87);
-            ^^^^^^^^^^^^" in #t19.{core::Object::==}(null) ?{dynamic} self::Foo::staticSetter = 87 : #t19);
+            ^^^^^^^^^^^^" in #t15.{core::Object::==}(null) ?{dynamic} self::Foo::staticSetter = 87 : #t15);
   }
   on core::NoSuchMethodError catch(no-exception-var) {
   }
diff --git a/pkg/front_end/testcases/rasta/static.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/static.dart.strong.transformed.expect
index 02d5c6b..34a6ee1 100644
--- a/pkg/front_end/testcases/rasta/static.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/static.dart.strong.transformed.expect
@@ -264,19 +264,19 @@
     self::use(self::Foo::staticSetter = invalid-expression "pkg/front_end/testcases/rasta/static.dart:51:15: Error: Getter not found: 'staticSetter'.
     use(++Foo.staticSetter);
               ^^^^^^^^^^^^".+(1));
-    let final core::int #t11 = self::Foo::staticConstant in invalid-expression "pkg/front_end/testcases/rasta/static.dart:53:23: Error: The method 'call' isn't defined for the class 'int'.
+    invalid-expression "pkg/front_end/testcases/rasta/static.dart:53:23: Error: The method 'call' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing method, or defining a method named 'call'.
     Foo.staticConstant();
                       ^";
-    self::use(let final core::int #t12 = self::Foo::staticConstant in invalid-expression "pkg/front_end/testcases/rasta/static.dart:54:27: Error: The method 'call' isn't defined for the class 'int'.
+    self::use(invalid-expression "pkg/front_end/testcases/rasta/static.dart:54:27: Error: The method 'call' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing method, or defining a method named 'call'.
     use(Foo.staticConstant());
                           ^");
-    let final core::int #t13 = self::Foo::staticField in invalid-expression "pkg/front_end/testcases/rasta/static.dart:55:20: Error: The method 'call' isn't defined for the class 'int'.
+    invalid-expression "pkg/front_end/testcases/rasta/static.dart:55:20: Error: The method 'call' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing method, or defining a method named 'call'.
     Foo.staticField();
                    ^";
-    self::use(let final core::int #t14 = self::Foo::staticField in invalid-expression "pkg/front_end/testcases/rasta/static.dart:56:24: Error: The method 'call' isn't defined for the class 'int'.
+    self::use(invalid-expression "pkg/front_end/testcases/rasta/static.dart:56:24: Error: The method 'call' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing method, or defining a method named 'call'.
     use(Foo.staticField());
                        ^");
@@ -315,29 +315,29 @@
     self::Foo::staticConstant.{core::Object::==}(null) ?{core::int} invalid-expression "pkg/front_end/testcases/rasta/static.dart:75:9: Error: Setter not found: 'staticConstant'.
     Foo.staticConstant ??= 87;
         ^^^^^^^^^^^^^^" : null;
-    self::use(let final core::int #t15 = self::Foo::staticConstant in #t15.{core::Object::==}(null) ?{core::int} invalid-expression "pkg/front_end/testcases/rasta/static.dart:76:13: Error: Setter not found: 'staticConstant'.
+    self::use(let final core::int #t11 = self::Foo::staticConstant in #t11.{core::Object::==}(null) ?{core::int} invalid-expression "pkg/front_end/testcases/rasta/static.dart:76:13: Error: Setter not found: 'staticConstant'.
     use(Foo.staticConstant ??= 87);
-            ^^^^^^^^^^^^^^" : #t15);
+            ^^^^^^^^^^^^^^" : #t11);
     self::Foo::staticField.{core::num::==}(null) ?{core::int} self::Foo::staticField = 87 : null;
-    self::use(let final core::int #t16 = self::Foo::staticField in #t16.{core::num::==}(null) ?{core::int} self::Foo::staticField = 87 : #t16);
+    self::use(let final core::int #t12 = self::Foo::staticField in #t12.{core::num::==}(null) ?{core::int} self::Foo::staticField = 87 : #t12);
     self::Foo::staticFunction.{core::Object::==}(null) ?{core::Object} invalid-expression "pkg/front_end/testcases/rasta/static.dart:79:9: Error: Setter not found: 'staticFunction'.
     Foo.staticFunction ??= 87;
         ^^^^^^^^^^^^^^" : null;
-    self::use(let final () → dynamic #t17 = self::Foo::staticFunction in #t17.{core::Object::==}(null) ?{core::Object} invalid-expression "pkg/front_end/testcases/rasta/static.dart:80:13: Error: Setter not found: 'staticFunction'.
+    self::use(let final () → dynamic #t13 = self::Foo::staticFunction in #t13.{core::Object::==}(null) ?{core::Object} invalid-expression "pkg/front_end/testcases/rasta/static.dart:80:13: Error: Setter not found: 'staticFunction'.
     use(Foo.staticFunction ??= 87);
-            ^^^^^^^^^^^^^^" : #t17);
+            ^^^^^^^^^^^^^^" : #t13);
     self::Foo::staticGetter.{core::Object::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:81:9: Error: Setter not found: 'staticGetter'.
     Foo.staticGetter ??= 87;
         ^^^^^^^^^^^^" : null;
-    self::use(let final dynamic #t18 = self::Foo::staticGetter in #t18.{core::Object::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:82:13: Error: Setter not found: 'staticGetter'.
+    self::use(let final dynamic #t14 = self::Foo::staticGetter in #t14.{core::Object::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:82:13: Error: Setter not found: 'staticGetter'.
     use(Foo.staticGetter ??= 87);
-            ^^^^^^^^^^^^" : #t18);
+            ^^^^^^^^^^^^" : #t14);
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:83:9: Error: Getter not found: 'staticSetter'.
     Foo.staticSetter ??= 87;
         ^^^^^^^^^^^^".{core::Object::==}(null) ?{dynamic} self::Foo::staticSetter = 87 : null;
-    self::use(let final dynamic #t19 = invalid-expression "pkg/front_end/testcases/rasta/static.dart:84:13: Error: Getter not found: 'staticSetter'.
+    self::use(let final dynamic #t15 = invalid-expression "pkg/front_end/testcases/rasta/static.dart:84:13: Error: Getter not found: 'staticSetter'.
     use(Foo.staticSetter ??= 87);
-            ^^^^^^^^^^^^" in #t19.{core::Object::==}(null) ?{dynamic} self::Foo::staticSetter = 87 : #t19);
+            ^^^^^^^^^^^^" in #t15.{core::Object::==}(null) ?{dynamic} self::Foo::staticSetter = 87 : #t15);
   }
   on core::NoSuchMethodError catch(no-exception-var) {
   }
diff --git a/pkg/front_end/testcases/rasta/super.dart.strong.expect b/pkg/front_end/testcases/rasta/super.dart.strong.expect
index e85ea19..72a069a 100644
--- a/pkg/front_end/testcases/rasta/super.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/super.dart.strong.expect
@@ -463,22 +463,22 @@
     self::use(let final dynamic #t17 = super.{self::A::i} in let final dynamic #t18 = super.{self::B::i} = #t17.+(1) in #t17);
     let final core::int #t19 = 87 in super.{self::A::[]=}(#t19, super.{self::A::[]}(#t19).+(1));
     self::use(let final core::int #t20 = 87 in let final dynamic #t21 = super.{self::A::[]}(#t20) in let final void #t22 = super.{self::A::[]=}(#t20, #t21.+(1)) in #t21);
-    super.m = let final dynamic #t23 = super.{self::A::m} in invalid-expression "pkg/front_end/testcases/rasta/super.dart:95:12: Error: The method '+' isn't defined for the class 'void Function()'.
+    super.m = invalid-expression "pkg/front_end/testcases/rasta/super.dart:95:12: Error: The method '+' isn't defined for the class 'void Function()'.
 Try correcting the name to the name of an existing method, or defining a method named '+'.
     super.m++;
            ^";
-    self::use(let final () → void #t24 = super.{self::A::m} in let final dynamic #t25 = super.m = let final dynamic #t26 = #t24 in invalid-expression "pkg/front_end/testcases/rasta/super.dart:96:16: Error: The method '+' isn't defined for the class 'void Function()'.
+    self::use(let final () → void #t23 = super.{self::A::m} in let final dynamic #t24 = super.m = invalid-expression "pkg/front_end/testcases/rasta/super.dart:96:16: Error: The method '+' isn't defined for the class 'void Function()'.
 Try correcting the name to the name of an existing method, or defining a method named '+'.
     use(super.m++);
-               ^" in #t24);
-    super.{self::A::n} = let final dynamic #t27 = super.{self::A::n} in invalid-expression "pkg/front_end/testcases/rasta/super.dart:97:12: Error: The method '+' isn't defined for the class 'void Function()'.
+               ^" in #t23);
+    super.{self::A::n} = invalid-expression "pkg/front_end/testcases/rasta/super.dart:97:12: Error: The method '+' isn't defined for the class 'void Function()'.
 Try correcting the name to the name of an existing method, or defining a method named '+'.
     super.n++;
            ^";
-    self::use(let final () → void #t28 = super.{self::A::n} in let final dynamic #t29 = super.{self::A::n} = let final dynamic #t30 = #t28 in invalid-expression "pkg/front_end/testcases/rasta/super.dart:98:16: Error: The method '+' isn't defined for the class 'void Function()'.
+    self::use(let final () → void #t25 = super.{self::A::n} in let final dynamic #t26 = super.{self::A::n} = invalid-expression "pkg/front_end/testcases/rasta/super.dart:98:16: Error: The method '+' isn't defined for the class 'void Function()'.
 Try correcting the name to the name of an existing method, or defining a method named '+'.
     use(super.n++);
-               ^" in #t28);
+               ^" in #t25);
     super.{self::A::a} = super.{self::A::a}.+(1);
     self::use(super.{self::A::a} = super.{self::A::a}.+(1));
     super.{self::A::b} = super.{self::B::b}.+(1);
@@ -497,21 +497,21 @@
     self::use(super.{self::A::h} = super.{self::A::h}.+(1));
     super.{self::B::i} = super.{self::A::i}.+(1);
     self::use(super.{self::B::i} = super.{self::A::i}.+(1));
-    let final core::int #t31 = 87 in let final dynamic #t32 = super.{self::A::[]}(#t31).+(1) in let final void #t33 = super.{self::A::[]=}(#t31, #t32) in #t32;
-    self::use(let final core::int #t34 = 87 in let final dynamic #t35 = super.{self::A::[]}(#t34).+(1) in let final void #t36 = super.{self::A::[]=}(#t34, #t35) in #t35);
-    super.m = let final dynamic #t37 = super.{self::A::m} in invalid-expression "pkg/front_end/testcases/rasta/super.dart:120:5: Error: The method '+' isn't defined for the class 'void Function()'.
+    let final core::int #t27 = 87 in let final dynamic #t28 = super.{self::A::[]}(#t27).+(1) in let final void #t29 = super.{self::A::[]=}(#t27, #t28) in #t28;
+    self::use(let final core::int #t30 = 87 in let final dynamic #t31 = super.{self::A::[]}(#t30).+(1) in let final void #t32 = super.{self::A::[]=}(#t30, #t31) in #t31);
+    super.m = invalid-expression "pkg/front_end/testcases/rasta/super.dart:120:5: Error: The method '+' isn't defined for the class 'void Function()'.
 Try correcting the name to the name of an existing method, or defining a method named '+'.
     ++super.m;
     ^";
-    self::use(super.m = let final dynamic #t38 = super.{self::A::m} in invalid-expression "pkg/front_end/testcases/rasta/super.dart:121:9: Error: The method '+' isn't defined for the class 'void Function()'.
+    self::use(super.m = invalid-expression "pkg/front_end/testcases/rasta/super.dart:121:9: Error: The method '+' isn't defined for the class 'void Function()'.
 Try correcting the name to the name of an existing method, or defining a method named '+'.
     use(++super.m);
         ^");
-    super.{self::A::n} = let final dynamic #t39 = super.{self::A::n} in invalid-expression "pkg/front_end/testcases/rasta/super.dart:122:5: Error: The method '+' isn't defined for the class 'void Function()'.
+    super.{self::A::n} = invalid-expression "pkg/front_end/testcases/rasta/super.dart:122:5: Error: The method '+' isn't defined for the class 'void Function()'.
 Try correcting the name to the name of an existing method, or defining a method named '+'.
     ++super.n;
     ^";
-    self::use(super.{self::A::n} = let final dynamic #t40 = super.{self::A::n} in invalid-expression "pkg/front_end/testcases/rasta/super.dart:123:9: Error: The method '+' isn't defined for the class 'void Function()'.
+    self::use(super.{self::A::n} = invalid-expression "pkg/front_end/testcases/rasta/super.dart:123:9: Error: The method '+' isn't defined for the class 'void Function()'.
 Try correcting the name to the name of an existing method, or defining a method named '+'.
     use(++super.n);
         ^");
@@ -536,15 +536,15 @@
     super.{self::A::[]}(87).call();
     self::use(super.{self::A::[]}(87).call());
     super.{self::A::m}();
-    self::use(let final<BottomType> #t41 = invalid-expression "pkg/front_end/testcases/rasta/super.dart:146:15: Error: This expression has type 'void' and can't be used.
+    self::use(let final<BottomType> #t33 = invalid-expression "pkg/front_end/testcases/rasta/super.dart:146:15: Error: This expression has type 'void' and can't be used.
     use(super.m());
               ^" in super.{self::A::m}());
     super.{self::A::m}(87);
-    self::use(let final<BottomType> #t42 = invalid-expression "pkg/front_end/testcases/rasta/super.dart:148:15: Error: This expression has type 'void' and can't be used.
+    self::use(let final<BottomType> #t34 = invalid-expression "pkg/front_end/testcases/rasta/super.dart:148:15: Error: This expression has type 'void' and can't be used.
     use(super.m(87));
               ^" in super.{self::A::m}(87));
     super.{self::A::n}(87);
-    self::use(let final<BottomType> #t43 = invalid-expression "pkg/front_end/testcases/rasta/super.dart:150:15: Error: This expression has type 'void' and can't be used.
+    self::use(let final<BottomType> #t35 = invalid-expression "pkg/front_end/testcases/rasta/super.dart:150:15: Error: This expression has type 'void' and can't be used.
     use(super.n(87));
               ^" in super.{self::A::n}(87));
     super.{self::A::a} = 42;
@@ -566,35 +566,35 @@
     super.{self::B::i} = 42;
     self::use(super.{self::B::i} = 42);
     super.{self::A::[]=}(87, 42);
-    self::use(let final core::int #t44 = 87 in let final core::int #t45 = 42 in let final void #t46 = super.{self::A::[]=}(#t44, #t45) in #t45);
+    self::use(let final core::int #t36 = 87 in let final core::int #t37 = 42 in let final void #t38 = super.{self::A::[]=}(#t36, #t37) in #t37);
     super.m = 42;
     self::use(super.m = 42);
     super.{self::A::n} = 42;
     self::use(super.{self::A::n} = 42);
     super.{self::A::a}.{core::Object::==}(null) ?{dynamic} super.{self::A::a} = 42 : null;
-    self::use(let final dynamic #t47 = super.{self::A::a} in #t47.{core::Object::==}(null) ?{dynamic} super.{self::A::a} = 42 : #t47);
+    self::use(let final dynamic #t39 = super.{self::A::a} in #t39.{core::Object::==}(null) ?{dynamic} super.{self::A::a} = 42 : #t39);
     super.{self::B::b}.{core::Object::==}(null) ?{dynamic} super.{self::A::b} = 42 : null;
-    self::use(let final dynamic #t48 = super.{self::B::b} in #t48.{core::Object::==}(null) ?{dynamic} super.{self::A::b} = 42 : #t48);
+    self::use(let final dynamic #t40 = super.{self::B::b} in #t40.{core::Object::==}(null) ?{dynamic} super.{self::A::b} = 42 : #t40);
     super.{self::A::c}.{core::Object::==}(null) ?{dynamic} super.{self::B::c} = 42 : null;
-    self::use(let final dynamic #t49 = super.{self::A::c} in #t49.{core::Object::==}(null) ?{dynamic} super.{self::B::c} = 42 : #t49);
+    self::use(let final dynamic #t41 = super.{self::A::c} in #t41.{core::Object::==}(null) ?{dynamic} super.{self::B::c} = 42 : #t41);
     super.{self::B::d}.{core::Object::==}(null) ?{dynamic} super.{self::A::d} = 42 : null;
-    self::use(let final dynamic #t50 = super.{self::B::d} in #t50.{core::Object::==}(null) ?{dynamic} super.{self::A::d} = 42 : #t50);
+    self::use(let final dynamic #t42 = super.{self::B::d} in #t42.{core::Object::==}(null) ?{dynamic} super.{self::A::d} = 42 : #t42);
     super.{self::A::e}.{core::Object::==}(null) ?{dynamic} super.e = 42 : null;
-    self::use(let final dynamic #t51 = super.{self::A::e} in #t51.{core::Object::==}(null) ?{dynamic} super.e = 42 : #t51);
+    self::use(let final dynamic #t43 = super.{self::A::e} in #t43.{core::Object::==}(null) ?{dynamic} super.e = 42 : #t43);
     super.{self::A::f}.{core::Object::==}(null) ?{dynamic} super.f = 42 : null;
-    self::use(let final dynamic #t52 = super.{self::A::f} in #t52.{core::Object::==}(null) ?{dynamic} super.f = 42 : #t52);
+    self::use(let final dynamic #t44 = super.{self::A::f} in #t44.{core::Object::==}(null) ?{dynamic} super.f = 42 : #t44);
     super.g.{core::Object::==}(null) ?{dynamic} super.{self::A::g} = 42 : null;
-    self::use(let final dynamic #t53 = super.g in #t53.{core::Object::==}(null) ?{dynamic} super.{self::A::g} = 42 : #t53);
+    self::use(let final dynamic #t45 = super.g in #t45.{core::Object::==}(null) ?{dynamic} super.{self::A::g} = 42 : #t45);
     super.{self::A::h}.{core::Object::==}(null) ?{dynamic} super.{self::A::h} = 42 : null;
-    self::use(let final dynamic #t54 = super.{self::A::h} in #t54.{core::Object::==}(null) ?{dynamic} super.{self::A::h} = 42 : #t54);
+    self::use(let final dynamic #t46 = super.{self::A::h} in #t46.{core::Object::==}(null) ?{dynamic} super.{self::A::h} = 42 : #t46);
     super.{self::A::i}.{core::Object::==}(null) ?{dynamic} super.{self::B::i} = 42 : null;
-    self::use(let final dynamic #t55 = super.{self::A::i} in #t55.{core::Object::==}(null) ?{dynamic} super.{self::B::i} = 42 : #t55);
-    let final core::int #t56 = 87 in super.{self::A::[]}(#t56).{core::Object::==}(null) ?{dynamic} let final core::int #t57 = 42 in let final void #t58 = super.{self::A::[]=}(#t56, #t57) in #t57 : null;
-    self::use(let final core::int #t59 = 87 in let final dynamic #t60 = super.{self::A::[]}(#t59) in #t60.{core::Object::==}(null) ?{dynamic} let final core::int #t61 = 42 in let final void #t62 = super.{self::A::[]=}(#t59, #t61) in #t61 : #t60);
+    self::use(let final dynamic #t47 = super.{self::A::i} in #t47.{core::Object::==}(null) ?{dynamic} super.{self::B::i} = 42 : #t47);
+    let final core::int #t48 = 87 in super.{self::A::[]}(#t48).{core::Object::==}(null) ?{dynamic} let final core::int #t49 = 42 in let final void #t50 = super.{self::A::[]=}(#t48, #t49) in #t49 : null;
+    self::use(let final core::int #t51 = 87 in let final dynamic #t52 = super.{self::A::[]}(#t51) in #t52.{core::Object::==}(null) ?{dynamic} let final core::int #t53 = 42 in let final void #t54 = super.{self::A::[]=}(#t51, #t53) in #t53 : #t52);
     super.{self::A::m}.{core::Object::==}(null) ?{core::Object} super.m = 42 : null;
-    self::use(let final () → void #t63 = super.{self::A::m} in #t63.{core::Object::==}(null) ?{core::Object} super.m = 42 : #t63);
+    self::use(let final () → void #t55 = super.{self::A::m} in #t55.{core::Object::==}(null) ?{core::Object} super.m = 42 : #t55);
     super.{self::A::n}.{core::Object::==}(null) ?{core::Object} super.{self::A::n} = 42 : null;
-    self::use(let final () → void #t64 = super.{self::A::n} in #t64.{core::Object::==}(null) ?{core::Object} super.{self::A::n} = 42 : #t64);
+    self::use(let final () → void #t56 = super.{self::A::n} in #t56.{core::Object::==}(null) ?{core::Object} super.{self::A::n} = 42 : #t56);
     super.{self::A::a} = super.{self::A::a}.+(42);
     self::use(super.{self::A::a} = super.{self::A::a}.+(42));
     super.{self::A::b} = super.{self::B::b}.+(42);
@@ -613,21 +613,21 @@
     self::use(super.{self::A::h} = super.{self::A::h}.+(42));
     super.{self::B::i} = super.{self::A::i}.+(42);
     self::use(super.{self::B::i} = super.{self::A::i}.+(42));
-    let final core::int #t65 = 87 in super.{self::A::[]=}(#t65, super.{self::A::[]}(#t65).+(42));
-    self::use(let final core::int #t66 = 87 in let final dynamic #t67 = super.{self::A::[]}(#t66).+(42) in let final void #t68 = super.{self::A::[]=}(#t66, #t67) in #t67);
-    super.m = let final dynamic #t69 = super.{self::A::m} in invalid-expression "pkg/front_end/testcases/rasta/super.dart:222:13: Error: The method '+' isn't defined for the class 'void Function()'.
+    let final core::int #t57 = 87 in super.{self::A::[]=}(#t57, super.{self::A::[]}(#t57).+(42));
+    self::use(let final core::int #t58 = 87 in let final dynamic #t59 = super.{self::A::[]}(#t58).+(42) in let final void #t60 = super.{self::A::[]=}(#t58, #t59) in #t59);
+    super.m = invalid-expression "pkg/front_end/testcases/rasta/super.dart:222:13: Error: The method '+' isn't defined for the class 'void Function()'.
 Try correcting the name to the name of an existing method, or defining a method named '+'.
     super.m += 42;
             ^";
-    self::use(super.m = let final dynamic #t70 = super.{self::A::m} in invalid-expression "pkg/front_end/testcases/rasta/super.dart:223:17: Error: The method '+' isn't defined for the class 'void Function()'.
+    self::use(super.m = invalid-expression "pkg/front_end/testcases/rasta/super.dart:223:17: Error: The method '+' isn't defined for the class 'void Function()'.
 Try correcting the name to the name of an existing method, or defining a method named '+'.
     use(super.m += 42);
                 ^");
-    super.{self::A::n} = let final dynamic #t71 = super.{self::A::n} in invalid-expression "pkg/front_end/testcases/rasta/super.dart:224:13: Error: The method '+' isn't defined for the class 'void Function()'.
+    super.{self::A::n} = invalid-expression "pkg/front_end/testcases/rasta/super.dart:224:13: Error: The method '+' isn't defined for the class 'void Function()'.
 Try correcting the name to the name of an existing method, or defining a method named '+'.
     super.n += 42;
             ^";
-    self::use(super.{self::A::n} = let final dynamic #t72 = super.{self::A::n} in invalid-expression "pkg/front_end/testcases/rasta/super.dart:225:17: Error: The method '+' isn't defined for the class 'void Function()'.
+    self::use(super.{self::A::n} = invalid-expression "pkg/front_end/testcases/rasta/super.dart:225:17: Error: The method '+' isn't defined for the class 'void Function()'.
 Try correcting the name to the name of an existing method, or defining a method named '+'.
     use(super.n += 42);
                 ^");
@@ -649,21 +649,21 @@
     self::use(super.{self::A::h} = super.{self::A::h}.-(42));
     super.{self::B::i} = super.{self::A::i}.-(42);
     self::use(super.{self::B::i} = super.{self::A::i}.-(42));
-    let final core::int #t73 = 87 in super.{self::A::[]=}(#t73, super.{self::A::[]}(#t73).-(42));
-    self::use(let final core::int #t74 = 87 in let final dynamic #t75 = super.{self::A::[]}(#t74).-(42) in let final void #t76 = super.{self::A::[]=}(#t74, #t75) in #t75);
-    super.m = let final dynamic #t77 = super.{self::A::m} in invalid-expression "pkg/front_end/testcases/rasta/super.dart:247:13: Error: The method '-' isn't defined for the class 'void Function()'.
+    let final core::int #t61 = 87 in super.{self::A::[]=}(#t61, super.{self::A::[]}(#t61).-(42));
+    self::use(let final core::int #t62 = 87 in let final dynamic #t63 = super.{self::A::[]}(#t62).-(42) in let final void #t64 = super.{self::A::[]=}(#t62, #t63) in #t63);
+    super.m = invalid-expression "pkg/front_end/testcases/rasta/super.dart:247:13: Error: The method '-' isn't defined for the class 'void Function()'.
 Try correcting the name to the name of an existing method, or defining a method named '-'.
     super.m -= 42;
             ^";
-    self::use(super.m = let final dynamic #t78 = super.{self::A::m} in invalid-expression "pkg/front_end/testcases/rasta/super.dart:248:17: Error: The method '-' isn't defined for the class 'void Function()'.
+    self::use(super.m = invalid-expression "pkg/front_end/testcases/rasta/super.dart:248:17: Error: The method '-' isn't defined for the class 'void Function()'.
 Try correcting the name to the name of an existing method, or defining a method named '-'.
     use(super.m -= 42);
                 ^");
-    super.{self::A::n} = let final dynamic #t79 = super.{self::A::n} in invalid-expression "pkg/front_end/testcases/rasta/super.dart:249:13: Error: The method '-' isn't defined for the class 'void Function()'.
+    super.{self::A::n} = invalid-expression "pkg/front_end/testcases/rasta/super.dart:249:13: Error: The method '-' isn't defined for the class 'void Function()'.
 Try correcting the name to the name of an existing method, or defining a method named '-'.
     super.n -= 42;
             ^";
-    self::use(super.{self::A::n} = let final dynamic #t80 = super.{self::A::n} in invalid-expression "pkg/front_end/testcases/rasta/super.dart:250:17: Error: The method '-' isn't defined for the class 'void Function()'.
+    self::use(super.{self::A::n} = invalid-expression "pkg/front_end/testcases/rasta/super.dart:250:17: Error: The method '-' isn't defined for the class 'void Function()'.
 Try correcting the name to the name of an existing method, or defining a method named '-'.
     use(super.n -= 42);
                 ^");
diff --git a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.strong.expect b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.strong.expect
index 9714888..54fcd03 100644
--- a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.strong.expect
@@ -104,24 +104,24 @@
     ;
   method it1(dynamic x) → dynamic {
     for (final dynamic #t1 in x as{TypeError} core::Iterable<dynamic>) {
-      let final dynamic #t2 = this in invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:11:10: Error: The setter 'key' isn't defined for the class 'Fisk'.
+      invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:11:10: Error: The setter 'key' isn't defined for the class 'Fisk'.
  - 'Fisk' is from 'pkg/front_end/testcases/rasta/unresolved_for_in.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'key'.
     for (key in x) {
          ^^^";
-      core::print(let final dynamic #t3 = this in invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:12:13: Error: The getter 'key' isn't defined for the class 'Fisk'.
+      core::print(invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:12:13: Error: The getter 'key' isn't defined for the class 'Fisk'.
  - 'Fisk' is from 'pkg/front_end/testcases/rasta/unresolved_for_in.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'key'.
       print(key);
             ^^^");
     }
-    for (final dynamic #t4 in x as{TypeError} core::Iterable<dynamic>) {
+    for (final dynamic #t2 in x as{TypeError} core::Iterable<dynamic>) {
       invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:14:10: Error: Setter not found: 'Fisk'.
     for (Fisk in x) {
          ^^^^";
       core::print(self::Fisk);
     }
-    for (final dynamic #t5 in x as{TypeError} core::Iterable<dynamic>) {
+    for (final dynamic #t3 in x as{TypeError} core::Iterable<dynamic>) {
       invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:17:10: Error: A prefix can't be used as an expression.
     for (collection in x) {
          ^^^^^^^^^^";
@@ -129,7 +129,7 @@
       print(collection);
             ^^^^^^^^^^");
     }
-    for (final dynamic #t6 in x as{TypeError} core::Iterable<dynamic>) {
+    for (final dynamic #t4 in x as{TypeError} core::Iterable<dynamic>) {
       invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:20:10: Error: Setter not found: 'VoidFunction'.
     for (VoidFunction in x) {
          ^^^^^^^^^^^^";
@@ -139,12 +139,12 @@
       invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:23:10: Error: Can't assign to this, so it can't be used in a for-in loop.
     for (1 in x) {
          ^";
-      for (final dynamic #t7 in x as{TypeError} core::Iterable<dynamic>) {
+      for (final dynamic #t5 in x as{TypeError} core::Iterable<dynamic>) {
         invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:23:10: Error: Can't assign to this, so it can't be used in a for-in loop.
     for (1 in x) {
          ^";
         1;
-        core::print(let final dynamic #t8 = this in invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:24:13: Error: The getter 'key' isn't defined for the class 'Fisk'.
+        core::print(invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:24:13: Error: The getter 'key' isn't defined for the class 'Fisk'.
  - 'Fisk' is from 'pkg/front_end/testcases/rasta/unresolved_for_in.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'key'.
       print(key);
@@ -155,7 +155,7 @@
 }
 static method main(dynamic arguments) → dynamic {
   new self::Fisk::•();
-  for (final dynamic #t9 in arguments as{TypeError} core::Iterable<dynamic>) {
+  for (final dynamic #t6 in arguments as{TypeError} core::Iterable<dynamic>) {
     invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:31:8: Error: Setter not found: 'key'.
   for (key in arguments) {
        ^^^";
@@ -163,13 +163,13 @@
     print(key);
           ^^^");
   }
-  for (final dynamic #t10 in arguments as{TypeError} core::Iterable<dynamic>) {
+  for (final dynamic #t7 in arguments as{TypeError} core::Iterable<dynamic>) {
     invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:34:8: Error: Setter not found: 'Fisk'.
   for (Fisk in arguments) {
        ^^^^";
     core::print(self::Fisk);
   }
-  for (final dynamic #t11 in arguments as{TypeError} core::Iterable<dynamic>) {
+  for (final dynamic #t8 in arguments as{TypeError} core::Iterable<dynamic>) {
     invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:37:8: Error: A prefix can't be used as an expression.
   for (collection in arguments) {
        ^^^^^^^^^^";
@@ -177,7 +177,7 @@
     print(collection);
           ^^^^^^^^^^");
   }
-  for (final dynamic #t12 in arguments as{TypeError} core::Iterable<dynamic>) {
+  for (final dynamic #t9 in arguments as{TypeError} core::Iterable<dynamic>) {
     invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:40:8: Error: Setter not found: 'VoidFunction'.
   for (VoidFunction in arguments) {
        ^^^^^^^^^^^^";
@@ -187,7 +187,7 @@
     invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:43:8: Error: Can't assign to this, so it can't be used in a for-in loop.
   for (1 in arguments) {
        ^";
-    for (final dynamic #t13 in arguments as{TypeError} core::Iterable<dynamic>) {
+    for (final dynamic #t10 in arguments as{TypeError} core::Iterable<dynamic>) {
       invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:43:8: Error: Can't assign to this, so it can't be used in a for-in loop.
   for (1 in arguments) {
        ^";
diff --git a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.strong.transformed.expect
index 47f060b..54fcd03 100644
--- a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.strong.transformed.expect
@@ -104,24 +104,24 @@
     ;
   method it1(dynamic x) → dynamic {
     for (final dynamic #t1 in x as{TypeError} core::Iterable<dynamic>) {
-      let final self::Fisk #t2 = this in invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:11:10: Error: The setter 'key' isn't defined for the class 'Fisk'.
+      invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:11:10: Error: The setter 'key' isn't defined for the class 'Fisk'.
  - 'Fisk' is from 'pkg/front_end/testcases/rasta/unresolved_for_in.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'key'.
     for (key in x) {
          ^^^";
-      core::print(let final self::Fisk #t3 = this in invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:12:13: Error: The getter 'key' isn't defined for the class 'Fisk'.
+      core::print(invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:12:13: Error: The getter 'key' isn't defined for the class 'Fisk'.
  - 'Fisk' is from 'pkg/front_end/testcases/rasta/unresolved_for_in.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'key'.
       print(key);
             ^^^");
     }
-    for (final dynamic #t4 in x as{TypeError} core::Iterable<dynamic>) {
+    for (final dynamic #t2 in x as{TypeError} core::Iterable<dynamic>) {
       invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:14:10: Error: Setter not found: 'Fisk'.
     for (Fisk in x) {
          ^^^^";
       core::print(self::Fisk);
     }
-    for (final dynamic #t5 in x as{TypeError} core::Iterable<dynamic>) {
+    for (final dynamic #t3 in x as{TypeError} core::Iterable<dynamic>) {
       invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:17:10: Error: A prefix can't be used as an expression.
     for (collection in x) {
          ^^^^^^^^^^";
@@ -129,7 +129,7 @@
       print(collection);
             ^^^^^^^^^^");
     }
-    for (final dynamic #t6 in x as{TypeError} core::Iterable<dynamic>) {
+    for (final dynamic #t4 in x as{TypeError} core::Iterable<dynamic>) {
       invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:20:10: Error: Setter not found: 'VoidFunction'.
     for (VoidFunction in x) {
          ^^^^^^^^^^^^";
@@ -139,12 +139,12 @@
       invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:23:10: Error: Can't assign to this, so it can't be used in a for-in loop.
     for (1 in x) {
          ^";
-      for (final dynamic #t7 in x as{TypeError} core::Iterable<dynamic>) {
+      for (final dynamic #t5 in x as{TypeError} core::Iterable<dynamic>) {
         invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:23:10: Error: Can't assign to this, so it can't be used in a for-in loop.
     for (1 in x) {
          ^";
         1;
-        core::print(let final self::Fisk #t8 = this in invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:24:13: Error: The getter 'key' isn't defined for the class 'Fisk'.
+        core::print(invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:24:13: Error: The getter 'key' isn't defined for the class 'Fisk'.
  - 'Fisk' is from 'pkg/front_end/testcases/rasta/unresolved_for_in.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'key'.
       print(key);
@@ -155,7 +155,7 @@
 }
 static method main(dynamic arguments) → dynamic {
   new self::Fisk::•();
-  for (final dynamic #t9 in arguments as{TypeError} core::Iterable<dynamic>) {
+  for (final dynamic #t6 in arguments as{TypeError} core::Iterable<dynamic>) {
     invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:31:8: Error: Setter not found: 'key'.
   for (key in arguments) {
        ^^^";
@@ -163,13 +163,13 @@
     print(key);
           ^^^");
   }
-  for (final dynamic #t10 in arguments as{TypeError} core::Iterable<dynamic>) {
+  for (final dynamic #t7 in arguments as{TypeError} core::Iterable<dynamic>) {
     invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:34:8: Error: Setter not found: 'Fisk'.
   for (Fisk in arguments) {
        ^^^^";
     core::print(self::Fisk);
   }
-  for (final dynamic #t11 in arguments as{TypeError} core::Iterable<dynamic>) {
+  for (final dynamic #t8 in arguments as{TypeError} core::Iterable<dynamic>) {
     invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:37:8: Error: A prefix can't be used as an expression.
   for (collection in arguments) {
        ^^^^^^^^^^";
@@ -177,7 +177,7 @@
     print(collection);
           ^^^^^^^^^^");
   }
-  for (final dynamic #t12 in arguments as{TypeError} core::Iterable<dynamic>) {
+  for (final dynamic #t9 in arguments as{TypeError} core::Iterable<dynamic>) {
     invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:40:8: Error: Setter not found: 'VoidFunction'.
   for (VoidFunction in arguments) {
        ^^^^^^^^^^^^";
@@ -187,7 +187,7 @@
     invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:43:8: Error: Can't assign to this, so it can't be used in a for-in loop.
   for (1 in arguments) {
        ^";
-    for (final dynamic #t13 in arguments as{TypeError} core::Iterable<dynamic>) {
+    for (final dynamic #t10 in arguments as{TypeError} core::Iterable<dynamic>) {
       invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:43:8: Error: Can't assign to this, so it can't be used in a for-in loop.
   for (1 in arguments) {
        ^";
diff --git a/pkg/front_end/testcases/regress/issue_31155.dart.strong.expect b/pkg/front_end/testcases/regress/issue_31155.dart.strong.expect
index 2cfb471..f9e661a 100644
--- a/pkg/front_end/testcases/regress/issue_31155.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_31155.dart.strong.expect
@@ -44,7 +44,7 @@
     ;
 }
 class C extends core::Object {
-  field dynamic f = let final dynamic #t1 = core::Map<dynamic, dynamic> in invalid-expression "pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: The method '<' isn't defined for the class 'Type'.
+  field dynamic f = invalid-expression "pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: The method '<' isn't defined for the class 'Type'.
  - 'Type' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named '<'.
   var f = Map<A, B> {};
diff --git a/pkg/front_end/testcases/regress/issue_31155.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_31155.dart.strong.transformed.expect
index ccabee8..f9e661a 100644
--- a/pkg/front_end/testcases/regress/issue_31155.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31155.dart.strong.transformed.expect
@@ -44,7 +44,7 @@
     ;
 }
 class C extends core::Object {
-  field dynamic f = let final core::Type #t1 = core::Map<dynamic, dynamic> in invalid-expression "pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: The method '<' isn't defined for the class 'Type'.
+  field dynamic f = invalid-expression "pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: The method '<' isn't defined for the class 'Type'.
  - 'Type' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named '<'.
   var f = Map<A, B> {};
diff --git a/pkg/front_end/testcases/regress/issue_31188.dart.strong.expect b/pkg/front_end/testcases/regress/issue_31188.dart.strong.expect
index 4a0c403..104418a 100644
--- a/pkg/front_end/testcases/regress/issue_31188.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_31188.dart.strong.expect
@@ -29,9 +29,8 @@
 // ^^^^
 //
 import self as self;
-import "dart:core" as core;
 
-static field invalid-type T = let final dynamic #t1 = core::Map<dynamic, dynamic> in invalid-expression "pkg/front_end/testcases/regress/issue_31188.dart:7:13: Error: The method '<' isn't defined for the class 'Type'.
+static field invalid-type T = invalid-expression "pkg/front_end/testcases/regress/issue_31188.dart:7:13: Error: The method '<' isn't defined for the class 'Type'.
  - 'Type' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named '<'.
 type T = Map<A, B>
diff --git a/pkg/front_end/testcases/regress/issue_31188.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_31188.dart.strong.transformed.expect
index 1605b31..104418a 100644
--- a/pkg/front_end/testcases/regress/issue_31188.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31188.dart.strong.transformed.expect
@@ -29,9 +29,8 @@
 // ^^^^
 //
 import self as self;
-import "dart:core" as core;
 
-static field invalid-type T = let final core::Type #t1 = core::Map<dynamic, dynamic> in invalid-expression "pkg/front_end/testcases/regress/issue_31188.dart:7:13: Error: The method '<' isn't defined for the class 'Type'.
+static field invalid-type T = invalid-expression "pkg/front_end/testcases/regress/issue_31188.dart:7:13: Error: The method '<' isn't defined for the class 'Type'.
  - 'Type' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named '<'.
 type T = Map<A, B>
diff --git a/pkg/front_end/testcases/regress/issue_34225.dart.strong.expect b/pkg/front_end/testcases/regress/issue_34225.dart.strong.expect
index bdf0818..413e604 100644
--- a/pkg/front_end/testcases/regress/issue_34225.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_34225.dart.strong.expect
@@ -33,7 +33,7 @@
 }
 static method main() → dynamic {
   self::C c = new self::C::•();
-  let final dynamic #t1 = c in invalid-expression "pkg/front_end/testcases/regress/issue_34225.dart:15:5: Error: The setter 'C' isn't defined for the class 'C'.
+  invalid-expression "pkg/front_end/testcases/regress/issue_34225.dart:15:5: Error: The setter 'C' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/regress/issue_34225.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'C'.
   c.C = 5;
diff --git a/pkg/front_end/testcases/regress/issue_34225.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_34225.dart.strong.transformed.expect
index ef40260..413e604 100644
--- a/pkg/front_end/testcases/regress/issue_34225.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_34225.dart.strong.transformed.expect
@@ -33,7 +33,7 @@
 }
 static method main() → dynamic {
   self::C c = new self::C::•();
-  let final self::C #t1 = c in invalid-expression "pkg/front_end/testcases/regress/issue_34225.dart:15:5: Error: The setter 'C' isn't defined for the class 'C'.
+  invalid-expression "pkg/front_end/testcases/regress/issue_34225.dart:15:5: Error: The setter 'C' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/regress/issue_34225.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'C'.
   c.C = 5;
diff --git a/pkg/front_end/testcases/regress/issue_34563.dart.strong.expect b/pkg/front_end/testcases/regress/issue_34563.dart.strong.expect
index 9bfa9d9..a1ba851 100644
--- a/pkg/front_end/testcases/regress/issue_34563.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_34563.dart.strong.expect
@@ -72,21 +72,21 @@
 }
 static method main() → dynamic {
   self::C2 c2 = new self::C2::•();
-  (let final dynamic #t1 = c2 in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:23:6: Error: The getter 'm' isn't defined for the class 'C2'.
+  invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:23:6: Error: The getter 'm' isn't defined for the class 'C2'.
  - 'C2' is from 'pkg/front_end/testcases/regress/issue_34563.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'm'.
   c2.m + c2.c;
-     ^").+(let final dynamic #t2 = c2 in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:23:13: Error: The getter 'c' isn't defined for the class 'C2'.
+     ^".+(invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:23:13: Error: The getter 'c' isn't defined for the class 'C2'.
  - 'C2' is from 'pkg/front_end/testcases/regress/issue_34563.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'c'.
   c2.m + c2.c;
             ^");
   self::C3 c3 = new self::C3::•();
-  (let final dynamic #t3 = c3 in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:25:6: Error: The getter 'm' isn't defined for the class 'C3'.
+  invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:25:6: Error: The getter 'm' isn't defined for the class 'C3'.
  - 'C3' is from 'pkg/front_end/testcases/regress/issue_34563.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'm'.
   c3.m + c3.c;
-     ^").+(let final dynamic #t4 = c3 in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:25:13: Error: The getter 'c' isn't defined for the class 'C3'.
+     ^".+(invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:25:13: Error: The getter 'c' isn't defined for the class 'C3'.
  - 'C3' is from 'pkg/front_end/testcases/regress/issue_34563.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'c'.
   c3.m + c3.c;
diff --git a/pkg/front_end/testcases/regress/issue_34563.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_34563.dart.strong.transformed.expect
index 941e480..a1ba851 100644
--- a/pkg/front_end/testcases/regress/issue_34563.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_34563.dart.strong.transformed.expect
@@ -72,21 +72,21 @@
 }
 static method main() → dynamic {
   self::C2 c2 = new self::C2::•();
-  (let final self::C2 #t1 = c2 in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:23:6: Error: The getter 'm' isn't defined for the class 'C2'.
+  invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:23:6: Error: The getter 'm' isn't defined for the class 'C2'.
  - 'C2' is from 'pkg/front_end/testcases/regress/issue_34563.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'm'.
   c2.m + c2.c;
-     ^").+(let final self::C2 #t2 = c2 in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:23:13: Error: The getter 'c' isn't defined for the class 'C2'.
+     ^".+(invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:23:13: Error: The getter 'c' isn't defined for the class 'C2'.
  - 'C2' is from 'pkg/front_end/testcases/regress/issue_34563.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'c'.
   c2.m + c2.c;
             ^");
   self::C3 c3 = new self::C3::•();
-  (let final self::C3 #t3 = c3 in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:25:6: Error: The getter 'm' isn't defined for the class 'C3'.
+  invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:25:6: Error: The getter 'm' isn't defined for the class 'C3'.
  - 'C3' is from 'pkg/front_end/testcases/regress/issue_34563.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'm'.
   c3.m + c3.c;
-     ^").+(let final self::C3 #t4 = c3 in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:25:13: Error: The getter 'c' isn't defined for the class 'C3'.
+     ^".+(invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:25:13: Error: The getter 'c' isn't defined for the class 'C3'.
  - 'C3' is from 'pkg/front_end/testcases/regress/issue_34563.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'c'.
   c3.m + c3.c;
diff --git a/pkg/front_end/testcases/strong.status b/pkg/front_end/testcases/strong.status
index 94d8017..165a679 100644
--- a/pkg/front_end/testcases/strong.status
+++ b/pkg/front_end/testcases/strong.status
@@ -24,7 +24,6 @@
 expressions: RuntimeError
 external_import: RuntimeError # The native extension to import doesn't exist. This is ok.
 fallthrough: ExpectationFileMismatch
-for_in_without_declaration: TypeCheckError
 incomplete_field_formal_parameter: RuntimeError
 inference/abstract_class_instantiation: InstrumentationMismatch # Issue #30040
 inference/conflicts_can_happen: TypeCheckError
@@ -73,7 +72,6 @@
 invalid_type: TypeCheckError
 invocations: RuntimeError
 issue34899: TypeCheckError
-many_errors: VerificationError
 micro: RuntimeError
 mixin_application_override: TypeCheckError
 optional: TypeCheckError
diff --git a/pkg/front_end/testcases/text_serialization.status b/pkg/front_end/testcases/text_serialization.status
index bb6e23a..96218e4 100644
--- a/pkg/front_end/testcases/text_serialization.status
+++ b/pkg/front_end/testcases/text_serialization.status
@@ -92,7 +92,7 @@
 fallthrough: ExpectationFileMismatch
 fibonacci: TextSerializationFailure # Was: Pass
 for_in_scope: TextSerializationFailure # Was: Pass
-for_in_without_declaration: TypeCheckError
+for_in_without_declaration: TextSerializationFailure
 function_in_field: TextSerializationFailure # Was: Pass
 functions: TextSerializationFailure # Was: Pass
 function_type_assignments: TextSerializationFailure # Was: Pass
@@ -669,7 +669,7 @@
 literals: TextSerializationFailure # Was: Pass
 local_generic_function: TextSerializationFailure # Was: Pass
 magic_const: TextSerializationFailure # Was: Pass
-many_errors: VerificationError
+many_errors: TextSerializationFailure
 map: TextSerializationFailure # Was: Pass
 metadata_enum: TextSerializationFailure # Was: Pass
 metadata_named_mixin_application: TextSerializationFailure # Was: Pass
@@ -850,7 +850,6 @@
 regress/issue_31183: TextSerializationFailure # Was: Pass
 regress/issue_31184: TextSerializationFailure # Was: Pass
 regress/issue_31185: TextSerializationFailure # Was: Pass
-regress/issue_31188: TextSerializationFailure # Was: Pass
 regress/issue_31190: TextSerializationFailure # Was: Pass
 regress/issue_31192: TextSerializationFailure # Was: Pass
 regress/issue_31198: TextSerializationFailure # Was: Pass
diff --git a/pkg/front_end/testcases/undefined.dart.strong.expect b/pkg/front_end/testcases/undefined.dart.strong.expect
index 3e4911c..acd6f2d 100644
--- a/pkg/front_end/testcases/undefined.dart.strong.expect
+++ b/pkg/front_end/testcases/undefined.dart.strong.expect
@@ -32,19 +32,19 @@
 }
 static method test(self::C c) → void {
   c.{self::C::x};
-  let final dynamic #t1 = c in invalid-expression "pkg/front_end/testcases/undefined.dart:14:33: Error: The getter 'y' isn't defined for the class 'C'.
+  invalid-expression "pkg/front_end/testcases/undefined.dart:14:33: Error: The getter 'y' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/undefined.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'y'.
   c. /*@error=UndefinedGetter*/ y;
                                 ^";
   c.{self::C::f}();
-  let final dynamic #t2 = c in invalid-expression "pkg/front_end/testcases/undefined.dart:16:33: Error: The method 'g' isn't defined for the class 'C'.
+  invalid-expression "pkg/front_end/testcases/undefined.dart:16:33: Error: The method 'g' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/undefined.dart'.
 Try correcting the name to the name of an existing method, or defining a method named 'g'.
   c. /*@error=UndefinedMethod*/ g();
                                 ^";
   c.{self::C::x} = null;
-  let final dynamic #t3 = c in invalid-expression "pkg/front_end/testcases/undefined.dart:18:33: Error: The setter 'y' isn't defined for the class 'C'.
+  invalid-expression "pkg/front_end/testcases/undefined.dart:18:33: Error: The setter 'y' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/undefined.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'y'.
   c. /*@error=UndefinedSetter*/ y = null;
diff --git a/pkg/front_end/testcases/undefined.dart.strong.transformed.expect b/pkg/front_end/testcases/undefined.dart.strong.transformed.expect
index c6a122c..acd6f2d 100644
--- a/pkg/front_end/testcases/undefined.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/undefined.dart.strong.transformed.expect
@@ -32,19 +32,19 @@
 }
 static method test(self::C c) → void {
   c.{self::C::x};
-  let final self::C #t1 = c in invalid-expression "pkg/front_end/testcases/undefined.dart:14:33: Error: The getter 'y' isn't defined for the class 'C'.
+  invalid-expression "pkg/front_end/testcases/undefined.dart:14:33: Error: The getter 'y' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/undefined.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'y'.
   c. /*@error=UndefinedGetter*/ y;
                                 ^";
   c.{self::C::f}();
-  let final self::C #t2 = c in invalid-expression "pkg/front_end/testcases/undefined.dart:16:33: Error: The method 'g' isn't defined for the class 'C'.
+  invalid-expression "pkg/front_end/testcases/undefined.dart:16:33: Error: The method 'g' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/undefined.dart'.
 Try correcting the name to the name of an existing method, or defining a method named 'g'.
   c. /*@error=UndefinedMethod*/ g();
                                 ^";
   c.{self::C::x} = null;
-  let final self::C #t3 = c in invalid-expression "pkg/front_end/testcases/undefined.dart:18:33: Error: The setter 'y' isn't defined for the class 'C'.
+  invalid-expression "pkg/front_end/testcases/undefined.dart:18:33: Error: The setter 'y' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/undefined.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'y'.
   c. /*@error=UndefinedSetter*/ y = null;
diff --git a/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.strong.expect b/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.strong.expect
index d348c34..a86da13 100644
--- a/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.strong.expect
+++ b/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.strong.expect
@@ -25,15 +25,15 @@
 }
 static method test(self::C c) → void {
   c.{self::C::x} = 1;
-  let final self::C #t1 = c in #t1.{self::C::x} = (let final dynamic #t2 = #t1 in invalid-expression "pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart:13:33: Error: The getter 'x' isn't defined for the class 'C'.
+  let final self::C #t1 = c in #t1.{self::C::x} = invalid-expression "pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart:13:33: Error: The getter 'x' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'x'.
   c. /*@error=UndefinedGetter*/ x += 1;
-                                ^").+(1);
-  let final self::C #t3 = c in (let final dynamic #t4 = #t3 in invalid-expression "pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart:14:33: Error: The getter 'x' isn't defined for the class 'C'.
+                                ^".+(1);
+  let final self::C #t2 = c in invalid-expression "pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart:14:33: Error: The getter 'x' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'x'.
   c. /*@error=UndefinedGetter*/ x ??= 1;
-                                ^").{core::Object::==}(null) ?{dynamic} #t3.{self::C::x} = 1 : null;
+                                ^".{core::Object::==}(null) ?{dynamic} #t2.{self::C::x} = 1 : null;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.strong.transformed.expect b/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.strong.transformed.expect
index 5b31b46..a86da13 100644
--- a/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.strong.transformed.expect
@@ -25,15 +25,15 @@
 }
 static method test(self::C c) → void {
   c.{self::C::x} = 1;
-  let final self::C #t1 = c in #t1.{self::C::x} = (let final self::C #t2 = #t1 in invalid-expression "pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart:13:33: Error: The getter 'x' isn't defined for the class 'C'.
+  let final self::C #t1 = c in #t1.{self::C::x} = invalid-expression "pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart:13:33: Error: The getter 'x' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'x'.
   c. /*@error=UndefinedGetter*/ x += 1;
-                                ^").+(1);
-  let final self::C #t3 = c in (let final self::C #t4 = #t3 in invalid-expression "pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart:14:33: Error: The getter 'x' isn't defined for the class 'C'.
+                                ^".+(1);
+  let final self::C #t2 = c in invalid-expression "pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart:14:33: Error: The getter 'x' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'x'.
   c. /*@error=UndefinedGetter*/ x ??= 1;
-                                ^").{core::Object::==}(null) ?{dynamic} #t3.{self::C::x} = 1 : null;
+                                ^".{core::Object::==}(null) ?{dynamic} #t2.{self::C::x} = 1 : null;
 }
 static method main() → dynamic {}