Version 2.0.0-dev.11.0

Merge commit '7f91a438f54fa262ff5ebba987fbda234e63d51e' into dev
diff --git a/pkg/analysis_server/test/benchmarks_test.dart b/pkg/analysis_server/test/benchmarks_test.dart
index 4cd4a46..5c6ecc1 100644
--- a/pkg/analysis_server/test/benchmarks_test.dart
+++ b/pkg/analysis_server/test/benchmarks_test.dart
@@ -53,7 +53,7 @@
         );
         expect(r.exitCode, 0,
             reason: 'exit: ${r.exitCode}\n${r.stdout}\n${r.stderr}');
-      });
+      }, skip: true); // #31554
     }
   });
 }
diff --git a/pkg/analysis_server/test/integration/analytics/enable_test.dart b/pkg/analysis_server/test/integration/analytics/enable_test.dart
index a32971f..d7dfdfd 100644
--- a/pkg/analysis_server/test/integration/analytics/enable_test.dart
+++ b/pkg/analysis_server/test/integration/analytics/enable_test.dart
@@ -11,6 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(EnableTest);
+    defineReflectiveTests(EnableTest_PreviewDart2);
   });
 }
 
@@ -31,3 +32,9 @@
     expect(result2.enabled, result1.enabled);
   }
 }
+
+@reflectiveTest
+class EnableTest_PreviewDart2 extends EnableTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/analytics/is_enabled_test.dart b/pkg/analysis_server/test/integration/analytics/is_enabled_test.dart
index 8e2ffd5..daf089d 100644
--- a/pkg/analysis_server/test/integration/analytics/is_enabled_test.dart
+++ b/pkg/analysis_server/test/integration/analytics/is_enabled_test.dart
@@ -11,6 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(IsEnabledTest);
+    defineReflectiveTests(IsEnabledTest_PreviewDart2);
   });
 }
 
@@ -24,3 +25,9 @@
     expect(result, isNotNull);
   }
 }
+
+@reflectiveTest
+class IsEnabledTest_PreviewDart2 extends IsEnabledTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/analytics/send_event_test.dart b/pkg/analysis_server/test/integration/analytics/send_event_test.dart
index fbeb48a..1098697 100644
--- a/pkg/analysis_server/test/integration/analytics/send_event_test.dart
+++ b/pkg/analysis_server/test/integration/analytics/send_event_test.dart
@@ -10,6 +10,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(SendEventTest);
+    defineReflectiveTests(SendEventTest_PreviewDart2);
   });
 }
 
@@ -29,3 +30,9 @@
     await sendAnalyticsEnable(result1.enabled);
   }
 }
+
+@reflectiveTest
+class SendEventTest_PreviewDart2 extends SendEventTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/analytics/send_timing_test.dart b/pkg/analysis_server/test/integration/analytics/send_timing_test.dart
index fb65d8a..03ff2c4 100644
--- a/pkg/analysis_server/test/integration/analytics/send_timing_test.dart
+++ b/pkg/analysis_server/test/integration/analytics/send_timing_test.dart
@@ -10,6 +10,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(SendTimingTest);
+    defineReflectiveTests(SendTimingTest_PreviewDart2);
   });
 }
 
@@ -29,3 +30,9 @@
     await sendAnalyticsEnable(result1.enabled);
   }
 }
+
+@reflectiveTest
+class SendTimingTest_PreviewDart2 extends SendTimingTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/diagnostic/get_diagnostics_test.dart b/pkg/analysis_server/test/integration/diagnostic/get_diagnostics_test.dart
index e8bf76e..282b5f7 100644
--- a/pkg/analysis_server/test/integration/diagnostic/get_diagnostics_test.dart
+++ b/pkg/analysis_server/test/integration/diagnostic/get_diagnostics_test.dart
@@ -11,6 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(GetDiagnosticsTest);
+    defineReflectiveTests(GetDiagnosticsTest_PreviewDart2);
   });
 }
 
@@ -28,3 +29,9 @@
     expect(context.name, isNotEmpty);
   }
 }
+
+@reflectiveTest
+class GetDiagnosticsTest_PreviewDart2 extends GetDiagnosticsTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/diagnostic/get_server_port_test.dart b/pkg/analysis_server/test/integration/diagnostic/get_server_port_test.dart
index b04384f..d4009e6 100644
--- a/pkg/analysis_server/test/integration/diagnostic/get_server_port_test.dart
+++ b/pkg/analysis_server/test/integration/diagnostic/get_server_port_test.dart
@@ -14,6 +14,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(GetServerPortTest);
+    defineReflectiveTests(GetServerPortTest_PreviewDart2);
   });
 }
 
@@ -35,3 +36,9 @@
     expect(responseBody, contains('<title>Analysis Server</title>'));
   }
 }
+
+@reflectiveTest
+class GetServerPortTest_PreviewDart2 extends GetServerPortTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/execution/create_context_test.dart b/pkg/analysis_server/test/integration/execution/create_context_test.dart
index 6564810..841a427 100644
--- a/pkg/analysis_server/test/integration/execution/create_context_test.dart
+++ b/pkg/analysis_server/test/integration/execution/create_context_test.dart
@@ -10,6 +10,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(CreateContextTest);
+    defineReflectiveTests(CreateContextTest_PreviewDart2);
   });
 }
 
@@ -22,3 +23,9 @@
     expect(contextId, isNotNull);
   }
 }
+
+@reflectiveTest
+class CreateContextTest_PreviewDart2 extends CreateContextTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/execution/delete_context_test.dart b/pkg/analysis_server/test/integration/execution/delete_context_test.dart
index c807fa5..5277069 100644
--- a/pkg/analysis_server/test/integration/execution/delete_context_test.dart
+++ b/pkg/analysis_server/test/integration/execution/delete_context_test.dart
@@ -11,6 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(DeleteContextTest);
+    defineReflectiveTests(DeleteContextTest_PreviewDart2);
   });
 }
 
@@ -41,3 +42,9 @@
     }
   }
 }
+
+@reflectiveTest
+class DeleteContextTest_PreviewDart2 extends DeleteContextTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/execution/map_uri_test.dart b/pkg/analysis_server/test/integration/execution/map_uri_test.dart
index f5abbc0..8b186cb 100644
--- a/pkg/analysis_server/test/integration/execution/map_uri_test.dart
+++ b/pkg/analysis_server/test/integration/execution/map_uri_test.dart
@@ -11,6 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(MapUriTest);
+    defineReflectiveTests(MapUriTest_PreviewDart2);
   });
 }
 
@@ -38,3 +39,9 @@
     }
   }
 }
+
+@reflectiveTest
+class MapUriTest_PreviewDart2 extends MapUriTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/execution/set_subscriptions_test.dart b/pkg/analysis_server/test/integration/execution/set_subscriptions_test.dart
index 441093b..09835d7 100644
--- a/pkg/analysis_server/test/integration/execution/set_subscriptions_test.dart
+++ b/pkg/analysis_server/test/integration/execution/set_subscriptions_test.dart
@@ -10,6 +10,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(SetSubscriptionsTest);
+    defineReflectiveTests(SetSubscriptionsTest_PreviewDart2);
   });
 }
 
@@ -21,3 +22,9 @@
     await sendExecutionSetSubscriptions([ExecutionService.LAUNCH_DATA]);
   }
 }
+
+@reflectiveTest
+class SetSubscriptionsTest_PreviewDart2 extends SetSubscriptionsTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/kythe/get_kythe_entries_test.dart b/pkg/analysis_server/test/integration/kythe/get_kythe_entries_test.dart
index ccd3c49..13ae694 100644
--- a/pkg/analysis_server/test/integration/kythe/get_kythe_entries_test.dart
+++ b/pkg/analysis_server/test/integration/kythe/get_kythe_entries_test.dart
@@ -11,6 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(GetKytheEntriesTest);
+    defineReflectiveTests(GetKytheEntriesTest_PreviewDart2);
   });
 }
 
@@ -37,3 +38,9 @@
     expect(result.files, isEmpty);
   }
 }
+
+@reflectiveTest
+class GetKytheEntriesTest_PreviewDart2 extends GetKytheEntriesTest {
+  @override
+  bool get usePreviewDart2 => true;
+}
diff --git a/pkg/analysis_server/test/integration/support/integration_tests.dart b/pkg/analysis_server/test/integration/support/integration_tests.dart
index 5f2504d..f8dc21a 100644
--- a/pkg/analysis_server/test/integration/support/integration_tests.dart
+++ b/pkg/analysis_server/test/integration/support/integration_tests.dart
@@ -253,6 +253,12 @@
   }
 
   /**
+   * Whether to run integration tests with the --preview-dart-2 flag.
+   */
+  // TODO(devoncarew): Remove this when --preview-dart-2 goes away.
+  bool get usePreviewDart2 => false;
+
+  /**
    * Start [server].
    */
   Future startServer({
@@ -265,7 +271,7 @@
         checked: checked,
         diagnosticPort: diagnosticPort,
         servicesPort: servicesPort,
-        previewDart2: previewDart2);
+        previewDart2: previewDart2 || usePreviewDart2);
   }
 
   /**
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
index 7998638..49ab5d7 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
@@ -718,12 +718,19 @@
 
     for (var declaration in unit.declarations) {
       if (declaration is ClassDeclaration) {
+        if (declaration.metadata.isNotEmpty) {
+          var resolution = resolutions.next();
+          var applier = _createResolutionApplier(null, resolution);
+          applier.applyToAnnotations(declaration);
+          applier.checkDone();
+        }
         for (var member in declaration.members) {
           if (member is ConstructorDeclaration) {
             // TODO(scheglov) Pass in the actual context element.
             var resolution = resolutions.next();
             var applier = _createResolutionApplier(null, resolution);
             member.body.accept(applier);
+            applier.applyToAnnotations(member);
             applier.checkDone();
           } else if (member is FieldDeclaration) {
             if (member.fields.variables.length != 1) {
@@ -734,12 +741,15 @@
             var resolution = resolutions.next();
             var applier = _createResolutionApplier(null, resolution);
             member.fields.variables[0].initializer?.accept(applier);
+            applier.applyToAnnotations(member);
             applier.checkDone();
           } else if (member is MethodDeclaration) {
             ExecutableElementImpl context = member.element;
             var resolution = resolutions.next();
             var applier = _createResolutionApplier(context, resolution);
+            member.parameters?.accept(applier);
             member.body.accept(applier);
+            applier.applyToAnnotations(member);
             applier.checkDone();
           } else {
             // TODO(scheglov) Handle more cases.
@@ -752,6 +762,7 @@
         var applier = _createResolutionApplier(context, resolution);
         declaration.functionExpression.parameters?.accept(applier);
         declaration.functionExpression.body.accept(applier);
+        applier.applyToAnnotations(declaration);
         applier.checkDone();
       } else if (declaration is TopLevelVariableDeclaration) {
         if (declaration.variables.variables.length != 1) {
@@ -762,6 +773,7 @@
         var resolution = resolutions.next();
         var applier = _createResolutionApplier(null, resolution);
         declaration.variables.variables[0].initializer?.accept(applier);
+        applier.applyToAnnotations(declaration);
         applier.checkDone();
       } else {
         // TODO(scheglov) Handle more cases.
@@ -1062,17 +1074,20 @@
       referencedElements.add(element);
     }
 
-    applier = new ValidatingResolutionApplier(
+    applier = new ResolutionApplier(
         this,
         declaredElements,
-        referencedElements,
-        resolution.kernelTypes,
         resolution.declarationOffsets,
+        referencedElements,
         resolution.referenceOffsets,
+        resolution.kernelTypes,
         resolution.typeOffsets);
   }
 
   @override
+  DartType get stringType => typeProvider.stringType;
+
+  @override
   DartType get typeType => typeProvider.typeType;
 
   @override
@@ -1146,15 +1161,25 @@
     }
 
     // Convert kernel type arguments into Analyzer types.
-    var astTypeArguments = new List<DartType>(astTypeParameters.length);
-    for (var i = 0; i < astTypeParameters.length; i++) {
+    int length = astTypeParameters.length;
+    var usedTypeParameters = <TypeParameterElement>[];
+    var usedTypeArguments = <DartType>[];
+    for (var i = 0; i < length; i++) {
       var kernelParameter = kernelTypeParameters[i];
       var kernelArgument = kernelMap[kernelParameter];
-      astTypeArguments[i] = resynthesizer.getType(null, kernelArgument);
+      if (kernelArgument != null) {
+        DartType astArgument = resynthesizer.getType(null, kernelArgument);
+        usedTypeParameters.add(astTypeParameters[i]);
+        usedTypeArguments.add(astArgument);
+      }
+    }
+
+    if (usedTypeParameters.isEmpty) {
+      return rawType;
     }
 
     // Replace Analyzer type parameters with type arguments.
-    return rawType.substitute4(astTypeParameters, astTypeArguments);
+    return rawType.substitute4(usedTypeParameters, usedTypeArguments);
   }
 
   /// Translate the given [declaration].
diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart
index 794a3c6..7c01ac3 100644
--- a/pkg/analyzer/lib/src/fasta/ast_builder.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart
@@ -1024,6 +1024,7 @@
         node = ast.functionTypedFormalParameter2(
             identifier: name,
             comment: comment,
+            metadata: metadata,
             covariantKeyword: covariantKeyword,
             returnType: typeOrFunctionTypedParameter.returnType,
             typeParameters: typeOrFunctionTypedParameter.typeParameters,
@@ -1032,6 +1033,7 @@
         node = ast.fieldFormalParameter2(
             identifier: name,
             comment: comment,
+            metadata: metadata,
             covariantKeyword: covariantKeyword,
             type: typeOrFunctionTypedParameter.returnType,
             thisKeyword: thisKeyword,
@@ -1044,6 +1046,7 @@
       if (thisKeyword == null) {
         node = ast.simpleFormalParameter2(
             comment: comment,
+            metadata: metadata,
             covariantKeyword: covariantKeyword,
             keyword: keyword,
             type: type,
@@ -1051,6 +1054,7 @@
       } else {
         node = ast.fieldFormalParameter2(
             comment: comment,
+            metadata: metadata,
             covariantKeyword: covariantKeyword,
             keyword: keyword,
             type: type,
@@ -1064,6 +1068,11 @@
     if (analyzerKind != ParameterKind.REQUIRED) {
       node = ast.defaultFormalParameter(
           node, analyzerKind, defaultValue?.separator, defaultValue?.value);
+    } else if (defaultValue != null) {
+      // An error is reported if a required parameter has a default value.
+      // Record it as named parameter for recovery.
+      node = ast.defaultFormalParameter(node, ParameterKind.NAMED,
+          defaultValue.separator, defaultValue.value);
     }
     push(node);
   }
@@ -1273,8 +1282,14 @@
   }
 
   @override
-  void handleInvalidFunctionBody(Token token) {
+  void handleInvalidFunctionBody(Token leftBracket) {
+    assert(optional('{', leftBracket));
+    assert(optional('}', leftBracket.endGroup));
     debugEvent("InvalidFunctionBody");
+    Block block = ast.block(leftBracket, [], leftBracket.endGroup);
+    Token star = pop();
+    Token asyncKeyword = pop();
+    push(ast.blockFunctionBody(asyncKeyword, star, block));
   }
 
   @override
diff --git a/pkg/analyzer/lib/src/fasta/error_converter.dart b/pkg/analyzer/lib/src/fasta/error_converter.dart
index d3e73a5..0b61844 100644
--- a/pkg/analyzer/lib/src/fasta/error_converter.dart
+++ b/pkg/analyzer/lib/src/fasta/error_converter.dart
@@ -364,6 +364,10 @@
         errorReporter?.reportErrorForOffset(
             ParserErrorCode.NAMED_FUNCTION_EXPRESSION, offset, length);
         return;
+      case "NAMED_PARAMETER_OUTSIDE_GROUP":
+        errorReporter?.reportErrorForOffset(
+            ParserErrorCode.NAMED_PARAMETER_OUTSIDE_GROUP, offset, length);
+        return;
       case "NATIVE_CLAUSE_SHOULD_BE_ANNOTATION":
         errorReporter?.reportErrorForOffset(
             ParserErrorCode.NATIVE_CLAUSE_SHOULD_BE_ANNOTATION, offset, length);
@@ -408,6 +412,18 @@
         errorReporter?.reportErrorForOffset(
             ParserErrorCode.TYPEDEF_IN_CLASS, offset, length);
         return;
+      case "UNDEFINED_GETTER":
+        errorReporter?.reportErrorForOffset(
+            StaticTypeWarningCode.UNDEFINED_GETTER, offset, length);
+        return;
+      case "UNDEFINED_METHOD":
+        errorReporter?.reportErrorForOffset(
+            StaticTypeWarningCode.UNDEFINED_METHOD, offset, length);
+        return;
+      case "UNDEFINED_SETTER":
+        errorReporter?.reportErrorForOffset(
+            StaticTypeWarningCode.UNDEFINED_SETTER, offset, length);
+        return;
       case "UNEXPECTED_TOKEN":
         String text = stringOrTokenLexeme();
         if (text == ';') {
diff --git a/pkg/analyzer/lib/src/fasta/resolution_applier.dart b/pkg/analyzer/lib/src/fasta/resolution_applier.dart
index fca1a17..a865cb1 100644
--- a/pkg/analyzer/lib/src/fasta/resolution_applier.dart
+++ b/pkg/analyzer/lib/src/fasta/resolution_applier.dart
@@ -19,37 +19,68 @@
 /// Visitor that applies resolution data from the front end (obtained via
 /// [ResolutionStorer]) to an analyzer AST.
 class ResolutionApplier extends GeneralizingAstVisitor {
+  /// Indicates whether debug messages should be printed.
+  static const bool _debug = false;
+
   final TypeContext _typeContext;
 
   final List<Element> _declaredElements;
+  final List<int> _declaredElementOffsets;
   int _declaredElementIndex = 0;
 
   final List<Element> _referencedElements;
+  final List<int> _referencedElementOffsets;
   int _referencedElementIndex = 0;
 
   final List<kernel.DartType> _types;
+  final List<int> _typeOffsets;
   int _typeIndex = 0;
 
-  ResolutionApplier(this._typeContext, this._declaredElements,
-      this._referencedElements, this._types);
+  /// Indicates whether we are applying resolution to an annotation.
+  ///
+  /// When this field is `true`, [PropertyInducingElement]s should be replaced
+  /// with corresponding getters.
+  bool _inAnnotation = false;
+
+  ResolutionApplier(
+      this._typeContext,
+      this._declaredElements,
+      this._declaredElementOffsets,
+      this._referencedElements,
+      this._referencedElementOffsets,
+      this._types,
+      this._typeOffsets);
+
+  /// Apply resolution to annotations of the given [node].
+  void applyToAnnotations(AnnotatedNode node) {
+    _inAnnotation = true;
+    node.metadata.accept(this);
+    _inAnnotation = false;
+  }
 
   /// Verifies that all types passed to the constructor have been applied.
   void checkDone() {
     if (_declaredElementIndex != _declaredElements.length) {
       throw new StateError('Some declarations were not consumed, starting at '
-          '${_declaredElements[_declaredElementIndex]}');
+          'offset ${_declaredElementOffsets[_declaredElementIndex]}');
     }
     if (_referencedElementIndex != _referencedElements.length) {
       throw new StateError('Some references were not consumed, starting at '
-          '${_referencedElements[_referencedElementIndex]}');
+          'offset ${_referencedElementOffsets[_referencedElementIndex]}');
     }
     if (_typeIndex != _types.length) {
-      throw new StateError(
-          'Some types were not consumed, starting at ${_types[_typeIndex]}');
+      throw new StateError('Some types were not consumed, starting at offset '
+          '${_typeOffsets[_typeIndex]}');
     }
   }
 
   @override
+  void visitAdjacentStrings(AdjacentStrings node) {
+    node.strings.accept(this);
+    node.staticType = _typeContext.stringType;
+  }
+
+  @override
   void visitAsExpression(AsExpression node) {
     node.expression.accept(this);
     applyToTypeAnnotation(_getTypeFor(node.asOperator), node.type);
@@ -70,10 +101,13 @@
   void visitBinaryExpression(BinaryExpression node) {
     node.leftOperand.accept(this);
 
-    node.staticElement = _getReferenceFor(node.operator);
-
-    // Skip the function type of the operator.
-    _getTypeFor(node.operator);
+    TokenType operatorType = node.operator.type;
+    if (operatorType != TokenType.QUESTION_QUESTION &&
+        operatorType != TokenType.AMPERSAND_AMPERSAND &&
+        operatorType != TokenType.BAR_BAR) {
+      node.staticElement = _getReferenceFor(node.operator);
+      _getTypeFor(node.operator); // function type of the operator
+    }
 
     // Record the return type of the expression.
     node.staticType = _getTypeFor(node.operator);
@@ -81,8 +115,8 @@
     node.rightOperand.accept(this);
 
     // Skip the synthetic Not for `!=`.
-    if (node.operator.type == TokenType.BANG_EQ) {
-      _getTypeFor(node.operator, synthetic: true);
+    if (operatorType == TokenType.BANG_EQ) {
+      _getTypeFor(null, synthetic: true);
     }
   }
 
@@ -101,6 +135,33 @@
   }
 
   @override
+  void visitForEachStatement(ForEachStatement node) {
+    DeclaredIdentifier loopVariable = node.loopVariable;
+    if (loopVariable != null) {
+      SimpleIdentifier identifier = loopVariable.identifier;
+
+      DartType type = _getTypeFor(identifier);
+      identifier.staticType = type;
+
+      if (loopVariable.type != null) {
+        applyToTypeAnnotation(type, loopVariable.type);
+      }
+
+      VariableElementImpl element = _getDeclarationFor(identifier);
+      if (element != null) {
+        _typeContext.encloseVariable(element);
+        identifier.staticElement = element;
+        element.type = type;
+      }
+    } else {
+      node.identifier.staticElement = _getReferenceFor(node.identifier);
+      node.identifier.staticType = _getTypeFor(node.identifier);
+    }
+    node.iterable.accept(this);
+    node.body.accept(this);
+  }
+
+  @override
   void visitFormalParameterList(FormalParameterList parameterList) {
     for (var parameter in parameterList.parameters) {
       if (parameter is DefaultFormalParameter) {
@@ -108,7 +169,7 @@
           // Consume the Null type, for the implicit default value.
           _getTypeFor(null, synthetic: true);
         } else {
-          throw new UnimplementedError();
+          parameter.defaultValue.accept(this);
         }
       }
     }
@@ -166,11 +227,14 @@
   void visitIndexExpression(IndexExpression node) {
     node.target.accept(this);
 
-    // Convert the raw element into a member.
-    InterfaceType targetType = node.target.staticType;
+    DartType targetType = node.target.staticType;
     MethodElement element = _getReferenceFor(node.leftBracket);
-    MethodElement member = MethodMember.from(element, targetType);
-    node.staticElement = member;
+
+    // Convert the raw element into a member.
+    if (targetType is InterfaceType) {
+      MethodElement member = MethodMember.from(element, targetType);
+      node.staticElement = member;
+    }
 
     // We cannot use the detached FunctionType of `[]` or `[]=`.
     _getTypeFor(node.leftBracket);
@@ -297,8 +361,36 @@
 
   @override
   void visitPrefixedIdentifier(PrefixedIdentifier node) {
-    node.prefix.accept(this);
-    node.identifier.accept(this);
+    Element element =
+        _getReferenceFor(node.identifier, nullIfDifferentOffset: true);
+    if (element != null) {
+      // If the element is for the identifier, then this is a static element.
+      DartType type = _getTypeFor(node.identifier);
+      if (element is PropertyAccessorElement) {
+        assert(element.isStatic);
+        node.identifier.staticElement = element;
+        node.identifier.staticType = type;
+        var enclosingElement = element.enclosingElement;
+        if (enclosingElement is ClassElement) {
+          node.prefix.staticElement = enclosingElement;
+          node.prefix.staticType = enclosingElement.type;
+        } else {
+          // TODO(scheglov) Support for prefixed top-level variables?
+          throw new UnimplementedError('(${element.runtimeType}) $element');
+        }
+      } else {
+        // TODO(scheglov) Support for methods?
+        throw new UnimplementedError('(${element.runtimeType}) $element');
+      }
+    } else {
+      // If the element is not for the identifier, this is actually a property.
+      // The element and type must be for the prefix.
+      node.prefix.staticElement = _getReferenceFor(node.prefix);
+      node.prefix.staticType = _getTypeFor(node.prefix);
+      // The resolution for the identifier follows.
+      node.identifier.staticElement = _getReferenceFor(node.identifier);
+      node.identifier.staticType = _getTypeFor(node.identifier);
+    }
     node.staticType = node.identifier.staticType;
   }
 
@@ -349,7 +441,7 @@
         element.expression.accept(this);
       }
     }
-    node.staticType = _getTypeFor(node.endToken.next);
+    node.staticType = _typeContext.stringType;
   }
 
   @override
@@ -459,13 +551,51 @@
   /// Return the element associated with the declaration represented by the
   /// given [node].
   Element _getDeclarationFor(AstNode node) {
+    int nodeOffset = node.offset;
+    if (_debug) {
+      print('Getting declaration element for $node at $nodeOffset');
+    }
+    if (_declaredElementIndex >= _declaredElements.length) {
+      throw new StateError(
+          'No declaration information for $node at $nodeOffset');
+    }
+    int elementOffset = _declaredElementOffsets[_declaredElementIndex];
+    if (nodeOffset != elementOffset) {
+      throw new StateError(
+          'Expected element declaration for analyzer offset $nodeOffset; '
+          'got one for kernel offset $elementOffset');
+    }
+
     return _declaredElements[_declaredElementIndex++];
   }
 
   /// Return the element associated with the reference represented by the
   /// given [entity].
-  Element _getReferenceFor(SyntacticEntity entity) {
-    return _referencedElements[_referencedElementIndex++];
+  Element _getReferenceFor(SyntacticEntity entity,
+      {bool nullIfDifferentOffset: false}) {
+    int entityOffset = entity.offset;
+    if (_debug) {
+      print('Getting reference element for $entity at $entityOffset');
+    }
+    if (_referencedElementIndex >= _referencedElements.length) {
+      throw new StateError(
+          'No reference information for $entity at $entityOffset');
+    }
+    int elementOffset = _referencedElementOffsets[_referencedElementIndex];
+    if (entityOffset != elementOffset) {
+      if (nullIfDifferentOffset) {
+        return null;
+      }
+      throw new StateError(
+          'Expected element reference for analyzer offset $entityOffset; '
+          'got one for kernel offset $elementOffset');
+    }
+
+    Element element = _referencedElements[_referencedElementIndex++];
+    if (_inAnnotation && element is PropertyInducingElement) {
+      return element.getter;
+    }
+    return element;
   }
 
   /// Return the type associated with the given [entity].
@@ -475,6 +605,19 @@
   /// optional parameter (i.e. [Null]).
   DartType _getTypeFor(SyntacticEntity entity, {bool synthetic: false}) {
     assert(!synthetic || entity == null);
+
+    var entityOffset = synthetic ? -1 : entity.offset;
+    if (_debug) {
+      print('Getting type for $entity at $entityOffset');
+    }
+    if (_typeIndex >= _types.length) {
+      throw new StateError('No type information for $entity at $entityOffset');
+    }
+    if (entityOffset != _typeOffsets[_typeIndex]) {
+      throw new StateError('Expected a type for $entity at $entityOffset; '
+          'got one for kernel offset ${_typeOffsets[_typeIndex]}');
+    }
+
     kernel.DartType kernelType = _types[_typeIndex++];
     return _typeContext.translateType(kernelType);
   }
@@ -586,6 +729,8 @@
   /// The enclosing [ClassElement], or `null` if not in a class.
   ClassElement get enclosingClassElement;
 
+  DartType get stringType;
+
   DartType get typeType;
 
   /// Attach the variable [element] to the current executable.
@@ -601,95 +746,3 @@
   /// Return the Analyzer [DartType] for the given [kernelType].
   DartType translateType(kernel.DartType kernelType);
 }
-
-/// Visitor that applies resolution data from the front end (obtained via
-/// [ResolutionStorer]) to an analyzer AST, and also checks file offsets to
-/// verify that the types are applied to the correct subexpressions.
-class ValidatingResolutionApplier extends ResolutionApplier {
-  /// Indicates whether debug messages should be printed.
-  static const bool _debug = false;
-
-  final List<int> _declaredElementOffsets;
-  final List<int> _referencedElementOffsets;
-  final List<int> _typeOffsets;
-
-  ValidatingResolutionApplier(
-      TypeContext typeContext,
-      List<Element> declaredElements,
-      List<Element> referencedElements,
-      List<kernel.DartType> types,
-      this._declaredElementOffsets,
-      this._referencedElementOffsets,
-      this._typeOffsets)
-      : super(typeContext, declaredElements, referencedElements, types);
-
-  @override
-  void checkDone() {
-    if (_declaredElementIndex != _declaredElements.length) {
-      throw new StateError('Some declarations were not consumed, starting at '
-          'offset ${_declaredElementOffsets[_declaredElementIndex]}');
-    }
-    if (_referencedElementIndex != _referencedElements.length) {
-      throw new StateError('Some references were not consumed, starting at '
-          'offset ${_referencedElementOffsets[_referencedElementIndex]}');
-    }
-    if (_typeIndex != _types.length) {
-      throw new StateError('Some types were not consumed, starting at offset '
-          '${_typeOffsets[_typeIndex]}');
-    }
-  }
-
-  @override
-  Element _getDeclarationFor(AstNode node) {
-    int nodeOffset = node.offset;
-    if (_debug) {
-      print('Getting declaration element for $node at $nodeOffset');
-    }
-    if (_declaredElementIndex >= _declaredElements.length) {
-      throw new StateError(
-          'No declaration information for $node at $nodeOffset');
-    }
-    int elementOffset = _declaredElementOffsets[_declaredElementIndex];
-    if (nodeOffset != elementOffset) {
-      throw new StateError(
-          'Expected element declaration for analyzer offset $nodeOffset; '
-          'got one for kernel offset $elementOffset');
-    }
-    return super._getDeclarationFor(node);
-  }
-
-  @override
-  Element _getReferenceFor(SyntacticEntity entity) {
-    int entityOffset = entity.offset;
-    if (_debug) {
-      print('Getting reference element for $entity at $entityOffset');
-    }
-    if (_referencedElementIndex >= _referencedElements.length) {
-      throw new StateError(
-          'No reference information for $entity at $entityOffset');
-    }
-    int elementOffset = _referencedElementOffsets[_referencedElementIndex];
-    if (entityOffset != elementOffset) {
-      throw new StateError(
-          'Expected element reference for analyzer offset $entityOffset; '
-          'got one for kernel offset $elementOffset');
-    }
-    return super._getReferenceFor(entity);
-  }
-
-  @override
-  DartType _getTypeFor(SyntacticEntity entity, {bool synthetic: false}) {
-    var entityOffset = synthetic ? -1 : entity.offset;
-    if (_debug) {
-      print('Getting type for $entity at $entityOffset');
-    }
-    if (_typeIndex >= _types.length) {
-      throw new StateError('No type information for $entity at $entityOffset');
-    }
-    if (entityOffset != _typeOffsets[_typeIndex]) {
-      throw new StateError('Expected a type for $entity at $entityOffset; '
-          'got one for kernel offset ${_typeOffsets[_typeIndex]}');
-    }
-    return super._getTypeFor(entity);
-  }
-}
diff --git a/pkg/analyzer/lib/src/fasta/resolution_storer.dart b/pkg/analyzer/lib/src/fasta/resolution_storer.dart
index 8ebf0ed..bcacf81 100644
--- a/pkg/analyzer/lib/src/fasta/resolution_storer.dart
+++ b/pkg/analyzer/lib/src/fasta/resolution_storer.dart
@@ -75,6 +75,7 @@
 
   @override
   void _recordDeclaration(Statement declaration, int offset) {
+    if (_inSynthetic) return;
     if (_debug) {
       print('Recording declaration of $declaration for offset $offset');
     }
@@ -84,6 +85,7 @@
 
   @override
   int _recordReference(Node target, int offset) {
+    if (_inSynthetic) return -1;
     if (_debug) {
       print('Recording reference to $target for offset $offset');
     }
@@ -93,6 +95,7 @@
 
   @override
   int _recordType(DartType type, int offset) {
+    if (_inSynthetic) return -1;
     if (_debug) {
       print('Recording type $type for offset $offset');
     }
@@ -103,6 +106,7 @@
 
   @override
   void _replaceReference(Node reference) {
+    if (_inSynthetic) return;
     if (_debug) {
       int offset = _deferredReferenceOffsets.removeLast();
       print('Replacing reference $reference for offset $offset');
@@ -112,6 +116,7 @@
 
   @override
   void _replaceType(DartType type, [int newOffset = -1]) {
+    if (_inSynthetic) return;
     if (newOffset != -1) {
       _typeOffsets[_deferredTypeSlots.last] = newOffset;
     }
@@ -199,6 +204,11 @@
   /// Indices into [_types] which need to be filled in later.
   final _deferredTypeSlots = <int>[];
 
+  /// When `true`, we are visiting a synthetic structure, which is not
+  /// present in AST, and not visible to Analyzer, so we should not record
+  /// any resolution information for it.
+  bool _inSynthetic = false;
+
   ResolutionStorer(this._declarations, this._references, this._types);
 
   @override
@@ -231,6 +241,38 @@
     assert(_deferredTypeSlots.isEmpty);
   }
 
+  @override
+  void forInStatementEnter(ForInStatement statement,
+      VariableDeclaration variable, Expression write) {
+    if (variable != null) {
+      _deferType(variable.fileOffset);
+      _recordDeclaration(variable, variable.fileOffset);
+    } else {
+      if (write is VariableSet) {
+        _recordReference(write.variable, write.fileOffset);
+        _recordType(write.variable.type, write.fileOffset);
+      } else if (write is PropertySet) {
+        Field field = write.interfaceTarget;
+        _recordReference(new MemberSetterNode(field), write.fileOffset);
+        _recordType(field.type, write.fileOffset);
+      } else if (write is StaticSet) {
+        Field field = write.target;
+        _recordReference(new MemberSetterNode(field), write.fileOffset);
+        _recordType(field.type, write.fileOffset);
+      } else {
+        throw new UnimplementedError('(${write.runtimeType}) $write');
+      }
+    }
+  }
+
+  @override
+  void forInStatementExit(
+      ForInStatement statement, VariableDeclaration variable) {
+    if (variable != null) {
+      _replaceType(variable.type);
+    }
+  }
+
   void functionDeclarationEnter(FunctionDeclaration statement) {
     _recordDeclaration(statement.variable, statement.fileOffset);
     super.functionDeclarationEnter(statement);
@@ -251,6 +293,16 @@
   }
 
   @override
+  void ifNullBeforeRhs(Expression expression) {
+    _deferType(expression.fileOffset);
+  }
+
+  @override
+  void ifNullExit(Expression expression, DartType inferredType) {
+    _replaceType(inferredType);
+  }
+
+  @override
   void indexAssignAfterReceiver(Expression write, DartType typeContext) {
     _deferReference(write.fileOffset);
     _recordType(const IndexAssignNullFunctionType(), write.fileOffset);
@@ -273,6 +325,32 @@
     _recordType(inferredType, expression.fileOffset);
   }
 
+  void isNotExpressionExit(
+      Not expression, DartType type, DartType inferredType) {
+    _recordType(type, expression.fileOffset);
+    _recordType(inferredType, expression.fileOffset);
+  }
+
+  @override
+  void logicalExpressionBeforeRhs(LogicalExpression expression) {
+    _deferType(expression.fileOffset);
+  }
+
+  @override
+  void logicalExpressionExit(
+      LogicalExpression expression, DartType inferredType) {
+    _replaceType(inferredType);
+  }
+
+  void loopAssignmentStatementEnter(ExpressionStatement statement) {
+    _inSynthetic = true;
+  }
+
+  @override
+  void loopAssignmentStatementExit(ExpressionStatement statement) {
+    _inSynthetic = false;
+  }
+
   @override
   void methodInvocationBeforeArgs(Expression expression, bool isImplicitCall) {
     if (!isImplicitCall) {
@@ -372,8 +450,32 @@
   }
 
   @override
+  bool staticAssignEnter(
+      Expression expression, Expression write, DartType typeContext) {
+    _deferReference(write.fileOffset);
+    _deferType(write.fileOffset);
+    return super.staticAssignEnter(expression, write, typeContext);
+  }
+
+  @override
+  void staticAssignExit(
+      Expression expression,
+      Expression write,
+      Member writeMember,
+      DartType writeContext,
+      Procedure combiner,
+      DartType inferredType) {
+    _replaceReference(new MemberSetterNode(writeMember));
+    _replaceType(writeContext);
+    _recordReference(
+        combiner ?? const NullNode('assign-combiner'), write.fileOffset);
+    _recordType(inferredType, write.fileOffset);
+  }
+
+  @override
   void staticGetExit(StaticGet expression, DartType inferredType) {
-    _recordReference(expression.target, expression.fileOffset);
+    _recordReference(
+        new MemberGetterNode(expression.target), expression.fileOffset);
     super.staticGetExit(expression, inferredType);
   }
 
@@ -416,6 +518,13 @@
   }
 
   @override
+  void stringConcatenationExit(
+      StringConcatenation expression, DartType inferredType) {
+    // We don't need the type - we already know that it is String.
+    // Moreover, the file offset for StringConcatenation is `-1`.
+  }
+
+  @override
   void thisExpressionExit(ThisExpression expression, DartType inferredType) {}
 
   void typeLiteralExit(TypeLiteral expression, DartType inferredType) {
@@ -486,27 +595,32 @@
   }
 
   void _recordDeclaration(Statement declaration, int offset) {
+    if (_inSynthetic) return;
     _declarations.add(declaration);
   }
 
   int _recordReference(Node target, int offset) {
+    if (_inSynthetic) return -1;
     int slot = _references.length;
     _references.add(target);
     return slot;
   }
 
   int _recordType(DartType type, int offset) {
+    if (_inSynthetic) return -1;
     int slot = _types.length;
     _types.add(type);
     return slot;
   }
 
   void _replaceReference(Node reference) {
+    if (_inSynthetic) return;
     int slot = _deferredReferenceSlots.removeLast();
     _references[slot] = reference;
   }
 
   void _replaceType(DartType type, [int newOffset = -1]) {
+    if (_inSynthetic) return;
     int slot = _deferredTypeSlots.removeLast();
     _types[slot] = type;
   }
diff --git a/pkg/analyzer/lib/src/generated/declaration_resolver.dart b/pkg/analyzer/lib/src/generated/declaration_resolver.dart
index b8bd650..87cddaa 100644
--- a/pkg/analyzer/lib/src/generated/declaration_resolver.dart
+++ b/pkg/analyzer/lib/src/generated/declaration_resolver.dart
@@ -154,6 +154,13 @@
         _match(normalParameter.identifier, _walker.getParameter());
     if (normalParameter is SimpleFormalParameterImpl) {
       normalParameter.element = element;
+      if (_applyKernelTypes) {
+        if (normalParameter.type != null) {
+          ResolutionApplier.applyToTypeAnnotation(
+              element.type, normalParameter.type);
+        }
+        node.identifier?.staticType = element.type;
+      }
       _setGenericFunctionType(normalParameter.type, element.type);
     }
     if (normalParameter is FieldFormalParameterImpl) {
diff --git a/pkg/analyzer/lib/src/generated/engine.dart b/pkg/analyzer/lib/src/generated/engine.dart
index 5ee46d0..1b8b79e 100644
--- a/pkg/analyzer/lib/src/generated/engine.dart
+++ b/pkg/analyzer/lib/src/generated/engine.dart
@@ -1651,6 +1651,7 @@
       buffer.addBool(implicitDynamic);
       buffer.addBool(strongMode);
       buffer.addBool(strongModeHints);
+      buffer.addBool(useFastaParser);
 
       // Append error processors.
       buffer.addInt(errorProcessors.length);
diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart
index 625b52e..e5b19aa 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -6246,9 +6246,14 @@
           TypeParameterTypeImpl.getTypes(genericType.typeFormals);
       var typeArgs = typeArgumentList.map((t) => t.type).toList();
 
-      for (int i = 0, len = math.min(typeArgs.length, fnTypeParams.length);
-          i < len;
-          i++) {
+      // If the amount mismatches, clean up the lists to be substitutable. The
+      // mismatch in size is reported elsewhere, but we must successfully
+      // perform substitution to validate bounds on mismatched lists.
+      final providedLength = math.min(typeArgs.length, fnTypeParams.length);
+      fnTypeParams = fnTypeParams.sublist(0, providedLength);
+      typeArgs = typeArgs.sublist(0, providedLength);
+
+      for (int i = 0; i < providedLength; i++) {
         // Check the `extends` clause for the type parameter, if any.
         //
         // Also substitute to handle cases like this:
diff --git a/pkg/analyzer/lib/src/kernel/resynthesize.dart b/pkg/analyzer/lib/src/kernel/resynthesize.dart
index 105dc52..1914e12 100644
--- a/pkg/analyzer/lib/src/kernel/resynthesize.dart
+++ b/pkg/analyzer/lib/src/kernel/resynthesize.dart
@@ -163,7 +163,7 @@
       return classElement.getSetter(elementName) as ElementImpl;
     } else if (kind == '@fields') {
       return classElement.getField(elementName) as ElementImpl;
-    } else if (kind == '@constructors') {
+    } else if (kind == '@constructors' || kind == '@factories') {
       if (elementName.isEmpty) {
         return classElement.unnamedConstructor as ElementImpl;
       }
diff --git a/pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart b/pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart
index bfb68f1..0b6dc66 100644
--- a/pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart
+++ b/pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart
@@ -23,7 +23,10 @@
 
   @override
   @failingTest
-  @FastaProblem('https://github.com/dart-lang/sdk/issues/30985')
+  // This test fails because the kernel driver element model produces a
+  // different element model result than the regular parser produces. Once these
+  // tests enable the faster parser (and not just the kernel driver), this
+  // should be looked at again.
   test_bug_23176() async {
     return super.test_bug_23176();
   }
@@ -228,6 +231,13 @@
 
   @override
   @failingTest
+  test_nonConstValueInInitializer_instanceCreation_inDifferentFile() {
+    return super
+        .test_nonConstValueInInitializer_instanceCreation_inDifferentFile();
+  }
+
+  @override
+  @failingTest
   @potentialAnalyzerProblem
   test_prefix_conditionalPropertyAccess_get_loadLibrary() async {
     return super.test_prefix_conditionalPropertyAccess_get_loadLibrary();
diff --git a/pkg/analyzer/test/generated/parser_fasta_test.dart b/pkg/analyzer/test/generated/parser_fasta_test.dart
index 391bf75..7b0feb7 100644
--- a/pkg/analyzer/test/generated/parser_fasta_test.dart
+++ b/pkg/analyzer/test/generated/parser_fasta_test.dart
@@ -1354,14 +1354,6 @@
 
   @override
   @failingTest
-  void test_namedParameterOutsideGroup() {
-    // TODO(brianwilkerson) Wrong errors:
-    // Expected 1 errors of type ParserErrorCode.NAMED_PARAMETER_OUTSIDE_GROUP, found 0
-    super.test_namedParameterOutsideGroup();
-  }
-
-  @override
-  @failingTest
   void test_nonConstructorFactory_field() {
     // TODO(brianwilkerson) Does not recover.
     //   Internal problem: Compiler cannot run without a compiler context.
@@ -1710,14 +1702,6 @@
   }
 
   @override
-  @failingTest
-  void test_useOfUnaryPlusOperator() {
-    // TODO(brianwilkerson) Wrong errors:
-    // Expected 1 errors of type ParserErrorCode.MISSING_IDENTIFIER, found 0
-    super.test_useOfUnaryPlusOperator();
-  }
-
-  @override
   void test_varAndType_local() {
     // The inherited test is marked as failing.
     super.test_varAndType_local();
@@ -2587,62 +2571,12 @@
     with RecoveryParserTestMixin {
   @override
   @failingTest
-  void test_additiveExpression_missing_LHS() {
-    // TODO(brianwilkerson) Unhandled compile-time error:
-    // '+' is not a prefix operator.
-    super.test_additiveExpression_missing_LHS();
-  }
-
-  @override
-  @failingTest
-  void test_additiveExpression_missing_LHS_RHS() {
-    // TODO(brianwilkerson) Unhandled compile-time error:
-    // '+' is not a prefix operator.
-    super.test_additiveExpression_missing_LHS_RHS();
-  }
-
-  @override
-  @failingTest
-  void test_additiveExpression_precedence_multiplicative_left() {
-    // TODO(brianwilkerson) reportUnrecoverableErrorWithToken
-    super.test_additiveExpression_precedence_multiplicative_left();
-  }
-
-  @override
-  @failingTest
-  void test_additiveExpression_precedence_multiplicative_right() {
-    // TODO(brianwilkerson) Unhandled compile-time error:
-    // '+' is not a prefix operator.
-    super.test_additiveExpression_precedence_multiplicative_right();
-  }
-
-  @override
-  @failingTest
-  void test_additiveExpression_super() {
-    // TODO(brianwilkerson) Unhandled compile-time error:
-    // '+' is not a prefix operator.
-    super.test_additiveExpression_super();
-  }
-
-  @override
-  @failingTest
   void test_classTypeAlias_withBody() {
     // TODO(brianwilkerson) reportUnrecoverableErrorWithToken
     super.test_classTypeAlias_withBody();
   }
 
   @override
-  void test_equalityExpression_precedence_relational_left() {
-    // Fasta recovers differently. It takes the `is` to be an identifier and
-    // assumes that the right operand of the `==` is the only missing identifier.
-    parseExpression("is ==", codes: [
-//      ParserErrorCode.EXPECTED_TYPE_NAME,
-      ParserErrorCode.MISSING_IDENTIFIER,
-      ParserErrorCode.MISSING_IDENTIFIER
-    ]);
-  }
-
-  @override
   void test_equalityExpression_precedence_relational_right() {
     // Fasta recovers differently. It takes the `is` to be an identifier and
     // assumes that it is the right operand of the `==`.
@@ -2911,29 +2845,6 @@
       ParserErrorCode.MISSING_IDENTIFIER
     ]);
   }
-
-  @override
-  @failingTest
-  void test_shiftExpression_precedence_unary_left() {
-    // TODO(brianwilkerson) Unhandled compile-time error:
-    // '+' is not a prefix operator.
-    super.test_shiftExpression_precedence_unary_left();
-  }
-
-  @override
-  @failingTest
-  void test_shiftExpression_precedence_unary_right() {
-    // TODO(brianwilkerson) reportUnrecoverableErrorWithToken
-    super.test_shiftExpression_precedence_unary_right();
-  }
-
-  @override
-  @failingTest
-  void test_unaryPlus() {
-    // TODO(brianwilkerson) Unhandled compile-time error:
-    // '+' is not a prefix operator.
-    super.test_unaryPlus();
-  }
 }
 
 /**
diff --git a/pkg/analyzer/test/generated/parser_test.dart b/pkg/analyzer/test/generated/parser_test.dart
index 39121f4..0520f0b 100644
--- a/pkg/analyzer/test/generated/parser_test.dart
+++ b/pkg/analyzer/test/generated/parser_test.dart
@@ -4945,8 +4945,16 @@
     expectNotNullIfNoErrors(expression);
     listener.assertErrors(
         [expectedError(ParserErrorCode.MISSING_IDENTIFIER, 0, 1)]);
-    var identifier = expression as SimpleIdentifier;
-    expect(identifier.isSynthetic, isTrue);
+    if (usingFastaParser) {
+      BinaryExpression binaryExpression = expression;
+      expect(binaryExpression.leftOperand.isSynthetic, isTrue);
+      expect(binaryExpression.rightOperand.isSynthetic, isFalse);
+      SimpleIdentifier identifier = binaryExpression.rightOperand;
+      expect(identifier.name, 'x');
+    } else {
+      var identifier = expression as SimpleIdentifier;
+      expect(identifier.isSynthetic, isTrue);
+    }
   }
 
   void test_varAndType_field() {
@@ -9901,6 +9909,13 @@
 class B = Object with A {}''', codes: [ParserErrorCode.EXPECTED_TOKEN]);
   }
 
+  void test_combinator_missingIdentifier() {
+    createParser('import "/testB.dart" show ;');
+    parser.parseCompilationUnit2();
+    listener.assertErrors(
+        [expectedError(ParserErrorCode.MISSING_IDENTIFIER, 26, 1)]);
+  }
+
   void test_conditionalExpression_missingElse() {
     Expression expression =
         parseExpression('x ? y :', codes: [ParserErrorCode.MISSING_IDENTIFIER]);
@@ -9972,13 +9987,24 @@
   }
 
   void test_equalityExpression_precedence_relational_left() {
-    BinaryExpression expression = parseExpression("is ==", codes: [
-      ParserErrorCode.EXPECTED_TYPE_NAME,
-      ParserErrorCode.MISSING_IDENTIFIER,
-      ParserErrorCode.MISSING_IDENTIFIER
-    ]);
-    EngineTestCase.assertInstanceOf(
-        (obj) => obj is IsExpression, IsExpression, expression.leftOperand);
+    // Fasta recovers differently. It takes the `is` to be an identifier and
+    // assumes that the right operand of `==` is the only missing identifier.
+    BinaryExpression expression = parseExpression("is ==",
+        codes: usingFastaParser
+            ? [
+                //ParserErrorCode.EXPECTED_TYPE_NAME,
+                ParserErrorCode.MISSING_IDENTIFIER,
+                ParserErrorCode.MISSING_IDENTIFIER
+              ]
+            : [
+                ParserErrorCode.EXPECTED_TYPE_NAME,
+                ParserErrorCode.MISSING_IDENTIFIER,
+                ParserErrorCode.MISSING_IDENTIFIER
+              ]);
+    if (!usingFastaParser) {
+      EngineTestCase.assertInstanceOf(
+          (obj) => obj is IsExpression, IsExpression, expression.leftOperand);
+    }
   }
 
   void test_equalityExpression_precedence_relational_right() {
@@ -10063,6 +10089,16 @@
     parseExpression("m(f() => 0);", codes: [ParserErrorCode.EXPECTED_TOKEN]);
   }
 
+  void test_ifStatement_noElse_statement() {
+    parseStatement('if (x v) f(x);');
+    listener.assertErrors(usingFastaParser
+        ? [expectedError(ParserErrorCode.UNEXPECTED_TOKEN, 6, 1)]
+        : [
+            expectedError(ParserErrorCode.EXPECTED_TOKEN, 6, 1),
+            expectedError(ParserErrorCode.EXPECTED_TOKEN, 6, 1)
+          ]);
+  }
+
   void test_importDirectivePartial_as() {
     CompilationUnit unit = parseCompilationUnit("import 'b.dart' d as b;",
         codes: [ParserErrorCode.UNEXPECTED_TOKEN]);
@@ -10531,6 +10567,11 @@
         BinaryExpression, expression.rightOperand);
   }
 
+  void test_method_missingBody() {
+    parseCompilationUnit("class C { b() }",
+        errors: [expectedError(ParserErrorCode.MISSING_FUNCTION_BODY, 14, 1)]);
+  }
+
   void test_missing_commaInArgumentList() {
     parseExpression("f(x: 1 y: 2)",
         codes: usingFastaParser
@@ -10679,6 +10720,23 @@
         BinaryExpression, expression.leftOperand);
   }
 
+  void test_namedParameterOutsideGroup() {
+    CompilationUnit unit =
+        parseCompilationUnit('class A { b(c: 0, Foo d: 0, e){} }', errors: [
+      expectedError(ParserErrorCode.NAMED_PARAMETER_OUTSIDE_GROUP, 13, 1),
+      expectedError(ParserErrorCode.NAMED_PARAMETER_OUTSIDE_GROUP, 23, 1)
+    ]);
+    expect(unit.declarations, hasLength(1));
+    ClassDeclaration classA = unit.declarations[0];
+    expect(classA.members, hasLength(1));
+    MethodDeclaration method = classA.members[0];
+    NodeList<FormalParameter> parameters = method.parameters.parameters;
+    expect(parameters, hasLength(3));
+    expect(parameters[0].kind, ParameterKind.NAMED);
+    expect(parameters[1].kind, ParameterKind.NAMED);
+    expect(parameters[2].kind, ParameterKind.REQUIRED);
+  }
+
   void test_nonStringLiteralUri_import() {
     parseCompilationUnit("import dart:io; class C {}",
         codes: [ParserErrorCode.NON_STRING_LITERAL_AS_URI]);
@@ -15768,6 +15826,68 @@
     expect(functionExpression.body, isNotNull);
   }
 
+  void test_parseFunctionDeclaration_metadata() {
+    createParser(
+        'T f(@A a, @B(2) Foo b, {@C.foo(3) c : 0, @d.E.bar(4, 5) x:0}) {}');
+    FunctionDeclaration declaration = parseFullCompilationUnitMember();
+    expect(declaration, isNotNull);
+    assertNoErrors();
+    expect(declaration.documentationComment, isNull);
+    expect((declaration.returnType as TypeName).name.name, 'T');
+    expect(declaration.name, isNotNull);
+    FunctionExpression expression = declaration.functionExpression;
+    expect(expression, isNotNull);
+    expect(expression.body, isNotNull);
+    expect(expression.typeParameters, isNull);
+    NodeList<FormalParameter> parameters = expression.parameters.parameters;
+    expect(parameters, hasLength(4));
+    expect(declaration.propertyKeyword, isNull);
+
+    {
+      var annotation = parameters[0].metadata[0];
+      expect(annotation.atSign, isNotNull);
+      expect(annotation.name, new isInstanceOf<SimpleIdentifier>());
+      expect(annotation.name.name, 'A');
+      expect(annotation.period, isNull);
+      expect(annotation.constructorName, isNull);
+      expect(annotation.arguments, isNull);
+    }
+
+    {
+      var annotation = parameters[1].metadata[0];
+      expect(annotation.atSign, isNotNull);
+      expect(annotation.name, new isInstanceOf<SimpleIdentifier>());
+      expect(annotation.name.name, 'B');
+      expect(annotation.period, isNull);
+      expect(annotation.constructorName, isNull);
+      expect(annotation.arguments, isNotNull);
+      expect(annotation.arguments.arguments, hasLength(1));
+    }
+
+    {
+      var annotation = parameters[2].metadata[0];
+      expect(annotation.atSign, isNotNull);
+      expect(annotation.name, new isInstanceOf<PrefixedIdentifier>());
+      expect(annotation.name.name, 'C.foo');
+      expect(annotation.period, isNull);
+      expect(annotation.constructorName, isNull);
+      expect(annotation.arguments, isNotNull);
+      expect(annotation.arguments.arguments, hasLength(1));
+    }
+
+    {
+      var annotation = parameters[3].metadata[0];
+      expect(annotation.atSign, isNotNull);
+      expect(annotation.name, new isInstanceOf<PrefixedIdentifier>());
+      expect(annotation.name.name, 'd.E');
+      expect(annotation.period, isNotNull);
+      expect(annotation.constructorName, isNotNull);
+      expect(annotation.constructorName.name, 'bar');
+      expect(annotation.arguments, isNotNull);
+      expect(annotation.arguments.arguments, hasLength(2));
+    }
+  }
+
   void test_parseFunctionDeclaration_setter() {
     createParser('/// Doc\nT set p(v) {}');
     FunctionDeclaration declaration = parseFullCompilationUnitMember();
diff --git a/pkg/analyzer/test/generated/strong_mode_test.dart b/pkg/analyzer/test/generated/strong_mode_test.dart
index 1441978..80f5c2b 100644
--- a/pkg/analyzer/test/generated/strong_mode_test.dart
+++ b/pkg/analyzer/test/generated/strong_mode_test.dart
@@ -3441,6 +3441,22 @@
     expectIdentifierType('paramTearOff', "<T>(T) → T");
   }
 
+  test_genericMethod_partiallyAppliedErrorWithBound() async {
+    await resolveTestUnit(r'''
+void f<X extends List, Y>() => null;
+
+void test() {
+  f<int>();
+}
+''', noErrors: false);
+    assertErrors(testSource, [
+      // Make sure to catch both the missing parameter:
+      StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_METHOD,
+      // And the incorrect parameter:
+      StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
+    ]);
+  }
+
   test_genericMethod_then() async {
     String code = r'''
 import 'dart:async';
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_kernel_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_kernel_test.dart
index 234d071..bfda882 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_kernel_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_kernel_test.dart
@@ -62,6 +62,13 @@
   @failingTest
   @potentialAnalyzerProblem
   @override
+  test_const_annotation_notConstConstructor() async {
+    await super.test_const_annotation_notConstConstructor();
+  }
+
+  @failingTest
+  @potentialAnalyzerProblem
+  @override
   test_const_annotation_withArgs() async {
     await super.test_const_annotation_withArgs();
   }
@@ -81,7 +88,7 @@
   }
 
   @failingTest
-  @potentialAnalyzerProblem
+  @FastaProblem('https://github.com/dart-lang/sdk/issues/31555')
   @override
   test_const_implicitSuperConstructorInvocation() async {
     await super.test_const_implicitSuperConstructorInvocation();
@@ -137,13 +144,6 @@
   @failingTest
   @potentialAnalyzerProblem
   @override
-  test_getResult_constants_defaultParameterValue_localFunction() async {
-    await super.test_getResult_constants_defaultParameterValue_localFunction();
-  }
-
-  @failingTest
-  @potentialAnalyzerProblem
-  @override
   test_getResult_errors() async {
     await super.test_getResult_errors();
   }
@@ -151,13 +151,6 @@
   @failingTest
   @potentialAnalyzerProblem
   @override
-  test_getResult_genericFunctionType_parameter_named() async {
-    await super.test_getResult_genericFunctionType_parameter_named();
-  }
-
-  @failingTest
-  @potentialAnalyzerProblem
-  @override
   test_getResult_importLibrary_thenRemoveIt() async {
     await super.test_getResult_importLibrary_thenRemoveIt();
   }
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
index f76b383..84e174d 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
@@ -68,155 +68,142 @@
  */
 @reflectiveTest
 class AnalysisDriverResolutionTest extends BaseAnalysisDriverTest {
-  test_apply_instanceCreation_noTypeArguments() async {
+  test_adjacentStrings() async {
     String content = r'''
-class C {
-  C(int p);
-  C.named(int p);
+void main() {
+  'aaa' 'bbb' 'ccc';
 }
-var a = new C(1);
-var b = new C.named(2);
+''';
+    addTestFile(content);
+    AnalysisResult result = await driver.getResult(testFile);
+    var typeProvider = result.unit.element.context.typeProvider;
+
+    List<Statement> statements = _getMainStatements(result);
+
+    ExpressionStatement statement = statements[0];
+    AdjacentStrings expression = statement.expression;
+    expect(expression.staticType, typeProvider.stringType);
+    expect(expression.strings, hasLength(3));
+
+    StringLiteral literal_1 = expression.strings[0];
+    expect(literal_1.staticType, typeProvider.stringType);
+
+    StringLiteral literal_2 = expression.strings[1];
+    expect(literal_2.staticType, typeProvider.stringType);
+
+    StringLiteral literal_3 = expression.strings[2];
+    expect(literal_3.staticType, typeProvider.stringType);
+  }
+
+  test_annotation() async {
+    String content = r'''
+const myAnnotation = 1;
+
+@myAnnotation
+class C {
+  @myAnnotation
+  int field = 2;
+
+  @myAnnotation
+  C() {}
+
+  @myAnnotation
+  void method() {}
+}
+
+@myAnnotation
+int topLevelVariable = 3;
+
+@myAnnotation
+void topLevelFunction() {}
 ''';
     addTestFile(content);
 
     AnalysisResult result = await driver.getResult(testFile);
-    CompilationUnit unit = result.unit;
+    var typeProvider = result.unit.element.context.typeProvider;
 
-    ClassDeclaration cNode = unit.declarations[0];
-    ClassElement cElement = cNode.element;
-    ConstructorElement defaultConstructor = cElement.constructors[0];
-    ConstructorElement namedConstructor = cElement.constructors[1];
+    TopLevelVariableDeclaration myDeclaration = result.unit.declarations[0];
+    VariableDeclaration myVariable = myDeclaration.variables.variables[0];
+    TopLevelVariableElement myElement = myVariable.element;
 
-    {
-      TopLevelVariableDeclaration aDeclaration = unit.declarations[1];
-      VariableDeclaration aNode = aDeclaration.variables.variables[0];
-      InstanceCreationExpression value = aNode.initializer;
-      expect(value.staticElement, defaultConstructor);
-      expect(value.staticType, cElement.type);
+    void assertMyAnnotation(AnnotatedNode node) {
+      Annotation annotation = node.metadata[0];
+      expect(annotation.element, same(myElement.getter));
 
-      TypeName typeName = value.constructorName.type;
-      expect(typeName.typeArguments, isNull);
-
-      Identifier typeIdentifier = typeName.name;
-      expect(typeIdentifier.staticElement, cElement);
-      expect(typeIdentifier.staticType, cElement.type);
-
-      expect(value.constructorName.name, isNull);
-
-      Expression argument = value.argumentList.arguments[0];
-      expect(argument.staticParameterElement, defaultConstructor.parameters[0]);
+      SimpleIdentifier identifier_1 = annotation.name;
+      expect(identifier_1.staticElement, same(myElement.getter));
+      expect(identifier_1.staticType, typeProvider.intType);
     }
 
     {
-      TopLevelVariableDeclaration bDeclaration = unit.declarations[2];
-      VariableDeclaration bNode = bDeclaration.variables.variables[0];
-      InstanceCreationExpression value = bNode.initializer;
-      expect(value.staticElement, namedConstructor);
-      expect(value.staticType, cElement.type);
+      ClassDeclaration classNode = result.unit.declarations[1];
+      assertMyAnnotation(classNode);
 
-      TypeName typeName = value.constructorName.type;
-      expect(typeName.typeArguments, isNull);
+      {
+        FieldDeclaration node = classNode.members[0];
+        assertMyAnnotation(node);
+      }
 
-      SimpleIdentifier typeIdentifier = typeName.name;
-      expect(typeIdentifier.staticElement, cElement);
-      expect(typeIdentifier.staticType, cElement.type);
+      {
+        ConstructorDeclaration node = classNode.members[1];
+        assertMyAnnotation(node);
+      }
 
-      SimpleIdentifier constructorName = value.constructorName.name;
-      expect(constructorName.staticElement, namedConstructor);
-      expect(constructorName.staticType, isNull);
+      {
+        MethodDeclaration node = classNode.members[2];
+        assertMyAnnotation(node);
+      }
+    }
 
-      Expression argument = value.argumentList.arguments[0];
-      expect(argument.staticParameterElement, namedConstructor.parameters[0]);
+    {
+      TopLevelVariableDeclaration node = result.unit.declarations[2];
+      assertMyAnnotation(node);
+    }
+
+    {
+      FunctionDeclaration node = result.unit.declarations[3];
+      assertMyAnnotation(node);
     }
   }
 
-  test_apply_instanceCreation_withTypeArguments() async {
+  test_annotation_kind_reference() async {
     String content = r'''
-class C<K, V> {
-  C(K k, V v);
-  C.named(K k, V v);
+const annotation_1 = 1;
+const annotation_2 = 1;
+@annotation_1
+@annotation_2
+void main() {
+  print(42);
 }
-var a = new C<int, double>(1, 2.3);
-var b = new C<num, String>.named(4, 'five');
 ''';
     addTestFile(content);
 
     AnalysisResult result = await driver.getResult(testFile);
-    CompilationUnit unit = result.unit;
-    var typeProvider = unit.element.context.typeProvider;
+    var typeProvider = result.unit.element.context.typeProvider;
 
-    ClassDeclaration cNode = unit.declarations[0];
-    ClassElement cElement = cNode.element;
-    ConstructorElement defaultConstructor = cElement.constructors[0];
-    ConstructorElement namedConstructor = cElement.constructors[1];
+    TopLevelVariableDeclaration declaration_1 = result.unit.declarations[0];
+    VariableDeclaration variable_1 = declaration_1.variables.variables[0];
+    TopLevelVariableElement element_1 = variable_1.element;
 
-    {
-      TopLevelVariableDeclaration aDeclaration = unit.declarations[1];
-      VariableDeclaration aNode = aDeclaration.variables.variables[0];
+    TopLevelVariableDeclaration declaration_2 = result.unit.declarations[1];
+    VariableDeclaration variable_2 = declaration_2.variables.variables[0];
+    TopLevelVariableElement element_2 = variable_2.element;
 
-      InstanceCreationExpression value = aNode.initializer;
-      InterfaceType instantiatedType = cElement.type
-          .instantiate([typeProvider.intType, typeProvider.doubleType]);
+    FunctionDeclaration main = result.unit.declarations[2];
 
-      expect(value.staticElement, defaultConstructor);
-      expect(value.staticType, instantiatedType);
+    Annotation annotation_1 = main.metadata[0];
+    expect(annotation_1.element, same(element_1.getter));
 
-      TypeName typeName = value.constructorName.type;
+    SimpleIdentifier identifier_1 = annotation_1.name;
+    expect(identifier_1.staticElement, same(element_1.getter));
+    expect(identifier_1.staticType, typeProvider.intType);
 
-      Identifier typeIdentifier = typeName.name;
-      expect(typeIdentifier.staticElement, cElement);
-      expect(typeIdentifier.staticType, instantiatedType);
+    Annotation annotation_2 = main.metadata[1];
+    expect(annotation_2.element, same(element_2.getter));
 
-      TypeName typeArgument1 = typeName.typeArguments.arguments[0];
-      expect(typeArgument1.type, typeProvider.intType);
-      expect(typeArgument1.name.staticType, typeProvider.intType);
-      expect(typeArgument1.name.staticElement, typeProvider.intType.element);
-
-      TypeName typeArgument2 = typeName.typeArguments.arguments[1];
-      expect(typeArgument2.type, typeProvider.doubleType);
-      expect(typeArgument2.name.staticType, typeProvider.doubleType);
-      expect(typeArgument2.name.staticElement, typeProvider.doubleType.element);
-
-      expect(value.constructorName.name, isNull);
-
-      Expression argument = value.argumentList.arguments[0];
-      expect(argument.staticParameterElement, defaultConstructor.parameters[0]);
-    }
-
-    {
-      TopLevelVariableDeclaration bDeclaration = unit.declarations[2];
-      VariableDeclaration bNode = bDeclaration.variables.variables[0];
-
-      InstanceCreationExpression value = bNode.initializer;
-      InterfaceType instantiatedType = cElement.type
-          .instantiate([typeProvider.numType, typeProvider.stringType]);
-
-      expect(value.staticElement, namedConstructor);
-      expect(value.staticType, instantiatedType);
-
-      TypeName typeName = value.constructorName.type;
-
-      SimpleIdentifier typeIdentifier = typeName.name;
-      expect(typeIdentifier.staticElement, cElement);
-      expect(typeIdentifier.staticType, instantiatedType);
-
-      TypeName typeArgument1 = typeName.typeArguments.arguments[0];
-      expect(typeArgument1.type, typeProvider.numType);
-      expect(typeArgument1.name.staticType, typeProvider.numType);
-      expect(typeArgument1.name.staticElement, typeProvider.numType.element);
-
-      TypeName typeArgument2 = typeName.typeArguments.arguments[1];
-      expect(typeArgument2.type, typeProvider.stringType);
-      expect(typeArgument2.name.staticType, typeProvider.stringType);
-      expect(typeArgument2.name.staticElement, typeProvider.stringType.element);
-
-      SimpleIdentifier constructorName = value.constructorName.name;
-      expect(constructorName.staticElement, namedConstructor);
-      expect(constructorName.staticType, isNull);
-
-      Expression argument = value.argumentList.arguments[0];
-      expect(argument.staticParameterElement, namedConstructor.parameters[0]);
-    }
+    SimpleIdentifier identifier_2 = annotation_2.name;
+    expect(identifier_2.staticElement, same(element_2.getter));
+    expect(identifier_2.staticType, typeProvider.intType);
   }
 
   test_asExpression() async {
@@ -538,6 +525,44 @@
     }
   }
 
+  test_assignmentExpression_simple_instanceField_unqualified() async {
+    String content = r'''
+class C {
+  num f = 0;
+  foo() {
+    f = 2;
+  }
+}
+''';
+    addTestFile(content);
+
+    AnalysisResult result = await driver.getResult(testFile);
+    CompilationUnit unit = result.unit;
+    var typeProvider = unit.element.context.typeProvider;
+
+    ClassDeclaration cDeclaration = unit.declarations[0];
+    FieldElement fElement = cDeclaration.element.fields[0];
+
+    MethodDeclaration fooDeclaration = cDeclaration.members[1];
+    BlockFunctionBody fooBody = fooDeclaration.body;
+
+    {
+      ExpressionStatement statement = fooBody.block.statements[0];
+
+      AssignmentExpression assignment = statement.expression;
+      expect(assignment.operator.type, TokenType.EQ);
+      expect(assignment.staticElement, isNull);
+      expect(assignment.staticType, typeProvider.intType);
+
+      SimpleIdentifier left = assignment.leftHandSide;
+      expect(left.staticElement, same(fElement.setter));
+      expect(left.staticType, typeProvider.numType);
+
+      Expression right = assignment.rightHandSide;
+      expect(right.staticType, typeProvider.intType);
+    }
+  }
+
   test_assignmentExpression_simple_local() async {
     String content = r'''
 main() {
@@ -627,6 +652,48 @@
     }
   }
 
+  test_assignmentExpression_simple_prefixedIdentifier_staticField() async {
+    String content = r'''
+main() {
+  C.f = 2;
+}
+class C {
+  static num f;
+}
+''';
+    addTestFile(content);
+
+    AnalysisResult result = await driver.getResult(testFile);
+    CompilationUnit unit = result.unit;
+    var typeProvider = unit.element.context.typeProvider;
+
+    ClassDeclaration cClassDeclaration = unit.declarations[1];
+    ClassElement cClassElement = cClassDeclaration.element;
+    FieldElement fElement = cClassElement.getField('f');
+
+    List<Statement> mainStatements = _getMainStatements(result);
+
+    {
+      ExpressionStatement statement = mainStatements[0];
+
+      AssignmentExpression assignment = statement.expression;
+      expect(assignment.staticType, typeProvider.intType);
+
+      PrefixedIdentifier left = assignment.leftHandSide;
+      expect(left.staticElement, same(fElement.setter));
+      expect(left.staticType, typeProvider.numType);
+
+      expect(left.prefix.staticElement, cClassElement);
+      expect(left.prefix.staticType, cClassElement.type);
+
+      expect(left.identifier.staticElement, same(fElement.setter));
+      expect(left.identifier.staticType, typeProvider.numType);
+
+      Expression right = assignment.rightHandSide;
+      expect(right.staticType, typeProvider.intType);
+    }
+  }
+
   test_assignmentExpression_simple_propertyAccess() async {
     String content = r'''
 main() {
@@ -771,6 +838,82 @@
     }
   }
 
+  test_assignmentExpression_simple_staticField_unqualified() async {
+    String content = r'''
+class C {
+  static num f = 0;
+  foo() {
+    f = 2;
+  }
+}
+''';
+    addTestFile(content);
+
+    AnalysisResult result = await driver.getResult(testFile);
+    CompilationUnit unit = result.unit;
+    var typeProvider = unit.element.context.typeProvider;
+
+    ClassDeclaration cDeclaration = unit.declarations[0];
+    FieldElement fElement = cDeclaration.element.fields[0];
+
+    MethodDeclaration fooDeclaration = cDeclaration.members[1];
+    BlockFunctionBody fooBody = fooDeclaration.body;
+
+    {
+      ExpressionStatement statement = fooBody.block.statements[0];
+
+      AssignmentExpression assignment = statement.expression;
+      expect(assignment.operator.type, TokenType.EQ);
+      expect(assignment.staticElement, isNull);
+      expect(assignment.staticType, typeProvider.intType);
+
+      SimpleIdentifier left = assignment.leftHandSide;
+      expect(left.staticElement, same(fElement.setter));
+      expect(left.staticType, typeProvider.numType);
+
+      Expression right = assignment.rightHandSide;
+      expect(right.staticType, typeProvider.intType);
+    }
+  }
+
+  test_assignmentExpression_simple_topLevelVariable() async {
+    String content = r'''
+main() {
+  v = 2;
+}
+num v = 0;
+''';
+    addTestFile(content);
+
+    AnalysisResult result = await driver.getResult(testFile);
+    CompilationUnit unit = result.unit;
+    var typeProvider = unit.element.context.typeProvider;
+
+    TopLevelVariableElement v;
+    {
+      TopLevelVariableDeclaration declaration = unit.declarations[1];
+      v = declaration.variables.variables[0].element;
+      expect(v.type, typeProvider.numType);
+    }
+
+    List<Statement> mainStatements = _getMainStatements(result);
+    {
+      ExpressionStatement statement = mainStatements[0];
+
+      AssignmentExpression assignment = statement.expression;
+      expect(assignment.operator.type, TokenType.EQ);
+      expect(assignment.staticElement, isNull);
+      expect(assignment.staticType, typeProvider.intType);
+
+      SimpleIdentifier left = assignment.leftHandSide;
+      expect(left.staticElement, same(v.setter));
+      expect(left.staticType, typeProvider.numType);
+
+      Expression right = assignment.rightHandSide;
+      expect(right.staticType, typeProvider.intType);
+    }
+  }
+
   test_binaryExpression() async {
     String content = r'''
 main() {
@@ -797,8 +940,58 @@
     expect(value.staticType, typeProvider.intType);
   }
 
+  test_binaryExpression_ifNull() async {
+    String content = r'''
+main() {
+  1.2 ?? 3;
+}
+''';
+    addTestFile(content);
+
+    AnalysisResult result = await driver.getResult(testFile);
+    CompilationUnit unit = result.unit;
+    var typeProvider = unit.element.context.typeProvider;
+
+    List<Statement> mainStatements = _getMainStatements(result);
+
+    ExpressionStatement statement = mainStatements[0];
+    BinaryExpression binary = statement.expression;
+    expect(binary.operator.type, TokenType.QUESTION_QUESTION);
+    expect(binary.staticElement, isNull);
+    expect(binary.staticType, typeProvider.numType);
+
+    expect(binary.leftOperand.staticType, typeProvider.doubleType);
+    expect(binary.rightOperand.staticType, typeProvider.intType);
+  }
+
+  test_binaryExpression_logical() async {
+    addTestFile(r'''
+main() {
+  true && true;
+  true || true;
+}
+''');
+    AnalysisResult result = await driver.getResult(testFile);
+    var typeProvider = result.unit.element.context.typeProvider;
+
+    List<Statement> statements = _getMainStatements(result);
+
+    {
+      ExpressionStatement statement = statements[0];
+      BinaryExpression binaryExpression = statement.expression;
+      expect(binaryExpression.staticElement, isNull);
+      expect(binaryExpression.staticType, typeProvider.boolType);
+    }
+
+    {
+      ExpressionStatement statement = statements[1];
+      BinaryExpression binaryExpression = statement.expression;
+      expect(binaryExpression.staticElement, isNull);
+      expect(binaryExpression.staticType, typeProvider.boolType);
+    }
+  }
+
   test_binaryExpression_notEqual() async {
-    // TODO(scheglov) Add similar test for `v is! T`.
     String content = r'''
 main() {
   1 != 2;
@@ -906,6 +1099,213 @@
     expect(actualElement.parameters[0].type, intType);
   }
 
+  test_instanceCreation_factory() async {
+    String content = r'''
+class C {
+  factory C() => null;
+  factory C.named() => null;
+}
+var a = new C();
+var b = new C.named();
+''';
+    addTestFile(content);
+
+    AnalysisResult result = await driver.getResult(testFile);
+    CompilationUnit unit = result.unit;
+
+    ClassDeclaration cNode = unit.declarations[0];
+    ClassElement cElement = cNode.element;
+    ConstructorElement defaultConstructor = cElement.constructors[0];
+    ConstructorElement namedConstructor = cElement.constructors[1];
+
+    {
+      TopLevelVariableDeclaration aDeclaration = unit.declarations[1];
+      VariableDeclaration aNode = aDeclaration.variables.variables[0];
+      InstanceCreationExpression value = aNode.initializer;
+      expect(value.staticElement, defaultConstructor);
+      expect(value.staticType, cElement.type);
+
+      TypeName typeName = value.constructorName.type;
+      expect(typeName.typeArguments, isNull);
+
+      Identifier typeIdentifier = typeName.name;
+      expect(typeIdentifier.staticElement, cElement);
+      expect(typeIdentifier.staticType, cElement.type);
+
+      expect(value.constructorName.name, isNull);
+    }
+
+    {
+      TopLevelVariableDeclaration bDeclaration = unit.declarations[2];
+      VariableDeclaration bNode = bDeclaration.variables.variables[0];
+      InstanceCreationExpression value = bNode.initializer;
+      expect(value.staticElement, namedConstructor);
+      expect(value.staticType, cElement.type);
+
+      TypeName typeName = value.constructorName.type;
+      expect(typeName.typeArguments, isNull);
+
+      SimpleIdentifier typeIdentifier = typeName.name;
+      expect(typeIdentifier.staticElement, cElement);
+      expect(typeIdentifier.staticType, cElement.type);
+
+      SimpleIdentifier constructorName = value.constructorName.name;
+      expect(constructorName.staticElement, namedConstructor);
+      expect(constructorName.staticType, isNull);
+    }
+  }
+
+  test_instanceCreation_noTypeArguments() async {
+    String content = r'''
+class C {
+  C(int p);
+  C.named(int p);
+}
+var a = new C(1);
+var b = new C.named(2);
+''';
+    addTestFile(content);
+
+    AnalysisResult result = await driver.getResult(testFile);
+    CompilationUnit unit = result.unit;
+
+    ClassDeclaration cNode = unit.declarations[0];
+    ClassElement cElement = cNode.element;
+    ConstructorElement defaultConstructor = cElement.constructors[0];
+    ConstructorElement namedConstructor = cElement.constructors[1];
+
+    {
+      TopLevelVariableDeclaration aDeclaration = unit.declarations[1];
+      VariableDeclaration aNode = aDeclaration.variables.variables[0];
+      InstanceCreationExpression value = aNode.initializer;
+      expect(value.staticElement, defaultConstructor);
+      expect(value.staticType, cElement.type);
+
+      TypeName typeName = value.constructorName.type;
+      expect(typeName.typeArguments, isNull);
+
+      Identifier typeIdentifier = typeName.name;
+      expect(typeIdentifier.staticElement, cElement);
+      expect(typeIdentifier.staticType, cElement.type);
+
+      expect(value.constructorName.name, isNull);
+
+      Expression argument = value.argumentList.arguments[0];
+      expect(argument.staticParameterElement, defaultConstructor.parameters[0]);
+    }
+
+    {
+      TopLevelVariableDeclaration bDeclaration = unit.declarations[2];
+      VariableDeclaration bNode = bDeclaration.variables.variables[0];
+      InstanceCreationExpression value = bNode.initializer;
+      expect(value.staticElement, namedConstructor);
+      expect(value.staticType, cElement.type);
+
+      TypeName typeName = value.constructorName.type;
+      expect(typeName.typeArguments, isNull);
+
+      SimpleIdentifier typeIdentifier = typeName.name;
+      expect(typeIdentifier.staticElement, cElement);
+      expect(typeIdentifier.staticType, cElement.type);
+
+      SimpleIdentifier constructorName = value.constructorName.name;
+      expect(constructorName.staticElement, namedConstructor);
+      expect(constructorName.staticType, isNull);
+
+      Expression argument = value.argumentList.arguments[0];
+      expect(argument.staticParameterElement, namedConstructor.parameters[0]);
+    }
+  }
+
+  test_instanceCreation_withTypeArguments() async {
+    String content = r'''
+class C<K, V> {
+  C(K k, V v);
+  C.named(K k, V v);
+}
+var a = new C<int, double>(1, 2.3);
+var b = new C<num, String>.named(4, 'five');
+''';
+    addTestFile(content);
+
+    AnalysisResult result = await driver.getResult(testFile);
+    CompilationUnit unit = result.unit;
+    var typeProvider = unit.element.context.typeProvider;
+
+    ClassDeclaration cNode = unit.declarations[0];
+    ClassElement cElement = cNode.element;
+    ConstructorElement defaultConstructor = cElement.constructors[0];
+    ConstructorElement namedConstructor = cElement.constructors[1];
+
+    {
+      TopLevelVariableDeclaration aDeclaration = unit.declarations[1];
+      VariableDeclaration aNode = aDeclaration.variables.variables[0];
+
+      InstanceCreationExpression value = aNode.initializer;
+      InterfaceType instantiatedType = cElement.type
+          .instantiate([typeProvider.intType, typeProvider.doubleType]);
+
+      expect(value.staticElement, defaultConstructor);
+      expect(value.staticType, instantiatedType);
+
+      TypeName typeName = value.constructorName.type;
+
+      Identifier typeIdentifier = typeName.name;
+      expect(typeIdentifier.staticElement, cElement);
+      expect(typeIdentifier.staticType, instantiatedType);
+
+      TypeName typeArgument1 = typeName.typeArguments.arguments[0];
+      expect(typeArgument1.type, typeProvider.intType);
+      expect(typeArgument1.name.staticType, typeProvider.intType);
+      expect(typeArgument1.name.staticElement, typeProvider.intType.element);
+
+      TypeName typeArgument2 = typeName.typeArguments.arguments[1];
+      expect(typeArgument2.type, typeProvider.doubleType);
+      expect(typeArgument2.name.staticType, typeProvider.doubleType);
+      expect(typeArgument2.name.staticElement, typeProvider.doubleType.element);
+
+      expect(value.constructorName.name, isNull);
+
+      Expression argument = value.argumentList.arguments[0];
+      expect(argument.staticParameterElement, defaultConstructor.parameters[0]);
+    }
+
+    {
+      TopLevelVariableDeclaration bDeclaration = unit.declarations[2];
+      VariableDeclaration bNode = bDeclaration.variables.variables[0];
+
+      InstanceCreationExpression value = bNode.initializer;
+      InterfaceType instantiatedType = cElement.type
+          .instantiate([typeProvider.numType, typeProvider.stringType]);
+
+      expect(value.staticElement, namedConstructor);
+      expect(value.staticType, instantiatedType);
+
+      TypeName typeName = value.constructorName.type;
+
+      SimpleIdentifier typeIdentifier = typeName.name;
+      expect(typeIdentifier.staticElement, cElement);
+      expect(typeIdentifier.staticType, instantiatedType);
+
+      TypeName typeArgument1 = typeName.typeArguments.arguments[0];
+      expect(typeArgument1.type, typeProvider.numType);
+      expect(typeArgument1.name.staticType, typeProvider.numType);
+      expect(typeArgument1.name.staticElement, typeProvider.numType.element);
+
+      TypeName typeArgument2 = typeName.typeArguments.arguments[1];
+      expect(typeArgument2.type, typeProvider.stringType);
+      expect(typeArgument2.name.staticType, typeProvider.stringType);
+      expect(typeArgument2.name.staticElement, typeProvider.stringType.element);
+
+      SimpleIdentifier constructorName = value.constructorName.name;
+      expect(constructorName.staticElement, namedConstructor);
+      expect(constructorName.staticType, isNull);
+
+      Expression argument = value.argumentList.arguments[0];
+      expect(argument.staticParameterElement, namedConstructor.parameters[0]);
+    }
+  }
+
   test_isExpression() async {
     String content = r'''
 void main() {
@@ -929,10 +1329,51 @@
       vElement = statement.variables.variables[0].name.staticElement;
     }
 
-    // v;
+    // v is num;
     {
       ExpressionStatement statement = statements[1];
       IsExpression isExpression = statement.expression;
+      expect(isExpression.notOperator, isNull);
+      expect(isExpression.staticType, typeProvider.boolType);
+
+      SimpleIdentifier target = isExpression.expression;
+      expect(target.staticElement, vElement);
+      expect(target.staticType, typeProvider.intType);
+
+      TypeName numName = isExpression.type;
+      expect(numName.name.staticElement, typeProvider.numType.element);
+      expect(numName.name.staticType, typeProvider.numType);
+    }
+  }
+
+  test_isExpression_not() async {
+    String content = r'''
+void main() {
+  var v = 42;
+  v is! num;
+}
+''';
+    addTestFile(content);
+
+    AnalysisResult result = await driver.getResult(testFile);
+    expect(result.path, testFile);
+    expect(result.errors, isEmpty);
+
+    var typeProvider = result.unit.element.context.typeProvider;
+    NodeList<Statement> statements = _getMainStatements(result);
+
+    // var v = 42;
+    VariableElement vElement;
+    {
+      VariableDeclarationStatement statement = statements[0];
+      vElement = statement.variables.variables[0].name.staticElement;
+    }
+
+    // v is! num;
+    {
+      ExpressionStatement statement = statements[1];
+      IsExpression isExpression = statement.expression;
+      expect(isExpression.notOperator, isNotNull);
       expect(isExpression.staticType, typeProvider.boolType);
 
       SimpleIdentifier target = isExpression.expression;
@@ -1091,7 +1532,7 @@
   test_local_function_namedParameters() async {
     addTestFile(r'''
 void main() {
-  double f(int a, {String b, bool c}) {}
+  double f(int a, {String b, bool c: false}) {}
   f(1, b: '2', c: true);
 }
 ''');
@@ -1408,11 +1849,189 @@
     {
       ExpressionStatement statement = statements[1];
       SimpleIdentifier identifier = statement.expression;
-      expect(identifier.staticElement, vElement);
+      expect(identifier.staticElement, same(vElement));
       expect(identifier.staticType, intType);
     }
   }
 
+  test_local_variable_forIn_identifier_field() async {
+    addTestFile(r'''
+class C {
+  num v;
+  void foo() {
+    for (v in <int>[]) {
+      v;
+    }
+  }
+}
+''');
+    AnalysisResult result = await driver.getResult(testFile);
+    CompilationUnit unit = result.unit;
+    var typeProvider = unit.element.context.typeProvider;
+
+    ClassDeclaration cDeclaration = unit.declarations[0];
+
+    FieldDeclaration vDeclaration = cDeclaration.members[0];
+    VariableDeclaration vNode = vDeclaration.fields.variables[0];
+    FieldElement vElement = vNode.element;
+    expect(vElement.type, typeProvider.numType);
+
+    MethodDeclaration fooDeclaration = cDeclaration.members[1];
+    BlockFunctionBody fooBody = fooDeclaration.body;
+    List<Statement> statements = fooBody.block.statements;
+
+    ForEachStatement forEachStatement = statements[0];
+    Block forBlock = forEachStatement.body;
+
+    expect(forEachStatement.loopVariable, isNull);
+
+    SimpleIdentifier vInFor = forEachStatement.identifier;
+    expect(vInFor.staticElement, same(vElement.setter));
+    expect(vInFor.staticType, typeProvider.numType);
+
+    ExpressionStatement statement = forBlock.statements[0];
+    SimpleIdentifier identifier = statement.expression;
+    expect(identifier.staticElement, same(vElement.getter));
+    expect(identifier.staticType, typeProvider.numType);
+  }
+
+  test_local_variable_forIn_identifier_localVariable() async {
+    addTestFile(r'''
+void main() {
+  num v;
+  for (v in <int>[]) {
+    v;
+  }
+}
+''');
+    AnalysisResult result = await driver.getResult(testFile);
+    CompilationUnit unit = result.unit;
+    var typeProvider = unit.element.context.typeProvider;
+
+    List<Statement> statements = _getMainStatements(result);
+
+    VariableDeclarationStatement vStatement = statements[0];
+    VariableDeclaration vNode = vStatement.variables.variables[0];
+    LocalVariableElement vElement = vNode.element;
+    expect(vElement.type, typeProvider.numType);
+
+    ForEachStatement forEachStatement = statements[1];
+    Block forBlock = forEachStatement.body;
+
+    expect(forEachStatement.loopVariable, isNull);
+
+    SimpleIdentifier vInFor = forEachStatement.identifier;
+    expect(vInFor.staticElement, vElement);
+    expect(vInFor.staticType, typeProvider.numType);
+
+    ExpressionStatement statement = forBlock.statements[0];
+    SimpleIdentifier identifier = statement.expression;
+    expect(identifier.staticElement, same(vElement));
+    expect(identifier.staticType, typeProvider.numType);
+  }
+
+  test_local_variable_forIn_identifier_topLevelVariable() async {
+    addTestFile(r'''
+void main() {
+  for (v in <int>[]) {
+    v;
+  }
+}
+num v;
+''');
+    AnalysisResult result = await driver.getResult(testFile);
+    CompilationUnit unit = result.unit;
+    var typeProvider = unit.element.context.typeProvider;
+
+    List<Statement> statements = _getMainStatements(result);
+
+    TopLevelVariableDeclaration vDeclaration = unit.declarations[1];
+    VariableDeclaration vNode = vDeclaration.variables.variables[0];
+    TopLevelVariableElement vElement = vNode.element;
+    expect(vElement.type, typeProvider.numType);
+
+    ForEachStatement forEachStatement = statements[0];
+    Block forBlock = forEachStatement.body;
+
+    expect(forEachStatement.loopVariable, isNull);
+
+    SimpleIdentifier vInFor = forEachStatement.identifier;
+    expect(vInFor.staticElement, same(vElement.setter));
+    expect(vInFor.staticType, typeProvider.numType);
+
+    ExpressionStatement statement = forBlock.statements[0];
+    SimpleIdentifier identifier = statement.expression;
+    expect(identifier.staticElement, same(vElement.getter));
+    expect(identifier.staticType, typeProvider.numType);
+  }
+
+  test_local_variable_forIn_loopVariable() async {
+    addTestFile(r'''
+void main() {
+  for (var v in <int>[]) {
+    v;
+  }
+}
+''');
+    AnalysisResult result = await driver.getResult(testFile);
+    CompilationUnit unit = result.unit;
+    var typeProvider = unit.element.context.typeProvider;
+
+    List<Statement> statements = _getMainStatements(result);
+
+    ForEachStatement forEachStatement = statements[0];
+    Block forBlock = forEachStatement.body;
+
+    DeclaredIdentifier vNode = forEachStatement.loopVariable;
+    LocalVariableElement vElement = vNode.element;
+    expect(vElement.type, typeProvider.intType);
+
+    expect(vNode.identifier.staticElement, vElement);
+    expect(vNode.identifier.staticType, typeProvider.intType);
+
+    ExpressionStatement statement = forBlock.statements[0];
+    SimpleIdentifier identifier = statement.expression;
+    expect(identifier.staticElement, vElement);
+    expect(identifier.staticType, typeProvider.intType);
+  }
+
+  test_local_variable_forIn_loopVariable_explicitType() async {
+    addTestFile(r'''
+void main() {
+  for (num v in <int>[]) {
+    v;
+  }
+}
+''');
+    AnalysisResult result = await driver.getResult(testFile);
+    CompilationUnit unit = result.unit;
+    var typeProvider = unit.element.context.typeProvider;
+
+    List<Statement> statements = _getMainStatements(result);
+
+    ForEachStatement forEachStatement = statements[0];
+    Block forBlock = forEachStatement.body;
+
+    DeclaredIdentifier vNode = forEachStatement.loopVariable;
+    LocalVariableElement vElement = vNode.element;
+    expect(vElement.type, typeProvider.numType);
+
+    TypeName vTypeName = vNode.type;
+    expect(vTypeName.type, typeProvider.numType);
+
+    SimpleIdentifier vTypeIdentifier = vTypeName.name;
+    expect(vTypeIdentifier.staticElement, typeProvider.numType.element);
+    expect(vTypeIdentifier.staticType, typeProvider.numType);
+
+    expect(vNode.identifier.staticElement, vElement);
+    expect(vNode.identifier.staticType, typeProvider.numType);
+
+    ExpressionStatement statement = forBlock.statements[0];
+    SimpleIdentifier identifier = statement.expression;
+    expect(identifier.staticElement, vElement);
+    expect(identifier.staticType, typeProvider.numType);
+  }
+
   test_local_variable_ofLocalFunction() async {
     addTestFile(r'''
 void main() {
@@ -1478,7 +2097,120 @@
     }
   }
 
-  test_methodInvocation_instanceMethod_generic() async {
+  test_method_namedParameters() async {
+    addTestFile(r'''
+class C {
+  double f(int a, {String b, bool c: false}) {}
+}
+void g(C c) {
+  c.f(1, b: '2', c: true);
+}
+''');
+    String fTypeString = '(int, {b: String, c: bool}) → double';
+
+    AnalysisResult result = await driver.getResult(testFile);
+    ClassDeclaration classDeclaration = result.unit.declarations[0];
+    MethodDeclaration methodDeclaration = classDeclaration.members[0];
+    MethodElement methodElement = methodDeclaration.element;
+
+    var typeProvider = result.unit.element.context.typeProvider;
+    InterfaceType doubleType = typeProvider.doubleType;
+
+    expect(methodElement, isNotNull);
+    expect(methodElement.type.toString(), fTypeString);
+
+    expect(methodDeclaration.name.staticElement, same(methodElement));
+    expect(methodDeclaration.name.staticType, methodElement.type);
+
+    TypeName fReturnTypeNode = methodDeclaration.returnType;
+    expect(fReturnTypeNode.name.staticElement, same(doubleType.element));
+    expect(fReturnTypeNode.type, doubleType);
+    //
+    // Validate the parameters at the declaration site.
+    //
+    List<ParameterElement> elements = methodElement.parameters;
+    expect(elements, hasLength(3));
+
+    List<FormalParameter> nodes = methodDeclaration.parameters.parameters;
+    expect(nodes, hasLength(3));
+
+    _assertSimpleParameter(nodes[0], elements[0],
+        name: 'a',
+        offset: 25,
+        kind: ParameterKind.REQUIRED,
+        type: typeProvider.intType);
+
+    _assertDefaultParameter(nodes[1], elements[1],
+        name: 'b',
+        offset: 36,
+        kind: ParameterKind.NAMED,
+        type: typeProvider.stringType);
+
+    _assertDefaultParameter(nodes[2], elements[2],
+        name: 'c',
+        offset: 44,
+        kind: ParameterKind.NAMED,
+        type: typeProvider.boolType);
+    //
+    // Validate the arguments at the call site.
+    //
+    FunctionDeclaration functionDeclaration = result.unit.declarations[1];
+    BlockFunctionBody body = functionDeclaration.functionExpression.body;
+    ExpressionStatement statement = body.block.statements[0];
+    MethodInvocation invocation = statement.expression;
+    List<Expression> arguments = invocation.argumentList.arguments;
+
+    Expression aArgument = arguments[0];
+    ParameterElement aElement = methodElement.parameters[0];
+    expect(aArgument.staticParameterElement, same(aElement));
+
+    NamedExpression bArgument = arguments[1];
+    ParameterElement bElement = methodElement.parameters[1];
+    expect(bArgument.name.label.staticElement, same(bElement));
+    expect(bArgument.staticParameterElement, same(bElement));
+
+    NamedExpression cArgument = arguments[2];
+    ParameterElement cElement = methodElement.parameters[2];
+    expect(cArgument.name.label.staticElement, same(cElement));
+    expect(cArgument.staticParameterElement, same(cElement));
+  }
+
+  test_methodInvocation_instanceMethod_genericClass() async {
+    addTestFile(r'''
+main() {
+  new C<int, double>().m(1);
+}
+class C<T, U> {
+  void m(T p) {}
+}
+''');
+    AnalysisResult result = await driver.getResult(testFile);
+    List<Statement> mainStatements = _getMainStatements(result);
+
+    ClassDeclaration cNode = result.unit.declarations[1];
+    MethodDeclaration mNode = cNode.members[0];
+    MethodElement mElement = mNode.element;
+
+    {
+      ExpressionStatement statement = mainStatements[0];
+      MethodInvocation invocation = statement.expression;
+      List<Expression> arguments = invocation.argumentList.arguments;
+
+      var invokeTypeStr = '(int) → void';
+      expect(invocation.staticType.toString(), 'void');
+      expect(invocation.staticInvokeType.toString(), invokeTypeStr);
+      if (previewDart2) {
+        expect(invocation.staticInvokeType.element, same(mElement));
+        expect(invocation.methodName.staticElement, same(mElement));
+        expect(invocation.methodName.staticType.toString(), invokeTypeStr);
+      }
+
+      Expression argument = arguments[0];
+      expect(argument.staticParameterElement, mElement.parameters[0]);
+    }
+  }
+
+  test_methodInvocation_instanceMethod_genericClass_genericMethod() async {
     addTestFile(r'''
 main() {
   new C<int>().m(1, 2.3);
@@ -1763,6 +2495,74 @@
     }
   }
 
+  test_prefixedIdentifier_classInstance_instanceField() async {
+    String content = r'''
+main() {
+  var c = new C();
+  c.f;
+}
+class C {
+  int f;
+}
+''';
+    addTestFile(content);
+
+    AnalysisResult result = await driver.getResult(testFile);
+    var typeProvider = result.unit.element.context.typeProvider;
+
+    List<Statement> statements = _getMainStatements(result);
+
+    ClassDeclaration cDeclaration = result.unit.declarations[1];
+    ClassElement cElement = cDeclaration.element;
+    FieldElement fElement = cElement.fields[0];
+
+    VariableDeclarationStatement cStatement = statements[0];
+    VariableElement vElement = cStatement.variables.variables[0].element;
+
+    ExpressionStatement statement = statements[1];
+    PrefixedIdentifier prefixed = statement.expression;
+
+    SimpleIdentifier prefix = prefixed.prefix;
+    expect(prefix.staticElement, same(vElement));
+    expect(prefix.staticType, cElement.type);
+
+    SimpleIdentifier identifier = prefixed.identifier;
+    expect(identifier.staticElement, same(fElement.getter));
+    expect(identifier.staticType, typeProvider.intType);
+  }
+
+  test_prefixedIdentifier_className_staticField() async {
+    String content = r'''
+main() {
+  C.f;
+}
+class C {
+  static f = 0;
+}
+''';
+    addTestFile(content);
+
+    AnalysisResult result = await driver.getResult(testFile);
+    var typeProvider = result.unit.element.context.typeProvider;
+
+    List<Statement> statements = _getMainStatements(result);
+
+    ClassDeclaration cDeclaration = result.unit.declarations[1];
+    ClassElement cElement = cDeclaration.element;
+    FieldElement fElement = cElement.fields[0];
+
+    ExpressionStatement statement = statements[0];
+    PrefixedIdentifier prefixed = statement.expression;
+
+    SimpleIdentifier prefix = prefixed.prefix;
+    expect(prefix.staticElement, same(cElement));
+    expect(prefix.staticType, cElement.type);
+
+    SimpleIdentifier identifier = prefixed.identifier;
+    expect(identifier.staticElement, same(fElement.getter));
+    expect(identifier.staticType, typeProvider.intType);
+  }
+
   test_prefixExpression_local() async {
     String content = r'''
 main() {
@@ -2558,6 +3358,91 @@
     expect(aValue.staticType, typeProvider.intType);
   }
 
+  test_top_function_namedParameters() async {
+    addTestFile(r'''
+double f(int a, {String b, bool c: 1 == 2}) {}
+void main() {
+  f(1, b: '2', c: true);
+}
+''');
+    String fTypeString = '(int, {b: String, c: bool}) → double';
+
+    AnalysisResult result = await driver.getResult(testFile);
+    FunctionDeclaration fDeclaration = result.unit.declarations[0];
+    FunctionElement fElement = fDeclaration.element;
+
+    var typeProvider = result.unit.element.context.typeProvider;
+    InterfaceType doubleType = typeProvider.doubleType;
+
+    expect(fElement, isNotNull);
+    expect(fElement.type.toString(), fTypeString);
+
+    expect(fDeclaration.name.staticElement, same(fElement));
+    expect(fDeclaration.name.staticType, fElement.type);
+
+    TypeName fReturnTypeNode = fDeclaration.returnType;
+    expect(fReturnTypeNode.name.staticElement, same(doubleType.element));
+    expect(fReturnTypeNode.type, doubleType);
+    //
+    // Validate the parameters at the declaration site.
+    //
+    List<ParameterElement> elements = fElement.parameters;
+    expect(elements, hasLength(3));
+
+    List<FormalParameter> nodes =
+        fDeclaration.functionExpression.parameters.parameters;
+    expect(nodes, hasLength(3));
+
+    _assertSimpleParameter(nodes[0], elements[0],
+        name: 'a',
+        offset: 13,
+        kind: ParameterKind.REQUIRED,
+        type: typeProvider.intType);
+
+    DefaultFormalParameter bNode = nodes[1];
+    _assertDefaultParameter(bNode, elements[1],
+        name: 'b',
+        offset: 24,
+        kind: ParameterKind.NAMED,
+        type: typeProvider.stringType);
+    expect(bNode.defaultValue, isNull);
+
+    DefaultFormalParameter cNode = nodes[2];
+    _assertDefaultParameter(cNode, elements[2],
+        name: 'c',
+        offset: 32,
+        kind: ParameterKind.NAMED,
+        type: typeProvider.boolType);
+    {
+      BinaryExpression defaultValue = cNode.defaultValue;
+      expect(defaultValue.staticElement, isNotNull);
+      expect(defaultValue.staticType, typeProvider.boolType);
+    }
+
+    //
+    // Validate the arguments at the call site.
+    //
+    FunctionDeclaration mainDeclaration = result.unit.declarations[1];
+    BlockFunctionBody body = mainDeclaration.functionExpression.body;
+    ExpressionStatement statement = body.block.statements[0];
+    MethodInvocation invocation = statement.expression;
+    List<Expression> arguments = invocation.argumentList.arguments;
+
+    Expression aArgument = arguments[0];
+    ParameterElement aElement = fElement.parameters[0];
+    expect(aArgument.staticParameterElement, same(aElement));
+
+    NamedExpression bArgument = arguments[1];
+    ParameterElement bElement = fElement.parameters[1];
+    expect(bArgument.name.label.staticElement, same(bElement));
+    expect(bArgument.staticParameterElement, same(bElement));
+
+    NamedExpression cArgument = arguments[2];
+    ParameterElement cElement = fElement.parameters[2];
+    expect(cArgument.name.label.staticElement, same(cElement));
+    expect(cArgument.staticParameterElement, same(cElement));
+  }
+
   void _assertDefaultParameter(
       DefaultFormalParameter node, ParameterElement element,
       {String name, int offset, ParameterKind kind, DartType type}) {
diff --git a/pkg/analyzer/test/src/fasta/message_coverage_test.dart b/pkg/analyzer/test/src/fasta/message_coverage_test.dart
index 70ff01a..2911531 100644
--- a/pkg/analyzer/test/src/fasta/message_coverage_test.dart
+++ b/pkg/analyzer/test/src/fasta/message_coverage_test.dart
@@ -180,8 +180,8 @@
         buffer.write('  ');
         buffer.writeln(code);
       }
-      buffer.write(
-          'Remove the cases for these codes from FastaErrorReporter.reportError.');
+      buffer.write('Remove the cases for these codes from '
+          'FastaErrorReporter.reportMessage.');
     }
     if (buffer.isNotEmpty) {
       fail(buffer.toString());
diff --git a/pkg/analyzer/test/src/fasta/resolution_applier_test.dart b/pkg/analyzer/test/src/fasta/resolution_applier_test.dart
index 47da543..3b84c9e 100644
--- a/pkg/analyzer/test/src/fasta/resolution_applier_test.dart
+++ b/pkg/analyzer/test/src/fasta/resolution_applier_test.dart
@@ -35,8 +35,14 @@
   ///    [referencedElements], and [types] to the body of the function.
   /// 3. Verify that everything in the function body that should be resolved
   ///    _is_ resolved.
-  void applyTypes(String content, List<Element> declaredElements,
-      List<Element> referencedElements, List<DartType> types) {
+  void applyTypes(
+      String content,
+      List<Element> declaredElements,
+      List<int> declareElementOffsets,
+      List<Element> referencedElements,
+      List<int> referencedElementOffsets,
+      List<DartType> types,
+      List<int> typeOffsets) {
     CompilationUnit unit = parseCompilationUnit(content);
     expect(unit, isNotNull);
     expect(unit.declarations, hasLength(1));
@@ -45,8 +51,11 @@
     ResolutionApplier applier = new ResolutionApplier(
         new _TestTypeContext(),
         declaredElements,
+        declareElementOffsets,
         referencedElements,
-        types.map((type) => new _KernelWrapperOfType(type)).toList());
+        referencedElementOffsets,
+        types.map((type) => new _KernelWrapperOfType(type)).toList(),
+        typeOffsets);
 
     body.accept(applier);
     applier.checkDone();
@@ -67,15 +76,24 @@
 f(String s, int i) {
   return s + i;
 }
-''', [], [
+''', [], [], [
       _createFunctionParameter('s', 9),
       new MethodElementImpl('+', -1),
       _createFunctionParameter('i', 16),
+    ], [
+      30,
+      32,
+      34
     ], <DartType>[
       typeProvider.stringType,
       new FunctionTypeImpl(new FunctionElementImpl('+', -1)),
       typeProvider.intType,
       typeProvider.stringType,
+    ], [
+      30,
+      32,
+      32,
+      34
     ]);
   }
 
@@ -84,16 +102,26 @@
 f(Object a) {
   return a.b().c();
 }
-''', [], [
+''', [], [], [
       _createFunctionParameter('a', 9),
       new MethodElementImpl('b', -1),
       new MethodElementImpl('c', -1)
+    ], [
+      23,
+      25,
+      29
     ], <DartType>[
       typeProvider.objectType,
       typeProvider.objectType,
       typeProvider.objectType,
       typeProvider.objectType,
       typeProvider.objectType
+    ], [
+      23,
+      25,
+      26,
+      29,
+      30
     ]);
   }
 
@@ -113,50 +141,71 @@
 f() {
   int Function(String, bool x) foo;
 }
-''', [new LocalVariableElementImpl('foo', 37)], [], <DartType>[functionType]);
+''', [new LocalVariableElementImpl('foo', 37)], [37], [], [],
+        <DartType>[functionType], [37]);
   }
 
   void test_listLiteral_const_noAnnotation() {
     applyTypes(r'''
 get f => const ['a', 'b', 'c'];
-''', [], [], <DartType>[
+''', [], [], [], [], <DartType>[
       typeProvider.stringType,
       typeProvider.stringType,
       typeProvider.stringType,
       typeProvider.listType.instantiate([typeProvider.stringType])
+    ], [
+      16,
+      21,
+      26,
+      9
     ]);
   }
 
   void test_listLiteral_const_typeAnnotation() {
     applyTypes(r'''
 get f => const <String>['a', 'b', 'c'];
-''', [], [], <DartType>[
+''', [], [], [], [], <DartType>[
       typeProvider.stringType,
       typeProvider.stringType,
       typeProvider.stringType,
       typeProvider.listType.instantiate([typeProvider.stringType])
+    ], [
+      24,
+      29,
+      34,
+      9
     ]);
   }
 
   void test_listLiteral_noAnnotation() {
     applyTypes(r'''
 get f => ['a', 'b', 'c'];
-''', [], [], <DartType>[
+''', [], [], [], [], <DartType>[
       typeProvider.stringType,
       typeProvider.stringType,
       typeProvider.stringType,
       typeProvider.listType.instantiate([typeProvider.stringType])
+    ], [
+      10,
+      15,
+      20,
+      9
     ]);
   }
 
   void test_listLiteral_typeAnnotation() {
     applyTypes(r'''
 get f => <String>['a', 'b', 'c'];
-''', [], [], <DartType>[
+''', [], [], [], [], <DartType>[
       typeProvider.stringType,
       typeProvider.stringType,
       typeProvider.stringType,
       typeProvider.listType.instantiate([typeProvider.stringType])
+    ], [
+      18,
+      23,
+      28,
+      17
     ]);
   }
 
@@ -169,13 +218,14 @@
 f() {
   Map<String, List<String>> m = {};
 }
-''', [new LocalVariableElementImpl('m', 34)], [], <DartType>[mapType, mapType]);
+''', [new LocalVariableElementImpl('m', 34)], [34], [], [],
+        <DartType>[mapType, mapType], [34, 38]);
   }
 
   void test_mapLiteral_const_noAnnotation() {
     applyTypes(r'''
 get f => const {'a' : 1, 'b' : 2, 'c' : 3};
-''', [], [], <DartType>[
+''', [], [], [], [], <DartType>[
       typeProvider.stringType,
       typeProvider.intType,
       typeProvider.stringType,
@@ -184,13 +234,21 @@
       typeProvider.intType,
       typeProvider.mapType
           .instantiate([typeProvider.stringType, typeProvider.intType])
+    ], [
+      16,
+      22,
+      25,
+      31,
+      34,
+      40,
+      9
     ]);
   }
 
   void test_mapLiteral_const_typeAnnotation() {
     applyTypes(r'''
 get f => const <String, int>{'a' : 1, 'b' : 2, 'c' : 3};
-''', [], [], <DartType>[
+''', [], [], [], [], <DartType>[
       typeProvider.stringType,
       typeProvider.intType,
       typeProvider.stringType,
@@ -199,13 +257,21 @@
       typeProvider.intType,
       typeProvider.mapType
           .instantiate([typeProvider.stringType, typeProvider.intType])
+    ], [
+      29,
+      35,
+      38,
+      44,
+      47,
+      53,
+      9
     ]);
   }
 
   void test_mapLiteral_noAnnotation() {
     applyTypes(r'''
 get f => {'a' : 1, 'b' : 2, 'c' : 3};
-''', [], [], <DartType>[
+''', [], [], [], [], <DartType>[
       typeProvider.stringType,
       typeProvider.intType,
       typeProvider.stringType,
@@ -214,13 +280,21 @@
       typeProvider.intType,
       typeProvider.mapType
           .instantiate([typeProvider.stringType, typeProvider.intType])
+    ], [
+      10,
+      16,
+      19,
+      25,
+      28,
+      34,
+      9
     ]);
   }
 
   void test_mapLiteral_typeAnnotation() {
     applyTypes(r'''
 get f => <String, int>{'a' : 1, 'b' : 2, 'c' : 3};
-''', [], [], <DartType>[
+''', [], [], [], [], <DartType>[
       typeProvider.stringType,
       typeProvider.intType,
       typeProvider.stringType,
@@ -229,6 +303,14 @@
       typeProvider.intType,
       typeProvider.mapType
           .instantiate([typeProvider.stringType, typeProvider.intType])
+    ], [
+      23,
+      29,
+      32,
+      38,
+      41,
+      47,
+      9
     ]);
   }
 
@@ -237,12 +319,18 @@
 f(String s) {
   return s.length;
 }
-''', [], [
+''', [], [], [
       _createFunctionParameter('s', 9),
       new MethodElementImpl('length', -1)
+    ], [
+      23,
+      25
     ], <DartType>[
       typeProvider.stringType,
       typeProvider.intType,
+    ], [
+      23,
+      25
     ]);
   }
 
@@ -251,15 +339,24 @@
 f(String s) {
   return s.substring(3, 7);
 }
-''', [], [
+''', [], [], [
       _createFunctionParameter('s', 9),
       new MethodElementImpl('length', -1)
+    ], [
+      23,
+      25
     ], <DartType>[
       typeProvider.stringType,
       typeProvider.intType,
       typeProvider.intType,
       typeProvider.stringType,
       typeProvider.stringType
+    ], [
+      23,
+      25,
+      34,
+      35,
+      38
     ]);
   }
 
@@ -283,7 +380,8 @@
   A<int, String> foo;
 }
 //typedef B A<B, C>(C x);
-''', [new LocalVariableElementImpl('foo', 23)], [], <DartType>[functionType]);
+''', [new LocalVariableElementImpl('foo', 23)], [], [], [],
+        <DartType>[functionType], []);
   }
 
   /// Return a newly created parameter element with the given [name] and
@@ -323,6 +421,9 @@
   ClassElement get enclosingClassElement => null;
 
   @override
+  DartType get stringType => null;
+
+  @override
   DartType get typeType => null;
 
   @override
diff --git a/pkg/compiler/lib/compiler_new.dart b/pkg/compiler/lib/compiler_new.dart
index 47d39cd..23dda02 100644
--- a/pkg/compiler/lib/compiler_new.dart
+++ b/pkg/compiler/lib/compiler_new.dart
@@ -9,8 +9,11 @@
 
 import 'dart:async';
 
+import 'package:front_end/src/api_unstable/dart2js.dart' as fe;
+
 import 'compiler.dart' show Diagnostic;
 import 'src/apiimpl.dart';
+import 'src/library_loader.dart';
 import 'src/options.dart' show CompilerOptions;
 
 export 'compiler.dart' show Diagnostic, PackagesDiscoveryProvider;
@@ -134,7 +137,10 @@
   /// Use only for debugging and testing.
   final compiler;
 
-  CompilationResult(this.compiler, {this.isSuccess: true});
+  final fe.InitializedCompilerState kernelInitializedCompilerState;
+
+  CompilationResult(this.compiler,
+      {this.isSuccess: true, this.kernelInitializedCompilerState: null});
 }
 
 /// Returns a future that completes to a [CompilationResult] when the Dart
@@ -167,6 +173,12 @@
   CompilerImpl compiler = new CompilerImpl(
       compilerInput, compilerOutput, compilerDiagnostics, compilerOptions);
   return compiler.run(compilerOptions.entryPoint).then((bool success) {
+    if (compiler.libraryLoader is KernelLibraryLoaderTask) {
+      KernelLibraryLoaderTask loader = compiler.libraryLoader;
+      return new CompilationResult(compiler,
+          isSuccess: success,
+          kernelInitializedCompilerState: loader.initializedCompilerState);
+    }
     return new CompilationResult(compiler, isSuccess: success);
   });
 }
diff --git a/pkg/compiler/lib/src/compiler.dart b/pkg/compiler/lib/src/compiler.dart
index a6f981e..a88db74 100644
--- a/pkg/compiler/lib/src/compiler.dart
+++ b/pkg/compiler/lib/src/compiler.dart
@@ -191,7 +191,8 @@
       _reporter = new CompilerDiagnosticReporter(this, options);
     }
     frontendStrategy = options.useKernel
-        ? new KernelFrontEndStrategy(options, reporter, environment)
+        ? new KernelFrontEndStrategy(options, reporter, environment,
+            options.kernelInitializedCompilerState)
         : new ResolutionFrontEndStrategy(this);
     backendStrategy = options.useKernel
         ? new KernelBackendStrategy(this)
diff --git a/pkg/compiler/lib/src/dart2js.dart b/pkg/compiler/lib/src/dart2js.dart
index 2c5ca33..9d89aca 100644
--- a/pkg/compiler/lib/src/dart2js.dart
+++ b/pkg/compiler/lib/src/dart2js.dart
@@ -8,9 +8,9 @@
 import 'dart:convert' show UTF8, LineSplitter;
 import 'dart:io' show exit, File, FileMode, Platform, stdin, stderr;
 
+import 'package:front_end/src/api_unstable/dart2js.dart' as fe;
 import 'package:front_end/src/compute_platform_binaries_location.dart'
     show computePlatformBinariesLocation;
-
 import 'package:package_config/discovery.dart' show findPackages;
 
 import '../compiler_new.dart' as api;
@@ -110,7 +110,8 @@
 
 FormattingDiagnosticHandler diagnosticHandler;
 
-Future<api.CompilationResult> compile(List<String> argv) {
+Future<api.CompilationResult> compile(List<String> argv,
+    {fe.InitializedCompilerState kernelInitializedCompilerState}) {
   Stopwatch wallclock = new Stopwatch()..start();
   stackTraceFilePrefix = '$currentDirectory';
   Uri libraryRoot = currentDirectory;
@@ -603,7 +604,8 @@
       resolutionInputs: resolutionInputs,
       resolutionOutput: resolveOnly ? resolutionOutput : null,
       options: options,
-      environment: environment);
+      environment: environment)
+    ..kernelInitializedCompilerState = kernelInitializedCompilerState;
   return compileFunc(
           compilerOptions, inputProvider, diagnosticHandler, outputProvider)
       .then(compilationDone);
@@ -656,11 +658,13 @@
   exitFunc(1);
 }
 
-Future<api.CompilationResult> compilerMain(List<String> arguments) {
+Future<api.CompilationResult> compilerMain(List<String> arguments,
+    {fe.InitializedCompilerState kernelInitializedCompilerState}) {
   var root = uriPathToNative("/$LIBRARY_ROOT");
   arguments = <String>['--library-root=${Platform.script.toFilePath()}$root']
     ..addAll(arguments);
-  return compile(arguments);
+  return compile(arguments,
+      kernelInitializedCompilerState: kernelInitializedCompilerState);
 }
 
 void help() {
@@ -868,7 +872,8 @@
 /// Set this to `false` in end-to-end tests to avoid generating '.deps' files.
 bool enableWriteString = true;
 
-Future<api.CompilationResult> internalMain(List<String> arguments) {
+Future<api.CompilationResult> internalMain(List<String> arguments,
+    {fe.InitializedCompilerState kernelInitializedCompilerState}) {
   Future onError(exception, trace) {
     // If we are already trying to exit, just continue exiting.
     if (exception == _EXIT_SIGNAL) throw exception;
@@ -890,7 +895,9 @@
   }
 
   try {
-    return compilerMain(arguments).catchError(onError);
+    return compilerMain(arguments,
+            kernelInitializedCompilerState: kernelInitializedCompilerState)
+        .catchError(onError);
   } catch (exception, trace) {
     return onError(exception, trace);
   }
@@ -919,6 +926,7 @@
 
   var stream = stdin.transform(UTF8.decoder).transform(new LineSplitter());
   var subscription;
+  fe.InitializedCompilerState kernelInitializedCompilerState;
   subscription = stream.listen((line) {
     new Future.sync(() {
       subscription.pause();
@@ -927,11 +935,16 @@
       List<String> args = <String>[];
       args.addAll(batchArguments);
       args.addAll(splitLine(line, windows: Platform.isWindows));
-      return internalMain(args);
+      return internalMain(args,
+          kernelInitializedCompilerState: kernelInitializedCompilerState);
     }).catchError((exception, trace) {
       if (!identical(exception, _EXIT_SIGNAL)) {
         exitCode = 253;
       }
+    }).then((api.CompilationResult result) {
+      if (result != null) {
+        kernelInitializedCompilerState = result.kernelInitializedCompilerState;
+      }
     }).whenComplete(() {
       // The testing framework waits for a status line on stdout and
       // stderr before moving to the next test.
diff --git a/pkg/compiler/lib/src/diagnostics/messages.dart b/pkg/compiler/lib/src/diagnostics/messages.dart
index 6c1d26c..97252ba5c 100644
--- a/pkg/compiler/lib/src/diagnostics/messages.dart
+++ b/pkg/compiler/lib/src/diagnostics/messages.dart
@@ -2480,10 +2480,7 @@
 
       MessageKind.UNSUPPORTED_PREFIX_PLUS: const MessageTemplate(
           MessageKind.UNSUPPORTED_PREFIX_PLUS, "'+' is not a prefix operator. ",
-          howToFix: "Try removing '+'.",
-          examples: const [
-            "main() => +2;  // No longer a valid way to write '2'"
-          ]),
+          howToFix: "Try removing '+'."),
 
       MessageKind.MIRRORS_EXPECTED_STRING: const MessageTemplate(
           MessageKind.MIRRORS_EXPECTED_STRING,
diff --git a/pkg/compiler/lib/src/elements/types.dart b/pkg/compiler/lib/src/elements/types.dart
index 26dfbc8..5deca06 100644
--- a/pkg/compiler/lib/src/elements/types.dart
+++ b/pkg/compiler/lib/src/elements/types.dart
@@ -241,6 +241,20 @@
   }
 }
 
+/// Provides a thin model of method type variables for compabitility with the
+/// old compiler behavior in Dart 1: They are treated as if their value were
+/// `dynamic` when used in a type annotation, and as a malformed type when
+/// used in an `as` or `is` expression.
+class Dart1MethodTypeVariableType extends TypeVariableType {
+  Dart1MethodTypeVariableType(TypeVariableEntity element) : super(element);
+
+  @override
+  bool get treatAsDynamic => true;
+
+  @override
+  bool get isMalformed => true;
+}
+
 class TypeVariableType extends DartType {
   final TypeVariableEntity element;
 
diff --git a/pkg/compiler/lib/src/io/kernel_source_information.dart b/pkg/compiler/lib/src/io/kernel_source_information.dart
index ac8d64d..421ed12 100644
--- a/pkg/compiler/lib/src/io/kernel_source_information.dart
+++ b/pkg/compiler/lib/src/io/kernel_source_information.dart
@@ -399,6 +399,11 @@
     }
     return _buildTreeNode(definition.node);
   }
+
+  @override
+  SourceInformation buildGoto(ir.Node node) {
+    return _buildTreeNode(node);
+  }
 }
 
 class KernelSourceLocation extends AbstractSourceLocation {
diff --git a/pkg/compiler/lib/src/io/multi_information.dart b/pkg/compiler/lib/src/io/multi_information.dart
index 821fd71..9f8d909 100644
--- a/pkg/compiler/lib/src/io/multi_information.dart
+++ b/pkg/compiler/lib/src/io/multi_information.dart
@@ -287,6 +287,12 @@
     return new MultiSourceInformation(
         builders.map((b) => b.buildDeclaration(member)).toList());
   }
+
+  @override
+  SourceInformation buildGoto(T node) {
+    return new MultiSourceInformation(
+        builders.map((b) => b.buildGoto(node)).toList());
+  }
 }
 
 class MultiSourceInformation implements SourceInformation {
diff --git a/pkg/compiler/lib/src/io/position_information.dart b/pkg/compiler/lib/src/io/position_information.dart
index 9630474..4363274 100644
--- a/pkg/compiler/lib/src/io/position_information.dart
+++ b/pkg/compiler/lib/src/io/position_information.dart
@@ -350,6 +350,9 @@
 
   @override
   SourceInformation buildSwitchCase(Node node) => buildBegin(node);
+
+  @override
+  SourceInformation buildGoto(Node node) => buildBegin(node);
 }
 
 /// The start, end and closing offsets for a [js.Node].
diff --git a/pkg/compiler/lib/src/io/source_information.dart b/pkg/compiler/lib/src/io/source_information.dart
index 011c6b1..ac33b01 100644
--- a/pkg/compiler/lib/src/io/source_information.dart
+++ b/pkg/compiler/lib/src/io/source_information.dart
@@ -172,6 +172,9 @@
 
   /// Generate [SourceInformation] for the list literal in [node].
   SourceInformation buildListLiteral(T node) => null;
+
+  /// Generate [SourceInformation] for the break/continue in [node].
+  SourceInformation buildGoto(T node) => null;
 }
 
 /// A location in a source file.
diff --git a/pkg/compiler/lib/src/kernel/element_map_impl.dart b/pkg/compiler/lib/src/kernel/element_map_impl.dart
index 5d2530f..9088db4 100644
--- a/pkg/compiler/lib/src/kernel/element_map_impl.dart
+++ b/pkg/compiler/lib/src/kernel/element_map_impl.dart
@@ -1533,6 +1533,15 @@
       // [FunctionTypeParameter] type.
       return const DynamicType();
     }
+    if (node.parameter.parent is ir.FunctionNode &&
+        node.parameter.parent.parent is ir.Procedure) {
+      // Special case for Dart 1 compatibility in checked mode.
+      ir.Procedure typeParameterParent = node.parameter.parent.parent;
+      if (typeParameterParent.kind != ir.ProcedureKind.Factory) {
+        return new Dart1MethodTypeVariableType(
+            elementMap.getTypeVariable(node.parameter));
+      }
+    }
     return new TypeVariableType(elementMap.getTypeVariable(node.parameter));
   }
 
diff --git a/pkg/compiler/lib/src/kernel/kernel_strategy.dart b/pkg/compiler/lib/src/kernel/kernel_strategy.dart
index e4e03e3..e18148c 100644
--- a/pkg/compiler/lib/src/kernel/kernel_strategy.dart
+++ b/pkg/compiler/lib/src/kernel/kernel_strategy.dart
@@ -4,6 +4,8 @@
 
 library dart2js.kernel.frontend_strategy;
 
+import 'package:front_end/src/api_unstable/dart2js.dart' as fe;
+
 import '../../compiler_new.dart' as api;
 import '../common.dart';
 import '../common/backend_api.dart';
@@ -54,8 +56,10 @@
   final Map<MemberEntity, ScopeModel> closureModels =
       <MemberEntity, ScopeModel>{};
 
-  KernelFrontEndStrategy(
-      this._options, DiagnosticReporter reporter, env.Environment environment) {
+  fe.InitializedCompilerState initializedCompilerState;
+
+  KernelFrontEndStrategy(this._options, DiagnosticReporter reporter,
+      env.Environment environment, this.initializedCompilerState) {
     _elementMap = new KernelToElementMapForImpactImpl(
         reporter, environment, this, _options);
   }
@@ -74,7 +78,8 @@
       Measurer measurer) {
     return new KernelLibraryLoaderTask(_options.platformBinaries,
         _options.packageConfig, _elementMap, compilerInput, reporter, measurer,
-        verbose: _options.verbose);
+        verbose: _options.verbose,
+        initializedCompilerState: initializedCompilerState);
   }
 
   @override
diff --git a/pkg/compiler/lib/src/library_loader.dart b/pkg/compiler/lib/src/library_loader.dart
index 59a50e4..b4d108f 100644
--- a/pkg/compiler/lib/src/library_loader.dart
+++ b/pkg/compiler/lib/src/library_loader.dart
@@ -6,7 +6,7 @@
 
 import 'dart:async';
 
-import 'package:front_end/src/api_prototype/front_end.dart' as fe;
+import 'package:front_end/src/api_unstable/dart2js.dart' as fe;
 import 'package:kernel/ast.dart' as ir;
 import 'package:kernel/binary/ast_from_binary.dart' show BinaryBuilder;
 import 'package:kernel/kernel.dart' hide LibraryDependency, Combinator;
@@ -838,9 +838,11 @@
 
   List<LibraryEntity> _allLoadedLibraries;
 
+  fe.InitializedCompilerState initializedCompilerState;
+
   KernelLibraryLoaderTask(this.platformBinaries, this._packageConfig,
       this._elementMap, this.compilerInput, this.reporter, Measurer measurer,
-      {this.verbose: false})
+      {this.verbose: false, this.initializedCompilerState})
       : _allLoadedLibraries = new List<LibraryEntity>(),
         super(measurer);
 
@@ -859,17 +861,17 @@
         program = new ir.Program();
         new BinaryBuilder(input.data).readProgram(program);
       } else {
-        var options = new fe.CompilerOptions()
-          ..verbose = verbose
-          ..fileSystem = new CompilerFileSystem(compilerInput)
-          ..target = new Dart2jsTarget(new TargetFlags())
-          ..linkedDependencies = [
+        initializedCompilerState = fe.initializeCompiler(
+            initializedCompilerState,
+            new Dart2jsTarget(new TargetFlags()),
             platformBinaries.resolve("dart2js_platform.dill"),
-          ]
-          ..packagesFileUri = _packageConfig
-          ..onError = (e) => reportFrontEndMessage(reporter, e);
-
-        program = await fe.kernelForProgram(resolvedUri, options);
+            _packageConfig);
+        program = await fe.compile(
+            initializedCompilerState,
+            verbose,
+            new CompilerFileSystem(compilerInput),
+            (e) => reportFrontEndMessage(reporter, e),
+            resolvedUri);
       }
       if (program == null) return null;
       return createLoadedLibraries(program);
diff --git a/pkg/compiler/lib/src/options.dart b/pkg/compiler/lib/src/options.dart
index 3737dac..466e63a 100644
--- a/pkg/compiler/lib/src/options.dart
+++ b/pkg/compiler/lib/src/options.dart
@@ -4,6 +4,8 @@
 
 library dart2js.src.options;
 
+import 'package:front_end/src/api_unstable/dart2js.dart' as fe;
+
 import '../compiler.dart' show PackagesDiscoveryProvider;
 import 'commandline_options.dart' show Flags;
 
@@ -61,6 +63,9 @@
   /// flags.
   final Map<String, dynamic> environment;
 
+  /// A possibly null state object for kernel compilation.
+  fe.InitializedCompilerState kernelInitializedCompilerState;
+
   /// Whether we allow mocking compilation of libraries such as dart:io and
   /// dart:html for unit testing purposes.
   final bool allowMockCompilation;
diff --git a/pkg/compiler/lib/src/ssa/builder.dart b/pkg/compiler/lib/src/ssa/builder.dart
index 69fc945..4ac1aa3 100644
--- a/pkg/compiler/lib/src/ssa/builder.dart
+++ b/pkg/compiler/lib/src/ssa/builder.dart
@@ -1416,8 +1416,12 @@
           tryInlineMethod(body, null, null, bodyCallInputs, function)) {
         pop();
       } else {
+        ConstructorBodyElement declaration = body.declaration;
         HInvokeConstructorBody invoke = new HInvokeConstructorBody(
-            body.declaration, bodyCallInputs, commonMasks.nonNullType);
+            declaration,
+            bodyCallInputs,
+            commonMasks.nonNullType,
+            sourceInformationBuilder.buildDeclaration(constructor));
         invoke.sideEffects = closedWorld.getSideEffectsOfElement(constructor);
         add(invoke);
       }
@@ -1485,7 +1489,7 @@
       // because that is where the type guards will also be inserted.
       // This way we ensure that a type guard will dominate the type
       // check.
-      signature.orderedForEachParameter((_parameterElement) {
+      signature.forEachParameter((_parameterElement) {
         ParameterElement parameterElement = _parameterElement;
         if (element.isGenerativeConstructorBody) {
           if (closureDataLookup
@@ -1888,7 +1892,7 @@
         loopEntryBlock.setBlockFlow(info, current);
         jumpHandler.forEachBreak((HBreak breakInstruction, _) {
           HBasicBlock block = breakInstruction.block;
-          block.addAtExit(new HBreak.toLabel(label));
+          block.addAtExit(new HBreak.toLabel(label, sourceInformation));
           block.remove(breakInstruction);
         });
       }
@@ -5440,10 +5444,10 @@
     JumpHandler handler = jumpTargets[target];
     assert(handler != null);
     if (node.target == null) {
-      handler.generateBreak();
+      handler.generateBreak(sourceInformationBuilder.buildGoto(node));
     } else {
       LabelDefinition label = elements.getTargetLabel(node);
-      handler.generateBreak(label);
+      handler.generateBreak(sourceInformationBuilder.buildGoto(node), label);
     }
   }
 
@@ -5454,11 +5458,11 @@
     JumpHandler handler = jumpTargets[target];
     assert(handler != null);
     if (node.target == null) {
-      handler.generateContinue();
+      handler.generateContinue(sourceInformationBuilder.buildGoto(node));
     } else {
       LabelDefinition label = elements.getTargetLabel(node);
       assert(label != null);
-      handler.generateContinue(label);
+      handler.generateContinue(sourceInformationBuilder.buildGoto(node), label);
     }
   }
 
@@ -6050,17 +6054,21 @@
     }
 
     void buildSwitchCase(ast.SwitchCase switchCase) {
+      SourceInformation caseSourceInformation = sourceInformation;
       if (switchCase != null) {
+        caseSourceInformation = sourceInformationBuilder.buildGoto(switchCase);
         // Generate 'target = i; break;' for switch case i.
         int index = caseIndex[switchCase];
         HInstruction value = graph.addConstantInt(index, closedWorld);
-        localsHandler.updateLocal(switchTarget, value);
+        localsHandler.updateLocal(switchTarget, value,
+            sourceInformation: caseSourceInformation);
       } else {
         // Generate synthetic default case 'target = null; break;'.
         HInstruction value = graph.addConstantNull(closedWorld);
-        localsHandler.updateLocal(switchTarget, value);
+        localsHandler.updateLocal(switchTarget, value,
+            sourceInformation: caseSourceInformation);
       }
-      jumpTargets[switchTarget].generateBreak();
+      jumpTargets[switchTarget].generateBreak(caseSourceInformation);
     }
 
     handleSwitch(node, jumpHandler, buildExpression, switchCases, getConstants,
@@ -6083,7 +6091,7 @@
         if (!isAborted()) {
           // Ensure that we break the loop if the case falls through. (This
           // is only possible for the last case.)
-          jumpTargets[switchTarget].generateBreak();
+          jumpTargets[switchTarget].generateBreak(sourceInformation);
         }
       }
 
@@ -6129,7 +6137,8 @@
           node: node,
           visitCondition: buildCondition,
           visitThen: buildLoop,
-          visitElse: () => {});
+          visitElse: () => {},
+          sourceInformation: sourceInformation);
     }
   }
 
@@ -6196,7 +6205,7 @@
           // If there is no default, we will add one later to avoid
           // the critical edge. So we generate a break statement to make
           // sure the last case does not fall through to the default case.
-          jumpHandler.generateBreak();
+          jumpHandler.generateBreak(sourceInformation);
         }
       }
       statements.add(
@@ -7038,7 +7047,7 @@
     if (!checkOrTrustTypes) return;
 
     FunctionSignature signature = function.functionSignature;
-    signature.orderedForEachParameter((_parameter) {
+    signature.forEachParameter((_parameter) {
       ParameterElement parameter = _parameter;
       HInstruction argument = builder.localsHandler.readLocal(parameter);
       potentiallyCheckOrTrustType(argument, parameter.type);
diff --git a/pkg/compiler/lib/src/ssa/builder_kernel.dart b/pkg/compiler/lib/src/ssa/builder_kernel.dart
index e3a2cdf..22975c1 100644
--- a/pkg/compiler/lib/src/ssa/builder_kernel.dart
+++ b/pkg/compiler/lib/src/ssa/builder_kernel.dart
@@ -534,7 +534,11 @@
         }
 
         // TODO(redemption): Try to inline [body].
-        _invokeConstructorBody(body, bodyCallInputs);
+        _invokeConstructorBody(
+            body,
+            bodyCallInputs,
+            _sourceInformationBuilder
+                .buildDeclaration(_elementMap.getMember(constructor)));
       });
     }
 
@@ -553,12 +557,12 @@
     return false;
   }
 
-  void _invokeConstructorBody(
-      ir.Constructor constructor, List<HInstruction> inputs) {
+  void _invokeConstructorBody(ir.Constructor constructor,
+      List<HInstruction> inputs, SourceInformation sourceInformation) {
     // TODO(sra): Inline the constructor body.
     MemberEntity constructorBody = _elementMap.getConstructorBody(constructor);
     HInvokeConstructorBody invoke = new HInvokeConstructorBody(
-        constructorBody, inputs, commonMasks.nonNullType);
+        constructorBody, inputs, commonMasks.nonNullType, sourceInformation);
     add(invoke);
   }
 
@@ -841,6 +845,7 @@
   void buildConstructorBody(ir.Constructor constructor) {
     openFunction(constructor.function);
     _addClassTypeVariablesIfNeeded(constructor);
+    _potentiallyAddFunctionParameterTypeChecks(constructor.function);
     constructor.function.body.accept(this);
     closeFunction();
   }
@@ -864,20 +869,18 @@
       FunctionEntity method = _elementMap.getMethod(parent);
       if (!_commonElements.operatorEqHandlesNullArgument(method)) {
         handleIf(
-          visitCondition: () {
-            HParameterValue parameter = parameters.values.first;
-            push(new HIdentity(parameter, graph.addConstantNull(closedWorld),
-                null, commonMasks.boolType));
-          },
-          visitThen: () {
-            closeAndGotoExit(new HReturn(
-                graph.addConstantBool(false, closedWorld),
-                _sourceInformationBuilder.buildReturn(functionNode)));
-          },
-          visitElse: null,
-          // TODO(27394): Add sourceInformation via
-          // `_sourceInformationBuilder.buildIf(?)`.
-        );
+            visitCondition: () {
+              HParameterValue parameter = parameters.values.first;
+              push(new HIdentity(parameter, graph.addConstantNull(closedWorld),
+                  null, commonMasks.boolType));
+            },
+            visitThen: () {
+              closeAndGotoExit(new HReturn(
+                  graph.addConstantBool(false, closedWorld),
+                  _sourceInformationBuilder.buildReturn(functionNode)));
+            },
+            visitElse: null,
+            sourceInformation: _sourceInformationBuilder.buildIf(functionNode));
       }
     }
     functionNode.body.accept(this);
@@ -1391,17 +1394,23 @@
       TypeMask mask = _typeInferenceMap.typeOfIterator(node);
       node.iterable.accept(this);
       HInstruction receiver = pop();
-      _pushDynamicInvocation(node, mask, <HInstruction>[receiver],
-          _sourceInformationBuilder.buildForInIterator(node),
-          selector: Selectors.iterator);
+      _pushDynamicInvocation(
+          node,
+          mask,
+          Selectors.iterator,
+          <HInstruction>[receiver],
+          _sourceInformationBuilder.buildForInIterator(node));
       iterator = pop();
     }
 
     HInstruction buildCondition() {
       TypeMask mask = _typeInferenceMap.typeOfIteratorMoveNext(node);
-      _pushDynamicInvocation(node, mask, <HInstruction>[iterator],
-          _sourceInformationBuilder.buildForInMoveNext(node),
-          selector: Selectors.moveNext);
+      _pushDynamicInvocation(
+          node,
+          mask,
+          Selectors.moveNext,
+          <HInstruction>[iterator],
+          _sourceInformationBuilder.buildForInMoveNext(node));
       return popBoolified();
     }
 
@@ -1409,8 +1418,8 @@
       SourceInformation sourceInformation =
           _sourceInformationBuilder.buildForInCurrent(node);
       TypeMask mask = _typeInferenceMap.typeOfIteratorCurrent(node);
-      _pushDynamicInvocation(node, mask, [iterator], sourceInformation,
-          selector: Selectors.current);
+      _pushDynamicInvocation(
+          node, mask, Selectors.current, [iterator], sourceInformation);
 
       Local loopVariableLocal = localsMap.getLocalVariable(node.variable);
       HInstruction value = typeBuilder.potentiallyCheckOrTrustType(
@@ -1451,9 +1460,8 @@
 
     HInstruction buildCondition() {
       TypeMask mask = _typeInferenceMap.typeOfIteratorMoveNext(node);
-      _pushDynamicInvocation(node, mask, [streamIterator],
-          _sourceInformationBuilder.buildForInMoveNext(node),
-          selector: Selectors.moveNext);
+      _pushDynamicInvocation(node, mask, Selectors.moveNext, [streamIterator],
+          _sourceInformationBuilder.buildForInMoveNext(node));
       HInstruction future = pop();
       push(new HAwait(future, closedWorld.commonMasks.dynamicType));
       return popBoolified();
@@ -1461,9 +1469,8 @@
 
     void buildBody() {
       TypeMask mask = _typeInferenceMap.typeOfIteratorCurrent(node);
-      _pushDynamicInvocation(node, mask, [streamIterator],
-          _sourceInformationBuilder.buildForInIterator(node),
-          selector: Selectors.current);
+      _pushDynamicInvocation(node, mask, Selectors.current, [streamIterator],
+          _sourceInformationBuilder.buildForInIterator(node));
       localsHandler.updateLocal(
           localsMap.getLocalVariable(node.variable), pop());
       node.body.accept(this);
@@ -1486,9 +1493,8 @@
         _sourceInformationBuilder.buildLoop(node));
 
     void finalizerFunction() {
-      _pushDynamicInvocation(node, null, [streamIterator],
-          _sourceInformationBuilder.buildGeneric(node),
-          selector: Selectors.cancel);
+      _pushDynamicInvocation(node, null, Selectors.cancel, [streamIterator],
+          _sourceInformationBuilder.buildGeneric(node));
       add(new HAwait(pop(), closedWorld.commonMasks.dynamicType));
     }
 
@@ -1674,7 +1680,7 @@
         loopEntryBlock.setBlockFlow(info, current);
         jumpHandler.forEachBreak((HBreak breakInstruction, _) {
           HBasicBlock block = breakInstruction.block;
-          block.addAtExit(new HBreak.toLabel(label));
+          block.addAtExit(new HBreak.toLabel(label, sourceInformation));
           block.remove(breakInstruction);
         });
       }
@@ -1819,17 +1825,19 @@
     assert(target != null);
     JumpHandler handler = jumpTargets[target];
     assert(handler != null);
+    SourceInformation sourceInformation =
+        _sourceInformationBuilder.buildGoto(node);
     if (localsMap.generateContinueForBreak(node)) {
       if (handler.labels.isNotEmpty) {
-        handler.generateContinue(handler.labels.first);
+        handler.generateContinue(sourceInformation, handler.labels.first);
       } else {
-        handler.generateContinue();
+        handler.generateContinue(sourceInformation);
       }
     } else {
       if (handler.labels.isNotEmpty) {
-        handler.generateBreak(handler.labels.first);
+        handler.generateBreak(sourceInformation, handler.labels.first);
       } else {
-        handler.generateBreak();
+        handler.generateBreak(sourceInformation);
       }
     }
   }
@@ -1903,7 +1911,8 @@
     JumpHandler handler = jumpTargets[target];
     assert(handler != null);
     assert(target.labels.isNotEmpty);
-    handler.generateContinue(target.labels.first);
+    handler.generateContinue(
+        _sourceInformationBuilder.buildGoto(node), target.labels.first);
   }
 
   @override
@@ -2036,17 +2045,21 @@
     }
 
     void buildSwitchCase(ir.SwitchCase switchCase) {
+      SourceInformation caseSourceInformation = sourceInformation;
       if (switchCase != null) {
+        caseSourceInformation = _sourceInformationBuilder.buildGoto(switchCase);
         // Generate 'target = i; break;' for switch case i.
         int index = caseIndex[switchCase];
         HInstruction value = graph.addConstantInt(index, closedWorld);
-        localsHandler.updateLocal(switchTarget, value);
+        localsHandler.updateLocal(switchTarget, value,
+            sourceInformation: caseSourceInformation);
       } else {
         // Generate synthetic default case 'target = null; break;'.
         HInstruction nullValue = graph.addConstantNull(closedWorld);
-        localsHandler.updateLocal(switchTarget, nullValue);
+        localsHandler.updateLocal(switchTarget, nullValue,
+            sourceInformation: caseSourceInformation);
       }
-      jumpTargets[switchTarget].generateBreak();
+      jumpTargets[switchTarget].generateBreak(caseSourceInformation);
     }
 
     _handleSwitch(
@@ -2077,7 +2090,7 @@
         if (!isAborted()) {
           // Ensure that we break the loop if the case falls through. (This
           // is only possible for the last case.)
-          jumpTargets[switchTarget].generateBreak();
+          jumpTargets[switchTarget].generateBreak(sourceInformation);
         }
       }
 
@@ -2125,7 +2138,8 @@
           node: switchStatement,
           visitCondition: buildCondition,
           visitThen: buildLoop,
-          visitElse: () => {});
+          visitElse: () => {},
+          sourceInformation: sourceInformation);
     }
   }
 
@@ -2181,7 +2195,7 @@
         // If there is no default, we will add one later to avoid
         // the critical edge. So we generate a break statement to make
         // sure the last case does not fall through to the default case.
-        jumpHandler.generateBreak();
+        jumpHandler.generateBreak(sourceInformation);
       }
       statements.add(
           new HSubGraphBlockInformation(new SubGraph(block, lastOpenedBlock)));
@@ -2558,8 +2572,12 @@
     node.receiver.accept(this);
     HInstruction receiver = pop();
 
-    _pushDynamicInvocation(node, _typeInferenceMap.typeOfGet(node),
-        <HInstruction>[receiver], _sourceInformationBuilder.buildGet(node));
+    _pushDynamicInvocation(
+        node,
+        _typeInferenceMap.typeOfGet(node),
+        new Selector.getter(_elementMap.getName(node.name)),
+        <HInstruction>[receiver],
+        _sourceInformationBuilder.buildGet(node));
   }
 
   @override
@@ -2586,6 +2604,7 @@
     _pushDynamicInvocation(
         node,
         _typeInferenceMap.typeOfSet(node, closedWorld),
+        new Selector.setter(_elementMap.getName(node.name)),
         <HInstruction>[receiver, value],
         _sourceInformationBuilder.buildAssignment(node));
 
@@ -2600,10 +2619,12 @@
 
     // Fake direct call with a dynamic call.
     // TODO(sra): Implement direct invocations properly.
-    _pushDynamicInvocation(node, _typeInferenceMap.typeOfDirectGet(node),
-        <HInstruction>[receiver], _sourceInformationBuilder.buildGet(node),
-        selector:
-            new Selector.getter(_elementMap.getMember(node.target).memberName));
+    _pushDynamicInvocation(
+        node,
+        _typeInferenceMap.typeOfDirectGet(node),
+        new Selector.getter(_elementMap.getMember(node.target).memberName),
+        <HInstruction>[receiver],
+        _sourceInformationBuilder.buildGet(node));
   }
 
   @override
@@ -3515,10 +3536,53 @@
     push(instruction);
   }
 
-  void _pushDynamicInvocation(ir.Node node, TypeMask mask,
-      List<HInstruction> arguments, SourceInformation sourceInformation,
-      {Selector selector}) {
-    // TODO(redemption): Try to inline single targets.
+  void _pushDynamicInvocation(ir.Node node, TypeMask mask, Selector selector,
+      List<HInstruction> arguments, SourceInformation sourceInformation) {
+    // We prefer to not inline certain operations on indexables,
+    // because the constant folder will handle them better and turn
+    // them into simpler instructions that allow further
+    // optimizations.
+    bool isOptimizableOperationOnIndexable(
+        Selector selector, MemberEntity element) {
+      bool isLength = selector.isGetter && selector.name == "length";
+      if (isLength || selector.isIndex) {
+        return closedWorld.isSubtypeOf(
+            element.enclosingClass, commonElements.jsIndexableClass);
+      } else if (selector.isIndexSet) {
+        return closedWorld.isSubtypeOf(
+            element.enclosingClass, commonElements.jsMutableIndexableClass);
+      } else {
+        return false;
+      }
+    }
+
+    bool isOptimizableOperation(Selector selector, MemberEntity element) {
+      ClassEntity cls = element.enclosingClass;
+      if (isOptimizableOperationOnIndexable(selector, element)) return true;
+      if (!interceptorData.interceptedClasses.contains(cls)) return false;
+      if (selector.isOperator) return true;
+      if (selector.isSetter) return true;
+      if (selector.isIndex) return true;
+      if (selector.isIndexSet) return true;
+      if (element == commonElements.jsArrayAdd ||
+          element == commonElements.jsArrayRemoveLast ||
+          element == commonElements.jsStringSplit) {
+        return true;
+      }
+      return false;
+    }
+
+    MemberEntity element = closedWorld.locateSingleElement(selector, mask);
+    if (element != null &&
+        !element.isField &&
+        !(element.isGetter && selector.isCall) &&
+        !(element.isFunction && selector.isGetter) &&
+        !isOptimizableOperation(selector, element)) {
+      if (_tryInlineMethod(
+          element, selector, mask, arguments, node, sourceInformation)) {
+        return;
+      }
+    }
 
     HInstruction receiver = arguments.first;
     List<HInstruction> inputs = <HInstruction>[];
@@ -3682,7 +3746,6 @@
     funcExpression.function.accept(this);
   }
 
-  // TODO(het): Decide when to inline
   @override
   void visitMethodInvocation(ir.MethodInvocation invocation) {
     invocation.receiver.accept(this);
@@ -3691,6 +3754,7 @@
     _pushDynamicInvocation(
         invocation,
         _typeInferenceMap.typeOfInvocation(invocation, closedWorld),
+        selector,
         <HInstruction>[receiver]..addAll(
             _visitArgumentsForDynamicTarget(selector, invocation.arguments)),
         _sourceInformationBuilder.buildCall(invocation.receiver, invocation));
diff --git a/pkg/compiler/lib/src/ssa/jump_handler.dart b/pkg/compiler/lib/src/ssa/jump_handler.dart
index aa6f45a..d8dc2ee 100644
--- a/pkg/compiler/lib/src/ssa/jump_handler.dart
+++ b/pkg/compiler/lib/src/ssa/jump_handler.dart
@@ -4,6 +4,7 @@
 
 import '../common.dart';
 import '../elements/jumps.dart';
+import '../io/source_information.dart';
 import '../tree/tree.dart' as ast;
 
 import 'graph_builder.dart';
@@ -23,8 +24,10 @@
   factory JumpHandler(GraphBuilder builder, JumpTarget target) {
     return new TargetJumpHandler(builder, target);
   }
-  void generateBreak([LabelDefinition label]);
-  void generateContinue([LabelDefinition label]);
+  void generateBreak(SourceInformation sourceInformation,
+      [LabelDefinition label]);
+  void generateContinue(SourceInformation sourceInformation,
+      [LabelDefinition label]);
   void forEachBreak(void action(HBreak instruction, LocalsHandler locals));
   void forEachContinue(
       void action(HContinue instruction, LocalsHandler locals));
@@ -43,12 +46,14 @@
 
   NullJumpHandler(this.reporter);
 
-  void generateBreak([LabelDefinition label]) {
+  void generateBreak(SourceInformation sourceInformation,
+      [LabelDefinition label]) {
     reporter.internalError(CURRENT_ELEMENT_SPANNABLE,
         'NullJumpHandler.generateBreak should not be called.');
   }
 
-  void generateContinue([LabelDefinition label]) {
+  void generateContinue(SourceInformation sourceInformation,
+      [LabelDefinition label]) {
     reporter.internalError(CURRENT_ELEMENT_SPANNABLE,
         'NullJumpHandler.generateContinue should not be called.');
   }
@@ -79,24 +84,26 @@
     builder.jumpTargets[target] = this;
   }
 
-  void generateBreak([LabelDefinition label]) {
+  void generateBreak(SourceInformation sourceInformation,
+      [LabelDefinition label]) {
     HInstruction breakInstruction;
     if (label == null) {
-      breakInstruction = new HBreak(target);
+      breakInstruction = new HBreak(target, sourceInformation);
     } else {
-      breakInstruction = new HBreak.toLabel(label);
+      breakInstruction = new HBreak.toLabel(label, sourceInformation);
     }
     LocalsHandler locals = new LocalsHandler.from(builder.localsHandler);
     builder.close(breakInstruction);
     jumps.add(new _JumpHandlerEntry(breakInstruction, locals));
   }
 
-  void generateContinue([LabelDefinition label]) {
+  void generateContinue(SourceInformation sourceInformation,
+      [LabelDefinition label]) {
     HInstruction continueInstruction;
     if (label == null) {
-      continueInstruction = new HContinue(target);
+      continueInstruction = new HContinue(target, sourceInformation);
     } else {
-      continueInstruction = new HContinue.toLabel(label);
+      continueInstruction = new HContinue.toLabel(label, sourceInformation);
       // Switch case continue statements must be handled by the
       // [SwitchCaseJumpHandler].
       assert(!label.target.isSwitchCase);
@@ -157,19 +164,20 @@
   SwitchCaseJumpHandler(GraphBuilder builder, JumpTarget target)
       : super(builder, target);
 
-  void generateBreak([LabelDefinition label]) {
+  void generateBreak(SourceInformation sourceInformation,
+      [LabelDefinition label]) {
     if (label == null) {
       // Creates a special break instruction for the synthetic loop generated
       // for a switch statement with continue statements. See
       // [SsaFromAstMixin.buildComplexSwitchStatement] for detail.
 
       HInstruction breakInstruction =
-          new HBreak(target, breakSwitchContinueLoop: true);
+          new HBreak(target, sourceInformation, breakSwitchContinueLoop: true);
       LocalsHandler locals = new LocalsHandler.from(builder.localsHandler);
       builder.close(breakInstruction);
       jumps.add(new _JumpHandlerEntry(breakInstruction, locals));
     } else {
-      super.generateBreak(label);
+      super.generateBreak(sourceInformation, label);
     }
   }
 
@@ -177,7 +185,8 @@
     return label != null && targetIndexMap.containsKey(label.target);
   }
 
-  void generateContinue([LabelDefinition label]) {
+  void generateContinue(SourceInformation sourceInformation,
+      [LabelDefinition label]) {
     if (isContinueToSwitchCase(label)) {
       // Creates the special instructions 'label = i; continue l;' used in
       // switch statements with continue statements. See
@@ -189,12 +198,13 @@
       builder.localsHandler.updateLocal(target, value);
 
       assert(label.target.labels.contains(label));
-      HInstruction continueInstruction = new HContinue(target);
+      HInstruction continueInstruction =
+          new HContinue(target, sourceInformation);
       LocalsHandler locals = new LocalsHandler.from(builder.localsHandler);
       builder.close(continueInstruction);
       jumps.add(new _JumpHandlerEntry(continueInstruction, locals));
     } else {
-      super.generateContinue(label);
+      super.generateContinue(sourceInformation, label);
     }
   }
 
diff --git a/pkg/compiler/lib/src/ssa/loop_handler.dart b/pkg/compiler/lib/src/ssa/loop_handler.dart
index 719ab91..4bace0e 100644
--- a/pkg/compiler/lib/src/ssa/loop_handler.dart
+++ b/pkg/compiler/lib/src/ssa/loop_handler.dart
@@ -210,7 +210,7 @@
 
         jumpHandler.forEachBreak((HBreak breakInstruction, _) {
           HBasicBlock block = breakInstruction.block;
-          block.addAtExit(new HBreak.toLabel(label));
+          block.addAtExit(new HBreak.toLabel(label, sourceInformation));
           block.remove(breakInstruction);
         });
       }
diff --git a/pkg/compiler/lib/src/ssa/nodes.dart b/pkg/compiler/lib/src/ssa/nodes.dart
index 45be84a..a373b52 100644
--- a/pkg/compiler/lib/src/ssa/nodes.dart
+++ b/pkg/compiler/lib/src/ssa/nodes.dart
@@ -1850,7 +1850,14 @@
   // The 'inputs' are
   //     [receiver, arg1, ..., argN] or
   //     [interceptor, receiver, arg1, ... argN].
-  HInvokeConstructorBody(element, inputs, type) : super(element, inputs, type);
+  HInvokeConstructorBody(
+      ConstructorBodyEntity element,
+      List<HInstruction> inputs,
+      TypeMask type,
+      SourceInformation sourceInformation)
+      : super(element, inputs, type) {
+    this.sourceInformation = sourceInformation;
+  }
 
   String toString() => 'invoke constructor body: ${element.name}';
   accept(HVisitor visitor) => visitor.visitInvokeConstructorBody(this);
@@ -2368,13 +2375,17 @@
 abstract class HJump extends HControlFlow {
   final JumpTarget target;
   final LabelDefinition label;
-  HJump(this.target)
+  HJump(this.target, SourceInformation sourceInformation)
       : label = null,
-        super(const <HInstruction>[]);
-  HJump.toLabel(LabelDefinition label)
+        super(const <HInstruction>[]) {
+    this.sourceInformation = sourceInformation;
+  }
+  HJump.toLabel(LabelDefinition label, SourceInformation sourceInformation)
       : label = label,
         target = label.target,
-        super(const <HInstruction>[]);
+        super(const <HInstruction>[]) {
+    this.sourceInformation = sourceInformation;
+  }
 }
 
 class HBreak extends HJump {
@@ -2382,19 +2393,30 @@
   /// generated for a switch statement with continue statements. See
   /// [SsaFromAstMixin.buildComplexSwitchStatement] for detail.
   final bool breakSwitchContinueLoop;
-  HBreak(JumpTarget target, {bool this.breakSwitchContinueLoop: false})
-      : super(target);
-  HBreak.toLabel(LabelDefinition label)
+
+  HBreak(JumpTarget target, SourceInformation sourceInformation,
+      {bool this.breakSwitchContinueLoop: false})
+      : super(target, sourceInformation);
+
+  HBreak.toLabel(LabelDefinition label, SourceInformation sourceInformation)
       : breakSwitchContinueLoop = false,
-        super.toLabel(label);
-  toString() => (label != null) ? 'break ${label.labelName}' : 'break';
+        super.toLabel(label, sourceInformation);
+
+  String toString() => (label != null) ? 'break ${label.labelName}' : 'break';
+
   accept(HVisitor visitor) => visitor.visitBreak(this);
 }
 
 class HContinue extends HJump {
-  HContinue(JumpTarget target) : super(target);
-  HContinue.toLabel(LabelDefinition label) : super.toLabel(label);
-  toString() => (label != null) ? 'continue ${label.labelName}' : 'continue';
+  HContinue(JumpTarget target, SourceInformation sourceInformation)
+      : super(target, sourceInformation);
+
+  HContinue.toLabel(LabelDefinition label, SourceInformation sourceInformation)
+      : super.toLabel(label, sourceInformation);
+
+  String toString() =>
+      (label != null) ? 'continue ${label.labelName}' : 'continue';
+
   accept(HVisitor visitor) => visitor.visitContinue(this);
 }
 
diff --git a/pkg/compiler/tool/status_files/update_from_log.dart b/pkg/compiler/tool/status_files/update_from_log.dart
index d934f20..9f875fa 100644
--- a/pkg/compiler/tool/status_files/update_from_log.dart
+++ b/pkg/compiler/tool/status_files/update_from_log.dart
@@ -247,7 +247,26 @@
     }
     int begin = contents.indexOf('\n', sectionDeclaration) + 1;
     assert(begin != 0);
-    int end = contents.indexOf('\n[', begin + 1);
+    int newlinePos = contents.indexOf('\n', begin + 1);
+    int end = newlinePos;
+    while (true) {
+      if (newlinePos == -1) break;
+      if (newlinePos + 1 < contents.length) {
+        if (contents[newlinePos + 1] == '[') {
+          // We've found the end of the section
+          break;
+        } else if (contents[newlinePos + 1] == '#') {
+          // We've found a commented out line.  This line might belong to the
+          // next section.
+          newlinePos = contents.indexOf('\n', newlinePos + 1);
+          continue;
+        }
+      }
+      // We've found an ordinary line.  It's part of this section, so update
+      // end.
+      newlinePos = contents.indexOf('\n', newlinePos + 1);
+      end = newlinePos;
+    }
     end = end == -1 ? contents.length : end + 1;
     return new ConfigurationInSuiteSection(
         suite, statusFile, contents, begin, end);
diff --git a/pkg/dev_compiler/lib/src/analyzer/code_generator.dart b/pkg/dev_compiler/lib/src/analyzer/code_generator.dart
index f2ac0ed..1b60aec 100644
--- a/pkg/dev_compiler/lib/src/analyzer/code_generator.dart
+++ b/pkg/dev_compiler/lib/src/analyzer/code_generator.dart
@@ -5091,7 +5091,8 @@
       _emitNormalFormalParameter(node);
 
   @override
-  JS.This visitThisExpression(ThisExpression node) => new JS.This();
+  JS.This visitThisExpression(ThisExpression node) =>
+      new JS.This()..sourceInformation = node;
 
   @override
   JS.Expression visitSuperExpression(SuperExpression node) => new JS.Super();
@@ -5849,7 +5850,11 @@
     }
 
     useExtension ??= _isSymbolizedMember(type, name);
-    name = JS.memberNameForDartMember(name);
+    // Rename members that conflict with standard JS members unless we are
+    // actually try to access those JS members via interop.
+    var isExternal = element != null &&
+        !(element is ExecutableElement && !element.isExternal);
+    name = JS.memberNameForDartMember(name, isExternal);
     if (useExtension) {
       return _getExtensionSymbolInternal(name);
     }
diff --git a/pkg/dev_compiler/lib/src/compiler/js_names.dart b/pkg/dev_compiler/lib/src/compiler/js_names.dart
index bb6d03e..8db3036 100644
--- a/pkg/dev_compiler/lib/src/compiler/js_names.dart
+++ b/pkg/dev_compiler/lib/src/compiler/js_names.dart
@@ -322,7 +322,7 @@
 /// Returns the JS member name for a public Dart instance member, before it
 /// is symbolized; generally you should use [_emitMemberName] or
 /// [_declareMemberName] instead of this.
-String memberNameForDartMember(String name) {
+String memberNameForDartMember(String name, [bool isExternal = false]) {
   // When generating synthetic names, we use _ as the prefix, since Dart names
   // won't have this, nor will static names reach here.
   switch (name) {
@@ -336,7 +336,8 @@
       return '_equals';
     case 'constructor':
     case 'prototype':
-      return '_$name';
+      // If [isExternal], assume the JS member is intended.
+      return isExternal ? name : '_$name';
   }
   return name;
 }
diff --git a/pkg/dev_compiler/lib/src/kernel/compiler.dart b/pkg/dev_compiler/lib/src/kernel/compiler.dart
index cdf4d77..6e97625 100644
--- a/pkg/dev_compiler/lib/src/kernel/compiler.dart
+++ b/pkg/dev_compiler/lib/src/kernel/compiler.dart
@@ -2158,6 +2158,8 @@
     }
 
     useExtension ??= _isSymbolizedMember(type, name);
+    // TODO(vsm): Do not rename members that conflict with standard JS members
+    // if we are actually try to access those JS members via interop.
     name = JS.memberNameForDartMember(name);
     if (useExtension) {
       return _getExtensionSymbolInternal(name);
diff --git a/pkg/dev_compiler/tool/kernel_sdk.dart b/pkg/dev_compiler/tool/kernel_sdk.dart
index ac35ee2..b16bd46 100755
--- a/pkg/dev_compiler/tool/kernel_sdk.dart
+++ b/pkg/dev_compiler/tool/kernel_sdk.dart
@@ -5,6 +5,7 @@
 
 import 'dart:io';
 import 'dart:async';
+import 'package:args/args.dart' show ArgParser;
 import 'package:dev_compiler/src/compiler/module_builder.dart';
 import 'package:dev_compiler/src/kernel/target.dart';
 import 'package:dev_compiler/src/kernel/command.dart';
@@ -15,10 +16,18 @@
 import 'patch_sdk.dart' as patch_sdk;
 
 Future main(List<String> args) async {
+  // Parse flags.
+  var parser = new ArgParser()
+    ..addFlag('generate-javascript',
+        help: 'Generate JavaScript (in addition to dill)', abbr: 'g');
+  var parserOptions = parser.parse(args);
+  var generateJS = parserOptions['generate-javascript'] as bool;
+  var rest = parserOptions.rest;
+
   Directory.current = path.dirname(path.dirname(path.fromUri(Platform.script)));
 
   var outputPath =
-      path.absolute(args.length > 0 ? args[0] : 'lib/sdk/ddc_sdk.dill');
+      path.absolute(rest.length > 0 ? rest[0] : 'gen/sdk/ddc_sdk.dill');
 
   patch_sdk.main(['../..', 'tool/input_sdk', 'gen/patched_sdk']);
 
@@ -38,7 +47,6 @@
   // writeProgramToText(program);
   await writeProgramToBinary(program, outputPath);
 
-  bool generateJS = false;
   if (generateJS) {
     var jsModule = compileToJSModule(program, [], [], {});
     var jsPath = path.join(path.basename(outputPath), 'dart_sdk.kernel.js');
diff --git a/pkg/front_end/lib/src/api_prototype/compiler_options.dart b/pkg/front_end/lib/src/api_prototype/compiler_options.dart
index 4927af0..6b66316 100644
--- a/pkg/front_end/lib/src/api_prototype/compiler_options.dart
+++ b/pkg/front_end/lib/src/api_prototype/compiler_options.dart
@@ -97,18 +97,6 @@
   /// at a default location within [sdkRoot].
   Uri sdkSummary;
 
-  /// Multi-roots.
-  ///
-  /// Any Uri that resolves to "multi-root:///$absolute_path" will be searched
-  /// for at "$root/$absolute_path", where "$root" is drawn from this list.
-  ///
-  /// Intended use: if the user has a Bazel workspace located at path
-  /// "$workspace", this could be set to the file URIs corresponding to the
-  /// paths for "$workspace", "$workspace/bazel-bin",
-  /// and "$workspace/bazel-genfiles", effectively overlaying source and
-  /// generated files.
-  List<Uri> multiRoots = [];
-
   /// The declared variables for use by configurable imports and constant
   /// evaluation.
   Map<String, String> declaredVariables;
diff --git a/pkg/front_end/lib/src/api_unstable/compiler_state.dart b/pkg/front_end/lib/src/api_unstable/compiler_state.dart
new file mode 100644
index 0000000..f950fe1
--- /dev/null
+++ b/pkg/front_end/lib/src/api_unstable/compiler_state.dart
@@ -0,0 +1,15 @@
+// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:front_end/src/base/processed_options.dart';
+
+import '../api_prototype/compiler_options.dart';
+import '../base/processed_options.dart';
+
+class InitializedCompilerState {
+  final CompilerOptions options;
+  final ProcessedOptions processedOpts;
+
+  InitializedCompilerState(this.options, this.processedOpts);
+}
diff --git a/pkg/front_end/lib/src/api_unstable/dart2js.dart b/pkg/front_end/lib/src/api_unstable/dart2js.dart
new file mode 100644
index 0000000..b7915a8
--- /dev/null
+++ b/pkg/front_end/lib/src/api_unstable/dart2js.dart
@@ -0,0 +1,70 @@
+// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:async' show Future;
+
+import 'package:front_end/src/base/processed_options.dart';
+import 'package:front_end/src/fasta/scanner/token.dart' show StringToken;
+import 'package:front_end/src/kernel_generator_impl.dart';
+import 'package:kernel/kernel.dart' show Program;
+import 'package:kernel/target/targets.dart' show Target;
+
+import '../api_prototype/compiler_options.dart';
+import '../api_prototype/file_system.dart';
+import '../base/processed_options.dart';
+import '../fasta/compiler_context.dart';
+import '../fasta/fasta_codes.dart';
+import '../fasta/severity.dart';
+import '../kernel_generator_impl.dart';
+import 'compiler_state.dart';
+
+export 'compiler_state.dart';
+
+InitializedCompilerState initializeCompiler(InitializedCompilerState oldState,
+    Target target, Uri sdkUri, Uri packagesFileUri) {
+  if (oldState != null &&
+      oldState.options.packagesFileUri == packagesFileUri &&
+      oldState.options.linkedDependencies[0] == sdkUri) {
+    return oldState;
+  }
+
+  CompilerOptions options = new CompilerOptions()
+    ..target = target
+    ..linkedDependencies = [sdkUri]
+    ..packagesFileUri = packagesFileUri;
+
+  ProcessedOptions processedOpts = new ProcessedOptions(options, false, []);
+
+  return new InitializedCompilerState(options, processedOpts);
+}
+
+Future<Program> compile(InitializedCompilerState state, bool verbose,
+    FileSystem fileSystem, ErrorHandler onError, Uri input) async {
+  CompilerOptions options = state.options;
+  options
+    ..onError = onError
+    ..verbose = verbose
+    ..fileSystem = fileSystem;
+
+  ProcessedOptions processedOpts = state.processedOpts;
+  processedOpts.inputs.clear();
+  processedOpts.inputs.add(input);
+  processedOpts.clearFileSystemCache();
+  StringToken.canonicalizer.clear();
+
+  var compilerResult = await CompilerContext.runWithOptions(processedOpts,
+      (CompilerContext context) async {
+    var compilerResult = await generateKernelInternal();
+    Program program = compilerResult?.program;
+    if (program == null) return null;
+    if (program.mainMethod == null) {
+      context.options
+          .report(messageMissingMain.withLocation(input, -1), Severity.error);
+      return null;
+    }
+    return compilerResult;
+  });
+
+  return compilerResult?.program;
+}
diff --git a/pkg/front_end/lib/src/api_unstable/ddc.dart b/pkg/front_end/lib/src/api_unstable/ddc.dart
index 158fd59..18ea8cf 100644
--- a/pkg/front_end/lib/src/api_unstable/ddc.dart
+++ b/pkg/front_end/lib/src/api_unstable/ddc.dart
@@ -4,13 +4,18 @@
 
 import 'dart:async' show Future;
 
+import 'package:front_end/src/api_prototype/physical_file_system.dart';
 import 'package:front_end/src/base/processed_options.dart';
 import 'package:front_end/src/fasta/scanner/token.dart' show StringToken;
 import 'package:front_end/src/kernel_generator_impl.dart';
+import 'package:front_end/src/multi_root_file_system.dart';
 import 'package:kernel/kernel.dart' show Program;
 import 'package:kernel/target/targets.dart' show Target;
 
 import '../api_prototype/compiler_options.dart';
+import 'compiler_state.dart';
+
+export 'compiler_state.dart';
 
 export '../api_prototype/compilation_message.dart';
 
@@ -21,13 +26,6 @@
   DdcResult(this.program, this.inputSummaries);
 }
 
-class InitializedCompilerState {
-  final CompilerOptions options;
-  final ProcessedOptions processedOpts;
-
-  InitializedCompilerState(this.options, this.processedOpts);
-}
-
 Future<InitializedCompilerState> initializeCompiler(
     InitializedCompilerState oldState,
     Uri sdkSummary,
@@ -65,11 +63,23 @@
     return oldState;
   }
 
+  // To make the output .dill agnostic of the current working directory,
+  // we use a custom-uri scheme for all app URIs (these are files outside the
+  // lib folder). The following [FileSystem] will resolve those references to
+  // the correct location and keeps the real file location hidden from the
+  // front end.
+  // TODO(sigmund): technically we don't need a "multi-root" file system,
+  // because we are providing a single root, the alternative here is to
+  // implement a new file system with a single root instead.
+  var fileSystem = new MultiRootFileSystem(
+      'org-dartlang-app', [Uri.base], PhysicalFileSystem.instance);
+
   CompilerOptions options = new CompilerOptions()
     ..sdkSummary = sdkSummary
     ..packagesFileUri = packagesFile
     ..inputSummaries = inputSummaries
     ..target = target
+    ..fileSystem = fileSystem
     ..chaseDependencies = true
     ..reportMessages = true;
 
diff --git a/pkg/front_end/lib/src/base/processed_options.dart b/pkg/front_end/lib/src/base/processed_options.dart
index 1e8a345..7c45480 100644
--- a/pkg/front_end/lib/src/base/processed_options.dart
+++ b/pkg/front_end/lib/src/base/processed_options.dart
@@ -15,7 +15,6 @@
 import 'package:front_end/src/fasta/ticker.dart';
 import 'package:front_end/src/fasta/uri_translator.dart';
 import 'package:front_end/src/fasta/uri_translator_impl.dart';
-import 'package:front_end/src/multi_root_file_system.dart';
 import 'package:kernel/kernel.dart' show Program, CanonicalName;
 import 'package:kernel/target/targets.dart';
 import 'package:kernel/target/vm.dart';
@@ -236,11 +235,12 @@
 
   /// Get the [FileSystem] which should be used by the front end to access
   /// files.
-  ///
-  /// If the client supplied roots using [CompilerOptions.multiRoots], the
-  /// returned [FileSystem] will automatically perform the appropriate mapping.
   FileSystem get fileSystem => _fileSystem ??= _createFileSystem();
 
+  /// Clear the file system so any CompilerOptions fileSystem change will have
+  /// effect.
+  void clearFileSystemCache() => _fileSystem = null;
+
   /// Whether to interpret Dart sources in strong-mode.
   bool get strongMode => _raw.strongMode;
 
@@ -494,16 +494,10 @@
 
   /// Create a [FileSystem] specific to the current options.
   ///
-  /// If `_raw.multiRoots` is not empty, the file-system will implement the
-  /// semantics of multiple roots. If [chaseDependencies] is false, the
-  /// resulting file system will be hermetic.
+  /// If [chaseDependencies] is false, the resulting file system will be
+  /// hermetic.
   FileSystem _createFileSystem() {
     var result = _raw.fileSystem;
-    // Note: hermetic checks are done before translating multi-root URIs, so
-    // the order in which we create the file systems below is relevant.
-    if (!_raw.multiRoots.isEmpty) {
-      result = new MultiRootFileSystem('multi-root', _raw.multiRoots, result);
-    }
     if (!chaseDependencies) {
       var allInputs = inputs.toSet();
       allInputs.addAll(_raw.inputSummaries);
@@ -550,7 +544,6 @@
 
     writeList('Input Summaries', _raw.inputSummaries);
     writeList('Linked Dependencies', _raw.linkedDependencies);
-    writeList('Multiroots', _raw.multiRoots);
 
     sb.writeln('Modular: ${_modularApi}');
     sb.writeln('Hermetic: ${!chaseDependencies} (provided: '
diff --git a/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart b/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart
index a9acecf..d78c011 100644
--- a/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart
+++ b/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart
@@ -3511,6 +3511,7 @@
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const MessageCode messageRequiredParameterWithDefault = const MessageCode(
     "RequiredParameterWithDefault",
+    analyzerCode: "NAMED_PARAMETER_OUTSIDE_GROUP",
     dart2jsCode: "REQUIRED_PARAMETER_WITH_DEFAULT",
     message: r"""Non-optional parameters can't have a default value.""",
     tip:
@@ -4065,6 +4066,105 @@
     message: r"""Can't create typedef from non-function type.""");
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Template<
+    Message Function(
+        String name,
+        DartType
+            _type)> templateUndefinedGetter = const Template<
+        Message Function(String name, DartType _type)>(
+    messageTemplate:
+        r"""The getter '#name' isn't defined for the class '#type'.""",
+    tipTemplate:
+        r"""Try correcting the name to the name of an existing getter, or defining a getter or field named '#name'.""",
+    withArguments: _withArgumentsUndefinedGetter);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Message Function(String name, DartType _type)> codeUndefinedGetter =
+    const Code<Message Function(String name, DartType _type)>(
+        "UndefinedGetter", templateUndefinedGetter,
+        analyzerCode: "UNDEFINED_GETTER", dart2jsCode: "*ignored*");
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+Message _withArgumentsUndefinedGetter(String name, DartType _type) {
+  NameSystem nameSystem = new NameSystem();
+  StringBuffer buffer = new StringBuffer();
+  new Printer(buffer, syntheticNames: nameSystem).writeNode(_type);
+  String type = '$buffer';
+
+  return new Message(codeUndefinedGetter,
+      message: """The getter '$name' isn't defined for the class '$type'.""",
+      tip:
+          """Try correcting the name to the name of an existing getter, or defining a getter or field named '$name'.""",
+      arguments: {'name': name, 'type': _type});
+}
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Template<
+    Message Function(
+        String name,
+        DartType
+            _type)> templateUndefinedMethod = const Template<
+        Message Function(String name, DartType _type)>(
+    messageTemplate:
+        r"""The method '#name' isn't defined for the class '#type'.""",
+    tipTemplate:
+        r"""Try correcting the name to the name of an existing method, or defining a method named '#name'.""",
+    withArguments: _withArgumentsUndefinedMethod);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Message Function(String name, DartType _type)> codeUndefinedMethod =
+    const Code<Message Function(String name, DartType _type)>(
+        "UndefinedMethod", templateUndefinedMethod,
+        analyzerCode: "UNDEFINED_METHOD", dart2jsCode: "*ignored*");
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+Message _withArgumentsUndefinedMethod(String name, DartType _type) {
+  NameSystem nameSystem = new NameSystem();
+  StringBuffer buffer = new StringBuffer();
+  new Printer(buffer, syntheticNames: nameSystem).writeNode(_type);
+  String type = '$buffer';
+
+  return new Message(codeUndefinedMethod,
+      message: """The method '$name' isn't defined for the class '$type'.""",
+      tip:
+          """Try correcting the name to the name of an existing method, or defining a method named '$name'.""",
+      arguments: {'name': name, 'type': _type});
+}
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Template<
+    Message Function(
+        String name,
+        DartType
+            _type)> templateUndefinedSetter = const Template<
+        Message Function(String name, DartType _type)>(
+    messageTemplate:
+        r"""The setter '#name' isn't defined for the class '#type'.""",
+    tipTemplate:
+        r"""Try correcting the name to the name of an existing setter, or defining a setter or field named '#name'.""",
+    withArguments: _withArgumentsUndefinedSetter);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Message Function(String name, DartType _type)> codeUndefinedSetter =
+    const Code<Message Function(String name, DartType _type)>(
+        "UndefinedSetter", templateUndefinedSetter,
+        analyzerCode: "UNDEFINED_SETTER", dart2jsCode: "*ignored*");
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+Message _withArgumentsUndefinedSetter(String name, DartType _type) {
+  NameSystem nameSystem = new NameSystem();
+  StringBuffer buffer = new StringBuffer();
+  new Printer(buffer, syntheticNames: nameSystem).writeNode(_type);
+  String type = '$buffer';
+
+  return new Message(codeUndefinedSetter,
+      message: """The setter '$name' isn't defined for the class '$type'.""",
+      tip:
+          """Try correcting the name to the name of an existing setter, or defining a setter or field named '$name'.""",
+      arguments: {'name': name, 'type': _type});
+}
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Code<Null> codeUnexpectedDollarInString = messageUnexpectedDollarInString;
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
@@ -4139,6 +4239,7 @@
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const MessageCode messageUnsupportedPrefixPlus = const MessageCode(
     "UnsupportedPrefixPlus",
+    analyzerCode: "MISSING_IDENTIFIER",
     dart2jsCode: "UNSUPPORTED_PREFIX_PLUS",
     message: r"""'+' is not a prefix operator.""",
     tip: r"""Try removing '+'.""");
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 e2aebdf..7ed8dc5 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -932,7 +932,8 @@
     Expression argument = popForValue();
     Expression receiver = pop();
     var logicalExpression =
-        new ShadowLogicalExpression(receiver, token.stringValue, argument);
+        new ShadowLogicalExpression(receiver, token.stringValue, argument)
+          ..fileOffset = offsetForToken(token);
     typePromoter.exitLogicalExpression(argument, logicalExpression);
     push(logicalExpression);
   }
@@ -948,7 +949,8 @@
             buildIsNull(new VariableGet(variable), offsetForToken(token)),
             b,
             new VariableGet(variable),
-            null)));
+            null))
+      ..fileOffset = offsetForToken(token));
   }
 
   /// Handle `a?.b(...)`.
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 baaa720..de4ebb4 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
@@ -749,7 +749,6 @@
 
   @override
   void _inferStatement(ShadowTypeInferrer inferrer) {
-    inferrer.listener.forInStatementEnter(this);
     var iterableClass = isAsync
         ? inferrer.coreTypes.streamClass
         : inferrer.coreTypes.iterableClass;
@@ -758,6 +757,7 @@
     bool typeChecksNeeded = !inferrer.isTopLevel;
     ShadowVariableDeclaration variable;
     var syntheticAssignment = _syntheticAssignment;
+    Expression syntheticWrite;
     if (_declaresVariable) {
       variable = this.variable;
       if (inferrer.strongMode && variable._implicitlyTyped) {
@@ -767,11 +767,13 @@
         context = variable.type;
       }
     } else if (syntheticAssignment is ShadowComplexAssignment) {
+      syntheticWrite = syntheticAssignment.write;
       context = syntheticAssignment._getWriteType(inferrer);
     } else {
       context = const UnknownType();
     }
     context = inferrer.wrapType(context, iterableClass);
+    inferrer.listener.forInStatementEnter(this, variable, syntheticWrite);
     var inferredExpressionType = inferrer.resolveTypeParameter(inferrer
         .inferExpression(iterable, context, typeNeeded || typeChecksNeeded));
     inferrer.checkAssignability(
@@ -812,7 +814,7 @@
         body = combineStatements(variable, body)..parent = this;
       }
     }
-    inferrer.listener.forInStatementExit(this);
+    inferrer.listener.forInStatementExit(this, variable);
   }
 }
 
@@ -917,6 +919,7 @@
     if (inferrer.strongMode) {
       variable.type = lhsType;
     }
+    inferrer.listener.ifNullBeforeRhs(this);
     // - Let J = T0 if K is `_` else K.
     var rhsContext = typeContext ?? lhsType;
     // - Infer e1 in context J to get T1
@@ -1137,7 +1140,8 @@
         inferrer.listener.isNotExpressionEnter(this, typeContext) || typeNeeded;
     inferrer.inferExpression(isExpression.operand, null, false);
     var inferredType = typeNeeded ? inferrer.coreTypes.boolClass.rawType : null;
-    inferrer.listener.isNotExpressionExit(this, inferredType);
+    inferrer.listener
+        .isNotExpressionExit(this, isExpression.type, inferredType);
     return inferredType;
   }
 }
@@ -1243,6 +1247,7 @@
     var boolType = inferrer.coreTypes.boolClass.rawType;
     var leftType =
         inferrer.inferExpression(left, boolType, !inferrer.isTopLevel);
+    inferrer.listener.logicalExpressionBeforeRhs(this);
     var rightType =
         inferrer.inferExpression(right, boolType, !inferrer.isTopLevel);
     inferrer.checkAssignability(boolType, leftType, left, left.fileOffset);
@@ -1712,7 +1717,8 @@
   @override
   DartType _inferExpression(
       ShadowTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
-    typeNeeded = inferrer.listener.staticAssignEnter(desugared, typeContext) ||
+    typeNeeded = inferrer.listener
+            .staticAssignEnter(desugared, this.write, typeContext) ||
         typeNeeded;
     DartType readType;
     var read = this.read;
@@ -1720,18 +1726,20 @@
       readType = read.target.getterType;
       _storeLetType(inferrer, read, readType);
     }
+    Member writeMember;
     DartType writeContext;
     var write = this.write;
     if (write is StaticSet) {
       writeContext = write.target.setterType;
-      var target = write.target;
-      if (target is ShadowField && target._inferenceNode != null) {
-        target._inferenceNode.resolve();
-        target._inferenceNode = null;
+      writeMember = write.target;
+      if (writeMember is ShadowField && writeMember._inferenceNode != null) {
+        writeMember._inferenceNode.resolve();
+        writeMember._inferenceNode = null;
       }
     }
     var inferredResult = _inferRhs(inferrer, readType, writeContext);
-    inferrer.listener.staticAssignExit(desugared, inferredResult.type);
+    inferrer.listener.staticAssignExit(desugared, write, writeMember,
+        writeContext, inferredResult.combiner, inferredResult.type);
     _replaceWithDesugared();
     return inferredResult.type;
   }
diff --git a/pkg/front_end/lib/src/fasta/parser/modifier_context.dart b/pkg/front_end/lib/src/fasta/parser/modifier_context.dart
index b8c2cb27..75091be 100644
--- a/pkg/front_end/lib/src/fasta/parser/modifier_context.dart
+++ b/pkg/front_end/lib/src/fasta/parser/modifier_context.dart
@@ -739,14 +739,14 @@
 
 class TopLevelMethodModifierContext {
   final Parser parser;
-  Token name;
+  Token beforeName;
   Token externalToken;
 
   /// If recovery finds the beginning of a new declaration,
   /// then this is set to the last token in the prior declaration.
   Token endInvalidTopLevelDeclarationToken;
 
-  TopLevelMethodModifierContext(this.parser, this.name);
+  TopLevelMethodModifierContext(this.parser, this.beforeName);
 
   /// Parse modifiers from the token following [token] up to but not including
   /// [afterModifiers]. If a new declaration start is found in the sequence of
@@ -756,7 +756,9 @@
   Token parseRecovery(Token token, Token afterModifiers) {
     assert(token != afterModifiers && token.next != afterModifiers);
 
+    Token beforeToken = token;
     while (token.next != afterModifiers) {
+      beforeToken = token;
       token = token.next;
       if (optional('external', token)) {
         if (externalToken == null) {
@@ -773,25 +775,27 @@
         Token next = token.next;
         if (next.isTopLevelKeyword) {
           endInvalidTopLevelDeclarationToken = token;
-          return token;
+          return beforeToken;
         }
         if (next.isOperator) {
           // If the operator is not one of the modifiers, then skip it,
           // and insert a synthetic modifier
           // to be interpreted as the top level function's identifier.
           if (identical(next, afterModifiers)) {
-            name = parser.rewriter.insertToken(
+            beforeName = next;
+            parser.rewriter.insertToken(
                 new SyntheticStringToken(
                     TokenType.IDENTIFIER,
                     '#synthetic_function_${next.charOffset}',
                     token.charOffset,
                     0),
                 next.next);
-            return name;
+            return next;
           }
           // If the next token is an operator, then skip it
           // because the error message above says it all.
-          token = token.next;
+          beforeToken = token;
+          token = token;
         }
       } else if (optional('factory', token)) {
         parser.reportRecoverableError(
@@ -799,13 +803,13 @@
         // Indicate to the caller that the next token should be
         // parsed as a new top level declaration.
         endInvalidTopLevelDeclarationToken = token;
-        return token;
+        return beforeToken;
       } else {
         // TODO(danrubel): report more specific analyzer error codes
         parser.reportRecoverableErrorWithToken(
             token, fasta.templateExtraneousModifier);
       }
     }
-    return token;
+    return beforeToken;
   }
 }
diff --git a/pkg/front_end/lib/src/fasta/parser/parser.dart b/pkg/front_end/lib/src/fasta/parser/parser.dart
index 4d98840..1c2887c 100644
--- a/pkg/front_end/lib/src/fasta/parser/parser.dart
+++ b/pkg/front_end/lib/src/fasta/parser/parser.dart
@@ -34,8 +34,8 @@
         EOF_TOKEN,
         EQ_TOKEN,
         FUNCTION_TOKEN,
-        GT_TOKEN,
         GT_GT_TOKEN,
+        GT_TOKEN,
         HASH_TOKEN,
         HEXADECIMAL_TOKEN,
         IDENTIFIER_TOKEN,
@@ -1681,6 +1681,8 @@
     List<String> followingValues;
     if (context == IdentifierContext.classOrNamedMixinDeclaration) {
       followingValues = ['<', 'extends', 'with', 'implements', '{'];
+    } else if (context == IdentifierContext.combinator) {
+      followingValues = [';'];
     } else if (context == IdentifierContext.fieldDeclaration) {
       followingValues = [';', '=', ','];
     } else if (context == IdentifierContext.enumDeclaration) {
@@ -2548,7 +2550,7 @@
     return parseStuff(
         token,
         (t) => listener.beginTypeArguments(t),
-        (t) => parseType(t).next,
+        (t) => parseType(t),
         (c, bt, et) => listener.endTypeArguments(c, bt, et),
         (t) => listener.handleNoTypeArguments(t));
   }
@@ -2557,7 +2559,7 @@
     return parseStuff(
         token,
         (t) => listener.beginTypeVariables(t),
-        (t) => parseTypeVariable(t).next,
+        (t) => parseTypeVariable(t),
         (c, bt, et) => listener.endTypeVariables(c, bt, et),
         (t) => listener.handleNoTypeVariables(t));
   }
@@ -2571,30 +2573,34 @@
     token = listener.injectGenericCommentTypeList(token.next).previous;
     Token next = token.next;
     if (optional('<', next)) {
-      token = next;
-      Token begin = token;
+      Token begin = next;
       beginStuff(begin);
       int count = 0;
       do {
-        token = stuffParser(token);
+        token = stuffParser(token.next);
         ++count;
-      } while (optional(',', token));
+      } while (optional(',', token.next));
 
       // Rewrite `>>`, `>=`, and `>>=` tokens
-      String value = token.stringValue;
+      next = token.next;
+      String value = next.stringValue;
       if (value != null && value.length > 1) {
-        Token replacement = new Token(TokenType.GT, token.charOffset);
+        Token replacement = new Token(TokenType.GT, next.charOffset);
         if (identical(value, '>>')) {
-          replacement.next = new Token(TokenType.GT, token.charOffset + 1);
-          token = rewriter.replaceToken(token, replacement);
+          replacement.next = new Token(TokenType.GT, next.charOffset + 1);
+          token = rewriter.replaceTokenFollowing(token, replacement);
         } else if (identical(value, '>=')) {
-          replacement.next = new Token(TokenType.EQ, token.charOffset + 1);
-          token = rewriter.replaceToken(token, replacement);
+          replacement.next = new Token(TokenType.EQ, next.charOffset + 1);
+          token = rewriter.replaceTokenFollowing(token, replacement);
         } else if (identical(value, '>>=')) {
-          replacement.next = new Token(TokenType.GT, token.charOffset + 1);
-          replacement.next.next = new Token(TokenType.EQ, token.charOffset + 2);
-          token = rewriter.replaceToken(token, replacement);
+          replacement.next = new Token(TokenType.GT, next.charOffset + 1);
+          replacement.next.next = new Token(TokenType.EQ, next.charOffset + 2);
+          token = rewriter.replaceTokenFollowing(token, replacement);
+        } else {
+          token = next;
         }
+      } else {
+        token = next;
       }
 
       endStuff(count, begin, token);
@@ -2745,17 +2751,14 @@
     } else {
       // If there are modifiers other than or in addition to `external`
       // then we need to recover.
-      final context = new TopLevelMethodModifierContext(this, name);
+      final context = new TopLevelMethodModifierContext(this, beforeName);
       token = context.parseRecovery(beforeToken, afterModifiers);
-      // TODO(brianwilkerson): Remove the invocation of `previous` when
-      // `parseRecovery` returns the last consumed token.
-      beforeToken = token.previous;
+      beforeToken = token;
+      token = token.next;
       beforeExternalToken = beforeToken;
       externalToken = context.externalToken;
-      name = context.name;
-      // TODO(brianwilkerson): Remove the invocation of `previous` when
-      // `context.name` returns the token before the name.
-      beforeName = name.previous;
+      beforeName = context.beforeName;
+      name = beforeName.next;
 
       // If the modifiers form a partial top level directive or declaration
       // and we have found the start of a new top level declaration
@@ -3893,8 +3896,8 @@
     int statementCount = 0;
     if (!optional('{', next)) {
       token = recoverFromMissingFunctionBody(next);
-      listener.handleInvalidFunctionBody(token.next);
-      return token;
+      listener.handleInvalidFunctionBody(token);
+      return token.endGroup;
     }
 
     listener.beginBlockFunctionBody(begin);
@@ -4326,9 +4329,7 @@
                 new BeginToken(TokenType.OPEN_SQUARE_BRACKET, next.charOffset,
                     next.precedingComments),
                 new Token(TokenType.CLOSE_SQUARE_BRACKET, next.charOffset + 1));
-            // TODO(brianwilkerson): Remove the invocation of `previous` when
-            // `replaceToken` returns the last consumed token.
-            token = rewriter.replaceToken(next, replacement).previous;
+            rewriter.replaceTokenFollowing(token, replacement);
             token = parseArgumentOrIndexStar(token, null);
           } else {
             token = reportUnexpectedToken(token.next);
@@ -4420,8 +4421,13 @@
       }
     } else if (identical(value, '+')) {
       // Dart no longer allows prefix-plus.
-      reportRecoverableError(token.next, fasta.messageUnsupportedPrefixPlus);
-      return parseUnaryExpression(token.next, allowCascades);
+      rewriteAndRecover(
+          token,
+          // TODO(danrubel): Consider reporting "missing identifier" instead.
+          fasta.messageUnsupportedPrefixPlus,
+          new SyntheticStringToken(
+              TokenType.IDENTIFIER, '', token.next.offset));
+      return parsePrimary(token, IdentifierContext.expression);
     } else if ((identical(value, '!')) ||
         (identical(value, '-')) ||
         (identical(value, '~'))) {
@@ -4605,7 +4611,8 @@
     BeginToken begin = token;
     token = parseExpression(token).next;
     if (!identical(begin.endGroup, token)) {
-      reportUnexpectedToken(token).next;
+      reportRecoverableError(
+          token, fasta.templateExpectedButGot.withArguments(')'));
       token = begin.endGroup;
     }
     listener.handleParenthesizedExpression(begin);
@@ -4656,6 +4663,7 @@
   /// if not. This is a suffix parser because it is assumed that type arguments
   /// have been parsed, or `listener.handleNoTypeArguments` has been executed.
   Token parseLiteralListSuffix(Token token, Token constKeyword) {
+    Token beforeToken = token;
     Token beginToken = token = token.next;
     assert(optional('[', token) || optional('[]', token));
     int count = 0;
@@ -4678,7 +4686,7 @@
     BeginToken replacement = link(
         new BeginToken(TokenType.OPEN_SQUARE_BRACKET, token.offset),
         new Token(TokenType.CLOSE_SQUARE_BRACKET, token.offset + 1));
-    rewriter.replaceToken(token, replacement);
+    rewriter.replaceTokenFollowing(beforeToken, replacement);
     token = replacement.next;
     listener.handleLiteralList(0, replacement, constKeyword, token);
     return token;
diff --git a/pkg/front_end/lib/src/fasta/parser/token_stream_rewriter.dart b/pkg/front_end/lib/src/fasta/parser/token_stream_rewriter.dart
index 172633d..758574b 100644
--- a/pkg/front_end/lib/src/fasta/parser/token_stream_rewriter.dart
+++ b/pkg/front_end/lib/src/fasta/parser/token_stream_rewriter.dart
@@ -45,13 +45,13 @@
     return insertedToken;
   }
 
-  /// Replace the single [replacedToken] with the chain of tokens starting at
-  /// the [replacementToken]. The [replacedToken] is assumed to be reachable
-  /// from, but not the same as, the [previousToken].
-  Token replaceToken(Token replacedToken, Token replacementToken) {
-    Token previous = replacedToken.previous;
-    previous.next = replacementToken;
-    replacementToken.previous = previous;
+  /// Replace the single token immediately following the [previousToken] with
+  /// the chain of tokens starting at the [replacementToken]. Return the
+  /// [replacementToken].
+  Token replaceTokenFollowing(Token previousToken, Token replacementToken) {
+    Token replacedToken = previousToken.next;
+    previousToken.next = replacementToken;
+    replacementToken.previous = previousToken;
 
     (replacementToken as SimpleToken).precedingComments =
         replacedToken.precedingComments;
diff --git a/pkg/front_end/lib/src/fasta/testing/validating_instrumentation.dart b/pkg/front_end/lib/src/fasta/testing/validating_instrumentation.dart
index 3f38464..623aa63 100644
--- a/pkg/front_end/lib/src/fasta/testing/validating_instrumentation.dart
+++ b/pkg/front_end/lib/src/fasta/testing/validating_instrumentation.dart
@@ -48,6 +48,9 @@
   /// file offset.
   final _testedFeaturesState = <Uri, Map<int, Set<String>>>{};
 
+  /// Map from file URI to a sorted list of token offsets for that file.
+  final _tokenOffsets = <Uri, List<int>>{};
+
   /// String descriptions of the expectation mismatches found so far.
   final _problems = <String>[];
 
@@ -119,8 +122,10 @@
     var bytes = await readBytesFromFile(uri);
     var expectations = _unsatisfiedExpectations.putIfAbsent(uri, () => {});
     var testedFeaturesState = _testedFeaturesState.putIfAbsent(uri, () => {});
+    var tokenOffsets = _tokenOffsets.putIfAbsent(uri, () => []);
     ScannerResult result = scan(bytes, includeComments: true);
     for (Token token = result.tokens; !token.isEof; token = token.next) {
+      tokenOffsets.add(token.offset);
       for (analyzer.Token commentToken = token.precedingComments;
           commentToken != null;
           commentToken = commentToken.next) {
@@ -171,6 +176,7 @@
     }
     var expectationsForUri = _unsatisfiedExpectations[uri];
     if (expectationsForUri == null) return;
+    offset = _normalizeOffset(offset, _tokenOffsets[uri]);
     var expectationsAtOffset = expectationsForUri[offset];
     if (expectationsAtOffset != null) {
       for (int i = 0; i < expectationsAtOffset.length; i++) {
@@ -221,6 +227,36 @@
     return '/*@$property=${_escape(value.toString())}*/';
   }
 
+  /// If [offset] is not one of the token offsets in [tokenOffsets], increase it
+  /// until it is.
+  ///
+  /// Exception: if [offset] is past the last token offset in [tokenOffsets],
+  /// leave it alone.
+  int _normalizeOffset(int offset, List<int> tokenOffsets) {
+    int i = -1;
+    int j = tokenOffsets.length;
+    // Invariant: (i == -1 || tokenOffsets[i] < offset) &&
+    //     (j == tokenOffsets.length || offset <= tokenOffsets[j])
+    while (j - i > 1) {
+      int k = (i + j) ~/ 2;
+      if (tokenOffsets[k] < offset) {
+        i = k;
+      } else {
+        j = k;
+      }
+    }
+    // Now i == j - 1
+    if (j < tokenOffsets.length) {
+      // tokenOffsets[j-1] < offset <= tokenOffsets[j]
+      // Therefore the comment belongs with token j.
+      return tokenOffsets[j];
+    } else {
+      // j-1 is the last token, and tokenOffsets[j-1] < offset.  Since there's
+      // no later token, we can't normalize the offset.
+      return offset;
+    }
+  }
+
   void _problem(Uri uri, int offset, String desc, _Fix fix) {
     _problems.add(_formatProblem(uri, offset, desc, null));
     _fixes.putIfAbsent(uri, () => []).add(fix);
diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_inference_listener.dart b/pkg/front_end/lib/src/fasta/type_inference/type_inference_listener.dart
index d77713c..720f0c0 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/type_inference_listener.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/type_inference_listener.dart
@@ -200,10 +200,12 @@
   void fieldInitializerExit(FieldInitializer initializer) =>
       genericInitializerExit("fieldInitializer", initializer);
 
-  void forInStatementEnter(ForInStatement statement) =>
+  void forInStatementEnter(ForInStatement statement,
+          VariableDeclaration variable, Expression write) =>
       genericStatementEnter('forInStatement', statement);
 
-  void forInStatementExit(ForInStatement statement) =>
+  void forInStatementExit(
+          ForInStatement statement, VariableDeclaration variable) =>
       genericStatementExit('forInStatement', statement);
 
   void forStatementEnter(ForStatement statement) =>
@@ -226,6 +228,8 @@
           FunctionExpression expression, DartType inferredType) =>
       genericExpressionExit("functionExpression", expression, inferredType);
 
+  void ifNullBeforeRhs(Expression expression) {}
+
   bool ifNullEnter(Expression expression, DartType typeContext) =>
       genericExpressionEnter('ifNull', expression, typeContext);
 
@@ -268,7 +272,8 @@
   bool isNotExpressionEnter(Not expression, DartType typeContext) =>
       genericExpressionEnter("isNotExpression", expression, typeContext);
 
-  void isNotExpressionExit(Not expression, DartType inferredType) =>
+  void isNotExpressionExit(
+          Not expression, DartType type, DartType inferredType) =>
       genericExpressionExit("isNotExpression", expression, inferredType);
 
   void labeledStatementEnter(LabeledStatement statement) =>
@@ -283,6 +288,8 @@
   void listLiteralExit(ListLiteral expression, DartType inferredType) =>
       genericExpressionExit("listLiteral", expression, inferredType);
 
+  void logicalExpressionBeforeRhs(LogicalExpression expression) {}
+
   bool logicalExpressionEnter(
           LogicalExpression expression, DartType typeContext) =>
       genericExpressionEnter("logicalExpression", expression, typeContext);
@@ -389,10 +396,17 @@
   void returnStatementExit(ReturnStatement statement) =>
       genericStatementExit('returnStatement', statement);
 
-  bool staticAssignEnter(Expression expression, DartType typeContext) =>
+  bool staticAssignEnter(
+          Expression expression, Expression write, DartType typeContext) =>
       genericExpressionEnter("staticAssign", expression, typeContext);
 
-  void staticAssignExit(Expression expression, DartType inferredType) =>
+  void staticAssignExit(
+          Expression expression,
+          Expression write,
+          Member writeMember,
+          DartType writeContext,
+          Procedure combiner,
+          DartType inferredType) =>
       genericExpressionExit("staticAssign", expression, inferredType);
 
   bool staticGetEnter(StaticGet expression, DartType typeContext) =>
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 23e4d98..581894d 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
@@ -33,6 +33,7 @@
         Initializer,
         InterfaceType,
         InvocationExpression,
+        Let,
         ListLiteral,
         Member,
         MethodInvocation,
@@ -429,7 +430,11 @@
   /// For the special case where [receiverType] is a [FunctionType], and the
   /// method name is `call`, the string `call` is returned as a sentinel object.
   Object findInterfaceMember(DartType receiverType, Name name, int fileOffset,
-      {bool setter: false, bool silent: false}) {
+      {Template<Message Function(String, DartType)> errorTemplate,
+      Expression expression,
+      Expression receiver,
+      bool setter: false,
+      bool silent: false}) {
     // Our non-strong golden files currently don't include interface
     // targets, so we can't store the interface target without causing tests
     // to fail.  TODO(paulberry): fix this.
@@ -450,6 +455,22 @@
       instrumentation?.record(uri, fileOffset, 'target',
           new InstrumentationValueForMember(interfaceMember));
     }
+    if (!isTopLevel &&
+        interfaceMember == null &&
+        receiverType is! DynamicType &&
+        !(receiverType == coreTypes.functionClass.rawType &&
+            name.name == 'call') &&
+        errorTemplate != null) {
+      expression.parent.replaceChild(
+          expression,
+          new Let(
+              new VariableDeclaration.forValue(receiver)
+                ..fileOffset = receiver.fileOffset,
+              helper.buildCompileTimeError(
+                  errorTemplate.withArguments(name.name, receiverType),
+                  fileOffset))
+            ..fileOffset = fileOffset);
+    }
     return interfaceMember;
   }
 
@@ -463,6 +484,9 @@
     if (methodInvocation is MethodInvocation) {
       var interfaceMember = findInterfaceMember(
           receiverType, methodInvocation.name, methodInvocation.fileOffset,
+          errorTemplate: templateUndefinedMethod,
+          expression: methodInvocation,
+          receiver: methodInvocation.receiver,
           silent: silent);
       if (strongMode && interfaceMember is Member) {
         methodInvocation.interfaceTarget = interfaceMember;
@@ -491,6 +515,9 @@
     if (propertyGet is PropertyGet) {
       var interfaceMember = findInterfaceMember(
           receiverType, propertyGet.name, propertyGet.fileOffset,
+          errorTemplate: templateUndefinedGetter,
+          expression: propertyGet,
+          receiver: propertyGet.receiver,
           silent: silent);
       if (strongMode && interfaceMember is Member) {
         propertyGet.interfaceTarget = interfaceMember;
@@ -517,7 +544,11 @@
     if (propertySet is PropertySet) {
       var interfaceMember = findInterfaceMember(
           receiverType, propertySet.name, propertySet.fileOffset,
-          setter: true, silent: silent);
+          errorTemplate: templateUndefinedSetter,
+          expression: propertySet,
+          receiver: propertySet.receiver,
+          setter: true,
+          silent: silent);
       if (strongMode && interfaceMember is Member) {
         propertySet.interfaceTarget = interfaceMember;
       }
@@ -1170,8 +1201,11 @@
     }
     propertyName ??= desugaredGet.name;
     if (desugaredGet != null) {
-      interfaceMember =
-          findInterfaceMember(receiverType, propertyName, fileOffset);
+      interfaceMember = findInterfaceMember(
+          receiverType, propertyName, fileOffset,
+          errorTemplate: templateUndefinedGetter,
+          expression: expression,
+          receiver: desugaredGet.receiver);
       if (interfaceMember is Member) {
         desugaredGet.interfaceTarget = interfaceMember;
       }
diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_schema_elimination.dart b/pkg/front_end/lib/src/fasta/type_inference/type_schema_elimination.dart
index a5bb0eb..8c1f522 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/type_schema_elimination.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/type_schema_elimination.dart
@@ -85,7 +85,8 @@
           newReturnType ?? node.returnType,
           namedParameters: newNamedParameters ?? node.namedParameters,
           typeParameters: node.typeParameters,
-          requiredParameterCount: node.requiredParameterCount);
+          requiredParameterCount: node.requiredParameterCount,
+          typedefReference: node.typedefReference);
     }
   }
 
diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_schema_environment.dart b/pkg/front_end/lib/src/fasta/type_inference/type_schema_environment.dart
index 83ec722..26cba01 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/type_schema_environment.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/type_schema_environment.dart
@@ -27,7 +27,8 @@
               named.name, substitution.substituteType(named.type)))
           .toList(),
       typeParameters: newTypeParameters,
-      requiredParameterCount: type.requiredParameterCount);
+      requiredParameterCount: type.requiredParameterCount,
+      typedefReference: type.typedefReference);
 }
 
 /// Given a [FunctionType], gets the type of the named parameter with the given
diff --git a/pkg/front_end/lib/src/incremental/kernel_driver.dart b/pkg/front_end/lib/src/incremental/kernel_driver.dart
index 8ee0578..f489459 100644
--- a/pkg/front_end/lib/src/incremental/kernel_driver.dart
+++ b/pkg/front_end/lib/src/incremental/kernel_driver.dart
@@ -375,11 +375,11 @@
       }
 
       // Prepare file URIs for the cycle.
-      var cycleFileUris = new Set<String>();
+      var cycleFileUris = new Set<Uri>();
       for (FileState library in cycle.libraries) {
-        cycleFileUris.add(library.fileUriStr);
+        cycleFileUris.add(library.fileUri);
         for (var partFile in library.partFiles) {
-          cycleFileUris.add(partFile.fileUriStr);
+          cycleFileUris.add(partFile.fileUri);
         }
       }
 
@@ -429,10 +429,10 @@
 
       // Remove source for libraries outside of the cycle.
       {
-        var urisToRemoveSources = <String>[];
+        var urisToRemoveSources = <Uri>[];
         for (var uri in program.uriToSource.keys) {
-          if (!cycleFileUris.contains("$uri")) {
-            urisToRemoveSources.add("$uri");
+          if (!cycleFileUris.contains(uri)) {
+            urisToRemoveSources.add(uri);
           }
         }
         urisToRemoveSources.forEach(program.uriToSource.remove);
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index 56a2e75..db982ad 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -603,6 +603,7 @@
 RequiredParameterWithDefault:
   template: "Non-optional parameters can't have a default value."
   tip: "Try removing the default value or making the parameter optional."
+  analyzerCode: NAMED_PARAMETER_OUTSIDE_GROUP
   dart2jsCode: REQUIRED_PARAMETER_WITH_DEFAULT
   script:
     - >
@@ -660,6 +661,7 @@
 UnsupportedPrefixPlus:
   template: "'+' is not a prefix operator."
   tip: "Try removing '+'."
+  analyzerCode: MISSING_IDENTIFIER
   dart2jsCode: UNSUPPORTED_PREFIX_PLUS
   script: "main() => +2;  // No longer a valid way to write '2'"
 
@@ -1566,3 +1568,38 @@
   template: "Can't apply this patch as its origin declaration isn't external."
   tip: "Try adding 'external' to the origin declaration."
 
+UndefinedGetter:
+  template: "The getter '#name' isn't defined for the class '#type'."
+  tip: "Try correcting the name to the name of an existing getter, or defining a getter or field named '#name'."
+  analyzerCode: UNDEFINED_GETTER
+  dart2jsCode: "*ignored*"
+  script: >
+    class C {}
+    main() {
+      C c;
+      print(c.foo);
+    }
+
+UndefinedSetter:
+  template: "The setter '#name' isn't defined for the class '#type'."
+  tip: "Try correcting the name to the name of an existing setter, or defining a setter or field named '#name'."
+  analyzerCode: UNDEFINED_SETTER
+  dart2jsCode: "*ignored*"
+  script: >
+    class C {}
+    main() {
+      C c;
+      c.foo = 0;
+    }
+
+UndefinedMethod:
+  template: "The method '#name' isn't defined for the class '#type'."
+  tip: "Try correcting the name to the name of an existing method, or defining a method named '#name'."
+  analyzerCode: UNDEFINED_METHOD
+  dart2jsCode: "*ignored*"
+  script: >
+    class C {}
+    main() {
+      C c;
+      c.foo();
+    }
diff --git a/pkg/front_end/test/fasta/parser/token_stream_rewriter_test.dart b/pkg/front_end/test/fasta/parser/token_stream_rewriter_test.dart
index 63f7c4e..6be8843 100644
--- a/pkg/front_end/test/fasta/parser/token_stream_rewriter_test.dart
+++ b/pkg/front_end/test/fasta/parser/token_stream_rewriter_test.dart
@@ -60,7 +60,7 @@
     expect(b.next, same(c));
   }
 
-  void test_replaceToken_multiple() {
+  void test_replaceTokenFollowing_multiple() {
     var a = _makeToken(0, 'a');
     var b = _makeToken(1, 'b');
     var c = _makeToken(2, 'c');
@@ -70,21 +70,21 @@
     _link([a, b, e, f]);
     _link([c, d]);
     var rewriter = new TokenStreamRewriter();
-    rewriter.replaceToken(e, c);
+    rewriter.replaceTokenFollowing(b, c);
     expect(a.next, same(b));
     expect(b.next, same(c));
     expect(c.next, same(d));
     expect(d.next, same(f));
   }
 
-  void test_replaceToken_single() {
+  void test_replaceTokenFollowing_single() {
     var a = _makeToken(0, 'a');
     var b = _makeToken(1, 'b');
     var c = _makeToken(2, 'c');
     var d = _makeToken(3, 'd');
     _link([a, b, d]);
     var rewriter = new TokenStreamRewriter();
-    rewriter.replaceToken(b, c);
+    rewriter.replaceTokenFollowing(a, c);
     expect(a.next, same(c));
     expect(c.next, same(d));
   }
@@ -187,18 +187,6 @@
 
   @override
   @failingTest
-  void test_replaceToken_multiple() {
-    super.test_replaceToken_multiple();
-  }
-
-  @override
-  @failingTest
-  void test_replaceToken_single() {
-    super.test_replaceToken_single();
-  }
-
-  @override
-  @failingTest
   void test_second_insertion_earlier_in_stream() {
     super.test_second_insertion_earlier_in_stream();
   }
diff --git a/pkg/front_end/test/fasta/testing/analyzer_diet_listener.dart b/pkg/front_end/test/fasta/testing/analyzer_diet_listener.dart
index af3fd2c..022afce 100644
--- a/pkg/front_end/test/fasta/testing/analyzer_diet_listener.dart
+++ b/pkg/front_end/test/fasta/testing/analyzer_diet_listener.dart
@@ -19,7 +19,7 @@
 import 'package:analyzer/src/fasta/ast_builder.dart' show AstBuilder;
 
 import 'package:analyzer/src/fasta/resolution_applier.dart'
-    show TypeContext, ValidatingResolutionApplier;
+    show ResolutionApplier, TypeContext;
 
 import 'package:analyzer/src/fasta/resolution_storer.dart'
     show InstrumentedResolutionStorer;
@@ -184,13 +184,13 @@
     // Now apply the resolution data and inferred types to the analyzer AST.
     var translatedDeclarations = _translateDeclarations(_kernelDeclarations);
     var translatedReferences = _translateReferences(_kernelReferences);
-    var resolutionApplier = new ValidatingResolutionApplier(
+    var resolutionApplier = new ResolutionApplier(
         new _TestTypeContext(),
         translatedDeclarations,
-        translatedReferences,
-        _kernelTypes,
         _declarationOffsets,
+        translatedReferences,
         _referenceOffsets,
+        _kernelTypes,
         _typeOffsets);
     ast.AstNode fields = listener.finishFields();
     fields.accept(resolutionApplier);
@@ -242,13 +242,13 @@
     // Now apply the resolution data and inferred types to the analyzer AST.
     var translatedDeclarations = _translateDeclarations(_kernelDeclarations);
     var translatedReferences = _translateReferences(_kernelReferences);
-    var resolutionApplier = new ValidatingResolutionApplier(
+    var resolutionApplier = new ResolutionApplier(
         new _TestTypeContext(),
         translatedDeclarations,
-        translatedReferences,
-        _kernelTypes,
         _declarationOffsets,
+        translatedReferences,
         _referenceOffsets,
+        _kernelTypes,
         _typeOffsets);
     ast.AstNode bodyAsAstNode = body;
     bodyAsAstNode.accept(resolutionApplier);
@@ -317,6 +317,9 @@
   ast.ClassElement get enclosingClassElement => null;
 
   @override
+  ast.DartType get stringType => null;
+
+  @override
   ast.DartType get typeType => null;
 
   @override
diff --git a/pkg/front_end/test/subpackage_relationships_test.dart b/pkg/front_end/test/subpackage_relationships_test.dart
index 529da68..9ddcf3f 100644
--- a/pkg/front_end/test/subpackage_relationships_test.dart
+++ b/pkg/front_end/test/subpackage_relationships_test.dart
@@ -55,10 +55,10 @@
     'lib/src',
     'lib/src/api_prototype',
     'lib/src/base',
+    'lib/src/fasta',
     'lib/src/fasta/scanner',
   ]),
   'lib/src/base': new SubpackageRules(allowedDependencies: [
-    'lib/src',
     'lib/src/api_prototype',
     'lib/src/fasta',
     'lib/src/fasta/util',
diff --git a/pkg/front_end/test/summary_generator_test.dart b/pkg/front_end/test/summary_generator_test.dart
index 92131af..052e616 100644
--- a/pkg/front_end/test/summary_generator_test.dart
+++ b/pkg/front_end/test/summary_generator_test.dart
@@ -111,27 +111,6 @@
     expect(errors, isEmpty);
   });
 
-  test('summarization with multi-roots can work hermetically', () async {
-    var errors = [];
-    var options = new CompilerOptions()
-      ..onError = ((e) => errors.add(e))
-      ..multiRoots = [toTestUri('rootA/'), toTestUri('rootB/')];
-
-    var multiRootSources = <String, String>{
-      'rootA/a.dart': allSources['a.dart'],
-      'rootB/b.dart': allSources['b.dart'],
-    };
-
-    await summarize(['multi-root:/b.dart'], multiRootSources, options: options);
-    expect(errors.first.toString(), contains('Invalid access'));
-    errors.clear();
-
-    await summarize(
-        ['multi-root:/a.dart', 'multi-root:/b.dart'], multiRootSources,
-        options: options);
-    expect(errors, isEmpty);
-  });
-
   // TODO(sigmund): test trimDependencies when it is part of the public API.
 }
 
diff --git a/pkg/front_end/testcases/ast_builder.status b/pkg/front_end/testcases/ast_builder.status
index f27e0c3..df13a6c 100644
--- a/pkg/front_end/testcases/ast_builder.status
+++ b/pkg/front_end/testcases/ast_builder.status
@@ -14,14 +14,9 @@
 classes: Crash
 default_values: Crash
 duplicated_named_args_3: Crash
-escape: Crash
 expressions: Crash
-external: Crash
-fallthrough: Crash
-for_in_scope: Crash
 function_type_is_check: Crash
 function_type_recovery: Crash
-functions: Crash
 illegal_named_function_expression: Crash
 illegal_named_function_expression_scope: Crash
 implicit_scope_test: Crash
@@ -29,13 +24,9 @@
 inference/assert_initializer: Crash
 inference/block_bodied_lambdas_async_star: Crash
 inference/bug30251: Crash
-inference/bug30620: Crash
-inference/bug30620_b: Crash
-inference/bug30620_c: Crash
 inference/bug30624: Crash
 inference/bug31133: Crash
 inference/call_corner_cases: Crash
-inference/complex_predecrement: Crash
 inference/constructors_infer_from_arguments: Crash
 inference/constructors_infer_from_arguments_redirecting: Crash
 inference/constructors_too_many_positional_arguments: Crash
@@ -68,7 +59,6 @@
 inference/field_initializer_context_this: Crash
 inference/field_initializer_parameter: Crash
 inference/for_each_downcast_iterable: Crash
-inference/for_in_loop_promotion: Crash
 inference/for_loop_initializer_expression: Crash
 inference/future_then: Crash
 inference/future_then_2: Crash
@@ -103,9 +93,7 @@
 inference/generic_methods_iterable_and_future: Crash
 inference/generic_methods_nested_generic_instantiation: Crash
 inference/greatest_closure_multiple_params: Crash
-inference/infer_assign_to_index_full: Crash
 inference/infer_assign_to_static: Crash
-inference/infer_assign_to_static_upwards: Crash
 inference/infer_correctly_on_multiple_variables_declared_together: Crash
 inference/infer_from_complex_expressions_if_outer_most_value_is_precise: Crash
 inference/infer_from_variables_in_cycle_libs_when_flag_is_on2: Crash
@@ -113,7 +101,6 @@
 inference/infer_from_variables_in_cycle_libs_when_flag_is_on: Crash
 inference/infer_from_variables_in_cycle_libs_when_flag_is_on_a: Crash
 inference/infer_from_variables_in_non_cycle_imports_with_flag2: Crash
-inference/infer_from_variables_in_non_cycle_imports_with_flag: Crash
 inference/infer_generic_method_type_named: Crash
 inference/infer_generic_method_type_positional2: Crash
 inference/infer_generic_method_type_positional: Crash
@@ -132,8 +119,6 @@
 inference/infer_types_on_loop_indices_for_each_loop_async: Crash
 inference/inferred_initializing_formal_checks_default_value: Crash
 inference/inferred_type_cascade: Crash
-inference/inferred_type_custom_index_op: Crash
-inference/inferred_type_custom_index_op_via_interface: Crash
 inference/inferred_type_is_enum: Crash
 inference/inferred_type_is_enum_values: Crash
 inference/inferred_type_is_typedef: Crash
@@ -141,18 +126,10 @@
 inference/inferred_type_uses_synthetic_function_type_named_param: Crash
 inference/inferred_type_uses_synthetic_function_type_positional_param: Crash
 inference/lambda_does_not_have_propagated_type_hint: Crash
-inference/map_literals: Crash
-inference/map_literals_can_infer_null: Crash
-inference/map_literals_top_level: Crash
 inference/method_call_with_type_arguments_static_method: Crash
-inference/null_coalescing_operator: Crash
-inference/null_coalescing_operator_2: Crash
-inference/null_literal_should_not_infer_as_bottom: Crash
 inference/parameter_defaults_downwards: Crash
 inference/parameter_defaults_upwards: Crash
-inference/promote_from_logical_rhs: Crash
 inference/static_method_tear_off: Crash
-inference/string_literal: Crash
 inference/super_initializer: Crash
 inference/super_initializer_substitution: Crash
 inference/switch_continue: Crash
@@ -160,7 +137,6 @@
 inference/try_catch: Crash
 inference/try_catch_finally: Crash
 inference/try_catch_promotion: Crash
-inference/type_promotion_not_and_not: Crash
 inference/unsafe_block_closure_inference_closure_call: Crash
 inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1: Crash
 inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2: Crash
@@ -172,27 +148,15 @@
 inference/unsafe_block_closure_inference_in_map_typed: Crash
 inference_new/for_each_invalid_iterable: Crash
 inference_new/for_each_outer_var_type: Crash
-inference_new/indexed_assign_combiner: Crash
-inference_new/infer_assign_to_index: Crash
-inference_new/infer_assign_to_index_full: Crash
-inference_new/infer_assign_to_index_set_vs_get: Crash
-inference_new/infer_assign_to_index_upwards: Crash
-inference_new/infer_assign_to_ref: Crash
 inference_new/infer_assign_to_static: Crash
-inference_new/infer_assign_to_static_upwards: Crash
-inference_new/infer_logical: Crash
-inference_new/invalid_assignment_during_toplevel_inference: Crash
-inference_new/static_assign_combiner: Crash
 inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2: Crash
 inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2: Crash
 invocations: Crash
-local_generic_function: Crash
 metadata_enum: Crash
 metadata_named_mixin_application: Crash
 micro: Crash
 named_parameters: Crash
 null_aware: Crash
-operators: Crash
 optional: Crash
 qualified: Crash
 rasta/abstract_constructor: Crash
@@ -208,7 +172,6 @@
 rasta/issue_000001: Crash
 rasta/issue_000002: Crash
 rasta/issue_000004: Crash
-rasta/issue_000025: Crash
 rasta/issue_000031: Crash
 rasta/issue_000036: Crash
 rasta/issue_000039: VerificationError
@@ -219,8 +182,6 @@
 rasta/issue_000068: Crash
 rasta/issue_000069: Crash
 rasta/issue_000070: Crash
-rasta/issue_000081: Crash
-rasta/malformed_const_constructor: Crash
 rasta/malformed_function: Crash
 rasta/mandatory_parameter_initializer: VerificationError
 rasta/mixin_library: Crash
@@ -269,8 +230,6 @@
 runtime_checks/implicit_downcast_while: Crash
 runtime_checks_new/contravariant_combiner: Crash
 runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast: Crash
-runtime_checks_new/contravariant_index_assign: Crash
-runtime_checks_new/contravariant_index_get: Crash
 runtime_checks_new/derived_class_typed: Crash
 runtime_checks_new/implicit_downcast_field: Crash
 runtime_checks_new/mixin_forwarding_stub_field: Crash
@@ -278,10 +237,7 @@
 runtime_checks_new/mixin_forwarding_stub_setter: Crash
 runtime_checks_new/stub_checked_via_target: Crash
 statements: Crash
-static_setter: Crash
 super_rasta_copy: Crash
-top_level_accessors: Crash
 type_variable_as_super: Crash
 type_variable_prefix: Crash
 uninitialized_fields: Crash
-void_methods: Crash
diff --git a/pkg/front_end/testcases/bug21938.dart b/pkg/front_end/testcases/bug21938.dart
new file mode 100644
index 0000000..c8555af
--- /dev/null
+++ b/pkg/front_end/testcases/bug21938.dart
@@ -0,0 +1,18 @@
+// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/*@testedFeatures=error*/
+
+test() {
+  Object x;
+  Function f;
+  x /*@error=UndefinedMethod*/ ();
+  x /*@error=UndefinedMethod*/ (3);
+  f(5, 2);
+  x. /*@error=UndefinedMethod*/ call();
+  f.call;
+  f.call(5, 2);
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/bug21938.dart.direct.expect b/pkg/front_end/testcases/bug21938.dart.direct.expect
new file mode 100644
index 0000000..a399b1b
--- /dev/null
+++ b/pkg/front_end/testcases/bug21938.dart.direct.expect
@@ -0,0 +1,15 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+static method test() → dynamic {
+  core::Object x;
+  core::Function f;
+  x.call();
+  x.call(3);
+  f.call(5, 2);
+  x.call();
+  f.call;
+  f.call(5, 2);
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/bug21938.dart.outline.expect b/pkg/front_end/testcases/bug21938.dart.outline.expect
new file mode 100644
index 0000000..a29647d
--- /dev/null
+++ b/pkg/front_end/testcases/bug21938.dart.outline.expect
@@ -0,0 +1,7 @@
+library;
+import self as self;
+
+static method test() → dynamic
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/bug21938.dart.strong.expect b/pkg/front_end/testcases/bug21938.dart.strong.expect
new file mode 100644
index 0000000..5a5cd3c
--- /dev/null
+++ b/pkg/front_end/testcases/bug21938.dart.strong.expect
@@ -0,0 +1,15 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+static method test() → dynamic {
+  core::Object x;
+  core::Function f;
+  let final dynamic #t1 = x in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/bug21938.dart:10:4: Error: The method 'call' isn't defined for the class 'dart.core::Object'.\nTry correcting the name to the name of an existing method, or defining a method named 'call'.\n  x /*@error=UndefinedMethod*/ ();\n   ^"));
+  let final dynamic #t2 = x in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/bug21938.dart:11:4: Error: The method 'call' isn't defined for the class 'dart.core::Object'.\nTry correcting the name to the name of an existing method, or defining a method named 'call'.\n  x /*@error=UndefinedMethod*/ (3);\n   ^"));
+  f.call(5, 2);
+  let final dynamic #t3 = x in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/bug21938.dart:13:33: Error: The method 'call' isn't defined for the class 'dart.core::Object'.\nTry correcting the name to the name of an existing method, or defining a method named 'call'.\n  x. /*@error=UndefinedMethod*/ call();\n                                ^"));
+  f.call;
+  f.call(5, 2);
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart b/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart
index 0323c48..ec23762 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart
@@ -7,7 +7,7 @@
 
 typedef T Function2<S, T>(S x);
 
-void main() {
+void test() {
   {
     Function2<int, String> l0 = /*@returnType=String*/ (int x) => null;
     Function2<int, String> l1 = /*@returnType=String*/ (int x) => "hello";
@@ -68,3 +68,5 @@
             x. /*@target=String::substring*/ substring(3);
   }
 }
+
+main() {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.direct.expect b/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.direct.expect
index 2213fe9..12eb980 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.direct.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 typedef Function2<S extends core::Object, T extends core::Object> = (S) → T;
-static method main() → void {
+static method test() → void {
   {
     (core::int) → core::String l0 = (core::int x) → dynamic => null;
     (core::int) → core::String l1 = (core::int x) → dynamic => "hello";
@@ -41,3 +41,4 @@
     (core::String) → core::String l4 = (dynamic x) → dynamic => x.substring(3);
   }
 }
+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 a30965f..aaba521 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
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 typedef Function2<S extends core::Object, T extends core::Object> = (S) → T;
-static method main() → void {
+static method test() → void {
   {
     (core::int) → core::String l0 = (core::int x) → core::String => null;
     (core::int) → core::String l1 = (core::int x) → core::String => "hello";
@@ -37,7 +37,8 @@
     (core::int) → core::int l0 = (core::int x) → core::int => x;
     (core::int) → core::int l1 = (core::int x) → core::int => x.{core::num::+}(1);
     (core::int) → core::String l2 = let final dynamic #t10 = (core::int x) → core::int => x in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:61:63: Error: A value of type '(dart.core::int) \u8594 dart.core::int' can't be assigned to a variable of type '(dart.core::int) \u8594 dart.core::String'.\nTry changing the type of the left hand side, or casting the right hand side to '(dart.core::int) \u8594 dart.core::String'.\n        l2 = /*error:INVALID_ASSIGNMENT*/ /*@returnType=int*/ (/*@type=int*/ x) =>\n                                                              ^"));
-    (core::int) → core::String l3 = (core::int x) → core::String => x.substring(3);
+    (core::int) → core::String l3 = (core::int x) → core::String => let final dynamic #t11 = x in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:65:14: Error: The method 'substring' isn't defined for the class 'dart.core::int'.\nTry correcting the name to the name of an existing method, or defining a method named 'substring'.\n            .substring(3);\n             ^"));
     (core::String) → core::String l4 = (core::String x) → core::String => x.{core::String::substring}(3);
   }
 }
+static method main() → dynamic {}
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 feeb43f..73f816f 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
@@ -53,7 +53,7 @@
     x = <T extends core::Object>(core::int x) → core::int => x.{core::num::+}(1);
     <T extends core::Object>(core::int) → core::String y = int2String;
     y = let final dynamic #t10 = <T extends core::Object>(core::int x) → core::int => x in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:63:36: Error: A value of type '<T extends dart.core::Object>(dart.core::int) \u8594 dart.core::int' can't be assigned to a variable of type '<T extends dart.core::Object>(dart.core::int) \u8594 dart.core::String'.\nTry changing the type of the left hand side, or casting the right hand side to '<T extends dart.core::Object>(dart.core::int) \u8594 dart.core::String'.\n            T> /*@returnType=int*/ (/*@type=int*/ x) =>\n                                   ^"));
-    y = <T extends core::Object>(core::int x) → core::String => x.substring(3);
+    y = <T extends core::Object>(core::int x) → core::String => let final dynamic #t11 = x in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:66:10: Error: The method 'substring' isn't defined for the class 'dart.core::int'.\nTry correcting the name to the name of an existing method, or defining a method named 'substring'.\n        .substring(3);\n         ^"));
     <T extends core::Object>(core::String) → core::String z = string2String;
     z = <T extends core::Object>(core::String x) → core::String => x.{core::String::substring}(3);
   }
diff --git a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart
index 82db05f..ab84ffd 100644
--- a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart
+++ b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart
@@ -10,7 +10,7 @@
 Future<int> make(int x) => (new /*@typeArgs=int*/ Future(
     /*@returnType=int*/ () => x));
 
-main() {
+test() {
   Iterable<Future<int>> list = <int>[1, 2, 3]
       . /*@typeArgs=Future<int>*/ /*@target=Iterable::map*/ map(make);
   Future<List<int>> results = Future. /*@typeArgs=int*/ wait(list);
@@ -44,3 +44,5 @@
                       x /*@target=String::+*/ +
                       y. /*@target=int::toString*/ toString()));
 }
+
+main() {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.direct.expect b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.direct.expect
index d48ab2c..cda283f 100644
--- a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.direct.expect
@@ -5,10 +5,11 @@
 
 static method make(core::int x) → asy::Future<core::int>
   return asy::Future::•<dynamic>(() → dynamic => x);
-static method main() → dynamic {
+static method test() → dynamic {
   core::Iterable<asy::Future<core::int>> list = <core::int>[1, 2, 3].map(self::make);
   asy::Future<core::List<core::int>> results = asy::Future::wait<dynamic>(list);
   asy::Future<core::String> results2 = results.then((core::List<core::int> list) → dynamic => list.fold("", (dynamic x, dynamic y) → dynamic => x.+(y.toString())));
   asy::Future<core::String> results3 = results.then((core::List<core::int> list) → dynamic => list.fold("", (core::String x, dynamic y) → dynamic => x.+(y.toString())));
   asy::Future<core::String> results4 = results.then((core::List<core::int> list) → dynamic => list.fold<core::String>("", (dynamic x, dynamic y) → dynamic => x.+(y.toString())));
 }
+static method main() → dynamic {}
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 3b152f3..954645b 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
@@ -5,10 +5,11 @@
 
 static method make(core::int x) → asy::Future<core::int>
   return asy::Future::•<core::int>(() → core::int => x);
-static method main() → dynamic {
+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> => x.+(y.{core::int::toString}())));
-  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 dynamic #t1 = (core::String x, core::int y) → core::String => x.{core::String::+}(y.{core::int::toString}()) in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:31:108: Error: A value of type '(dart.core::String, dart.core::int) \u8594 dart.core::String' can't be assigned to a variable of type '(dart.async::FutureOr<dart.core::String>, dart.core::int) \u8594 dart.async::FutureOr<dart.core::String>'.\nTry changing the type of the left hand side, or casting the right hand side to '(dart.async::FutureOr<dart.core::String>, dart.core::int) \u8594 dart.async::FutureOr<dart.core::String>'.\n                  /*info:INFERRED_TYPE_CLOSURE,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ /*@returnType=String*/ (String\n                                                                                                           ^"))));
+  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 let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:23:120: Error: The method '+' isn't defined for the class 'dart.async::FutureOr<dart.core::String>'.\nTry correcting the name to the name of an existing method, or defining a method named '+'.\n                          /*@type=int*/ y) => /*info:DYNAMIC_CAST,info:DYNAMIC_INVOKE*/ x /*error:UNDEFINED_OPERATOR*/ +\n                                                                                                                       ^"))));
+  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 dynamic #t2 = (core::String x, core::int y) → core::String => x.{core::String::+}(y.{core::int::toString}()) in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:31:108: Error: A value of type '(dart.core::String, dart.core::int) \u8594 dart.core::String' can't be assigned to a variable of type '(dart.async::FutureOr<dart.core::String>, dart.core::int) \u8594 dart.async::FutureOr<dart.core::String>'.\nTry changing the type of the left hand side, or casting the right hand side to '(dart.async::FutureOr<dart.core::String>, dart.core::int) \u8594 dart.async::FutureOr<dart.core::String>'.\n                  /*info:INFERRED_TYPE_CLOSURE,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ /*@returnType=String*/ (String\n                                                                                                           ^"))));
   asy::Future<core::String> results4 = results.{asy::Future::then}<core::String>((core::List<core::int> list) → core::String => list.{core::Iterable::fold}<core::String>("", (core::String x, core::int y) → core::String => x.{core::String::+}(y.{core::int::toString}())));
 }
+static method main() → dynamic {}
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 a7dfd05..690683f 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
@@ -24,30 +24,30 @@
 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 = new self::A::•().unary-();
+static field dynamic i = let final dynamic #t3 = new self::A::•() in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("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 'test::A'.\nTry correcting the name to the name of an existing method, or defining a method named 'unary-'.\nvar /*@topType=dynamic*/ i = /*error:UNDEFINED_OPERATOR,info:DYNAMIC_INVOKE*/ -new A();\n                                                                              ^"));
 static field self::B j = null as self::B;
 static method test1() → dynamic {
-  self::a = let final dynamic #t3 = "hi" in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:38:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'test::A'.\nTry changing the type of the left hand side, or casting the right hand side to 'test::A'.\n  a = /*error:INVALID_ASSIGNMENT*/ \"hi\";\n                                   ^"));
+  self::a = let final dynamic #t4 = "hi" in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:38:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'test::A'.\nTry changing the type of the left hand side, or casting the right hand side to 'test::A'.\n  a = /*error:INVALID_ASSIGNMENT*/ \"hi\";\n                                   ^"));
   self::a = new self::B::•(3);
-  self::b = let final dynamic #t4 = "hi" in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:40:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'test::B'.\nTry changing the type of the left hand side, or casting the right hand side to 'test::B'.\n  b = /*error:INVALID_ASSIGNMENT*/ \"hi\";\n                                   ^"));
+  self::b = let final dynamic #t5 = "hi" in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:40:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'test::B'.\nTry changing the type of the left hand side, or casting the right hand side to 'test::B'.\n  b = /*error:INVALID_ASSIGNMENT*/ \"hi\";\n                                   ^"));
   self::b = new self::B::•(3);
   self::c1 = <dynamic>[];
-  self::c1 = let final dynamic #t5 = <dynamic, dynamic>{} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:43:68: Error: A value of type 'dart.core::Map<dynamic, dynamic>' can't be assigned to a variable of type 'dart.core::List<dynamic>'.\nTry changing the type of the left hand side, or casting the right hand side to 'dart.core::List<dynamic>'.\n  c1 = /*error:INVALID_ASSIGNMENT*/ /*@typeArgs=dynamic, dynamic*/ {};\n                                                                   ^"));
+  self::c1 = let final dynamic #t6 = <dynamic, dynamic>{} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:43:68: Error: A value of type 'dart.core::Map<dynamic, dynamic>' can't be assigned to a variable of type 'dart.core::List<dynamic>'.\nTry changing the type of the left hand side, or casting the right hand side to 'dart.core::List<dynamic>'.\n  c1 = /*error:INVALID_ASSIGNMENT*/ /*@typeArgs=dynamic, dynamic*/ {};\n                                                                   ^"));
   self::c2 = <dynamic>[];
-  self::c2 = let final dynamic #t6 = <dynamic, dynamic>{} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:45:68: Error: A value of type 'dart.core::Map<dynamic, dynamic>' can't be assigned to a variable of type 'dart.core::List<dynamic>'.\nTry changing the type of the left hand side, or casting the right hand side to 'dart.core::List<dynamic>'.\n  c2 = /*error:INVALID_ASSIGNMENT*/ /*@typeArgs=dynamic, dynamic*/ {};\n                                                                   ^"));
+  self::c2 = let final dynamic #t7 = <dynamic, dynamic>{} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:45:68: Error: A value of type 'dart.core::Map<dynamic, dynamic>' can't be assigned to a variable of type 'dart.core::List<dynamic>'.\nTry changing the type of the left hand side, or casting the right hand side to 'dart.core::List<dynamic>'.\n  c2 = /*error:INVALID_ASSIGNMENT*/ /*@typeArgs=dynamic, dynamic*/ {};\n                                                                   ^"));
   self::d = <dynamic, dynamic>{};
-  self::d = let final dynamic #t7 = 3 in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:47:36: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::Map<dynamic, dynamic>'.\nTry changing the type of the left hand side, or casting the right hand side to 'dart.core::Map<dynamic, dynamic>'.\n  d = /*error:INVALID_ASSIGNMENT*/ 3;\n                                   ^"));
+  self::d = let final dynamic #t8 = 3 in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:47:36: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::Map<dynamic, dynamic>'.\nTry changing the type of the left hand side, or casting the right hand side to 'dart.core::Map<dynamic, dynamic>'.\n  d = /*error:INVALID_ASSIGNMENT*/ 3;\n                                   ^"));
   self::e = new self::A::•();
-  self::e = let final dynamic #t8 = <dynamic, dynamic>{} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:49:67: Error: A value of type 'dart.core::Map<dynamic, dynamic>' can't be assigned to a variable of type 'test::A'.\nTry changing the type of the left hand side, or casting the right hand side to 'test::A'.\n  e = /*error:INVALID_ASSIGNMENT*/ /*@typeArgs=dynamic, dynamic*/ {};\n                                                                  ^"));
+  self::e = let final dynamic #t9 = <dynamic, dynamic>{} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:49:67: Error: A value of type 'dart.core::Map<dynamic, dynamic>' can't be assigned to a variable of type 'test::A'.\nTry changing the type of the left hand side, or casting the right hand side to 'test::A'.\n  e = /*error:INVALID_ASSIGNMENT*/ /*@typeArgs=dynamic, dynamic*/ {};\n                                                                  ^"));
   self::f = 3;
-  self::f = let final dynamic #t9 = false in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:51:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'dart.core::int'.\nTry changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.\n  f = /*error:INVALID_ASSIGNMENT*/ false;\n                                   ^"));
+  self::f = let final dynamic #t10 = false in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:51:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'dart.core::int'.\nTry changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.\n  f = /*error:INVALID_ASSIGNMENT*/ false;\n                                   ^"));
   self::g = 1;
-  self::g = let final dynamic #t10 = false in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:53:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'dart.core::int'.\nTry changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.\n  g = /*error:INVALID_ASSIGNMENT*/ false;\n                                   ^"));
-  self::h = let final dynamic #t11 = false in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:54:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'test::B'.\nTry changing the type of the left hand side, or casting the right hand side to 'test::B'.\n  h = /*error:INVALID_ASSIGNMENT*/ false;\n                                   ^"));
+  self::g = let final dynamic #t11 = false in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:53:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'dart.core::int'.\nTry changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.\n  g = /*error:INVALID_ASSIGNMENT*/ false;\n                                   ^"));
+  self::h = let final dynamic #t12 = false in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:54:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'test::B'.\nTry changing the type of the left hand side, or casting the right hand side to 'test::B'.\n  h = /*error:INVALID_ASSIGNMENT*/ false;\n                                   ^"));
   self::h = new self::B::•("b");
   self::i = false;
   self::j = new self::B::•("b");
-  self::j = let final dynamic #t12 = false in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:58:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'test::B'.\nTry changing the type of the left hand side, or casting the right hand side to 'test::B'.\n  j = /*error:INVALID_ASSIGNMENT*/ false;\n                                   ^"));
-  self::j = let final dynamic #t13 = <dynamic>[] in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:59:58: Error: A value of type 'dart.core::List<dynamic>' can't be assigned to a variable of type 'test::B'.\nTry changing the type of the left hand side, or casting the right hand side to 'test::B'.\n  j = /*error:INVALID_ASSIGNMENT*/ /*@typeArgs=dynamic*/ [];\n                                                         ^"));
+  self::j = let final dynamic #t13 = false in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:58:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'test::B'.\nTry changing the type of the left hand side, or casting the right hand side to 'test::B'.\n  j = /*error:INVALID_ASSIGNMENT*/ false;\n                                   ^"));
+  self::j = let final dynamic #t14 = <dynamic>[] in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:59:58: Error: A value of type 'dart.core::List<dynamic>' can't be assigned to a variable of type 'test::B'.\nTry changing the type of the left hand side, or casting the right hand side to 'test::B'.\n  j = /*error:INVALID_ASSIGNMENT*/ /*@typeArgs=dynamic*/ [];\n                                                         ^"));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/rasta/malformed_const_constructor.dart.direct.expect b/pkg/front_end/testcases/rasta/malformed_const_constructor.dart.direct.expect
index e2a6950..3e1085f 100644
--- a/pkg/front_end/testcases/rasta/malformed_const_constructor.dart.direct.expect
+++ b/pkg/front_end/testcases/rasta/malformed_const_constructor.dart.direct.expect
@@ -3,9 +3,11 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  const constructor •() → dynamic
-    : invalid-initializer;
+  const constructor •() → void
+    : final dynamic #t1 = const core::_ConstantExpressionError::•()._throw(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/malformed_const_constructor.dart:7:7: Error: Setter not found: 'x'.\n    : x = 'foo'\n      ^"))
+    ;
 }
+static const field dynamic #errors = const <dynamic>["pkg/front_end/testcases/rasta/malformed_const_constructor.dart:8:5: Error: Expected a function body, but got ':'.\n    : x = 'foo'\n    ^", "pkg/front_end/testcases/rasta/malformed_const_constructor.dart: Error: A const constructor can't have a body."]/* from null */;
 static method main() → dynamic {
   const self::A::•();
   new self::A::•();
diff --git a/pkg/front_end/testcases/rasta/super.dart.direct.expect b/pkg/front_end/testcases/rasta/super.dart.direct.expect
index b891a38..23bb7ae 100644
--- a/pkg/front_end/testcases/rasta/super.dart.direct.expect
+++ b/pkg/front_end/testcases/rasta/super.dart.direct.expect
@@ -3,13 +3,14 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  field dynamic a;
-  field dynamic b;
-  field dynamic c;
-  field dynamic d;
-  final field dynamic f;
-  default constructor •() → self::A
-    : super core::Object::•();
+  field dynamic a = null;
+  field dynamic b = null;
+  field dynamic c = null;
+  field dynamic d = null;
+  final field dynamic f = null;
+  default constructor •() → void
+    : super core::Object::•()
+    ;
   get e() → dynamic
     return null;
   set g(dynamic _) → dynamic {}
@@ -32,24 +33,26 @@
   set n(dynamic _) → dynamic {}
 }
 class B extends self::A {
-  final field dynamic d;
-  default constructor •() → self::B
-    : super self::A::•();
+  final field dynamic d = null;
+  default constructor •() → void
+    : super self::A::•()
+    ;
   get b() → dynamic
     return null;
   set c(dynamic x) → dynamic {}
   set i(dynamic x) → dynamic {}
 }
 class C extends self::B {
-  default constructor •() → self::C
-    : super self::B::•();
+  default constructor •() → void
+    : super self::B::•()
+    ;
   method test() → dynamic {
     super.{self::A::~}();
     self::use(super.{self::A::~}());
     super.{self::A::unary-}();
     self::use(super.{self::A::unary-}());
-    invalid-expression;
-    self::use(invalid-expression);
+    this.•.+(const core::_ConstantExpressionError::•()._throw(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:43:6: Error: Can't use `super` as an expression.\n    +super;\n     ^")));
+    self::use(this.•.+(const core::_ConstantExpressionError::•()._throw(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:44:10: Error: Can't use `super` as an expression.\n    use(+super);\n         ^"))));
     super.{self::A::==}(87);
     self::use(super.{self::A::==}(87));
     !super.{self::A::==}(87);
@@ -76,56 +79,56 @@
     self::use(super.{self::A::[]}(87));
     super.{self::A::m};
     self::use(super.{self::A::m});
-    throw core::_unresolvedSuperGetterError(this, #n, <dynamic>[], <dynamic, dynamic>{}, null);
-    self::use(throw core::_unresolvedSuperGetterError(this, #n, <dynamic>[], <dynamic, dynamic>{}, null));
+    super.{self::A::n};
+    self::use(super.{self::A::n});
     super.{self::A::a} = super.{self::A::a}.+(1);
     self::use(let final dynamic #t1 = super.{self::A::a} in let final dynamic #t2 = super.{self::A::a} = #t1.+(1) in #t1);
     super.{self::A::b} = super.{self::B::b}.+(1);
     self::use(let final dynamic #t3 = super.{self::B::b} in let final dynamic #t4 = super.{self::A::b} = #t3.+(1) in #t3);
     super.{self::B::c} = super.{self::A::c}.+(1);
     self::use(let final dynamic #t5 = super.{self::A::c} in let final dynamic #t6 = super.{self::B::c} = #t5.+(1) in #t5);
-    super.d = super.{self::B::d}.+(1);
-    self::use(let final dynamic #t7 = super.{self::B::d} in let final dynamic #t8 = super.d = #t7.+(1) in #t7);
+    super.{self::A::d} = super.{self::B::d}.+(1);
+    self::use(let final dynamic #t7 = super.{self::B::d} in let final dynamic #t8 = super.{self::A::d} = #t7.+(1) in #t7);
     super.e = super.{self::A::e}.+(1);
     self::use(let final dynamic #t9 = super.{self::A::e} in let final dynamic #t10 = super.e = #t9.+(1) in #t9);
     super.f = super.{self::A::f}.+(1);
     self::use(let final dynamic #t11 = super.{self::A::f} in let final dynamic #t12 = super.f = #t11.+(1) in #t11);
-    throw core::_unresolvedSuperGetterError(this, #g, <dynamic>[], <dynamic, dynamic>{}, null);
-    self::use(throw core::_unresolvedSuperGetterError(this, #g, <dynamic>[], <dynamic, dynamic>{}, null));
+    super.{self::A::g} = super.g.+(1);
+    self::use(let final dynamic #t13 = super.g in let final dynamic #t14 = super.{self::A::g} = #t13.+(1) in #t13);
     super.{self::A::h} = super.{self::A::h}.+(1);
-    self::use(let final dynamic #t13 = super.{self::A::h} in let final dynamic #t14 = super.{self::A::h} = #t13.+(1) in #t13);
+    self::use(let final dynamic #t15 = super.{self::A::h} in let final dynamic #t16 = super.{self::A::h} = #t15.+(1) in #t15);
     super.{self::B::i} = super.{self::A::i}.+(1);
-    self::use(let final dynamic #t15 = super.{self::A::i} in let final dynamic #t16 = super.{self::B::i} = #t15.+(1) in #t15);
-    let final dynamic #t17 = 87 in super.{self::A::[]=}(#t17, super.{self::A::[]}(#t17).+(1));
-    self::use(let final dynamic #t18 = 87 in let final dynamic #t19 = super.{self::A::[]}(#t18) in let final dynamic #t20 = super.{self::A::[]=}(#t18, #t19.+(1)) in #t19);
+    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 dynamic #t19 = 87 in super.{self::A::[]=}(#t19, super.{self::A::[]}(#t19).+(1));
+    self::use(let final dynamic #t20 = 87 in let final dynamic #t21 = super.{self::A::[]}(#t20) in let final dynamic #t22 = super.{self::A::[]=}(#t20, #t21.+(1)) in #t21);
     super.m = super.{self::A::m}.+(1);
-    self::use(let final dynamic #t21 = super.{self::A::m} in let final dynamic #t22 = super.m = #t21.+(1) in #t21);
-    throw core::_unresolvedSuperGetterError(this, #n, <dynamic>[], <dynamic, dynamic>{}, null);
-    self::use(throw core::_unresolvedSuperGetterError(this, #n, <dynamic>[], <dynamic, dynamic>{}, null));
+    self::use(let final dynamic #t23 = super.{self::A::m} in let final dynamic #t24 = super.m = #t23.+(1) in #t23);
+    super.{self::A::n} = super.{self::A::n}.+(1);
+    self::use(let final dynamic #t25 = super.{self::A::n} in let final dynamic #t26 = super.{self::A::n} = #t25.+(1) 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);
     self::use(super.{self::A::b} = super.{self::B::b}.+(1));
     super.{self::B::c} = super.{self::A::c}.+(1);
     self::use(super.{self::B::c} = super.{self::A::c}.+(1));
-    super.d = super.{self::B::d}.+(1);
-    self::use(super.d = super.{self::B::d}.+(1));
+    super.{self::A::d} = super.{self::B::d}.+(1);
+    self::use(super.{self::A::d} = super.{self::B::d}.+(1));
     super.e = super.{self::A::e}.+(1);
     self::use(super.e = super.{self::A::e}.+(1));
     super.f = super.{self::A::f}.+(1);
     self::use(super.f = super.{self::A::f}.+(1));
-    throw core::_unresolvedSuperGetterError(this, #g, <dynamic>[], <dynamic, dynamic>{}, null);
-    self::use(throw core::_unresolvedSuperGetterError(this, #g, <dynamic>[], <dynamic, dynamic>{}, null));
+    super.{self::A::g} = super.g.+(1);
+    self::use(super.{self::A::g} = super.g.+(1));
     super.{self::A::h} = super.{self::A::h}.+(1);
     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 dynamic #t23 = 87 in super.{self::A::[]=}(#t23, super.{self::A::[]}(#t23).+(1));
-    self::use(let final dynamic #t24 = 87 in let final dynamic #t25 = super.{self::A::[]}(#t24).+(1) in let final dynamic #t26 = super.{self::A::[]=}(#t24, #t25) in #t25);
+    let final dynamic #t27 = 87 in let final dynamic #t28 = super.{self::A::[]}(#t27).+(1) in let final dynamic #t29 = super.{self::A::[]=}(#t27, #t28) in #t28;
+    self::use(let final dynamic #t30 = 87 in let final dynamic #t31 = super.{self::A::[]}(#t30).+(1) in let final dynamic #t32 = super.{self::A::[]=}(#t30, #t31) in #t31);
     super.m = super.{self::A::m}.+(1);
     self::use(super.m = super.{self::A::m}.+(1));
-    throw core::_unresolvedSuperGetterError(this, #n, <dynamic>[], <dynamic, dynamic>{}, null);
-    self::use(throw core::_unresolvedSuperGetterError(this, #n, <dynamic>[], <dynamic, dynamic>{}, null));
+    super.{self::A::n} = super.{self::A::n}.+(1);
+    self::use(super.{self::A::n} = super.{self::A::n}.+(1));
     super.{self::A::a}.call();
     self::use(super.{self::A::a}.call());
     super.{self::B::b}.call();
@@ -138,8 +141,8 @@
     self::use(super.{self::A::e}.call());
     super.{self::A::f}.call();
     self::use(super.{self::A::f}.call());
-    super.g.call();
-    self::use(super.g.call());
+    super.g();
+    self::use(super.g());
     super.{self::A::h}.call();
     self::use(super.{self::A::h}.call());
     super.{self::A::i}.call();
@@ -150,16 +153,16 @@
     self::use(super.{self::A::m}());
     super.{self::A::m}(87);
     self::use(super.{self::A::m}(87));
-    throw core::_unresolvedSuperMethodError(this, #n, <dynamic>[87], <dynamic, dynamic>{}, null);
-    self::use(throw core::_unresolvedSuperMethodError(this, #n, <dynamic>[87], <dynamic, dynamic>{}, null));
+    super.{self::A::n}(87);
+    self::use(super.{self::A::n}(87));
     super.{self::A::a} = 42;
     self::use(super.{self::A::a} = 42);
     super.{self::A::b} = 42;
     self::use(super.{self::A::b} = 42);
     super.{self::B::c} = 42;
     self::use(super.{self::B::c} = 42);
-    super.d = 42;
-    self::use(super.d = 42);
+    super.{self::A::d} = 42;
+    self::use(super.{self::A::d} = 42);
     super.e = 42;
     self::use(super.e = 42);
     super.f = 42;
@@ -171,85 +174,86 @@
     super.{self::B::i} = 42;
     self::use(super.{self::B::i} = 42);
     super.{self::A::[]=}(87, 42);
-    self::use(let final dynamic #t27 = 87 in let final dynamic #t28 = 42 in let final dynamic #t29 = super.{self::A::[]=}(#t27, #t28) in #t28);
+    self::use(let final dynamic #t33 = 87 in let final dynamic #t34 = 42 in let final dynamic #t35 = super.{self::A::[]=}(#t33, #t34) in #t34);
     super.m = 42;
     self::use(super.m = 42);
-    throw core::_unresolvedSuperSetterError(this, #n, <dynamic>[42], <dynamic, dynamic>{}, null);
-    self::use(throw core::_unresolvedSuperSetterError(this, #n, <dynamic>[42], <dynamic, dynamic>{}, null));
+    super.{self::A::n} = 42;
+    self::use(super.{self::A::n} = 42);
     super.{self::A::a}.==(null) ? super.{self::A::a} = 42 : null;
-    self::use(let final dynamic #t30 = super.{self::A::a} in #t30.==(null) ? super.{self::A::a} = 42 : #t30);
+    self::use(let final dynamic #t36 = super.{self::A::a} in #t36.==(null) ? super.{self::A::a} = 42 : #t36);
     super.{self::B::b}.==(null) ? super.{self::A::b} = 42 : null;
-    self::use(let final dynamic #t31 = super.{self::B::b} in #t31.==(null) ? super.{self::A::b} = 42 : #t31);
+    self::use(let final dynamic #t37 = super.{self::B::b} in #t37.==(null) ? super.{self::A::b} = 42 : #t37);
     super.{self::A::c}.==(null) ? super.{self::B::c} = 42 : null;
-    self::use(let final dynamic #t32 = super.{self::A::c} in #t32.==(null) ? super.{self::B::c} = 42 : #t32);
-    super.{self::B::d}.==(null) ? super.d = 42 : null;
-    self::use(let final dynamic #t33 = super.{self::B::d} in #t33.==(null) ? super.d = 42 : #t33);
+    self::use(let final dynamic #t38 = super.{self::A::c} in #t38.==(null) ? super.{self::B::c} = 42 : #t38);
+    super.{self::B::d}.==(null) ? super.{self::A::d} = 42 : null;
+    self::use(let final dynamic #t39 = super.{self::B::d} in #t39.==(null) ? super.{self::A::d} = 42 : #t39);
     super.{self::A::e}.==(null) ? super.e = 42 : null;
-    self::use(let final dynamic #t34 = super.{self::A::e} in #t34.==(null) ? super.e = 42 : #t34);
+    self::use(let final dynamic #t40 = super.{self::A::e} in #t40.==(null) ? super.e = 42 : #t40);
     super.{self::A::f}.==(null) ? super.f = 42 : null;
-    self::use(let final dynamic #t35 = super.{self::A::f} in #t35.==(null) ? super.f = 42 : #t35);
-    throw core::_unresolvedSuperGetterError(this, #g, <dynamic>[], <dynamic, dynamic>{}, null);
-    self::use(throw core::_unresolvedSuperGetterError(this, #g, <dynamic>[], <dynamic, dynamic>{}, null));
+    self::use(let final dynamic #t41 = super.{self::A::f} in #t41.==(null) ? super.f = 42 : #t41);
+    super.g.==(null) ? super.{self::A::g} = 42 : null;
+    self::use(let final dynamic #t42 = super.g in #t42.==(null) ? super.{self::A::g} = 42 : #t42);
     super.{self::A::h}.==(null) ? super.{self::A::h} = 42 : null;
-    self::use(let final dynamic #t36 = super.{self::A::h} in #t36.==(null) ? super.{self::A::h} = 42 : #t36);
+    self::use(let final dynamic #t43 = super.{self::A::h} in #t43.==(null) ? super.{self::A::h} = 42 : #t43);
     super.{self::A::i}.==(null) ? super.{self::B::i} = 42 : null;
-    self::use(let final dynamic #t37 = super.{self::A::i} in #t37.==(null) ? super.{self::B::i} = 42 : #t37);
-    let final dynamic #t38 = 87 in super.{self::A::[]}(#t38).==(null) ? super.{self::A::[]=}(#t38, 42) : null;
-    self::use(let final dynamic #t39 = 87 in let final dynamic #t40 = super.{self::A::[]}(#t39) in #t40.==(null) ? let final dynamic #t41 = 42 in let final dynamic #t42 = super.{self::A::[]=}(#t39, #t41) in #t41 : #t40);
+    self::use(let final dynamic #t44 = super.{self::A::i} in #t44.==(null) ? super.{self::B::i} = 42 : #t44);
+    let final dynamic #t45 = 87 in super.{self::A::[]}(#t45).==(null) ? let final dynamic #t46 = 42 in let final dynamic #t47 = super.{self::A::[]=}(#t45, #t46) in #t46 : null;
+    self::use(let final dynamic #t48 = 87 in let final dynamic #t49 = super.{self::A::[]}(#t48) in #t49.==(null) ? let final dynamic #t50 = 42 in let final dynamic #t51 = super.{self::A::[]=}(#t48, #t50) in #t50 : #t49);
     super.{self::A::m}.==(null) ? super.m = 42 : null;
-    self::use(let final dynamic #t43 = super.{self::A::m} in #t43.==(null) ? super.m = 42 : #t43);
-    throw core::_unresolvedSuperGetterError(this, #n, <dynamic>[], <dynamic, dynamic>{}, null);
-    self::use(throw core::_unresolvedSuperGetterError(this, #n, <dynamic>[], <dynamic, dynamic>{}, null));
+    self::use(let final dynamic #t52 = super.{self::A::m} in #t52.==(null) ? super.m = 42 : #t52);
+    super.{self::A::n}.==(null) ? super.{self::A::n} = 42 : null;
+    self::use(let final dynamic #t53 = super.{self::A::n} in #t53.==(null) ? super.{self::A::n} = 42 : #t53);
     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);
     self::use(super.{self::A::b} = super.{self::B::b}.+(42));
     super.{self::B::c} = super.{self::A::c}.+(42);
     self::use(super.{self::B::c} = super.{self::A::c}.+(42));
-    super.d = super.{self::B::d}.+(42);
-    self::use(super.d = super.{self::B::d}.+(42));
+    super.{self::A::d} = super.{self::B::d}.+(42);
+    self::use(super.{self::A::d} = super.{self::B::d}.+(42));
     super.e = super.{self::A::e}.+(42);
     self::use(super.e = super.{self::A::e}.+(42));
     super.f = super.{self::A::f}.+(42);
     self::use(super.f = super.{self::A::f}.+(42));
-    throw core::_unresolvedSuperGetterError(this, #g, <dynamic>[], <dynamic, dynamic>{}, null);
-    self::use(throw core::_unresolvedSuperGetterError(this, #g, <dynamic>[], <dynamic, dynamic>{}, null));
+    super.{self::A::g} = super.g.+(42);
+    self::use(super.{self::A::g} = super.g.+(42));
     super.{self::A::h} = super.{self::A::h}.+(42);
     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 dynamic #t44 = 87 in super.{self::A::[]=}(#t44, super.{self::A::[]}(#t44).+(42));
-    self::use(let final dynamic #t45 = 87 in let final dynamic #t46 = super.{self::A::[]}(#t45).+(42) in let final dynamic #t47 = super.{self::A::[]=}(#t45, #t46) in #t46);
+    let final dynamic #t54 = 87 in super.{self::A::[]=}(#t54, super.{self::A::[]}(#t54).+(42));
+    self::use(let final dynamic #t55 = 87 in let final dynamic #t56 = super.{self::A::[]}(#t55).+(42) in let final dynamic #t57 = super.{self::A::[]=}(#t55, #t56) in #t56);
     super.m = super.{self::A::m}.+(42);
     self::use(super.m = super.{self::A::m}.+(42));
-    throw core::_unresolvedSuperGetterError(this, #n, <dynamic>[], <dynamic, dynamic>{}, null);
-    self::use(throw core::_unresolvedSuperGetterError(this, #n, <dynamic>[], <dynamic, dynamic>{}, null));
+    super.{self::A::n} = super.{self::A::n}.+(42);
+    self::use(super.{self::A::n} = super.{self::A::n}.+(42));
     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);
     self::use(super.{self::A::b} = super.{self::B::b}.-(42));
     super.{self::B::c} = super.{self::A::c}.-(42);
     self::use(super.{self::B::c} = super.{self::A::c}.-(42));
-    super.d = super.{self::B::d}.-(42);
-    self::use(super.d = super.{self::B::d}.-(42));
+    super.{self::A::d} = super.{self::B::d}.-(42);
+    self::use(super.{self::A::d} = super.{self::B::d}.-(42));
     super.e = super.{self::A::e}.-(42);
     self::use(super.e = super.{self::A::e}.-(42));
     super.f = super.{self::A::f}.-(42);
     self::use(super.f = super.{self::A::f}.-(42));
-    throw core::_unresolvedSuperGetterError(this, #g, <dynamic>[], <dynamic, dynamic>{}, null);
-    self::use(throw core::_unresolvedSuperGetterError(this, #g, <dynamic>[], <dynamic, dynamic>{}, null));
+    super.{self::A::g} = super.g.-(42);
+    self::use(super.{self::A::g} = super.g.-(42));
     super.{self::A::h} = super.{self::A::h}.-(42);
     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 dynamic #t48 = 87 in super.{self::A::[]=}(#t48, super.{self::A::[]}(#t48).-(42));
-    self::use(let final dynamic #t49 = 87 in let final dynamic #t50 = super.{self::A::[]}(#t49).-(42) in let final dynamic #t51 = super.{self::A::[]=}(#t49, #t50) in #t50);
+    let final dynamic #t58 = 87 in super.{self::A::[]=}(#t58, super.{self::A::[]}(#t58).-(42));
+    self::use(let final dynamic #t59 = 87 in let final dynamic #t60 = super.{self::A::[]}(#t59).-(42) in let final dynamic #t61 = super.{self::A::[]=}(#t59, #t60) in #t60);
     super.m = super.{self::A::m}.-(42);
     self::use(super.m = super.{self::A::m}.-(42));
-    throw core::_unresolvedSuperGetterError(this, #n, <dynamic>[], <dynamic, dynamic>{}, null);
-    self::use(throw core::_unresolvedSuperGetterError(this, #n, <dynamic>[], <dynamic, dynamic>{}, null));
+    super.{self::A::n} = super.{self::A::n}.-(42);
+    self::use(super.{self::A::n} = super.{self::A::n}.-(42));
   }
 }
+static const field dynamic #errors = const <dynamic>["pkg/front_end/testcases/rasta/super.dart:43:5: Error: '+' is not a prefix operator.\nTry removing '+'.\n    +super;\n    ^", "pkg/front_end/testcases/rasta/super.dart:44:9: Error: '+' is not a prefix operator.\nTry removing '+'.\n    use(+super);\n        ^"]/* from null */;
 static method use(dynamic x) → dynamic {
   if(x.==(new core::DateTime::now().millisecondsSinceEpoch))
     throw "Shouldn't happen";
diff --git a/pkg/front_end/testcases/rasta/super.dart.strong.expect b/pkg/front_end/testcases/rasta/super.dart.strong.expect
index a45aca6..e4997f7 100644
--- a/pkg/front_end/testcases/rasta/super.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/super.dart.strong.expect
@@ -51,8 +51,8 @@
     self::use(super.{self::A::~}());
     super.{self::A::unary-}();
     self::use(super.{self::A::unary-}());
-    const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:43:6: Error: Can't use `super` as an expression.\n    +super;\n     ^"));
-    self::use(const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:44:10: Error: Can't use `super` as an expression.\n    use(+super);\n         ^")));
+    (let final dynamic #t1 = this in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:43:5: Error: The getter '' isn't defined for the class '#lib1::C'.\nTry correcting the name to the name of an existing getter, or defining a getter or field named ''.\n    +super;\n    ^"))).+(const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:43:6: Error: Can't use `super` as an expression.\n    +super;\n     ^")));
+    self::use((let final dynamic #t2 = this in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:44:9: Error: The getter '' isn't defined for the class '#lib1::C'.\nTry correcting the name to the name of an existing getter, or defining a getter or field named ''.\n    use(+super);\n        ^"))).+(const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:44:10: Error: Can't use `super` as an expression.\n    use(+super);\n         ^"))));
     super.{self::A::==}(87);
     self::use(super.{self::A::==}(87));
     !super.{self::A::==}(87);
@@ -82,29 +82,29 @@
     super.{self::A::n};
     self::use(super.{self::A::n});
     super.{self::A::a} = super.{self::A::a}.+(1);
-    self::use(let final dynamic #t1 = super.{self::A::a} in let final dynamic #t2 = super.{self::A::a} = #t1.+(1) in #t1);
+    self::use(let final dynamic #t3 = super.{self::A::a} in let final dynamic #t4 = super.{self::A::a} = #t3.+(1) in #t3);
     super.{self::A::b} = super.{self::B::b}.+(1);
-    self::use(let final dynamic #t3 = super.{self::B::b} in let final dynamic #t4 = super.{self::A::b} = #t3.+(1) in #t3);
+    self::use(let final dynamic #t5 = super.{self::B::b} in let final dynamic #t6 = super.{self::A::b} = #t5.+(1) in #t5);
     super.{self::B::c} = super.{self::A::c}.+(1);
-    self::use(let final dynamic #t5 = super.{self::A::c} in let final dynamic #t6 = super.{self::B::c} = #t5.+(1) in #t5);
+    self::use(let final dynamic #t7 = super.{self::A::c} in let final dynamic #t8 = super.{self::B::c} = #t7.+(1) in #t7);
     super.{self::A::d} = super.{self::B::d}.+(1);
-    self::use(let final dynamic #t7 = super.{self::B::d} in let final dynamic #t8 = super.{self::A::d} = #t7.+(1) in #t7);
+    self::use(let final dynamic #t9 = super.{self::B::d} in let final dynamic #t10 = super.{self::A::d} = #t9.+(1) in #t9);
     super.e = super.{self::A::e}.+(1);
-    self::use(let final dynamic #t9 = super.{self::A::e} in let final dynamic #t10 = super.e = #t9.+(1) in #t9);
+    self::use(let final dynamic #t11 = super.{self::A::e} in let final dynamic #t12 = super.e = #t11.+(1) in #t11);
     super.f = super.{self::A::f}.+(1);
-    self::use(let final dynamic #t11 = super.{self::A::f} in let final dynamic #t12 = super.f = #t11.+(1) in #t11);
+    self::use(let final dynamic #t13 = super.{self::A::f} in let final dynamic #t14 = super.f = #t13.+(1) in #t13);
     super.{self::A::g} = super.g.+(1);
-    self::use(let final dynamic #t13 = super.g in let final dynamic #t14 = super.{self::A::g} = #t13.+(1) in #t13);
+    self::use(let final dynamic #t15 = super.g in let final dynamic #t16 = super.{self::A::g} = #t15.+(1) in #t15);
     super.{self::A::h} = super.{self::A::h}.+(1);
-    self::use(let final dynamic #t15 = super.{self::A::h} in let final dynamic #t16 = super.{self::A::h} = #t15.+(1) in #t15);
+    self::use(let final dynamic #t17 = super.{self::A::h} in let final dynamic #t18 = super.{self::A::h} = #t17.+(1) in #t17);
     super.{self::B::i} = super.{self::A::i}.+(1);
-    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 = super.{self::A::m}.+(1);
-    self::use(let final () → void #t23 = super.{self::A::m} in let final dynamic #t24 = super.m = #t23.+(1) in #t23);
-    super.{self::A::n} = super.{self::A::n}.+(1);
-    self::use(let final () → void #t25 = super.{self::A::n} in let final dynamic #t26 = super.{self::A::n} = #t25.+(1) in #t25);
+    self::use(let final dynamic #t19 = super.{self::A::i} in let final dynamic #t20 = super.{self::B::i} = #t19.+(1) in #t19);
+    let final core::int #t21 = 87 in super.{self::A::[]=}(#t21, super.{self::A::[]}(#t21).+(1));
+    self::use(let final core::int #t22 = 87 in let final dynamic #t23 = super.{self::A::[]}(#t22) in let final void #t24 = super.{self::A::[]=}(#t22, #t23.+(1)) in #t23);
+    super.m = let final dynamic #t25 = super.{self::A::m} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:95:12: Error: The method '+' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '+'.\n    super.m++;\n           ^"));
+    self::use(let final () → void #t26 = super.{self::A::m} in let final dynamic #t27 = super.m = let final dynamic #t28 = #t26 in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:96:16: Error: The method '+' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '+'.\n    use(super.m++);\n               ^")) in #t26);
+    super.{self::A::n} = let final dynamic #t29 = super.{self::A::n} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:97:12: Error: The method '+' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '+'.\n    super.n++;\n           ^"));
+    self::use(let final () → void #t30 = super.{self::A::n} in let final dynamic #t31 = super.{self::A::n} = let final dynamic #t32 = #t30 in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:98:16: Error: The method '+' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '+'.\n    use(super.n++);\n               ^")) in #t30);
     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);
@@ -123,12 +123,12 @@
     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 #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 = super.{self::A::m}.+(1);
-    self::use(super.m = super.{self::A::m}.+(1));
-    super.{self::A::n} = super.{self::A::n}.+(1);
-    self::use(super.{self::A::n} = super.{self::A::n}.+(1));
+    let final core::int #t33 = 87 in let final dynamic #t34 = super.{self::A::[]}(#t33).+(1) in let final void #t35 = super.{self::A::[]=}(#t33, #t34) in #t34;
+    self::use(let final core::int #t36 = 87 in let final dynamic #t37 = super.{self::A::[]}(#t36).+(1) in let final void #t38 = super.{self::A::[]=}(#t36, #t37) in #t37);
+    super.m = let final dynamic #t39 = super.{self::A::m} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:120:5: Error: The method '+' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '+'.\n    ++super.m;\n    ^"));
+    self::use(super.m = let final dynamic #t40 = super.{self::A::m} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:121:9: Error: The method '+' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '+'.\n    use(++super.m);\n        ^")));
+    super.{self::A::n} = let final dynamic #t41 = super.{self::A::n} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:122:5: Error: The method '+' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '+'.\n    ++super.n;\n    ^"));
+    self::use(super.{self::A::n} = let final dynamic #t42 = super.{self::A::n} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:123:9: Error: The method '+' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '+'.\n    use(++super.n);\n        ^")));
     super.{self::A::a}.call();
     self::use(super.{self::A::a}.call());
     super.{self::B::b}.call();
@@ -174,35 +174,35 @@
     super.{self::B::i} = 42;
     self::use(super.{self::B::i} = 42);
     super.{self::A::[]=}(87, 42);
-    self::use(let final core::int #t33 = 87 in let final core::int #t34 = 42 in let final void #t35 = super.{self::A::[]=}(#t33, #t34) in #t34);
+    self::use(let final core::int #t43 = 87 in let final core::int #t44 = 42 in let final void #t45 = super.{self::A::[]=}(#t43, #t44) in #t44);
     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 #t36 = super.{self::A::a} in #t36.{core::Object::==}(null) ?{dynamic} super.{self::A::a} = 42 : #t36);
+    self::use(let final dynamic #t46 = super.{self::A::a} in #t46.{core::Object::==}(null) ?{dynamic} super.{self::A::a} = 42 : #t46);
     super.{self::B::b}.{core::Object::==}(null) ?{dynamic} super.{self::A::b} = 42 : null;
-    self::use(let final dynamic #t37 = super.{self::B::b} in #t37.{core::Object::==}(null) ?{dynamic} super.{self::A::b} = 42 : #t37);
+    self::use(let final dynamic #t47 = super.{self::B::b} in #t47.{core::Object::==}(null) ?{dynamic} super.{self::A::b} = 42 : #t47);
     super.{self::A::c}.{core::Object::==}(null) ?{dynamic} super.{self::B::c} = 42 : null;
-    self::use(let final dynamic #t38 = super.{self::A::c} in #t38.{core::Object::==}(null) ?{dynamic} super.{self::B::c} = 42 : #t38);
+    self::use(let final dynamic #t48 = super.{self::A::c} in #t48.{core::Object::==}(null) ?{dynamic} super.{self::B::c} = 42 : #t48);
     super.{self::B::d}.{core::Object::==}(null) ?{dynamic} super.{self::A::d} = 42 : null;
-    self::use(let final dynamic #t39 = super.{self::B::d} in #t39.{core::Object::==}(null) ?{dynamic} super.{self::A::d} = 42 : #t39);
+    self::use(let final dynamic #t49 = super.{self::B::d} in #t49.{core::Object::==}(null) ?{dynamic} super.{self::A::d} = 42 : #t49);
     super.{self::A::e}.{core::Object::==}(null) ?{dynamic} super.e = 42 : null;
-    self::use(let final dynamic #t40 = super.{self::A::e} in #t40.{core::Object::==}(null) ?{dynamic} super.e = 42 : #t40);
+    self::use(let final dynamic #t50 = super.{self::A::e} in #t50.{core::Object::==}(null) ?{dynamic} super.e = 42 : #t50);
     super.{self::A::f}.{core::Object::==}(null) ?{dynamic} super.f = 42 : null;
-    self::use(let final dynamic #t41 = super.{self::A::f} in #t41.{core::Object::==}(null) ?{dynamic} super.f = 42 : #t41);
+    self::use(let final dynamic #t51 = super.{self::A::f} in #t51.{core::Object::==}(null) ?{dynamic} super.f = 42 : #t51);
     super.g.{core::Object::==}(null) ?{dynamic} super.{self::A::g} = 42 : null;
-    self::use(let final dynamic #t42 = super.g in #t42.{core::Object::==}(null) ?{dynamic} super.{self::A::g} = 42 : #t42);
+    self::use(let final dynamic #t52 = super.g in #t52.{core::Object::==}(null) ?{dynamic} super.{self::A::g} = 42 : #t52);
     super.{self::A::h}.{core::Object::==}(null) ?{dynamic} super.{self::A::h} = 42 : null;
-    self::use(let final dynamic #t43 = super.{self::A::h} in #t43.{core::Object::==}(null) ?{dynamic} super.{self::A::h} = 42 : #t43);
+    self::use(let final dynamic #t53 = super.{self::A::h} in #t53.{core::Object::==}(null) ?{dynamic} super.{self::A::h} = 42 : #t53);
     super.{self::A::i}.{core::Object::==}(null) ?{dynamic} super.{self::B::i} = 42 : null;
-    self::use(let final dynamic #t44 = super.{self::A::i} in #t44.{core::Object::==}(null) ?{dynamic} super.{self::B::i} = 42 : #t44);
-    let final core::int #t45 = 87 in super.{self::A::[]}(#t45).{core::Object::==}(null) ?{dynamic} let final core::int #t46 = 42 in let final void #t47 = super.{self::A::[]=}(#t45, #t46) in #t46 : null;
-    self::use(let final core::int #t48 = 87 in let final dynamic #t49 = super.{self::A::[]}(#t48) in #t49.{core::Object::==}(null) ?{dynamic} let final core::int #t50 = 42 in let final void #t51 = super.{self::A::[]=}(#t48, #t50) in #t50 : #t49);
+    self::use(let final dynamic #t54 = super.{self::A::i} in #t54.{core::Object::==}(null) ?{dynamic} super.{self::B::i} = 42 : #t54);
+    let final core::int #t55 = 87 in super.{self::A::[]}(#t55).{core::Object::==}(null) ?{dynamic} let final core::int #t56 = 42 in let final void #t57 = super.{self::A::[]=}(#t55, #t56) in #t56 : null;
+    self::use(let final core::int #t58 = 87 in let final dynamic #t59 = super.{self::A::[]}(#t58) in #t59.{core::Object::==}(null) ?{dynamic} let final core::int #t60 = 42 in let final void #t61 = super.{self::A::[]=}(#t58, #t60) in #t60 : #t59);
     super.{self::A::m}.{core::Object::==}(null) ?{core::Object} super.m = 42 : null;
-    self::use(let final () → void #t52 = super.{self::A::m} in #t52.{core::Object::==}(null) ?{core::Object} super.m = 42 : #t52);
+    self::use(let final () → void #t62 = super.{self::A::m} in #t62.{core::Object::==}(null) ?{core::Object} super.m = 42 : #t62);
     super.{self::A::n}.{core::Object::==}(null) ?{core::Object} super.{self::A::n} = 42 : null;
-    self::use(let final () → void #t53 = super.{self::A::n} in #t53.{core::Object::==}(null) ?{core::Object} super.{self::A::n} = 42 : #t53);
+    self::use(let final () → void #t63 = super.{self::A::n} in #t63.{core::Object::==}(null) ?{core::Object} super.{self::A::n} = 42 : #t63);
     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);
@@ -221,12 +221,12 @@
     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 #t54 = 87 in super.{self::A::[]=}(#t54, super.{self::A::[]}(#t54).+(42));
-    self::use(let final core::int #t55 = 87 in let final dynamic #t56 = super.{self::A::[]}(#t55).+(42) in let final void #t57 = super.{self::A::[]=}(#t55, #t56) in #t56);
-    super.m = super.{self::A::m}.+(42);
-    self::use(super.m = super.{self::A::m}.+(42));
-    super.{self::A::n} = super.{self::A::n}.+(42);
-    self::use(super.{self::A::n} = super.{self::A::n}.+(42));
+    let final core::int #t64 = 87 in super.{self::A::[]=}(#t64, super.{self::A::[]}(#t64).+(42));
+    self::use(let final core::int #t65 = 87 in let final dynamic #t66 = super.{self::A::[]}(#t65).+(42) in let final void #t67 = super.{self::A::[]=}(#t65, #t66) in #t66);
+    super.m = let final dynamic #t68 = super.{self::A::m} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:222:13: Error: The method '+' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '+'.\n    super.m += 42;\n            ^"));
+    self::use(super.m = let final dynamic #t69 = super.{self::A::m} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:223:17: Error: The method '+' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '+'.\n    use(super.m += 42);\n                ^")));
+    super.{self::A::n} = let final dynamic #t70 = super.{self::A::n} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:224:13: Error: The method '+' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '+'.\n    super.n += 42;\n            ^"));
+    self::use(super.{self::A::n} = let final dynamic #t71 = super.{self::A::n} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:225:17: Error: The method '+' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '+'.\n    use(super.n += 42);\n                ^")));
     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);
@@ -245,12 +245,12 @@
     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 #t58 = 87 in super.{self::A::[]=}(#t58, super.{self::A::[]}(#t58).-(42));
-    self::use(let final core::int #t59 = 87 in let final dynamic #t60 = super.{self::A::[]}(#t59).-(42) in let final void #t61 = super.{self::A::[]=}(#t59, #t60) in #t60);
-    super.m = super.{self::A::m}.-(42);
-    self::use(super.m = super.{self::A::m}.-(42));
-    super.{self::A::n} = super.{self::A::n}.-(42);
-    self::use(super.{self::A::n} = super.{self::A::n}.-(42));
+    let final core::int #t72 = 87 in super.{self::A::[]=}(#t72, super.{self::A::[]}(#t72).-(42));
+    self::use(let final core::int #t73 = 87 in let final dynamic #t74 = super.{self::A::[]}(#t73).-(42) in let final void #t75 = super.{self::A::[]=}(#t73, #t74) in #t74);
+    super.m = let final dynamic #t76 = super.{self::A::m} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:247:13: Error: The method '-' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '-'.\n    super.m -= 42;\n            ^"));
+    self::use(super.m = let final dynamic #t77 = super.{self::A::m} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:248:17: Error: The method '-' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '-'.\n    use(super.m -= 42);\n                ^")));
+    super.{self::A::n} = let final dynamic #t78 = super.{self::A::n} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:249:13: Error: The method '-' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '-'.\n    super.n -= 42;\n            ^"));
+    self::use(super.{self::A::n} = let final dynamic #t79 = super.{self::A::n} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/super.dart:250:17: Error: The method '-' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '-'.\n    use(super.n -= 42);\n                ^")));
   }
 }
 static const field dynamic #errors = const <dynamic>["pkg/front_end/testcases/rasta/super.dart:43:5: Error: '+' is not a prefix operator.\nTry removing '+'.\n    +super;\n    ^", "pkg/front_end/testcases/rasta/super.dart:44:9: Error: '+' is not a prefix operator.\nTry removing '+'.\n    use(+super);\n        ^"]/* from null */;
diff --git a/pkg/front_end/testcases/shaker/empty_program.dart.outline.expect b/pkg/front_end/testcases/shaker/empty_program.dart.outline.expect
index 63495ce..54d7983 100644
--- a/pkg/front_end/testcases/shaker/empty_program.dart.outline.expect
+++ b/pkg/front_end/testcases/shaker/empty_program.dart.outline.expect
@@ -193,6 +193,7 @@
 import "dart:_internal" as _in;
 import "dart:math" as math;
 
+typedef _SyncGeneratorCallback<T extends self::Object> = (self::_SyncIterator<T>) → self::bool;
 class _SyncIterable<T extends self::Object> extends col::IterableBase<self::_SyncIterable::T> {
   const constructor •((self::_SyncIterator<self::_SyncIterable::T>) → self::bool _moveNextFn) → void;
   get iterator() → self::Iterator<self::_SyncIterable::T>;
diff --git a/pkg/front_end/testcases/shaker/empty_program.dart.shaker.expect b/pkg/front_end/testcases/shaker/empty_program.dart.shaker.expect
index d0985d2..5c54176 100644
--- a/pkg/front_end/testcases/shaker/empty_program.dart.shaker.expect
+++ b/pkg/front_end/testcases/shaker/empty_program.dart.shaker.expect
@@ -149,6 +149,7 @@
 
 library dart:core:
   - member print
+  - typedef _SyncGeneratorCallback
   - class _SyncIterable
     - (default constructor)
     - iterator
diff --git a/pkg/front_end/testcases/strong.status b/pkg/front_end/testcases/strong.status
index 8b12cbf..36cc99b 100644
--- a/pkg/front_end/testcases/strong.status
+++ b/pkg/front_end/testcases/strong.status
@@ -11,6 +11,7 @@
 argument_mismatch: TypeCheckError
 async_function: Fail
 await: Fail
+bug21938: TypeCheckError
 bug30695: TypeCheckError
 bug31124: RuntimeError # Test has an intentional error
 call: Fail
@@ -59,7 +60,7 @@
 uninitialized_fields: Fail
 unused_methods: Fail
 void_methods: Fail
-warn_unresolved_sends: TypeCheckError
+warn_unresolved_sends: RuntimeError # Test assumes Dart 1.0 semantics
 
 inference/abstract_class_instantiation: Fail # Issue #30040
 inference/block_bodied_lambdas_infer_bottom_async_star: RuntimeError
@@ -75,9 +76,7 @@
 inference/downwards_inference_annotations_parameter_local: Fail # Issue #28434
 inference/downwards_inference_annotations_type_variable: Fail # Issue #28434
 inference/downwards_inference_annotations_type_variable_local: Fail # Issue #28434
-inference/downwards_inference_on_function_expressions: TypeCheckError
 inference/downwards_inference_on_function_of_t_using_the_t: Fail # Issue #29798
-inference/downwards_inference_on_generic_function_expressions: TypeCheckError
 inference/downwards_inference_on_list_literals_infer_downwards: RuntimeError
 inference/downwards_inference_yield_yield_star: TypeCheckError
 inference/future_then_2: TypeCheckError
@@ -96,11 +95,9 @@
 inference/generic_methods_do_not_infer_invalid_override_of_generic_method: TypeCheckError
 inference/generic_methods_handle_override_of_non_generic_with_generic: TypeCheckError
 inference/generic_methods_infer_js_builtin: Fail # Issue #30029
-inference/generic_methods_iterable_and_future: TypeCheckError
 inference/generic_methods_nested_generic_instantiation: RuntimeError # Issue #31304
 inference/generic_methods_uses_greatest_lower_bound: RuntimeError
 inference/infer_field_override_multiple: TypeCheckError
-inference/infer_from_complex_expressions_if_outer_most_value_is_precise: TypeCheckError
 inference/infer_method_missing_params: TypeCheckError
 inference/infer_type_regardless_of_declaration_order_or_cycles: RuntimeError
 inference/infer_types_on_generic_instantiations_4: RuntimeError
diff --git a/pkg/front_end/testcases/super_rasta_copy.dart.strong.expect b/pkg/front_end/testcases/super_rasta_copy.dart.strong.expect
index 3d9c1e0..d809ae2 100644
--- a/pkg/front_end/testcases/super_rasta_copy.dart.strong.expect
+++ b/pkg/front_end/testcases/super_rasta_copy.dart.strong.expect
@@ -95,8 +95,8 @@
     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 = super.{self::A::m}.+(1);
-    self::use(let final () → void #t23 = super.{self::A::m} in let final dynamic #t24 = super.m = #t23.+(1) in #t23);
+    super.m = let final dynamic #t23 = super.{self::A::m} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/super_rasta_copy.dart:91:12: Error: The method '+' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '+'.\n    super.m++;\n           ^"));
+    self::use(let final () → void #t24 = super.{self::A::m} in let final dynamic #t25 = super.m = let final dynamic #t26 = #t24 in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/super_rasta_copy.dart:92:16: Error: The method '+' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '+'.\n    use(super.m++);\n               ^")) in #t24);
     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);
@@ -115,10 +115,10 @@
     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 #t25 = 87 in let final dynamic #t26 = super.{self::A::[]}(#t25).+(1) in let final void #t27 = super.{self::A::[]=}(#t25, #t26) in #t26;
-    self::use(let final core::int #t28 = 87 in let final dynamic #t29 = super.{self::A::[]}(#t28).+(1) in let final void #t30 = super.{self::A::[]=}(#t28, #t29) in #t29);
-    super.m = super.{self::A::m}.+(1);
-    self::use(super.m = super.{self::A::m}.+(1));
+    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 = let final dynamic #t33 = super.{self::A::m} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/super_rasta_copy.dart:114:5: Error: The method '+' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '+'.\n    ++super.m;\n    ^"));
+    self::use(super.m = let final dynamic #t34 = super.{self::A::m} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/super_rasta_copy.dart:115:9: Error: The method '+' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '+'.\n    use(++super.m);\n        ^")));
     super.{self::A::a}.call();
     self::use(super.{self::A::a}.call());
     super.{self::B::b}.call();
@@ -162,31 +162,31 @@
     super.{self::B::i} = 42;
     self::use(super.{self::B::i} = 42);
     super.{self::A::[]=}(87, 42);
-    self::use(let final core::int #t31 = 87 in let final core::int #t32 = 42 in let final void #t33 = super.{self::A::[]=}(#t31, #t32) in #t32);
+    self::use(let final core::int #t35 = 87 in let final core::int #t36 = 42 in let final void #t37 = super.{self::A::[]=}(#t35, #t36) in #t36);
     super.m = 42;
     self::use(super.m = 42);
     super.{self::A::a}.{core::Object::==}(null) ?{dynamic} super.{self::A::a} = 42 : null;
-    self::use(let final dynamic #t34 = super.{self::A::a} in #t34.{core::Object::==}(null) ?{dynamic} super.{self::A::a} = 42 : #t34);
+    self::use(let final dynamic #t38 = super.{self::A::a} in #t38.{core::Object::==}(null) ?{dynamic} super.{self::A::a} = 42 : #t38);
     super.{self::B::b}.{core::Object::==}(null) ?{dynamic} super.{self::A::b} = 42 : null;
-    self::use(let final dynamic #t35 = super.{self::B::b} in #t35.{core::Object::==}(null) ?{dynamic} super.{self::A::b} = 42 : #t35);
+    self::use(let final dynamic #t39 = super.{self::B::b} in #t39.{core::Object::==}(null) ?{dynamic} super.{self::A::b} = 42 : #t39);
     super.{self::A::c}.{core::Object::==}(null) ?{dynamic} super.{self::B::c} = 42 : null;
-    self::use(let final dynamic #t36 = super.{self::A::c} in #t36.{core::Object::==}(null) ?{dynamic} super.{self::B::c} = 42 : #t36);
+    self::use(let final dynamic #t40 = super.{self::A::c} in #t40.{core::Object::==}(null) ?{dynamic} super.{self::B::c} = 42 : #t40);
     super.{self::B::d}.{core::Object::==}(null) ?{dynamic} super.{self::A::d} = 42 : null;
-    self::use(let final dynamic #t37 = super.{self::B::d} in #t37.{core::Object::==}(null) ?{dynamic} super.{self::A::d} = 42 : #t37);
+    self::use(let final dynamic #t41 = super.{self::B::d} in #t41.{core::Object::==}(null) ?{dynamic} super.{self::A::d} = 42 : #t41);
     super.{self::A::e}.{core::Object::==}(null) ?{dynamic} super.e = 42 : null;
-    self::use(let final dynamic #t38 = super.{self::A::e} in #t38.{core::Object::==}(null) ?{dynamic} super.e = 42 : #t38);
+    self::use(let final dynamic #t42 = super.{self::A::e} in #t42.{core::Object::==}(null) ?{dynamic} super.e = 42 : #t42);
     super.{self::A::f}.{core::Object::==}(null) ?{dynamic} super.f = 42 : null;
-    self::use(let final dynamic #t39 = super.{self::A::f} in #t39.{core::Object::==}(null) ?{dynamic} super.f = 42 : #t39);
+    self::use(let final dynamic #t43 = super.{self::A::f} in #t43.{core::Object::==}(null) ?{dynamic} super.f = 42 : #t43);
     super.g.{core::Object::==}(null) ?{dynamic} super.{self::A::g} = 42 : null;
-    self::use(let final dynamic #t40 = super.g in #t40.{core::Object::==}(null) ?{dynamic} super.{self::A::g} = 42 : #t40);
+    self::use(let final dynamic #t44 = super.g in #t44.{core::Object::==}(null) ?{dynamic} super.{self::A::g} = 42 : #t44);
     super.{self::A::h}.{core::Object::==}(null) ?{dynamic} super.{self::A::h} = 42 : null;
-    self::use(let final dynamic #t41 = super.{self::A::h} in #t41.{core::Object::==}(null) ?{dynamic} super.{self::A::h} = 42 : #t41);
+    self::use(let final dynamic #t45 = super.{self::A::h} in #t45.{core::Object::==}(null) ?{dynamic} super.{self::A::h} = 42 : #t45);
     super.{self::A::i}.{core::Object::==}(null) ?{dynamic} super.{self::B::i} = 42 : null;
-    self::use(let final dynamic #t42 = super.{self::A::i} in #t42.{core::Object::==}(null) ?{dynamic} super.{self::B::i} = 42 : #t42);
-    let final core::int #t43 = 87 in super.{self::A::[]}(#t43).{core::Object::==}(null) ?{dynamic} let final core::int #t44 = 42 in let final void #t45 = super.{self::A::[]=}(#t43, #t44) in #t44 : null;
-    self::use(let final core::int #t46 = 87 in let final dynamic #t47 = super.{self::A::[]}(#t46) in #t47.{core::Object::==}(null) ?{dynamic} let final core::int #t48 = 42 in let final void #t49 = super.{self::A::[]=}(#t46, #t48) in #t48 : #t47);
+    self::use(let final dynamic #t46 = super.{self::A::i} in #t46.{core::Object::==}(null) ?{dynamic} super.{self::B::i} = 42 : #t46);
+    let final core::int #t47 = 87 in super.{self::A::[]}(#t47).{core::Object::==}(null) ?{dynamic} let final core::int #t48 = 42 in let final void #t49 = super.{self::A::[]=}(#t47, #t48) in #t48 : null;
+    self::use(let final core::int #t50 = 87 in let final dynamic #t51 = super.{self::A::[]}(#t50) in #t51.{core::Object::==}(null) ?{dynamic} let final core::int #t52 = 42 in let final void #t53 = super.{self::A::[]=}(#t50, #t52) in #t52 : #t51);
     super.{self::A::m}.{core::Object::==}(null) ?{core::Object} super.m = 42 : null;
-    self::use(let final () → void #t50 = super.{self::A::m} in #t50.{core::Object::==}(null) ?{core::Object} super.m = 42 : #t50);
+    self::use(let final () → void #t54 = super.{self::A::m} in #t54.{core::Object::==}(null) ?{core::Object} super.m = 42 : #t54);
     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);
@@ -205,10 +205,10 @@
     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 #t51 = 87 in super.{self::A::[]=}(#t51, super.{self::A::[]}(#t51).+(42));
-    self::use(let final core::int #t52 = 87 in let final dynamic #t53 = super.{self::A::[]}(#t52).+(42) in let final void #t54 = super.{self::A::[]=}(#t52, #t53) in #t53);
-    super.m = super.{self::A::m}.+(42);
-    self::use(super.m = super.{self::A::m}.+(42));
+    let final core::int #t55 = 87 in super.{self::A::[]=}(#t55, super.{self::A::[]}(#t55).+(42));
+    self::use(let final core::int #t56 = 87 in let final dynamic #t57 = super.{self::A::[]}(#t56).+(42) in let final void #t58 = super.{self::A::[]=}(#t56, #t57) in #t57);
+    super.m = let final dynamic #t59 = super.{self::A::m} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/super_rasta_copy.dart:208:13: Error: The method '+' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '+'.\n    super.m += 42;\n            ^"));
+    self::use(super.m = let final dynamic #t60 = super.{self::A::m} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/super_rasta_copy.dart:209:17: Error: The method '+' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '+'.\n    use(super.m += 42);\n                ^")));
     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);
@@ -227,10 +227,10 @@
     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 #t55 = 87 in super.{self::A::[]=}(#t55, super.{self::A::[]}(#t55).-(42));
-    self::use(let final core::int #t56 = 87 in let final dynamic #t57 = super.{self::A::[]}(#t56).-(42) in let final void #t58 = super.{self::A::[]=}(#t56, #t57) in #t57);
-    super.m = super.{self::A::m}.-(42);
-    self::use(super.m = super.{self::A::m}.-(42));
+    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 = let final dynamic #t65 = super.{self::A::m} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/super_rasta_copy.dart:231:13: Error: The method '-' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '-'.\n    super.m -= 42;\n            ^"));
+    self::use(super.m = let final dynamic #t66 = super.{self::A::m} in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/super_rasta_copy.dart:232:17: Error: The method '-' isn't defined for the class '() \u8594 void'.\nTry correcting the name to the name of an existing method, or defining a method named '-'.\n    use(super.m -= 42);\n                ^")));
   }
 }
 static method use(dynamic x) → dynamic {
diff --git a/pkg/front_end/testcases/type_variable_as_super.dart.direct.expect b/pkg/front_end/testcases/type_variable_as_super.dart.direct.expect
index fd84fc7..adce035 100644
--- a/pkg/front_end/testcases/type_variable_as_super.dart.direct.expect
+++ b/pkg/front_end/testcases/type_variable_as_super.dart.direct.expect
@@ -17,7 +17,7 @@
     : super core::Object::•()
     ;
 }
-const field dynamic #errors = const <dynamic>["Error: The type variable 'T' can't be used as supertype.", "Error: The type variable 'T' can't be used as supertype.", "Error: The type variable 'T' can't be used as supertype."]/* from null */;
+static const field dynamic #errors = const <dynamic>["Error: The type variable 'T' can't be used as supertype.", "Error: The type variable 'T' can't be used as supertype.", "Error: The type variable 'T' can't be used as supertype."]/* from null */;
 static method main() → dynamic {
   throw new core::AbstractClassInstantiationError::•("A");
   throw new core::AbstractClassInstantiationError::•("B");
diff --git a/pkg/front_end/testcases/undefined.dart b/pkg/front_end/testcases/undefined.dart
new file mode 100644
index 0000000..d94de88
--- /dev/null
+++ b/pkg/front_end/testcases/undefined.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/*@testedFeatures=error*/
+
+class C {
+  var x;
+  void f() {}
+}
+
+void test(C c) {
+  c.x;
+  c. /*@error=UndefinedGetter*/ y;
+  c.f();
+  c. /*@error=UndefinedMethod*/ g();
+  c.x = null;
+  c. /*@error=UndefinedSetter*/ y = null;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/undefined.dart.direct.expect b/pkg/front_end/testcases/undefined.dart.direct.expect
new file mode 100644
index 0000000..cfc1ec6
--- /dev/null
+++ b/pkg/front_end/testcases/undefined.dart.direct.expect
@@ -0,0 +1,20 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  field dynamic x = null;
+  default constructor •() → void
+    : super core::Object::•()
+    ;
+  method f() → void {}
+}
+static method test(self::C c) → void {
+  c.x;
+  c.y;
+  c.f();
+  c.g();
+  c.x = null;
+  c.y = null;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/undefined.dart.outline.expect b/pkg/front_end/testcases/undefined.dart.outline.expect
new file mode 100644
index 0000000..82b8592
--- /dev/null
+++ b/pkg/front_end/testcases/undefined.dart.outline.expect
@@ -0,0 +1,15 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  field dynamic x;
+  default constructor •() → void
+    ;
+  method f() → void
+    ;
+}
+static method test(self::C c) → void
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/undefined.dart.strong.expect b/pkg/front_end/testcases/undefined.dart.strong.expect
new file mode 100644
index 0000000..4562a4e
--- /dev/null
+++ b/pkg/front_end/testcases/undefined.dart.strong.expect
@@ -0,0 +1,20 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  field dynamic x = null;
+  default constructor •() → void
+    : super core::Object::•()
+    ;
+  method f() → void {}
+}
+static method test(self::C c) → void {
+  c.{self::C::x};
+  let final dynamic #t1 = c in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/undefined.dart:14:33: Error: The getter 'y' isn't defined for the class '#lib1::C'.\nTry correcting the name to the name of an existing getter, or defining a getter or field named 'y'.\n  c. /*@error=UndefinedGetter*/ y;\n                                ^"));
+  c.{self::C::f}();
+  let final dynamic #t2 = c in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/undefined.dart:16:33: Error: The method 'g' isn't defined for the class '#lib1::C'.\nTry correcting the name to the name of an existing method, or defining a method named 'g'.\n  c. /*@error=UndefinedMethod*/ g();\n                                ^"));
+  c.{self::C::x} = null;
+  let final dynamic #t3 = c in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/undefined.dart:18:33: Error: The setter 'y' isn't defined for the class '#lib1::C'.\nTry correcting the name to the name of an existing setter, or defining a setter or field named 'y'.\n  c. /*@error=UndefinedSetter*/ y = null;\n                                ^"));
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart b/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart
new file mode 100644
index 0000000..b107e62
--- /dev/null
+++ b/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart
@@ -0,0 +1,17 @@
+// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/*@testedFeatures=error*/
+
+class C {
+  void set x(value);
+}
+
+void test(C c) {
+  c.x = 1; // Ok
+  c. /*@error=UndefinedGetter*/ x += 1;
+  c. /*@error=UndefinedGetter*/ x ??= 1;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.direct.expect b/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.direct.expect
new file mode 100644
index 0000000..a2ed83c
--- /dev/null
+++ b/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.direct.expect
@@ -0,0 +1,16 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  default constructor •() → void
+    : super core::Object::•()
+    ;
+  abstract set x(dynamic value) → void;
+}
+static method test(self::C c) → void {
+  c.x = 1;
+  let final dynamic #t1 = c in #t1.x = #t1.x.+(1);
+  let final dynamic #t2 = c in #t2.x.==(null) ? #t2.x = 1 : null;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.outline.expect b/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.outline.expect
new file mode 100644
index 0000000..cb360bd
--- /dev/null
+++ b/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.outline.expect
@@ -0,0 +1,13 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  default constructor •() → void
+    ;
+  abstract set x(dynamic value) → void;
+}
+static method test(self::C c) → void
+  ;
+static method main() → dynamic
+  ;
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
new file mode 100644
index 0000000..3d93d26
--- /dev/null
+++ b/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.strong.expect
@@ -0,0 +1,16 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  default constructor •() → void
+    : super core::Object::•()
+    ;
+  abstract set x(dynamic value) → void;
+}
+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 let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart:13:33: Error: The getter 'x' isn't defined for the class '#lib1::C'.\nTry correcting the name to the name of an existing getter, or defining a getter or field named 'x'.\n  c. /*@error=UndefinedGetter*/ x += 1;\n                                ^"))).+(1);
+  let final self::C #t3 = c in (let final dynamic #t4 = #t3 in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart:14:33: Error: The getter 'x' isn't defined for the class '#lib1::C'.\nTry correcting the name to the name of an existing getter, or defining a getter or field named 'x'.\n  c. /*@error=UndefinedGetter*/ x ??= 1;\n                                ^"))).{core::Object::==}(null) ?{dynamic} #t3.{self::C::x} = 1 : null;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/warn_unresolved_sends.dart.strong.expect b/pkg/front_end/testcases/warn_unresolved_sends.dart.strong.expect
index 98637d9..aac9d0a 100644
--- a/pkg/front_end/testcases/warn_unresolved_sends.dart.strong.expect
+++ b/pkg/front_end/testcases/warn_unresolved_sends.dart.strong.expect
@@ -45,12 +45,12 @@
     this.{self::D::setterOnly} = 0;
     this.{self::D::getterOnly};
     this.{self::C::getterOnly} = 0;
-    this.missingField;
-    this.missingField = 0;
-    this.missingMethod();
-    this.missingField;
-    this.missingField = 0;
-    this.missingMethod();
+    let final dynamic #t1 = this in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/warn_unresolved_sends.dart:49:39: Error: The getter 'missingField' isn't defined for the class '#lib1::D'.\nTry correcting the name to the name of an existing getter, or defining a getter or field named 'missingField'.\n    this. /*@warning=GetterNotFound*/ missingField;\n                                      ^"));
+    let final dynamic #t2 = this in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/warn_unresolved_sends.dart:50:39: Error: The setter 'missingField' isn't defined for the class '#lib1::D'.\nTry correcting the name to the name of an existing setter, or defining a setter or field named 'missingField'.\n    this. /*@warning=SetterNotFound*/ missingField = 0;\n                                      ^"));
+    let final dynamic #t3 = this in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/warn_unresolved_sends.dart:51:39: Error: The method 'missingMethod' isn't defined for the class '#lib1::D'.\nTry correcting the name to the name of an existing method, or defining a method named 'missingMethod'.\n    this. /*@warning=MethodNotFound*/ missingMethod();\n                                      ^"));
+    let final dynamic #t4 = this in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/warn_unresolved_sends.dart:53:33: Error: The getter 'missingField' isn't defined for the class '#lib1::D'.\nTry correcting the name to the name of an existing getter, or defining a getter or field named 'missingField'.\n    /*@warning=GetterNotFound*/ missingField;\n                                ^"));
+    let final dynamic #t5 = this in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/warn_unresolved_sends.dart:54:33: Error: The setter 'missingField' isn't defined for the class '#lib1::D'.\nTry correcting the name to the name of an existing setter, or defining a setter or field named 'missingField'.\n    /*@warning=SetterNotFound*/ missingField = 0;\n                                ^"));
+    let final dynamic #t6 = this in let dynamic _ = null in const core::_ConstantExpressionError::•().{core::_ConstantExpressionError::_throw}(new core::_CompileTimeError::•("pkg/front_end/testcases/warn_unresolved_sends.dart:55:33: Error: The method 'missingMethod' isn't defined for the class '#lib1::D'.\nTry correcting the name to the name of an existing method, or defining a method named 'missingMethod'.\n    /*@warning=MethodNotFound*/ missingMethod();\n                                ^"));
   }
 }
 class E extends self::D {
diff --git a/pkg/front_end/tool/bazel/worker.dart b/pkg/front_end/tool/bazel/worker.dart
index d49ca87..cd19f9f 100644
--- a/pkg/front_end/tool/bazel/worker.dart
+++ b/pkg/front_end/tool/bazel/worker.dart
@@ -9,6 +9,8 @@
 import 'package:front_end/src/api_prototype/front_end.dart'
     hide FileSystemException;
 import 'package:front_end/src/fasta/command_line_reporting.dart';
+import 'package:front_end/src/multi_root_file_system.dart';
+import 'package:front_end/src/api_prototype/physical_file_system.dart';
 import 'package:kernel/target/targets.dart';
 
 main(List<String> args) async {
@@ -100,11 +102,18 @@
     exit(0);
   }
 
+  // Bazel creates an overlay file system where some files may be located in the
+  // source tree, some in a gendir, and some in a bindir. The multi-root file
+  // system hides this from the front end.
+  var fileSystem = new MultiRootFileSystem(
+      'org-dartlang-multi-root',
+      parsedArgs['multi-root'].map(Uri.parse).toList(),
+      PhysicalFileSystem.instance);
   var options = new CompilerOptions()
     ..packagesFileUri = Uri.parse(parsedArgs['packages-file'])
     ..inputSummaries = parsedArgs['input-summary'].map(Uri.parse).toList()
     ..sdkSummary = Uri.parse(parsedArgs['dart-sdk-summary'])
-    ..multiRoots = parsedArgs['multi-root'].map(Uri.parse).toList()
+    ..fileSystem = fileSystem
     ..target = new NoneTarget(new TargetFlags());
 
   options.onError = (CompilationMessage error) {
diff --git a/pkg/kernel/lib/ast.dart b/pkg/kernel/lib/ast.dart
index 0979ecd..78e0ebf 100644
--- a/pkg/kernel/lib/ast.dart
+++ b/pkg/kernel/lib/ast.dart
@@ -4842,7 +4842,8 @@
     if (typeParameters.isEmpty) return this;
     return new FunctionType(positionalParameters, returnType,
         requiredParameterCount: requiredParameterCount,
-        namedParameters: namedParameters);
+        namedParameters: namedParameters,
+        typedefReference: typedefReference);
   }
 
   /// Looks up the type of the named parameter with the given name.
diff --git a/pkg/kernel/lib/type_algebra.dart b/pkg/kernel/lib/type_algebra.dart
index 2401edd..5b2ab4e 100644
--- a/pkg/kernel/lib/type_algebra.dart
+++ b/pkg/kernel/lib/type_algebra.dart
@@ -446,7 +446,8 @@
     return new FunctionType(positionalParameters, returnType,
         namedParameters: namedParameters,
         typeParameters: typeParameters,
-        requiredParameterCount: node.requiredParameterCount);
+        requiredParameterCount: node.requiredParameterCount,
+        typedefReference: node.typedefReference);
   }
 
   void bumpCountersUntil(_TypeSubstitutor target) {
diff --git a/pkg/pkg.status b/pkg/pkg.status
index 4c454cf..993d8e5 100644
--- a/pkg/pkg.status
+++ b/pkg/pkg.status
@@ -24,6 +24,7 @@
 analyzer/test/generated/static_warning_code_kernel_test: Slow, Pass
 analyzer/test/generated/strong_mode_kernel_test: Slow, Pass
 analyzer/test/generated/compile_time_error_code_test: Slow, Pass
+analyzer/test/src/dart/analysis/driver_kernel_test: Slow, Pass
 analyzer/test/src/summary/resynthesize_kernel_test: Slow, Pass
 analyzer/test/src/task/strong/checker_test: Slow, Pass
 analyzer_plugin/test/plugin/folding_mixin_test: Slow, Pass
diff --git a/pkg/vm/bin/kernel_service.dart b/pkg/vm/bin/kernel_service.dart
index 2b234dd..96d5b96 100644
--- a/pkg/vm/bin/kernel_service.dart
+++ b/pkg/vm/bin/kernel_service.dart
@@ -246,7 +246,7 @@
   return new HybridFileSystem(fileSystem);
 }
 
-train(String scriptUri) {
+train(String scriptUri, String platformKernel) {
   // TODO(28532): Enable on Windows.
   if (Platform.isWindows) return;
 
@@ -267,7 +267,7 @@
     tag,
     responsePort.sendPort,
     scriptUri,
-    null /* platformKernel */,
+    platformKernel,
     false /* incremental */,
     false /* strong */,
     1 /* isolateId chosen randomly */,
@@ -277,10 +277,10 @@
 }
 
 main([args]) {
-  if (args?.length == 2 && args[0] == '--train') {
+  if ((args?.length ?? 0) > 1 && args[0] == '--train') {
     // This entry point is used when creating an app snapshot. The argument
     // provides a script to compile to warm-up generated code.
-    train(args[1]);
+    train(args[1], args.length > 2 ? args[2] : null);
   } else {
     // Entry point for the Kernel isolate.
     return new RawReceivePort()..handler = _processLoadRequest;
diff --git a/pkg/vm/bin/precompiler_kernel_front_end.dart b/pkg/vm/bin/precompiler_kernel_front_end.dart
new file mode 100644
index 0000000..4a0ddae
--- /dev/null
+++ b/pkg/vm/bin/precompiler_kernel_front_end.dart
@@ -0,0 +1,87 @@
+// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:io';
+
+import 'package:args/args.dart' show ArgParser, ArgResults;
+import 'package:front_end/src/api_prototype/front_end.dart';
+import 'package:kernel/binary/ast_to_binary.dart';
+import 'package:kernel/kernel.dart' show Program;
+import 'package:kernel/target/targets.dart' show TargetFlags;
+import 'package:kernel/target/vm.dart' show VmTarget;
+import 'package:vm/kernel_front_end.dart' show compileToKernel;
+
+final ArgParser _argParser = new ArgParser(allowTrailingOptions: true)
+  ..addOption('platform',
+      help: 'Path to vm_platform_strong.dill file', defaultsTo: null)
+  ..addOption('packages', help: 'Path to .packages file', defaultsTo: null)
+  ..addOption('output',
+      abbr: 'o', help: 'Path to resulting dill file', defaultsTo: null)
+  ..addFlag('strong-mode', help: 'Enable strong mode', defaultsTo: true);
+
+final String _usage = '''
+Usage: dart pkg/vm/bin/precompiler_kernel_front_end.dart --platform vm_platform_strong.dill [options] input.dart
+Compiles Dart sources to a kernel binary file for the Dart 2.0 AOT compiler.
+
+Options:
+${_argParser.usage}
+''';
+
+const int _badUsageExitCode = 1;
+const int _compileTimeErrorExitCode = 250;
+
+const _severityCaptions = const <Severity, String>{
+  Severity.error: 'Error: ',
+  Severity.internalProblem: 'Internal problem: ',
+  Severity.nit: 'Nit: ',
+  Severity.warning: 'Warning: ',
+};
+
+main(List<String> arguments) async {
+  final ArgResults options = _argParser.parse(arguments);
+  final String platformKernel = options['platform'];
+
+  if ((options.rest.length != 1) || (platformKernel == null)) {
+    print(_usage);
+    exit(_badUsageExitCode);
+  }
+
+  final String filename = options.rest.single;
+  final String kernelBinaryFilename = options['output'] ?? "$filename.dill";
+  final String packages = options['packages'];
+  final bool strongMode = options['strong-mode'];
+
+  int errors = 0;
+
+  final CompilerOptions compilerOptions = new CompilerOptions()
+    ..strongMode = strongMode
+    ..target = new VmTarget(new TargetFlags(strongMode: strongMode))
+    ..linkedDependencies = <Uri>[Uri.base.resolve(platformKernel)]
+    ..packagesFileUri = packages != null ? Uri.base.resolve(packages) : null
+    ..reportMessages = true
+    ..onError = (CompilationMessage message) {
+      final severity = _severityCaptions[message.severity] ?? '';
+      final text = message.span?.message(message.message) ?? message.message;
+      final tip = message.tip != null ? "\n${message.tip}" : '';
+      print("$severity$text$tip");
+
+      if ((message.severity != Severity.nit) &&
+          (message.severity != Severity.warning)) {
+        ++errors;
+      }
+    };
+
+  Program program = await compileToKernel(
+      Uri.base.resolve(filename), compilerOptions,
+      aot: true);
+
+  if ((errors > 0) || (program == null)) {
+    exit(_compileTimeErrorExitCode);
+  }
+
+  final IOSink sink = new File(kernelBinaryFilename).openWrite();
+  final BinaryPrinter printer = new BinaryPrinter(sink);
+  printer.writeProgramFile(program);
+  await sink.close();
+}
diff --git a/pkg/vm/lib/kernel_front_end.dart b/pkg/vm/lib/kernel_front_end.dart
index 97b0ceb..fe25f0e 100644
--- a/pkg/vm/lib/kernel_front_end.dart
+++ b/pkg/vm/lib/kernel_front_end.dart
@@ -26,7 +26,7 @@
     {bool aot: false}) async {
   final program = await kernelForProgram(source, options);
 
-  if (aot) {
+  if (aot && (program != null)) {
     _runGlobalTransformations(program, options.strongMode);
   }
 
diff --git a/pkg/vm/pubspec.yaml b/pkg/vm/pubspec.yaml
index 28dfc20..66ed423 100644
--- a/pkg/vm/pubspec.yaml
+++ b/pkg/vm/pubspec.yaml
@@ -8,3 +8,5 @@
 dependencies:
   front_end: 0.1.0-alpha.6
   kernel: 0.3.0-alpha.3
+dev_dependencies:
+  args: ^0.13.0
diff --git a/pkg/vm/tool/precompiler2 b/pkg/vm/tool/precompiler2
index 8bf4431..83c6e4a 100755
--- a/pkg/vm/tool/precompiler2
+++ b/pkg/vm/tool/precompiler2
@@ -55,21 +55,20 @@
 # Handle the case where dart-sdk/bin has been symlinked to.
 CUR_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)"
 
+SDK_DIR="$CUR_DIR/../../.."
+
 if [[ `uname` == 'Darwin' ]]; then
-  OUT_DIR="$CUR_DIR"/../../../xcodebuild/
+  OUT_DIR="$SDK_DIR/xcodebuild"
 else
-  OUT_DIR="$CUR_DIR"/../../../out/
+  OUT_DIR="$SDK_DIR/out"
 fi
 
 export DART_CONFIGURATION=${DART_CONFIGURATION:-ReleaseX64}
-BIN_DIR="$OUT_DIR$DART_CONFIGURATION"
+BIN_DIR="$OUT_DIR/$DART_CONFIGURATION"
 
 # Step 1: Generate Kernel binary from the input Dart source.
-"$BIN_DIR"/dart pkg/front_end/tool/_fasta/compile.dart                         \
-     --strong-mode                                                             \
-     --platform "${BIN_DIR}"/vm_platform_strong.dill                           \
-     --target vm                                                               \
-     --target-options=strong-aot                                               \
+"$BIN_DIR"/dart "${SDK_DIR}/pkg/vm/bin/precompiler_kernel_front_end.dart"      \
+     --platform "${BIN_DIR}/vm_platform_strong.dill"                           \
      $PACKAGES                                                                 \
      -o "$SNAPSHOT_FILE.dill"                                                  \
      "$SOURCE_FILE"
diff --git a/runtime/bin/loader.cc b/runtime/bin/loader.cc
index e816e53..a2215e7 100644
--- a/runtime/bin/loader.cc
+++ b/runtime/bin/loader.cc
@@ -301,20 +301,21 @@
   for (intptr_t i = 0; i < dependencies->length(); i++) {
     char* resolved_uri = (*dependencies)[i];
 
-    uint8_t* scoped_file_path = NULL;
-    intptr_t scoped_file_path_length = -1;
+    uint8_t* file_path = NULL;
+    intptr_t file_path_length = -1;
     Dart_Handle uri = Dart_NewStringFromCString(resolved_uri);
     ASSERT(!Dart_IsError(uri));
-    Dart_Handle result = Loader::ResolveAsFilePath(uri, &scoped_file_path,
-                                                   &scoped_file_path_length);
+    Dart_Handle result =
+        Loader::ResolveAsFilePath(uri, &file_path, &file_path_length);
     if (Dart_IsError(result)) {
       Log::Print("Error resolving dependency: %s\n", Dart_GetError(result));
       return;
     }
 
-    (*dependencies)[i] =
-        StringUtils::StrNDup(reinterpret_cast<const char*>(scoped_file_path),
-                             scoped_file_path_length);
+    // Convert buffer buffer to NUL-terminated string.
+    (*dependencies)[i] = StringUtils::StrNDup(
+        reinterpret_cast<const char*>(file_path), file_path_length);
+    free(file_path);
     free(resolved_uri);
   }
 }
diff --git a/runtime/bin/main.cc b/runtime/bin/main.cc
index 04c5431..2f4be2d 100644
--- a/runtime/bin/main.cc
+++ b/runtime/bin/main.cc
@@ -756,6 +756,12 @@
   Dart_EnterScope();
 
   if (Options::gen_snapshot_kind() == kScript) {
+    if (vm_run_app_snapshot) {
+      Log::PrintErr("Cannot create a script snapshot from an app snapshot.\n");
+      // The snapshot would contain references to the app snapshot instead of
+      // the core snapshot.
+      Platform::Exit(kErrorExitCode);
+    }
     Snapshot::GenerateScript(Options::snapshot_filename());
   } else {
     // Lookup the library of the root script.
diff --git a/runtime/bin/run_vm_tests.cc b/runtime/bin/run_vm_tests.cc
index 4588c59..d69253ad 100644
--- a/runtime/bin/run_vm_tests.cc
+++ b/runtime/bin/run_vm_tests.cc
@@ -6,10 +6,13 @@
 
 #include "bin/dartutils.h"
 #include "bin/dfe.h"
+#include "bin/eventhandler.h"
 #include "bin/file.h"
 #include "bin/loader.h"
 #include "bin/platform.h"
 #include "bin/snapshot_utils.h"
+#include "bin/thread.h"
+#include "bin/utils.h"
 #include "platform/assert.h"
 #include "vm/benchmark_test.h"
 #include "vm/dart.h"
@@ -238,6 +241,10 @@
     dart_argv = &argv[1];
   }
 
+  bin::Thread::InitOnce();
+  bin::TimerUtils::InitOnce();
+  bin::EventHandler::Start();
+
   bool set_vm_flags_success =
       Flags::ProcessCommandLineFlags(dart_argc, dart_argv);
   ASSERT(set_vm_flags_success);
@@ -259,6 +266,8 @@
   err_msg = Dart::Cleanup();
   ASSERT(err_msg == NULL);
 
+  bin::EventHandler::Stop();
+
   TestCaseBase::RunAllRaw();
   // Print a warning message if no tests or benchmarks were matched.
   if (run_matches == 0) {
diff --git a/runtime/bin/stdio_android.cc b/runtime/bin/stdio_android.cc
index 44a7fe7..5b6323f 100644
--- a/runtime/bin/stdio_android.cc
+++ b/runtime/bin/stdio_android.cc
@@ -18,8 +18,8 @@
 namespace bin {
 
 bool Stdin::ReadByte(int* byte) {
-  int c = NO_RETRY_EXPECTED(getchar());
-  if ((c == EOF) && (errno != 0)) {
+  const int c = NO_RETRY_EXPECTED(fgetc(stdin));
+  if ((c == EOF) && (ferror(stdin) != 0)) {
     return false;
   }
   *byte = (c == EOF) ? -1 : c;
diff --git a/runtime/bin/stdio_linux.cc b/runtime/bin/stdio_linux.cc
index a6eddbe..8973bc5 100644
--- a/runtime/bin/stdio_linux.cc
+++ b/runtime/bin/stdio_linux.cc
@@ -18,8 +18,8 @@
 namespace bin {
 
 bool Stdin::ReadByte(int* byte) {
-  int c = NO_RETRY_EXPECTED(getchar());
-  if ((c == EOF) && (errno != 0)) {
+  const int c = NO_RETRY_EXPECTED(fgetc(stdin));
+  if ((c == EOF) && (ferror(stdin) != 0)) {
     return false;
   }
   *byte = (c == EOF) ? -1 : c;
diff --git a/runtime/bin/stdio_macos.cc b/runtime/bin/stdio_macos.cc
index 0c8760a..a43c43b 100644
--- a/runtime/bin/stdio_macos.cc
+++ b/runtime/bin/stdio_macos.cc
@@ -18,8 +18,8 @@
 namespace bin {
 
 bool Stdin::ReadByte(int* byte) {
-  int c = NO_RETRY_EXPECTED(getchar());
-  if ((c == EOF) && (errno != 0)) {
+  const int c = NO_RETRY_EXPECTED(fgetc(stdin));
+  if ((c == EOF) && (ferror(stdin) != 0)) {
     return false;
   }
   *byte = (c == EOF) ? -1 : c;
diff --git a/runtime/bin/vmservice/vmservice_io.dart b/runtime/bin/vmservice/vmservice_io.dart
index 0f41850..7cec446 100644
--- a/runtime/bin/vmservice/vmservice_io.dart
+++ b/runtime/bin/vmservice/vmservice_io.dart
@@ -187,7 +187,7 @@
   }
 }
 
-_clearFuture(_) {
+Null _clearFuture(_) {
   serverFuture = null;
 }
 
diff --git a/runtime/vm/dart.cc b/runtime/vm/dart.cc
index 8121ea5..4f6873a 100644
--- a/runtime/vm/dart.cc
+++ b/runtime/vm/dart.cc
@@ -569,12 +569,6 @@
   Object::VerifyBuiltinVtables();
   DEBUG_ONLY(I->heap()->Verify(kForbidMarked));
 
-  {
-    NOT_IN_PRODUCT(TimelineDurationScope tds(T, Timeline::GetIsolateStream(),
-                                             "StubCode::Init"));
-    StubCode::Init(I);
-  }
-
 #if defined(DART_PRECOMPILED_RUNTIME)
   // AOT: The megamorphic miss function and code come from the snapshot.
   ASSERT(I->object_store()->megamorphic_miss_code() != Code::null());
diff --git a/runtime/vm/stub_code.cc b/runtime/vm/stub_code.cc
index f70090a..9bd84f1 100644
--- a/runtime/vm/stub_code.cc
+++ b/runtime/vm/stub_code.cc
@@ -79,8 +79,6 @@
 }
 #endif  // defined(DART_PRECOMPILED_RUNTIME)
 
-void StubCode::Init(Isolate* isolate) {}
-
 void StubCode::VisitObjectPointers(ObjectPointerVisitor* visitor) {}
 
 bool StubCode::HasBeenInitialized() {
diff --git a/runtime/vm/stub_code.h b/runtime/vm/stub_code.h
index 4d2b583..744e9e2 100644
--- a/runtime/vm/stub_code.h
+++ b/runtime/vm/stub_code.h
@@ -125,10 +125,6 @@
   // only once and the stub code resides in the vm_isolate heap.
   static void InitOnce();
 
-  // Generate all stubs which are generated on a per isolate basis as they
-  // have embedded objects which are isolate specific.
-  static void Init(Isolate* isolate);
-
   static void VisitObjectPointers(ObjectPointerVisitor* visitor);
 
   // Returns true if stub code has been initialized.
diff --git a/sdk/lib/_internal/js_runtime/lib/isolate_helper.dart b/sdk/lib/_internal/js_runtime/lib/isolate_helper.dart
index f4d83d9..9b17c9d 100644
--- a/sdk/lib/_internal/js_runtime/lib/isolate_helper.dart
+++ b/sdk/lib/_internal/js_runtime/lib/isolate_helper.dart
@@ -120,11 +120,11 @@
   _globalState.currentContext = rootContext;
   if (entry is _MainFunctionArgs) {
     rootContext.eval(() {
-      entry(args);
+      (entry as dynamic)(args);
     });
   } else if (entry is _MainFunctionArgsMessage) {
     rootContext.eval(() {
-      entry(args, null);
+      (entry as dynamic)(args, null);
     });
   } else {
     rootContext.eval(entry);
diff --git a/sdk/lib/internal/print.dart b/sdk/lib/internal/print.dart
index c3e23b8..417003b 100644
--- a/sdk/lib/internal/print.dart
+++ b/sdk/lib/internal/print.dart
@@ -12,6 +12,6 @@
  *
  * This decouples the core library from the async library.
  */
-Function printToZone = null;
+void Function(String) printToZone = null;
 
 external void printToConsole(String line);
diff --git a/tests/compiler/dart2js/inlining/inlining_test.dart b/tests/compiler/dart2js/inlining/inlining_test.dart
index a00a987..77511ea 100644
--- a/tests/compiler/dart2js/inlining/inlining_test.dart
+++ b/tests/compiler/dart2js/inlining/inlining_test.dart
@@ -26,13 +26,7 @@
     Directory dataDir = new Directory.fromUri(Platform.script.resolve('data'));
     await checkTests(
         dataDir, computeMemberAstInlinings, computeMemberIrInlinings,
-        args: args,
-        skipForKernel: [
-          // TODO(sra,johnniwinther): Handle this for kernel.
-          'constructor.dart',
-          'dynamic.dart',
-          'force_inline_loops.dart',
-        ]);
+        args: args);
   });
 }
 
diff --git a/tests/compiler/dart2js/semantic_visitor_test_send_data.dart b/tests/compiler/dart2js/semantic_visitor_test_send_data.dart
index ac71d51..b324d78 100644
--- a/tests/compiler/dart2js/semantic_visitor_test_send_data.dart
+++ b/tests/compiler/dart2js/semantic_visitor_test_send_data.dart
@@ -2034,13 +2034,6 @@
     const Test('''
         m() => !0;
         ''', const Visit(VisitKind.VISIT_NOT, expression: '0')),
-    const Test('''
-        m() => +false;
-        ''',
-        // TODO(johnniwinther): Should this be an
-        // ERROR_UNDEFINED_UNARY_EXPRESSION? Currently the parser just skips
-        // the `+`.
-        const []),
   ],
   'Index set': const [
     // Index set
diff --git a/tests/compiler/dart2js/sourcemaps/data/others.dart b/tests/compiler/dart2js/sourcemaps/data/others.dart
index 13f6241..6d485a0 100644
--- a/tests/compiler/dart2js/sourcemaps/data/others.dart
+++ b/tests/compiler/dart2js/sourcemaps/data/others.dart
@@ -10,6 +10,10 @@
   forLoop(false);
   forInLoop([1]);
   forInLoop([1, 2]);
+  forInLoopBreak([1]);
+  forInLoopBreak([1, 2]);
+  forInLoopContinue([1]);
+  forInLoopContinue([1, 2]);
   forInLoopEmpty([]);
   forInLoopNull(null);
   doLoop(true);
@@ -25,10 +29,19 @@
   c.captureTwice();
   equals2(c, null);
   equals2(c, c);
+  var c2 = new Class2();
+  c2.field1 = new Class2();
+  c2.field2 = new Class2();
+  c2 == c2.field1;
+  new Class3(87);
   switchStatement(1);
   switchStatement(0);
   switchStatementConst(const Const(0));
   switchStatementConst(const Const(1));
+  switchStatementBreak(0);
+  switchStatementBreak(1);
+  switchStatementBreakContinue(0);
+  switchStatementBreakContinue(1);
   isInt(null);
   isInt(0);
   isDouble(null);
@@ -69,6 +82,24 @@
   }
 }
 
+forInLoopBreak(local) {
+  for (var e in local) {
+    if (e == 1) {
+      break;
+    }
+    print(e);
+  }
+}
+
+forInLoopContinue(local) {
+  for (var e in local) {
+    if (e == 1) {
+      continue;
+    }
+    print(e);
+  }
+}
+
 forInLoopEmpty(local) {
   for (var e in local) {
     print(e);
@@ -127,6 +158,24 @@
   return b != null && a.property1 == b.property1 && a.property2 == b.property2;
 }
 
+class Class2 {
+  var field1;
+  var field2;
+
+  operator ==(other) {
+    return other != null && field1 == other.field1 && field2 == other.field2;
+  }
+}
+
+class Class3 {
+  var field1;
+  var field2;
+
+  Class3(this.field1) {
+    this.field2 = 42;
+  }
+}
+
 switchStatement(a) {
   switch (a) {
     case 0:
@@ -155,6 +204,29 @@
   }
 }
 
+switchStatementBreak(a) {
+  switch (a) {
+    case 0:
+      break;
+    case 1:
+      return 2;
+    case 2:
+      break;
+  }
+}
+
+switchStatementBreakContinue(a) {
+  switch (a) {
+    case 0:
+      break;
+    label:
+    case 1:
+      return 2;
+    case 2:
+      continue label;
+  }
+}
+
 isInt(e) {
   e = e is int;
   print(e);
diff --git a/tests/compiler/dart2js/sourcemaps/source_mapping_test.dart b/tests/compiler/dart2js/sourcemaps/source_mapping_test.dart
index 96b935c..e0dbefc 100644
--- a/tests/compiler/dart2js/sourcemaps/source_mapping_test.dart
+++ b/tests/compiler/dart2js/sourcemaps/source_mapping_test.dart
@@ -2,10 +2,23 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+import 'helpers/sourcemap_helper.dart';
 import 'tools/source_mapping_tester.dart';
 
 void main() {
   // 'operators.dart' and 'invokes.dart' are tested individually to avoid
   // test timeout.
-  test(['--exclude', 'operators.dart', 'invokes.dart']);
+  test(['--exclude', 'operators.dart', 'invokes.dart'],
+      whiteListFunction: (String config, String file) {
+    if (file == 'others.dart') {
+      return (CodePoint point) {
+        if (point.jsCode.startsWith('target=')) {
+          // Switch continue target updates don't store the source information.
+          return true;
+        }
+        return false;
+      };
+    }
+    return emptyWhiteList;
+  });
 }
diff --git a/tests/compiler/dart2js/sourcemaps/tools/source_mapping_tester.dart b/tests/compiler/dart2js/sourcemaps/tools/source_mapping_tester.dart
index ce7a8f2..a7e9645 100644
--- a/tests/compiler/dart2js/sourcemaps/tools/source_mapping_tester.dart
+++ b/tests/compiler/dart2js/sourcemaps/tools/source_mapping_tester.dart
@@ -48,7 +48,6 @@
         if (result.missingCodePointsMap.isNotEmpty) {
           errorsFound =
               result.printMissingCodePoints(whiteListFunction(config, file));
-          true;
         }
         if (result.multipleNodesMap.isNotEmpty) {
           result.printMultipleNodes();
diff --git a/tests/compiler/dart2js/value_range2_test.dart b/tests/compiler/dart2js/value_range2_test.dart
index 3d97c5e..f4b9376 100644
--- a/tests/compiler/dart2js/value_range2_test.dart
+++ b/tests/compiler/dart2js/value_range2_test.dart
@@ -9,8 +9,8 @@
 
 ValueRangeInfo info = new ValueRangeInfo(const JavaScriptConstantSystem());
 
-Value instructionValue = info.newInstructionValue(new HBreak(null));
-Value lengthValue = info.newPositiveValue(new HBreak(null));
+Value instructionValue = info.newInstructionValue(new HBreak(null, null));
+Value lengthValue = info.newPositiveValue(new HBreak(null, null));
 
 Range createSingleRange(Value value) => info.newNormalizedRange(value, value);
 
diff --git a/tests/compiler/dart2js_extra/dart2js_extra.status b/tests/compiler/dart2js_extra/dart2js_extra.status
index 33bb5e3..b84425a 100644
--- a/tests/compiler/dart2js_extra/dart2js_extra.status
+++ b/tests/compiler/dart2js_extra/dart2js_extra.status
@@ -270,20 +270,18 @@
 
 [ $compiler == dart2js && $dart2js_with_kernel && $checked ]
 21666_test: RuntimeError
-async_stacktrace_test: RuntimeError
 closure_capture2_test: RuntimeError
 closure_type_reflection2_test: RuntimeError
 closure_type_reflection_test: RuntimeError
 constant_javascript_semantics_test/01: MissingCompileTimeError
 deferred/deferred_mirrors1_test: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
 deferred/deferred_mirrors2_test: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
-deferred/multiple_default_arg_test: RuntimeError
 deferred/reflect_multiple_annotations_test: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
 deferred/reflect_multiple_default_arg_test: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
 deferred/uninstantiated_type_variable_test: Crash # NoSuchMethodError: The method 'hasSubclass' was called on null.
 deferred_custom_loader_test: RuntimeError
 deferred_fail_and_retry_test: RuntimeError
-deferred_fail_and_retry_worker_test: RuntimeError
+deferred_fail_and_retry_worker_test: Fail
 dummy_compiler_test: CompileTimeError
 invalid_annotation2_test/none: RuntimeError
 label_test/06: MissingCompileTimeError
diff --git a/tests/compiler/dart2js_native/dart2js_native.status b/tests/compiler/dart2js_native/dart2js_native.status
index 940d901..c21b5b3 100644
--- a/tests/compiler/dart2js_native/dart2js_native.status
+++ b/tests/compiler/dart2js_native/dart2js_native.status
@@ -72,7 +72,6 @@
 
 [ $compiler == dart2js && $dart2js_with_kernel && $checked ]
 bound_closure_super_test: RuntimeError
-event_loop_test: RuntimeError
 fake_thing_test: RuntimeError
 mirror_intercepted_field_test: RuntimeError
 native_library_same_name_used_frog_test: CompileTimeError
diff --git a/tests/corelib/corelib.status b/tests/corelib/corelib.status
index fd5a27d..6b3dab8 100644
--- a/tests/corelib/corelib.status
+++ b/tests/corelib/corelib.status
@@ -457,7 +457,6 @@
 map_test: Crash # tests/corelib/map_test.dart:866:7: Internal problem: Unhandled Null in installDefaultConstructor.
 nan_infinity_test/01: RuntimeError
 regress_r21715_test: RuntimeError
-stacktrace_fromstring_test: RuntimeError
 string_base_vm_test: RuntimeError
 symbol_reserved_word_test/03: RuntimeError
 symbol_reserved_word_test/04: MissingCompileTimeError
diff --git a/tests/corelib_2/corelib_2.status b/tests/corelib_2/corelib_2.status
index d7d93c6..6474974 100644
--- a/tests/corelib_2/corelib_2.status
+++ b/tests/corelib_2/corelib_2.status
@@ -537,7 +537,7 @@
 iterable_empty_test: RuntimeError
 iterable_fold_test/02: RuntimeError
 iterable_mapping_test/none: RuntimeError
-iterable_reduce_test/01: RuntimeError
+iterable_reduce_test/01: CompileTimeError # Issue 31533
 iterable_reduce_test/none: RuntimeError
 iterable_to_list_test/01: RuntimeError
 iterable_to_list_test/none: RuntimeError
@@ -554,7 +554,6 @@
 string_trimlr_test/02: RuntimeError
 symbol_operator_test/03: RuntimeError
 symbol_reserved_word_test/04: MissingCompileTimeError
-symbol_reserved_word_test/05: MissingCompileTimeError
 symbol_reserved_word_test/06: RuntimeError
 symbol_reserved_word_test/07: MissingCompileTimeError
 symbol_reserved_word_test/09: RuntimeError
@@ -573,7 +572,7 @@
 int_modulo_arith_test/none: CompileTimeError # Issue 31402 (Assert statement)
 iterable_fold_test/02: RuntimeError
 iterable_generate_test/01: RuntimeError # Issue 31385 (--strong is not passed to the runtime)
-iterable_reduce_test/01: RuntimeError
+iterable_reduce_test/01: CompileTimeError # Issue 31533
 iterable_reduce_test/none: RuntimeError
 iterable_to_list_test/01: RuntimeError
 iterable_to_list_test/none: RuntimeError
@@ -587,7 +586,6 @@
 string_trimlr_test/02: RuntimeError
 symbol_operator_test/03: RuntimeError
 symbol_reserved_word_test/04: MissingCompileTimeError
-symbol_reserved_word_test/05: MissingCompileTimeError
 symbol_reserved_word_test/06: RuntimeError
 symbol_reserved_word_test/07: MissingCompileTimeError
 symbol_reserved_word_test/09: RuntimeError
@@ -677,7 +675,6 @@
 list_test/01: Crash # Unsupported operation: Unsupported type parameter type node T.
 list_test/none: Crash # Unsupported operation: Unsupported type parameter type node T.
 map_test: Crash # tests/corelib_2/map_test.dart:903:7: Internal problem: Unhandled Null in installDefaultConstructor.
-stacktrace_fromstring_test: RuntimeError
 symbol_reserved_word_test/03: RuntimeError
 symbol_reserved_word_test/04: MissingCompileTimeError
 symbol_reserved_word_test/05: MissingCompileTimeError
diff --git a/tests/html/html.status b/tests/html/html.status
index cd1e0e4..9122f62 100644
--- a/tests/html/html.status
+++ b/tests/html/html.status
@@ -332,12 +332,9 @@
 js_util_test/hasProperty: RuntimeError
 
 [ $compiler == dart2js && $dart2js_with_kernel && $checked ]
-async_spawnuri_test: RuntimeError
-async_test: RuntimeError
 canvasrenderingcontext2d_test/drawImage_image_element: Timeout
 canvasrenderingcontext2d_test/drawImage_video_element: Timeout
 canvasrenderingcontext2d_test/drawImage_video_element_dataUrl: Timeout
-cross_domain_iframe_test: RuntimeError
 custom/attribute_changed_callback_test/fully_supported: RuntimeError
 custom/attribute_changed_callback_test/unsupported_on_polyfill: RuntimeError
 custom/document_register_type_extensions_test/construction: RuntimeError
@@ -366,7 +363,6 @@
 element_animate_test/omit_timing: Timeout
 element_test/click: RuntimeError
 element_test/eventDelegation: RuntimeError
-event_customevent_test: RuntimeError
 fileapi_test/directoryReader: RuntimeError
 fileapi_test/fileEntry: RuntimeError
 form_data_test/functional: Timeout
@@ -376,30 +372,25 @@
 indexeddb_3_test: RuntimeError
 indexeddb_4_test: RuntimeError
 indexeddb_5_test: RuntimeError
-isolates_test: RuntimeError
 js_test/JsObject.fromBrowserObject(): RuntimeError
 js_test/JsObject.jsify(): RuntimeError
 js_typed_interop_default_arg_test/explicit_argument: RuntimeError
 js_typed_interop_test/static_method_tearoff_1: RuntimeError
 js_util_test/js_util.jsify(): RuntimeError
-keyboard_event_test: RuntimeError
 mirrors_js_typed_interop_test: RuntimeError
 mutationobserver_test/childList: Timeout
 postmessage_structured_test/iframe: RuntimeError
 postmessage_structured_test/primitives: Timeout
 postmessage_structured_test/typed_arrays: Timeout
-streams_test: RuntimeError
-transferables_test: RuntimeError
 transition_event_test/functional: Timeout
 websocket_test/websocket: RuntimeError
 websql_test/functional: RuntimeError
-worker_api_test: RuntimeError
 worker_test/functional: Timeout
 xhr_cross_origin_test/functional: Timeout
-xhr_cross_origin_test/functional/functional: RuntimeError
 xhr_test/headers: RuntimeError
 xhr_test/json: Timeout
 xhr_test/xhr: Timeout
+xhr_test/xhr_requestBlob/xhr_requestBlob: Pass
 xhr_test/xhr_requestBlob: RuntimeError
 
 [ $compiler == dart2js && $fast_startup ]
diff --git a/tests/language/language_dart2js.status b/tests/language/language_dart2js.status
index 2ae3004..a0b4bae 100644
--- a/tests/language/language_dart2js.status
+++ b/tests/language/language_dart2js.status
@@ -1303,39 +1303,14 @@
 
 [ $compiler == dart2js && $dart2js_with_kernel && $checked ]
 arithmetic_canonicalization_test: RuntimeError
+assertion_initializer_const_function_test/01: RuntimeError
 assertion_initializer_test: CompileTimeError
 assign_static_type_test/01: Fail
 assign_static_type_test/02: MissingCompileTimeError
-async_await_syntax_test/a06a: RuntimeError
-async_await_syntax_test/b06a: RuntimeError
-async_await_syntax_test/c06a: RuntimeError
-async_await_syntax_test/d06a: RuntimeError
 async_await_test: Crash # NoSuchMethodError: The method 'generateBreak' was called on null.
-async_return_types_test/none: RuntimeError
-async_return_types_test/tooManyTypeParameters: RuntimeError
-async_star_cancel_and_throw_in_finally_test: RuntimeError
+async_return_types_test/nestedFuture: Fail
+async_return_types_test/wrongTypeParameter: Fail
 async_star_cancel_while_paused_test: RuntimeError
-async_star_no_cancel2_test: RuntimeError
-async_star_no_cancel_test: RuntimeError
-async_star_pause_test: RuntimeError
-async_star_regression_2238_test: RuntimeError
-async_star_regression_23116_test: RuntimeError
-async_star_regression_fisk_test: RuntimeError
-async_star_stream_take_test: RuntimeError
-async_star_take_reyield_test: RuntimeError
-async_star_test: RuntimeError
-async_test/setter1: Crash # 'file:*/pkg/compiler/lib/src/kernel/element_map_impl.dart': Failed assertion: line 939 pos 18: 'asyncMarker == AsyncMarker.SYNC': is not true.
-async_throw_in_catch_test/forceAwait: RuntimeError
-async_throw_in_catch_test/none: RuntimeError
-asyncstar_concat_test: RuntimeError
-asyncstar_throw_in_catch_test: RuntimeError
-asyncstar_yield_test: RuntimeError
-asyncstar_yieldstar_test: RuntimeError
-await_exceptions_test: RuntimeError
-await_for_cancel_test: RuntimeError
-await_for_test: RuntimeError
-await_for_use_local_test: RuntimeError
-await_not_started_immediately_test: RuntimeError
 bad_constructor_test/06: Crash # NoSuchMethodError: The getter 'iterator' was called on null.
 bad_override_test/03: MissingCompileTimeError
 bad_override_test/04: MissingCompileTimeError
@@ -1346,7 +1321,6 @@
 bit_operations_test/04: RuntimeError
 bit_operations_test/none: RuntimeError
 branch_canonicalization_test: RuntimeError
-branches_test: Crash # 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart': Failed assertion: line 437 pos 16: 'identical(combiner.arguments.positional[0], rhs)': is not true.
 call_function_apply_test: RuntimeError
 call_nonexistent_constructor_test/01: RuntimeError
 canonical_const2_test: RuntimeError
@@ -1415,11 +1389,11 @@
 constructor5_test: RuntimeError
 constructor6_test: RuntimeError
 constructor_named_arguments_test/none: RuntimeError
-constructor_redirect1_negative_test: Crash # Stack Overflow
-constructor_redirect2_negative_test: Crash # Stack Overflow
+constructor_redirect1_negative_test: Crash # Issue 30856
+constructor_redirect2_negative_test: Crash # Issue 30856
 constructor_redirect2_test/01: MissingCompileTimeError
 constructor_redirect_test/01: Crash # Assertion failure: Cannot find value Instance of 'ThisLocal' in (local(A.named2#x), local(A.named2#y), local(A.named2#z)) for j:constructor(A.named2).
-cyclic_constructor_test/01: Crash # Stack Overflow
+cyclic_constructor_test/01: Crash # Issue 30856
 default_factory2_test/01: Fail
 deferred_closurize_load_library_test: RuntimeError
 deferred_constraints_constants_test/default_argument2: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
@@ -1438,7 +1412,6 @@
 deferred_load_library_wrong_args_test/01: MissingRuntimeError
 deferred_not_loaded_check_test: RuntimeError
 deferred_redirecting_factory_test: RuntimeError
-deferred_shared_and_unshared_classes_test: RuntimeError
 double_int_to_string_test: RuntimeError
 duplicate_export_negative_test: Fail
 duplicate_implements_test/01: MissingCompileTimeError
@@ -1675,7 +1648,6 @@
 null_test/none: RuntimeError
 number_identity2_test: RuntimeError
 numbers_test: RuntimeError
-operator_test: Crash # 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart': Failed assertion: line 437 pos 16: 'identical(combiner.arguments.positional[0], rhs)': is not true.
 override_field_method1_negative_test: Fail
 override_field_method2_negative_test: Fail
 override_field_method4_negative_test: Fail
@@ -1686,7 +1658,6 @@
 override_inheritance_mixed_test/03: MissingCompileTimeError
 override_inheritance_mixed_test/04: MissingCompileTimeError
 override_method_with_field_test/01: MissingCompileTimeError
-prefix5_negative_test: Crash # 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart': Failed assertion: line 437 pos 16: 'identical(combiner.arguments.positional[0], rhs)': is not true.
 private_super_constructor_test/01: MissingCompileTimeError
 redirecting_constructor_initializer_test: RuntimeError
 redirecting_factory_default_values_test/01: MissingCompileTimeError
@@ -1702,9 +1673,7 @@
 regress_22976_test/01: CompileTimeError
 regress_22976_test/02: CompileTimeError
 regress_22976_test/none: CompileTimeError
-regress_23996_test: RuntimeError
 regress_24283_test: RuntimeError
-regress_24935_test/none: RuntimeError
 regress_26133_test: RuntimeError # Issue 26429
 regress_27572_test: RuntimeError
 regress_27617_test/1: Crash # Assertion failure: Unexpected constructor j:constructor(Foo._) in ConstructorDataImpl._getConstructorConstant
@@ -1726,8 +1695,6 @@
 switch_case_test/00: MissingCompileTimeError
 switch_case_test/01: MissingCompileTimeError
 switch_case_test/02: MissingCompileTimeError
-sync_generator2_test/41: Crash # 'file:*/pkg/compiler/lib/src/kernel/element_map_impl.dart': Failed assertion: line 939 pos 18: 'asyncMarker == AsyncMarker.SYNC': is not true.
-sync_generator2_test/52: Crash # 'file:*/pkg/compiler/lib/src/kernel/element_map_impl.dart': Failed assertion: line 939 pos 18: 'asyncMarker == AsyncMarker.SYNC': is not true.
 syntax_test/none: CompileTimeError
 top_level_getter_no_setter1_test/01: RuntimeError
 top_level_getter_no_setter2_test/01: RuntimeError
@@ -1751,5 +1718,4 @@
 type_variable_bounds_test/04: Fail
 type_variable_bounds_test/05: Fail
 type_variable_scope_test/03: Crash # Internal Error: Unexpected type variable in static context.
-yieldstar_pause_test: RuntimeError
 
diff --git a/tests/language_2/async_await_foreign_test.dart b/tests/language_2/async_await_foreign_test.dart
index ed5f99e..2674f95 100644
--- a/tests/language_2/async_await_foreign_test.dart
+++ b/tests/language_2/async_await_foreign_test.dart
@@ -4,6 +4,7 @@
 
 import 'dart:async';
 import 'package:expect/expect.dart';
+import 'package:async_helper/async_helper.dart';
 
 typedef Future<Null> Task();
 
@@ -65,8 +66,12 @@
   return 'world';
 }
 
-Future main() async {
-  var r2 = await world();
-  Expect.equals('hello', r1);
-  Expect.equals('world', r2);
+void main() {
+  asyncStart();
+  () async {
+    var r2 = await world();
+    Expect.equals('hello', r1);
+    Expect.equals('world', r2);
+    asyncEnd();
+  }();
 }
diff --git a/tests/language_2/async_call_test.dart b/tests/language_2/async_call_test.dart
index 3bddf87..a3643f9 100644
--- a/tests/language_2/async_call_test.dart
+++ b/tests/language_2/async_call_test.dart
@@ -4,6 +4,7 @@
 
 import "dart:async";
 import "package:expect/expect.dart";
+import "package:async_helper/async_helper.dart";
 
 var result = "";
 
@@ -15,14 +16,18 @@
   result += "bar";
 }
 
-main() async {
-  var f = new Future(foo);
-  var b = bar();
-  Expect.equals("", result);
-  scheduleMicrotask(() => result += "micro");
-  await b;
-  await f;
+main() {
+  asyncStart();
+  () async {
+    var f = new Future(foo);
+    var b = bar();
+    Expect.equals("", result);
+    scheduleMicrotask(() => result += "micro");
+    await b;
+    await f;
 
-  // Validates that bar is scheduled as a microtask, before foo.
-  Expect.equals("barmicrofoo", result);
+    // Validates that bar is scheduled as a microtask, before foo.
+    Expect.equals("barmicrofoo", result);
+    asyncEnd();
+  }();
 }
diff --git a/tests/language_2/cascaded_forwarding_stubs_generic_test.dart b/tests/language_2/cascaded_forwarding_stubs_generic_test.dart
new file mode 100644
index 0000000..9dc502b
--- /dev/null
+++ b/tests/language_2/cascaded_forwarding_stubs_generic_test.dart
@@ -0,0 +1,57 @@
+// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import "package:expect/expect.dart";
+
+class A {}
+
+class B extends A {}
+
+class C {
+  void f(B x, B y) {}
+}
+
+abstract class I1<T> {
+  void f(T x, B y);
+}
+
+// D contains a forwarding stub for f which ensures that `x` is type checked.
+class D extends C implements I1<B> {}
+
+abstract class I2<T> {
+  void f(B x, T y);
+}
+
+// E contains a forwarding stub for f which ensures that `y` is type checked.
+class E extends D implements I2<B> {}
+
+main() {
+  E e = new E();
+  C c = e;
+  I1<A> i1 = e;
+  D d = e;
+  I2<A> i2 = e;
+  A a = new A();
+  B b = new B();
+  c.f(b, b); // No error
+  i1.f(b, b); // No error
+  d.f(b, b); // No error
+  i2.f(b, b); // No error
+  e.f(b, b); // No error
+  Expect.throwsTypeError(() {
+    i1.f(a, b);
+  });
+  Expect.throwsTypeError(() {
+    d.f(a, b);
+  });
+  Expect.throwsTypeError(() {
+    i2.f(b, a);
+  });
+  Expect.throwsTypeError(() {
+    e.f(a, b);
+  });
+  Expect.throwsTypeError(() {
+    e.f(b, a);
+  });
+}
diff --git a/tests/language_2/cascaded_forwarding_stubs_test.dart b/tests/language_2/cascaded_forwarding_stubs_test.dart
new file mode 100644
index 0000000..1af182b
--- /dev/null
+++ b/tests/language_2/cascaded_forwarding_stubs_test.dart
@@ -0,0 +1,57 @@
+// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import "package:expect/expect.dart";
+
+class A {}
+
+class B extends A {}
+
+class C {
+  void f(B x, B y) {}
+}
+
+abstract class I1 {
+  void f(covariant A x, B y);
+}
+
+// D contains a forwarding stub for f which ensures that `x` is type checked.
+class D extends C implements I1 {}
+
+abstract class I2 {
+  void f(B x, covariant A y);
+}
+
+// E contains a forwarding stub for f which ensures that `y` is type checked.
+class E extends D implements I2 {}
+
+main() {
+  E e = new E();
+  C c = e;
+  I1 i1 = e;
+  D d = e;
+  I2 i2 = e;
+  A a = new A();
+  B b = new B();
+  c.f(b, b); // No error
+  i1.f(b, b); // No error
+  d.f(b, b); // No error
+  i2.f(b, b); // No error
+  e.f(b, b); // No error
+  Expect.throwsTypeError(() {
+    i1.f(a, b);
+  });
+  Expect.throwsTypeError(() {
+    d.f(a, b);
+  });
+  Expect.throwsTypeError(() {
+    i2.f(b, a);
+  });
+  Expect.throwsTypeError(() {
+    e.f(a, b);
+  });
+  Expect.throwsTypeError(() {
+    e.f(b, a);
+  });
+}
diff --git a/tests/language_2/checked_method_error_order_test.dart b/tests/language_2/checked_method_error_order_test.dart
new file mode 100644
index 0000000..508a957
--- /dev/null
+++ b/tests/language_2/checked_method_error_order_test.dart
@@ -0,0 +1,27 @@
+// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+import "package:expect/expect.dart";
+
+class Bar {
+  foo({int i, String a}) {
+    print(i);
+    print(a);
+  }
+}
+
+main() {
+  bool checkedMode = false;
+  assert((checkedMode = true));
+  // Test that in checked mode, we are checking the type of optional parameters
+  // in the correct order (aka, don't check the type of parameter 'a' first).
+  if (checkedMode) {
+    dynamic x = 'e';
+    dynamic y = 3;
+    Expect.throws(
+        () => new Bar().foo(i: x, a: y),
+        (e) =>
+            e is TypeError &&
+            e.message.toString().contains("is not a subtype of type 'int'"));
+  }
+}
diff --git a/tests/language_2/language_2_analyzer.status b/tests/language_2/language_2_analyzer.status
index b720cd2..afb8c7e 100644
--- a/tests/language_2/language_2_analyzer.status
+++ b/tests/language_2/language_2_analyzer.status
@@ -477,6 +477,9 @@
 constructor13_test/02: MissingCompileTimeError
 int64_literal_test/03: MissingCompileTimeError
 int64_literal_test/30: MissingCompileTimeError
+object_has_no_call_method_test/02: MissingCompileTimeError
+object_has_no_call_method_test/05: MissingCompileTimeError
+object_has_no_call_method_test/08: MissingCompileTimeError
 
 [ $compiler == dart2analyzer && $checked ]
 assertion_initializer_const_error2_test/none: Pass
@@ -1036,6 +1039,7 @@
 accessor_conflict_import_test: CompileTimeError # Issue 25626
 additional_interface_adds_optional_args_test: CompileTimeError # Issue #30568
 async_return_types_test/nestedFuture: MissingCompileTimeError
+cascaded_forwarding_stubs_test: CompileTimeError
 combiner_type_lookup_indexed_test: CompileTimeError # Issue #31484
 combiner_type_lookup_instance_test: CompileTimeError # Issue #31484
 combiner_type_lookup_static_test: CompileTimeError # Issue #31484
@@ -1071,6 +1075,7 @@
 multiline_newline_test/05: MissingCompileTimeError
 multiline_newline_test/05r: MissingCompileTimeError
 multiple_interface_inheritance_test: CompileTimeError # Issue 30552
+object_has_no_call_method_test/02: MissingCompileTimeError
 override_inheritance_abstract_test/02: MissingCompileTimeError
 override_inheritance_abstract_test/03: MissingCompileTimeError
 override_inheritance_abstract_test/04: MissingCompileTimeError
diff --git a/tests/language_2/language_2_dart2js.status b/tests/language_2/language_2_dart2js.status
index 4341b0c..08cc5c2 100644
--- a/tests/language_2/language_2_dart2js.status
+++ b/tests/language_2/language_2_dart2js.status
@@ -975,6 +975,9 @@
 full_stacktrace1_test: Pass, RuntimeError # Issue 12698
 full_stacktrace2_test: Pass, RuntimeError # Issue 12698
 nan_identical_test: Fail # Issue 11551
+object_has_no_call_method_test/02: MissingCompileTimeError
+object_has_no_call_method_test/05: MissingCompileTimeError
+object_has_no_call_method_test/08: MissingCompileTimeError
 positional_parameters_type_test/01: MissingCompileTimeError
 positional_parameters_type_test/02: MissingCompileTimeError
 stacktrace_test: Pass, RuntimeError # # Issue 12698
@@ -1011,6 +1014,8 @@
 
 [ $compiler == dart2js && $runtime != none && !$checked && !$dart2js_with_kernel ]
 callable_test/none: RuntimeError
+cascaded_forwarding_stubs_generic_test: RuntimeError
+cascaded_forwarding_stubs_test: RuntimeError
 checked_setter_test: RuntimeError
 checked_setter2_test: RuntimeError
 checked_setter3_test: RuntimeError
@@ -2065,7 +2070,7 @@
 tearoff_dynamic_test: Crash # Unsupported operation: Unsupported type parameter type node T.
 truncdiv_test: RuntimeError
 try_catch_test/01: MissingCompileTimeError
-type_literal_test: Crash # NoSuchMethodError: The getter 'enclosingLibrary' was called on null.
+type_literal_test: RuntimeError
 typevariable_substitution2_test/02: RuntimeError
 
 [ $compiler == dart2js && $dart2js_with_kernel && $fast_startup ]
@@ -2488,49 +2493,16 @@
 tearoff_dynamic_test: Crash # Unsupported operation: Unsupported type parameter type node T.
 truncdiv_test: RuntimeError
 try_catch_test/01: MissingCompileTimeError
-type_literal_test: Crash # NoSuchMethodError: The getter 'enclosingLibrary' was called on null.
+type_literal_test: RuntimeError
 typevariable_substitution2_test/02: RuntimeError
 
 [ $compiler == dart2js && $dart2js_with_kernel && $checked ]
 arithmetic_canonicalization_test: RuntimeError
+assertion_initializer_const_function_test/01: MissingCompileTimeError
 assertion_initializer_test: CompileTimeError
 assertion_test: RuntimeError
-async_await_syntax_test/a06a: RuntimeError
-async_await_syntax_test/b06a: RuntimeError
-async_await_syntax_test/c06a: RuntimeError
-async_await_syntax_test/d06a: RuntimeError
-async_await_test/02: RuntimeError
-async_await_test/03: RuntimeError
-async_await_test/none: RuntimeError
-async_return_types_test/none: RuntimeError
-async_star_await_pauses_test: RuntimeError
-async_star_cancel_and_throw_in_finally_test: RuntimeError
 async_star_cancel_while_paused_test: RuntimeError
-async_star_no_cancel2_test: RuntimeError
-async_star_no_cancel_test: RuntimeError
-async_star_pause_test: RuntimeError
-async_star_regression_2238_test: RuntimeError
-async_star_regression_23116_test: RuntimeError
-async_star_regression_fisk_test: RuntimeError
-async_star_stream_take_test: RuntimeError
-async_star_take_reyield_test: RuntimeError
-async_star_test/01: RuntimeError
 async_star_test/02: RuntimeError
-async_star_test/03: RuntimeError
-async_star_test/04: RuntimeError
-async_star_test/05: RuntimeError
-async_star_test/none: RuntimeError
-async_throw_in_catch_test/forceAwait: RuntimeError
-async_throw_in_catch_test/none: RuntimeError
-asyncstar_concat_test: RuntimeError
-asyncstar_throw_in_catch_test: RuntimeError
-asyncstar_yield_test: RuntimeError
-asyncstar_yieldstar_test: RuntimeError
-await_exceptions_test: RuntimeError
-await_for_cancel_test: RuntimeError
-await_for_test: RuntimeError
-await_for_use_local_test: RuntimeError
-await_not_started_immediately_test: RuntimeError
 bad_override_test/03: MissingCompileTimeError
 bad_override_test/04: MissingCompileTimeError
 bad_override_test/05: MissingCompileTimeError
@@ -2538,7 +2510,6 @@
 bit_operations_test/04: RuntimeError
 bit_operations_test/none: RuntimeError
 branch_canonicalization_test: RuntimeError
-branches_test: Crash # 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart': Failed assertion: line 437 pos 16: 'identical(combiner.arguments.positional[0], rhs)': is not true.
 call_function_apply_test: RuntimeError
 canonical_const2_test: RuntimeError
 check_member_static_test/02: MissingCompileTimeError
@@ -2670,7 +2641,6 @@
 deferred_load_library_wrong_args_test/01: MissingRuntimeError
 deferred_not_loaded_check_test: RuntimeError
 deferred_redirecting_factory_test: RuntimeError
-deferred_shared_and_unshared_classes_test: RuntimeError
 double_int_to_string_test: RuntimeError
 duplicate_export_negative_test: Fail
 duplicate_implements_test/01: MissingCompileTimeError
@@ -2695,7 +2665,6 @@
 final_attempt_reinitialization_test/02: MissingCompileTimeError
 function_type_alias_test: RuntimeError
 generalized_void_syntax_test: CompileTimeError
-generic_async_star_test: RuntimeError
 generic_closure_test/01: RuntimeError
 generic_closure_test/none: RuntimeError
 generic_field_mixin4_test: Crash # Assertion failure: Runtime type information not available for type_variable_local(M.T) in () for j:constructor(C3.).
@@ -2715,7 +2684,7 @@
 getter_override_test/01: MissingCompileTimeError
 getter_override_test/02: MissingCompileTimeError
 identical_closure2_test: RuntimeError
-implicit_downcast_during_assert_initializer_test: Crash # 'file:*/pkg/compiler/lib/src/ssa/builder_kernel.dart': Failed assertion: line 660 pos 16: 'false': Unhandled initializer ir.ShadowAssertInitializer
+implicit_downcast_during_assert_initializer_test: RuntimeError
 infinite_switch_label_test: Crash # NoSuchMethodError: The method 'generateBreak' was called on null.
 infinity_test: RuntimeError
 instance_creation_in_function_annotation_test: RuntimeError
@@ -2854,7 +2823,6 @@
 null_test/none: RuntimeError
 number_identity2_test: RuntimeError
 numbers_test: RuntimeError
-operator_test: Crash # 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart': Failed assertion: line 437 pos 16: 'identical(combiner.arguments.positional[0], rhs)': is not true.
 override_field_method1_negative_test: Fail
 override_field_method2_negative_test: Fail
 override_field_method4_negative_test: Fail
@@ -2869,7 +2837,6 @@
 override_method_with_field_test/01: MissingCompileTimeError
 positional_parameters_type_test/01: MissingCompileTimeError
 positional_parameters_type_test/02: MissingCompileTimeError
-prefix5_negative_test: Crash # 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart': Failed assertion: line 437 pos 16: 'identical(combiner.arguments.positional[0], rhs)': is not true.
 private_super_constructor_test/01: MissingCompileTimeError
 redirecting_factory_default_values_test/01: MissingCompileTimeError
 redirecting_factory_default_values_test/02: MissingCompileTimeError
@@ -2879,9 +2846,7 @@
 regress_22976_test/01: CompileTimeError
 regress_22976_test/02: CompileTimeError
 regress_22976_test/none: CompileTimeError
-regress_23996_test: RuntimeError
 regress_24283_test: RuntimeError
-regress_24935_test/none: RuntimeError
 regress_27617_test/1: Crash # Assertion failure: Unexpected constructor j:constructor(Foo._) in ConstructorDataImpl._getConstructorConstant
 regress_28217_test/01: MissingCompileTimeError
 regress_28217_test/none: MissingCompileTimeError
@@ -2894,7 +2859,6 @@
 regress_31057_test: Crash # Unsupported operation: Unsupported type parameter type node B.
 setter_override_test/00: MissingCompileTimeError
 setter_override_test/03: MissingCompileTimeError
-shadow_parameter_and_local_test: RuntimeError
 stacktrace_demangle_ctors_test: RuntimeError
 stacktrace_test: RuntimeError
 super_call4_test: Crash # NoSuchMethodError: The getter 'thisLocal' was called on null.
@@ -2904,8 +2868,6 @@
 switch_case_test/01: MissingCompileTimeError
 switch_case_test/02: MissingCompileTimeError
 symbol_literal_test/01: MissingCompileTimeError
-sync_generator2_test/41: Crash # 'file:*/pkg/compiler/lib/src/kernel/element_map_impl.dart': Failed assertion: line 939 pos 18: 'asyncMarker == AsyncMarker.SYNC': is not true.
-sync_generator2_test/52: Crash # 'file:*/pkg/compiler/lib/src/kernel/element_map_impl.dart': Failed assertion: line 939 pos 18: 'asyncMarker == AsyncMarker.SYNC': is not true.
 syntax_test/28: MissingCompileTimeError
 syntax_test/29: MissingCompileTimeError
 syntax_test/30: MissingCompileTimeError
@@ -2916,11 +2878,10 @@
 truncdiv_test: RuntimeError
 try_catch_test/01: MissingCompileTimeError
 type_check_const_function_typedef2_test: MissingCompileTimeError
-type_literal_test: Crash # NoSuchMethodError: The getter 'enclosingLibrary' was called on null.
+type_literal_test: RuntimeError
 type_parameter_test/06: Crash # Internal Error: Unexpected type variable in static context.
 type_parameter_test/09: Crash # Internal Error: Unexpected type variable in static context.
 type_variable_scope_test/03: Crash # Internal Error: Unexpected type variable in static context.
-yieldstar_pause_test: RuntimeError
 
 [ $compiler == dart2js && $dart2js_with_kernel ]
 checked_setter_test: RuntimeError # Issue 31128
@@ -2954,10 +2915,15 @@
 implicit_downcast_during_super_initializer_test: RuntimeError
 implicit_downcast_during_yield_star_test: RuntimeError
 implicit_downcast_during_yield_test: RuntimeError
+object_has_no_call_method_test/02: MissingCompileTimeError
+object_has_no_call_method_test/05: MissingCompileTimeError
+object_has_no_call_method_test/08: MissingCompileTimeError
 
 [ $compiler == dart2js && $dart2js_with_kernel && !$checked ]
 assertion_initializer_const_error2_test/none: Pass
 assertion_initializer_const_error2_test/*: CompileTimeError # Issue #31321
+cascaded_forwarding_stubs_generic_test: RuntimeError
+cascaded_forwarding_stubs_test: RuntimeError
 checked_setter3_test: RuntimeError # Issue 31128
 implicit_downcast_during_assignment_test: RuntimeError
 implicit_downcast_during_combiner_test: RuntimeError
diff --git a/tests/language_2/language_2_dartdevc.status b/tests/language_2/language_2_dartdevc.status
index 4d5a070..5830537 100644
--- a/tests/language_2/language_2_dartdevc.status
+++ b/tests/language_2/language_2_dartdevc.status
@@ -12,6 +12,10 @@
 unhandled_exception_negative_test: Fail
 closure_call_wrong_argument_count_negative_test: Fail
 
+# Skip Kernel tests on Windows until bot has been fixed (Issue 31539)
+[ $compiler == dartdevk && $system == windows ]
+*: Skip
+
 [ ($compiler == dartdevc && $runtime == none) || $compiler == dartdevk ]
 instantiate_type_variable_test/01: CompileTimeError
 setter_no_getter_call_test/01: CompileTimeError
@@ -120,6 +124,8 @@
 black_listed_test/none: fail # Issue 14228
 built_in_identifier_prefix_test: CompileTimeError
 built_in_identifier_type_annotation_test/22: MissingCompileTimeError # Issue 28816
+cascaded_forwarding_stubs_generic_test: RuntimeError
+cascaded_forwarding_stubs_test: CompileTimeError
 combiner_type_lookup_indexed_test: CompileTimeError # Issue #31484
 combiner_type_lookup_instance_test: CompileTimeError # Issue #31484
 combiner_type_lookup_static_test: CompileTimeError # Issue #31484
@@ -173,6 +179,7 @@
 multiline_newline_test/02r: CompileTimeError
 multiple_interface_inheritance_test: CompileTimeError # Issue 30552
 nested_generic_closure_test: CompileTimeError
+object_has_no_call_method_test/02: MissingCompileTimeError
 override_inheritance_field_test/04: CompileTimeError
 override_inheritance_field_test/06: CompileTimeError
 override_inheritance_field_test/26: CompileTimeError
@@ -282,51 +289,12 @@
 call_function2_test: CompileTimeError # Issue 31402; Error: A value of type '#lib1::Bar' can't be assigned to a variable of type '(dart.core::Object) → dart.core::Object'.
 call_non_method_field_test/01: MissingCompileTimeError
 call_non_method_field_test/02: MissingCompileTimeError
-call_through_getter_test/01: MissingCompileTimeError
-call_through_getter_test/02: MissingCompileTimeError
-call_type_literal_test/01: MissingCompileTimeError
 call_with_no_such_method_test: CompileTimeError # Issue 31402 Error: A value of type '#lib1::F' can't be assigned to a variable of type 'dart.core::Function'.
 callable_test/none: CompileTimeError
-cast_test/04: MissingCompileTimeError
-cast_test/05: MissingCompileTimeError
 check_member_static_test/01: MissingCompileTimeError
 check_member_static_test/02: MissingCompileTimeError
-checked_null_test/01: MissingCompileTimeError
 class_cycle_test/02: MissingCompileTimeError
 class_cycle_test/03: MissingCompileTimeError
-class_literal_static_test/01: MissingCompileTimeError
-class_literal_static_test/02: MissingCompileTimeError
-class_literal_static_test/03: MissingCompileTimeError
-class_literal_static_test/04: MissingCompileTimeError
-class_literal_static_test/05: MissingCompileTimeError
-class_literal_static_test/06: MissingCompileTimeError
-class_literal_static_test/07: MissingCompileTimeError
-class_literal_static_test/08: MissingCompileTimeError
-class_literal_static_test/09: MissingCompileTimeError
-class_literal_static_test/10: MissingCompileTimeError
-class_literal_static_test/11: MissingCompileTimeError
-class_literal_static_test/14: MissingCompileTimeError
-class_literal_static_test/15: MissingCompileTimeError
-class_literal_static_test/16: MissingCompileTimeError
-class_literal_static_test/23: MissingCompileTimeError
-class_literal_test/01: MissingCompileTimeError
-class_literal_test/02: MissingCompileTimeError
-class_literal_test/03: MissingCompileTimeError
-class_literal_test/04: MissingCompileTimeError
-class_literal_test/05: MissingCompileTimeError
-class_literal_test/06: MissingCompileTimeError
-class_literal_test/07: MissingCompileTimeError
-class_literal_test/08: MissingCompileTimeError
-class_literal_test/09: MissingCompileTimeError
-class_literal_test/10: MissingCompileTimeError
-class_literal_test/11: MissingCompileTimeError
-class_literal_test/14: MissingCompileTimeError
-class_literal_test/15: MissingCompileTimeError
-class_literal_test/16: MissingCompileTimeError
-class_literal_test/23: MissingCompileTimeError
-closure_internals_test/01: MissingCompileTimeError
-closure_internals_test/02: MissingCompileTimeError
-closure_internals_test/03: MissingCompileTimeError
 closure_invoked_through_interface_target_field_test: MissingCompileTimeError
 closure_invoked_through_interface_target_getter_test: MissingCompileTimeError
 compile_time_constant_c_test/02: MissingCompileTimeError
@@ -343,13 +311,6 @@
 compile_time_constant_static5_test/03: MissingCompileTimeError
 compile_time_constant_static5_test/13: MissingCompileTimeError
 compile_time_constant_static5_test/18: MissingCompileTimeError
-conditional_method_invocation_test/07: MissingCompileTimeError
-conditional_property_access_test/05: MissingCompileTimeError
-conditional_property_access_test/06: MissingCompileTimeError
-conditional_property_assignment_test/05: MissingCompileTimeError
-conditional_property_assignment_test/06: MissingCompileTimeError
-conditional_property_assignment_test/10: MissingCompileTimeError
-conditional_property_assignment_test/11: MissingCompileTimeError
 config_import_test: CompileTimeError
 const_constructor2_test/20: MissingCompileTimeError
 const_constructor2_test/22: MissingCompileTimeError
@@ -377,7 +338,6 @@
 const_types_test/39: MissingCompileTimeError
 const_types_test/40: MissingCompileTimeError
 constants_test/05: MissingCompileTimeError
-constructor_call_as_function_test/01: MissingCompileTimeError
 constructor_duplicate_final_test/01: Crash
 constructor_duplicate_final_test/02: Crash
 constructor_duplicate_final_test/03: Crash
@@ -423,7 +383,7 @@
 duplicate_implements_test/02: MissingCompileTimeError
 dynamic_prefix_core_test/none: CompileTimeError
 dynamic_test: CompileTimeError
-error_stacktrace_test/00: MissingCompileTimeError
+emit_const_fields_test: CompileTimeError # Issue 31533
 export_ambiguous_main_test: MissingCompileTimeError
 external_test/21: CompileTimeError
 external_test/24: CompileTimeError
@@ -447,12 +407,6 @@
 final_attempt_reinitialization_test/01: Crash
 final_attempt_reinitialization_test/02: Crash
 final_syntax_test/09: Crash
-first_class_types_literals_test/05: MissingCompileTimeError
-first_class_types_literals_test/06: MissingCompileTimeError
-first_class_types_literals_test/07: MissingCompileTimeError
-first_class_types_literals_test/10: MissingCompileTimeError
-first_class_types_literals_test/11: MissingCompileTimeError
-first_class_types_literals_test/12: MissingCompileTimeError
 function_propagation_test: CompileTimeError
 function_subtype_bound_closure7_test: CompileTimeError
 function_type_parameter2_negative_test: Fail
@@ -532,34 +486,16 @@
 generic_methods_tearoff_specialization_test: CompileTimeError
 generic_methods_unused_parameter_test: CompileTimeError
 generic_no_such_method_dispatcher_simple_test: CompileTimeError # Warning: Superclass has no method named 'foo'.
+generic_no_such_method_dispatcher_test: CompileTimeError # Issue 31533
 getter_override2_test/02: MissingCompileTimeError
 getter_override_test/00: MissingCompileTimeError
 getter_override_test/01: MissingCompileTimeError
 getter_override_test/02: MissingCompileTimeError
 getter_override_test/03: MissingCompileTimeError
-getters_setters2_test/02: MissingCompileTimeError
 identical_const_test/01: MissingCompileTimeError
 identical_const_test/02: MissingCompileTimeError
 identical_const_test/03: MissingCompileTimeError
 identical_const_test/04: MissingCompileTimeError
-if_null_assignment_static_test/02: MissingCompileTimeError
-if_null_assignment_static_test/04: MissingCompileTimeError
-if_null_assignment_static_test/06: MissingCompileTimeError
-if_null_assignment_static_test/09: MissingCompileTimeError
-if_null_assignment_static_test/11: MissingCompileTimeError
-if_null_assignment_static_test/13: MissingCompileTimeError
-if_null_assignment_static_test/16: MissingCompileTimeError
-if_null_assignment_static_test/18: MissingCompileTimeError
-if_null_assignment_static_test/20: MissingCompileTimeError
-if_null_assignment_static_test/23: MissingCompileTimeError
-if_null_assignment_static_test/25: MissingCompileTimeError
-if_null_assignment_static_test/27: MissingCompileTimeError
-if_null_assignment_static_test/30: MissingCompileTimeError
-if_null_assignment_static_test/32: MissingCompileTimeError
-if_null_assignment_static_test/34: MissingCompileTimeError
-if_null_assignment_static_test/37: MissingCompileTimeError
-if_null_assignment_static_test/39: MissingCompileTimeError
-if_null_assignment_static_test/41: MissingCompileTimeError
 implicit_this_test/01: MissingCompileTimeError
 implicit_this_test/04: MissingCompileTimeError
 initializing_formal_type_annotation_test/01: MissingCompileTimeError
@@ -569,29 +505,8 @@
 issue18628_2_test/01: MissingCompileTimeError
 issue_25671a_test/01: CompileTimeError # Warning: The method 'A::noSuchMethod' has fewer positional arguments than those of overridden method 'Object::noSuchMethod'.
 issue_25671b_test/01: CompileTimeError # Warning: The method 'A::noSuchMethod' has fewer positional arguments than those of overridden method 'Object::noSuchMethod'.
-least_upper_bound_expansive_test/01: MissingCompileTimeError
-least_upper_bound_expansive_test/02: MissingCompileTimeError
-least_upper_bound_expansive_test/03: MissingCompileTimeError
-least_upper_bound_expansive_test/04: MissingCompileTimeError
-least_upper_bound_expansive_test/05: MissingCompileTimeError
-least_upper_bound_expansive_test/06: MissingCompileTimeError
-least_upper_bound_expansive_test/07: MissingCompileTimeError
-least_upper_bound_expansive_test/08: MissingCompileTimeError
-least_upper_bound_expansive_test/09: MissingCompileTimeError
-least_upper_bound_expansive_test/10: MissingCompileTimeError
-least_upper_bound_expansive_test/11: MissingCompileTimeError
-least_upper_bound_expansive_test/12: MissingCompileTimeError
-least_upper_bound_test/03: MissingCompileTimeError
-least_upper_bound_test/04: MissingCompileTimeError
-least_upper_bound_test/10: MissingCompileTimeError
-least_upper_bound_test/19: MissingCompileTimeError
-least_upper_bound_test/20: MissingCompileTimeError
-least_upper_bound_test/32: MissingCompileTimeError
-local_function3_test/01: MissingCompileTimeError
 local_function_test/01: MissingCompileTimeError
 local_function_test/02: MissingCompileTimeError
-local_function_test/03: MissingCompileTimeError
-logical_expression3_test: MissingCompileTimeError
 malbounded_instantiation_test/01: MissingCompileTimeError
 malbounded_instantiation_test/02: MissingCompileTimeError
 malbounded_instantiation_test/03: MissingCompileTimeError
@@ -608,7 +523,6 @@
 malbounded_type_test_test/00: MissingCompileTimeError
 malbounded_type_test_test/01: MissingCompileTimeError
 malbounded_type_test_test/02: MissingCompileTimeError
-malformed_bound_test/01: MissingCompileTimeError
 map_literal3_test/01: MissingCompileTimeError
 map_literal3_test/02: MissingCompileTimeError
 map_literal3_test/03: MissingCompileTimeError
@@ -740,11 +654,9 @@
 named_parameters_test/08: MissingCompileTimeError
 named_parameters_test/10: MissingCompileTimeError
 named_parameters_type_test/01: MissingCompileTimeError
+null_no_such_method_test: CompileTimeError # Issue 31533
 null_test/02: MissingCompileTimeError
 null_test/03: MissingCompileTimeError
-number_identifier_test/05: MissingCompileTimeError
-number_identifier_test/08: MissingCompileTimeError
-number_identifier_test/09: MissingCompileTimeError
 optional_named_parameters_test/02: MissingCompileTimeError
 optional_named_parameters_test/04: MissingCompileTimeError
 optional_named_parameters_test/06: MissingCompileTimeError
@@ -802,7 +714,6 @@
 override_inheritance_no_such_method_test/10: MissingCompileTimeError
 override_inheritance_no_such_method_test/12: MissingCompileTimeError
 override_method_with_field_test/01: MissingCompileTimeError
-override_method_with_field_test/02: MissingCompileTimeError
 positional_parameters_type_test/01: MissingCompileTimeError
 positional_parameters_type_test/02: MissingCompileTimeError
 redirecting_factory_default_values_test/01: MissingCompileTimeError
@@ -812,6 +723,7 @@
 redirecting_factory_malbounded_test/01: MissingCompileTimeError
 regress_22976_test/01: CompileTimeError
 regress_23089_test: MissingCompileTimeError
+regress_23408_test: CompileTimeError # Issue 31533
 regress_25550_test: CompileTimeError
 regress_29025_test: CompileTimeError
 regress_29405_test: CompileTimeError # Issue 31402 Error: A value of type '#lib2::Foo' can't be assigned to a variable of type '(#lib2::Foo) → void'.
@@ -824,31 +736,8 @@
 setter_override_test/01: MissingCompileTimeError
 setter_override_test/02: MissingCompileTimeError
 setter_override_test/03: MissingCompileTimeError
-static_field1_test/01: MissingCompileTimeError
-static_field1a_test/01: MissingCompileTimeError
-static_field_test/01: MissingCompileTimeError
-static_field_test/02: MissingCompileTimeError
-static_field_test/03: MissingCompileTimeError
-static_field_test/04: MissingCompileTimeError
-string_interpolation_test/01: MissingCompileTimeError
-string_no_operator_test/01: MissingCompileTimeError
-string_no_operator_test/02: MissingCompileTimeError
-string_no_operator_test/03: MissingCompileTimeError
-string_no_operator_test/04: MissingCompileTimeError
-string_no_operator_test/05: MissingCompileTimeError
-string_no_operator_test/07: MissingCompileTimeError
-string_no_operator_test/08: MissingCompileTimeError
-string_no_operator_test/09: MissingCompileTimeError
-string_no_operator_test/10: MissingCompileTimeError
-string_no_operator_test/11: MissingCompileTimeError
-string_no_operator_test/12: MissingCompileTimeError
-string_no_operator_test/13: MissingCompileTimeError
-string_no_operator_test/14: MissingCompileTimeError
-string_no_operator_test/15: MissingCompileTimeError
-string_no_operator_test/16: MissingCompileTimeError
-string_test/01: MissingCompileTimeError
-super_assign_test/01: MissingCompileTimeError
-super_bound_closure_test/01: MissingCompileTimeError
+string_interpolate_test: CompileTimeError # Issue 31533
+super_bound_closure_test/none: CompileTimeError # Issue 31533
 super_call4_test: CompileTimeError
 super_from_constructor_test: Crash
 super_getter_setter_test: CompileTimeError
@@ -870,7 +759,6 @@
 switch_case_test/00: MissingCompileTimeError
 switch_case_test/01: MissingCompileTimeError
 switch_case_test/02: MissingCompileTimeError
-symbol_literal_test/01: MissingCompileTimeError
 syntax_test/28: MissingCompileTimeError
 syntax_test/29: MissingCompileTimeError
 syntax_test/30: MissingCompileTimeError
@@ -878,148 +766,8 @@
 syntax_test/32: MissingCompileTimeError
 syntax_test/33: MissingCompileTimeError
 try_catch_test/01: MissingCompileTimeError
-type_literal_prefix_call_test/00: MissingCompileTimeError
-type_promotion_assign_test/01: MissingCompileTimeError
-type_promotion_assign_test/02: MissingCompileTimeError
-type_promotion_assign_test/03: MissingCompileTimeError
-type_promotion_assign_test/04: MissingCompileTimeError
-type_promotion_closure_test/01: MissingCompileTimeError
-type_promotion_closure_test/02: MissingCompileTimeError
-type_promotion_closure_test/03: MissingCompileTimeError
-type_promotion_closure_test/04: MissingCompileTimeError
-type_promotion_closure_test/06: MissingCompileTimeError
-type_promotion_closure_test/07: MissingCompileTimeError
-type_promotion_closure_test/09: MissingCompileTimeError
-type_promotion_closure_test/10: MissingCompileTimeError
-type_promotion_closure_test/11: MissingCompileTimeError
-type_promotion_closure_test/12: MissingCompileTimeError
-type_promotion_closure_test/13: MissingCompileTimeError
-type_promotion_closure_test/14: MissingCompileTimeError
-type_promotion_closure_test/15: MissingCompileTimeError
-type_promotion_closure_test/16: MissingCompileTimeError
-type_promotion_local_test/01: MissingCompileTimeError
-type_promotion_local_test/02: MissingCompileTimeError
-type_promotion_local_test/03: MissingCompileTimeError
-type_promotion_local_test/04: MissingCompileTimeError
-type_promotion_local_test/05: MissingCompileTimeError
-type_promotion_local_test/06: MissingCompileTimeError
-type_promotion_local_test/07: MissingCompileTimeError
-type_promotion_local_test/08: MissingCompileTimeError
-type_promotion_local_test/09: MissingCompileTimeError
-type_promotion_local_test/10: MissingCompileTimeError
-type_promotion_local_test/11: MissingCompileTimeError
-type_promotion_local_test/12: MissingCompileTimeError
-type_promotion_local_test/13: MissingCompileTimeError
-type_promotion_local_test/14: MissingCompileTimeError
-type_promotion_local_test/15: MissingCompileTimeError
-type_promotion_local_test/16: MissingCompileTimeError
-type_promotion_local_test/17: MissingCompileTimeError
-type_promotion_local_test/18: MissingCompileTimeError
-type_promotion_local_test/19: MissingCompileTimeError
-type_promotion_local_test/20: MissingCompileTimeError
-type_promotion_local_test/21: MissingCompileTimeError
-type_promotion_local_test/22: MissingCompileTimeError
-type_promotion_local_test/23: MissingCompileTimeError
-type_promotion_local_test/24: MissingCompileTimeError
-type_promotion_local_test/25: MissingCompileTimeError
-type_promotion_local_test/26: MissingCompileTimeError
-type_promotion_local_test/27: MissingCompileTimeError
-type_promotion_local_test/28: MissingCompileTimeError
-type_promotion_local_test/29: MissingCompileTimeError
-type_promotion_local_test/30: MissingCompileTimeError
-type_promotion_local_test/31: MissingCompileTimeError
-type_promotion_local_test/32: MissingCompileTimeError
-type_promotion_local_test/33: MissingCompileTimeError
-type_promotion_local_test/34: MissingCompileTimeError
-type_promotion_local_test/35: MissingCompileTimeError
-type_promotion_local_test/36: MissingCompileTimeError
-type_promotion_local_test/37: MissingCompileTimeError
-type_promotion_local_test/38: MissingCompileTimeError
-type_promotion_local_test/39: MissingCompileTimeError
-type_promotion_local_test/40: MissingCompileTimeError
-type_promotion_local_test/41: MissingCompileTimeError
 type_promotion_logical_and_test/01: MissingCompileTimeError
-type_promotion_logical_and_test/02: MissingCompileTimeError
-type_promotion_logical_and_test/03: MissingCompileTimeError
-type_promotion_more_specific_test/02: MissingCompileTimeError
-type_promotion_more_specific_test/09: MissingCompileTimeError
-type_promotion_multiple_test/01: MissingCompileTimeError
-type_promotion_multiple_test/02: MissingCompileTimeError
-type_promotion_multiple_test/03: MissingCompileTimeError
-type_promotion_multiple_test/04: MissingCompileTimeError
-type_promotion_multiple_test/05: MissingCompileTimeError
-type_promotion_multiple_test/06: MissingCompileTimeError
-type_promotion_multiple_test/07: MissingCompileTimeError
-type_promotion_multiple_test/08: MissingCompileTimeError
-type_promotion_multiple_test/09: MissingCompileTimeError
-type_promotion_multiple_test/10: MissingCompileTimeError
-type_promotion_multiple_test/11: MissingCompileTimeError
-type_promotion_multiple_test/12: MissingCompileTimeError
-type_promotion_multiple_test/13: MissingCompileTimeError
-type_promotion_multiple_test/14: MissingCompileTimeError
-type_promotion_multiple_test/15: MissingCompileTimeError
-type_promotion_multiple_test/16: MissingCompileTimeError
-type_promotion_multiple_test/17: MissingCompileTimeError
-type_promotion_multiple_test/18: MissingCompileTimeError
-type_promotion_multiple_test/19: MissingCompileTimeError
-type_promotion_multiple_test/20: MissingCompileTimeError
-type_promotion_multiple_test/21: MissingCompileTimeError
-type_promotion_multiple_test/22: MissingCompileTimeError
-type_promotion_parameter_test/01: MissingCompileTimeError
-type_promotion_parameter_test/02: MissingCompileTimeError
-type_promotion_parameter_test/03: MissingCompileTimeError
-type_promotion_parameter_test/04: MissingCompileTimeError
-type_promotion_parameter_test/05: MissingCompileTimeError
-type_promotion_parameter_test/06: MissingCompileTimeError
-type_promotion_parameter_test/07: MissingCompileTimeError
-type_promotion_parameter_test/08: MissingCompileTimeError
-type_promotion_parameter_test/09: MissingCompileTimeError
-type_promotion_parameter_test/10: MissingCompileTimeError
-type_promotion_parameter_test/11: MissingCompileTimeError
-type_promotion_parameter_test/12: MissingCompileTimeError
-type_promotion_parameter_test/13: MissingCompileTimeError
-type_promotion_parameter_test/14: MissingCompileTimeError
-type_promotion_parameter_test/15: MissingCompileTimeError
-type_promotion_parameter_test/16: MissingCompileTimeError
-type_promotion_parameter_test/17: MissingCompileTimeError
-type_promotion_parameter_test/18: MissingCompileTimeError
-type_promotion_parameter_test/19: MissingCompileTimeError
-type_promotion_parameter_test/20: MissingCompileTimeError
-type_promotion_parameter_test/21: MissingCompileTimeError
-type_promotion_parameter_test/22: MissingCompileTimeError
-type_promotion_parameter_test/23: MissingCompileTimeError
-type_promotion_parameter_test/24: MissingCompileTimeError
-type_promotion_parameter_test/25: MissingCompileTimeError
-type_promotion_parameter_test/26: MissingCompileTimeError
-type_promotion_parameter_test/27: MissingCompileTimeError
-type_promotion_parameter_test/28: MissingCompileTimeError
-type_promotion_parameter_test/29: MissingCompileTimeError
-type_promotion_parameter_test/30: MissingCompileTimeError
-type_promotion_parameter_test/31: MissingCompileTimeError
-type_promotion_parameter_test/32: MissingCompileTimeError
-type_promotion_parameter_test/33: MissingCompileTimeError
-type_promotion_parameter_test/34: MissingCompileTimeError
-type_promotion_parameter_test/35: MissingCompileTimeError
-type_promotion_parameter_test/36: MissingCompileTimeError
-type_promotion_parameter_test/37: MissingCompileTimeError
-type_promotion_parameter_test/38: MissingCompileTimeError
-type_promotion_parameter_test/39: MissingCompileTimeError
-type_promotion_parameter_test/40: MissingCompileTimeError
-type_promotion_parameter_test/41: MissingCompileTimeError
-type_promotion_parameter_test/42: MissingCompileTimeError
-type_promotion_parameter_test/43: MissingCompileTimeError
-type_promotion_parameter_test/44: MissingCompileTimeError
-type_promotion_parameter_test/45: MissingCompileTimeError
-type_promotion_parameter_test/46: MissingCompileTimeError
-type_promotion_parameter_test/47: MissingCompileTimeError
-type_promotion_parameter_test/48: MissingCompileTimeError
-type_promotion_parameter_test/49: MissingCompileTimeError
-type_promotion_parameter_test/50: MissingCompileTimeError
-type_promotion_parameter_test/51: MissingCompileTimeError
-type_promotion_parameter_test/52: MissingCompileTimeError
-type_promotion_parameter_test/54: MissingCompileTimeError
-type_promotion_parameter_test/55: MissingCompileTimeError
-type_promotion_parameter_test/56: MissingCompileTimeError
+type_promotion_more_specific_test/04: CompileTimeError # Issue 31533
 type_variable_bounds2_test: MissingCompileTimeError
 type_variable_bounds3_test/00: MissingCompileTimeError
 type_variable_bounds4_test/01: MissingCompileTimeError
@@ -1031,12 +779,6 @@
 type_variable_bounds_test/06: MissingCompileTimeError
 type_variable_bounds_test/08: MissingCompileTimeError
 type_variable_bounds_test/11: MissingCompileTimeError
-type_variable_conflict2_test/01: MissingCompileTimeError
-type_variable_conflict2_test/05: MissingCompileTimeError
-type_variable_conflict2_test/07: MissingCompileTimeError
-type_variable_conflict2_test/09: MissingCompileTimeError
-type_variable_identifier_expression_test: MissingCompileTimeError
-typed_selector2_test: MissingCompileTimeError
 void_block_return_test/00: MissingCompileTimeError
 void_type_callbacks_test/none: CompileTimeError
 wrong_number_type_arguments_test/01: MissingCompileTimeError
@@ -1246,7 +988,6 @@
 generic_method_types_test/02: RuntimeError
 generic_methods_type_expression_test: RuntimeError # Expect.isTrue(false) fails.
 generic_methods_unused_parameter_test: RuntimeError # Expect.isTrue(false) fails.
-generic_no_such_method_dispatcher_test: RuntimeError # NoSuchMethodError: method not found: '+'
 generic_test: RuntimeError # ReferenceError: BOfT is not defined
 implicit_downcast_during_function_literal_arrow_test: RuntimeError
 issue13179_test: RuntimeError
@@ -1274,12 +1015,9 @@
 recursive_inheritance_test: RuntimeError # Expect.isTrue(false) fails.
 redirecting_factory_long_test: RuntimeError # Expect.isTrue(false) fails.
 redirecting_factory_reflection_test: RuntimeError # UnimplementedError: node <InvalidExpression> `invalid-expression`
-regress_23408_test: RuntimeError # Expect.equals(expected: <K>, actual: <dynamic>) fails.
 regress_24283_test: RuntimeError # Expect.equals(expected: <-1>, actual: <4294967295>) fails.
 regress_30339_test: RuntimeError # Uncaught Expect.isTrue(false) fails.
 runtime_type_function_test: RuntimeError # Expect.fail('Type print string does not match expectation
-string_interpolate_test: RuntimeError # Uncaught Type 'PrivateSymbol' is not a subtype of type 'Symbol' in strong mode
-super_bound_closure_test/none: RuntimeError # TypeError: Cannot read property '0' of undefined
 syncstar_yield_test/copyParameters: RuntimeError # Expect.equals(expected: <2>, actual: <3>) fails.
 type_literal_test: RuntimeError # Expect.equals(expected: <Func>, actual: <(bool) => int>) fails.
 type_promotion_functions_test/02: RuntimeError
diff --git a/tests/language_2/language_2_kernel.status b/tests/language_2/language_2_kernel.status
index 2d55e87..dd9fc36 100644
--- a/tests/language_2/language_2_kernel.status
+++ b/tests/language_2/language_2_kernel.status
@@ -114,13 +114,8 @@
 call_nonexistent_static_test/08: MissingCompileTimeError
 call_nonexistent_static_test/09: MissingCompileTimeError
 call_nonexistent_static_test/10: MissingCompileTimeError
-call_through_getter_test/01: MissingCompileTimeError
-call_through_getter_test/02: MissingCompileTimeError
-call_type_literal_test/01: MissingCompileTimeError
 call_with_no_such_method_test: CompileTimeError # Issue 31402 (Invocation arguments)
 callable_test/none: CompileTimeError # Issue 31402 (Variable declaration)
-cast_test/04: MissingCompileTimeError
-cast_test/05: MissingCompileTimeError
 cha_deopt1_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
 cha_deopt1_test: RuntimeError
 cha_deopt2_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
@@ -130,61 +125,27 @@
 check_member_static_test/01: MissingCompileTimeError
 check_method_override_test/01: MissingCompileTimeError
 check_method_override_test/02: MissingCompileTimeError
-checked_null_test/01: MissingCompileTimeError
-class_literal_static_test/01: MissingCompileTimeError
-class_literal_static_test/02: MissingCompileTimeError
-class_literal_static_test/03: MissingCompileTimeError
-class_literal_static_test/04: MissingCompileTimeError
-class_literal_static_test/05: MissingCompileTimeError
-class_literal_static_test/06: MissingCompileTimeError
-class_literal_static_test/07: MissingCompileTimeError
-class_literal_static_test/08: MissingCompileTimeError
-class_literal_static_test/09: MissingCompileTimeError
-class_literal_static_test/10: MissingCompileTimeError
-class_literal_static_test/11: MissingCompileTimeError
 class_literal_static_test/12: MissingCompileTimeError
 class_literal_static_test/13: MissingCompileTimeError
-class_literal_static_test/14: MissingCompileTimeError
-class_literal_static_test/15: MissingCompileTimeError
-class_literal_static_test/16: MissingCompileTimeError
 class_literal_static_test/17: MissingCompileTimeError
 class_literal_static_test/18: MissingCompileTimeError
 class_literal_static_test/19: MissingCompileTimeError
 class_literal_static_test/20: MissingCompileTimeError
 class_literal_static_test/21: MissingCompileTimeError
 class_literal_static_test/22: MissingCompileTimeError
-class_literal_static_test/23: MissingCompileTimeError
 class_literal_static_test/24: MissingCompileTimeError
 class_literal_static_test/25: MissingCompileTimeError
-class_literal_test/01: MissingCompileTimeError
-class_literal_test/02: MissingCompileTimeError
-class_literal_test/03: MissingCompileTimeError
-class_literal_test/04: MissingCompileTimeError
-class_literal_test/05: MissingCompileTimeError
-class_literal_test/06: MissingCompileTimeError
-class_literal_test/07: MissingCompileTimeError
-class_literal_test/08: MissingCompileTimeError
-class_literal_test/09: MissingCompileTimeError
-class_literal_test/10: MissingCompileTimeError
-class_literal_test/11: MissingCompileTimeError
 class_literal_test/12: MissingCompileTimeError
 class_literal_test/13: MissingCompileTimeError
-class_literal_test/14: MissingCompileTimeError
-class_literal_test/15: MissingCompileTimeError
-class_literal_test/16: MissingCompileTimeError
 class_literal_test/17: MissingCompileTimeError
 class_literal_test/18: MissingCompileTimeError
 class_literal_test/19: MissingCompileTimeError
 class_literal_test/20: MissingCompileTimeError
 class_literal_test/21: MissingCompileTimeError
 class_literal_test/22: MissingCompileTimeError
-class_literal_test/23: MissingCompileTimeError
 class_literal_test/24: MissingCompileTimeError
 class_literal_test/25: MissingCompileTimeError
 class_override_test: MissingCompileTimeError
-closure_internals_test/01: MissingCompileTimeError
-closure_internals_test/02: MissingCompileTimeError
-closure_internals_test/03: MissingCompileTimeError
 closure_invoked_through_interface_target_field_test: MissingCompileTimeError
 closure_invoked_through_interface_target_getter_test: MissingCompileTimeError
 compile_time_constant_c_test/02: MissingCompileTimeError # KernelVM bug: Constant evaluation.
@@ -202,19 +163,12 @@
 conditional_import_string_test: DartkCompileTimeError
 conditional_import_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
 conditional_import_test: DartkCompileTimeError
-conditional_method_invocation_test/07: MissingCompileTimeError
 conditional_method_invocation_test/12: MissingCompileTimeError
 conditional_method_invocation_test/13: MissingCompileTimeError
-conditional_property_access_test/05: MissingCompileTimeError
-conditional_property_access_test/06: MissingCompileTimeError
 conditional_property_access_test/10: MissingCompileTimeError
 conditional_property_access_test/11: MissingCompileTimeError
-conditional_property_assignment_test/05: MissingCompileTimeError
-conditional_property_assignment_test/06: MissingCompileTimeError
-conditional_property_assignment_test/10: MissingCompileTimeError
-conditional_property_assignment_test/11: MissingCompileTimeError
 conditional_rewrite_test: RuntimeError # Issue 31402 (Not)
-config_import_corelib_test: RuntimeError # KernelVM bug: Configurable imports.
+config_import_corelib_test: CompileTimeError # Issue 31533
 config_import_test: RuntimeError # KernelVM bug: Configurable imports.
 const_constructor2_test/11: CompileTimeError # Issue 31402 (Invocation arguments)
 const_constructor2_test/12: CompileTimeError # Issue 31402 (Invocation arguments)
@@ -256,7 +210,6 @@
 constructor13_test/01: MissingCompileTimeError
 constructor13_test/02: MissingCompileTimeError
 constructor3_test: Fail, OK, Pass
-constructor_call_as_function_test/01: MissingCompileTimeError
 constructor_duplicate_final_test/01: MissingCompileTimeError
 constructor_duplicate_final_test/02: MissingCompileTimeError
 constructor_named_arguments_test/01: MissingCompileTimeError
@@ -268,7 +221,6 @@
 constructor_redirect_test/01: MissingCompileTimeError # Fasta bug: Initializer refers to this.
 covariant_subtyping_test: CompileTimeError
 covariant_subtyping_test: RuntimeError
-crash_6725_test/01: MissingCompileTimeError
 create_unresolved_type_test/01: MissingCompileTimeError
 ct_const2_test: Pass, Crash # Flaky
 ct_const_test: RuntimeError
@@ -373,19 +325,15 @@
 deferred_type_dependency_test/type_annotation: RuntimeError
 disassemble_test: Pass, Slow
 duplicate_export_negative_test: Fail # Issue 6134
-dynamic_field_test/01: MissingCompileTimeError
-dynamic_field_test/02: MissingCompileTimeError
 dynamic_prefix_core_test/01: MissingCompileTimeError
 dynamic_prefix_core_test/01: RuntimeError # KernelVM bug: Blocked on language issue 29125.
 dynamic_prefix_core_test/none: RuntimeError
 dynamic_test: CompileTimeError # Issue 31402 (Variable declaration)
 dynamic_test: RuntimeError
+emit_const_fields_test: CompileTimeError # Issue 31533
 empty_block_case_test: MissingCompileTimeError
 enum_private_test/02: MissingCompileTimeError
-error_stacktrace_test/00: MissingCompileTimeError
 example_constructor_test: Fail, OK
-export_ambiguous_main_test: MissingCompileTimeError
-export_ambiguous_main_test: Pass
 external_test/10: MissingRuntimeError # KernelVM bug: Unbound external.
 external_test/13: MissingRuntimeError # KernelVM bug: Unbound external.
 external_test/20: MissingRuntimeError # KernelVM bug: Unbound external.
@@ -415,14 +363,8 @@
 final_variable_assignment_test/04: MissingCompileTimeError
 first_class_types_literals_test/03: MissingCompileTimeError
 first_class_types_literals_test/04: MissingCompileTimeError
-first_class_types_literals_test/05: MissingCompileTimeError
-first_class_types_literals_test/06: MissingCompileTimeError
-first_class_types_literals_test/07: MissingCompileTimeError
 first_class_types_literals_test/08: MissingCompileTimeError
 first_class_types_literals_test/09: MissingCompileTimeError
-first_class_types_literals_test/10: MissingCompileTimeError
-first_class_types_literals_test/11: MissingCompileTimeError
-first_class_types_literals_test/12: MissingCompileTimeError
 first_class_types_test: RuntimeError
 flatten_test/05: MissingRuntimeError
 flatten_test/08: MissingRuntimeError
@@ -583,48 +525,25 @@
 generic_methods_type_expression_test: RuntimeError # Issue 25869 / 27460
 generic_methods_unused_parameter_test: CompileTimeError # Issue 31402 (Variable declaration)
 generic_methods_unused_parameter_test: RuntimeError
-generic_no_such_method_dispatcher_simple_test: RuntimeError
+generic_no_such_method_dispatcher_simple_test: CompileTimeError # Issue 31533
+generic_no_such_method_dispatcher_test: CompileTimeError # Issue 31533
 generic_tearoff_test: CompileTimeError
 generic_tearoff_test: RuntimeError
 generic_test: RuntimeError
-getter_no_setter2_test/00: MissingCompileTimeError
 getter_no_setter2_test/01: MissingCompileTimeError
 getter_no_setter2_test/03: MissingCompileTimeError
-getter_no_setter_test/00: MissingCompileTimeError
 getter_no_setter_test/01: MissingCompileTimeError
 getter_no_setter_test/03: MissingCompileTimeError
 getter_override_test/03: MissingCompileTimeError
-getters_setters2_test/02: MissingCompileTimeError
 hello_dart_test: Crash # error: expected: cls.is_type_finalized()
 identical_const_test/01: MissingCompileTimeError
 identical_const_test/02: MissingCompileTimeError
 identical_const_test/03: MissingCompileTimeError
 identical_const_test/04: MissingCompileTimeError
-if_null_assignment_behavior_test/03: MissingCompileTimeError
 if_null_assignment_behavior_test/13: MissingCompileTimeError
 if_null_assignment_behavior_test/15: MissingCompileTimeError
-if_null_assignment_static_test/02: MissingCompileTimeError
-if_null_assignment_static_test/04: MissingCompileTimeError
-if_null_assignment_static_test/06: MissingCompileTimeError
-if_null_assignment_static_test/09: MissingCompileTimeError
-if_null_assignment_static_test/11: MissingCompileTimeError
-if_null_assignment_static_test/13: MissingCompileTimeError
-if_null_assignment_static_test/16: MissingCompileTimeError
-if_null_assignment_static_test/18: MissingCompileTimeError
-if_null_assignment_static_test/20: MissingCompileTimeError
-if_null_assignment_static_test/23: MissingCompileTimeError
-if_null_assignment_static_test/25: MissingCompileTimeError
-if_null_assignment_static_test/27: MissingCompileTimeError
-if_null_assignment_static_test/30: MissingCompileTimeError
-if_null_assignment_static_test/32: MissingCompileTimeError
-if_null_assignment_static_test/34: MissingCompileTimeError
-if_null_assignment_static_test/37: MissingCompileTimeError
-if_null_assignment_static_test/39: MissingCompileTimeError
-if_null_assignment_static_test/41: MissingCompileTimeError
 if_null_evaluation_order_test: Pass
 if_null_precedence_test/none: RuntimeError
-int64_literal_test/03: MissingCompileTimeError  # http://dartbug.com/31479
-int64_literal_test/30: MissingCompileTimeError  # http://dartbug.com/31479
 implicit_downcast_during_function_literal_arrow_test: RuntimeError # Issue #31436
 implicit_downcast_during_return_async_test: RuntimeError
 implicit_this_test/01: MissingCompileTimeError
@@ -632,11 +551,12 @@
 implicit_this_test/04: MissingCompileTimeError
 import_combinators2_test/00: MissingCompileTimeError
 import_self_test/01: MissingCompileTimeError
-inferrer_constructor5_test/01: MissingCompileTimeError
 initializing_formal_final_test: MissingCompileTimeError
 initializing_formal_type_annotation_test/01: MissingCompileTimeError
 initializing_formal_type_annotation_test/02: MissingCompileTimeError
 instanceof2_test: RuntimeError
+int64_literal_test/03: MissingCompileTimeError  # http://dartbug.com/31479
+int64_literal_test/30: MissingCompileTimeError  # http://dartbug.com/31479
 interface_test/00: MissingCompileTimeError
 invocation_mirror_test: CompileTimeError # Issue 31402 (Invocation arguments)
 is_malformed_type_test/95: MissingCompileTimeError
@@ -668,12 +588,6 @@
 known_identifier_prefix_error_test/24: MissingCompileTimeError # Issue 28814
 language_2/least_upper_bound_expansive_test/none: CompileTimeError
 least_upper_bound_expansive_test/none: CompileTimeError
-least_upper_bound_test/03: MissingCompileTimeError
-least_upper_bound_test/04: MissingCompileTimeError
-least_upper_bound_test/10: MissingCompileTimeError
-least_upper_bound_test/19: MissingCompileTimeError
-least_upper_bound_test/20: MissingCompileTimeError
-least_upper_bound_test/32: MissingCompileTimeError
 library_ambiguous_test/00: MissingCompileTimeError
 library_ambiguous_test/01: MissingCompileTimeError
 library_ambiguous_test/02: MissingCompileTimeError
@@ -687,13 +601,10 @@
 list_literal_syntax_test/02: MissingCompileTimeError
 list_literal_syntax_test/03: MissingCompileTimeError
 local_function2_test/none: RuntimeError
-local_function3_test/01: MissingCompileTimeError
 local_function3_test/none: RuntimeError
 local_function_test/01: MissingCompileTimeError
 local_function_test/02: MissingCompileTimeError
-local_function_test/03: MissingCompileTimeError
 local_function_test/none: RuntimeError
-logical_expression3_test: MissingCompileTimeError
 main_not_a_function_test: DartkCrash
 main_not_a_function_test: Skip
 main_test/03: RuntimeError
@@ -727,7 +638,6 @@
 malformed2_test/12: MissingCompileTimeError
 malformed2_test/13: MissingCompileTimeError
 malformed_bound_test/00: MissingCompileTimeError
-malformed_bound_test/01: MissingCompileTimeError
 malformed_inheritance_test/01: MissingCompileTimeError
 malformed_inheritance_test/03: MissingCompileTimeError
 malformed_inheritance_test/05: MissingCompileTimeError
@@ -869,9 +779,7 @@
 not_enough_positional_arguments_test/05: MissingCompileTimeError
 not_enough_positional_arguments_test/06: MissingCompileTimeError
 not_enough_positional_arguments_test/07: MissingCompileTimeError
-number_identifier_test/05: MissingCompileTimeError
-number_identifier_test/08: MissingCompileTimeError
-number_identifier_test/09: MissingCompileTimeError
+null_no_such_method_test: CompileTimeError # Issue 31533
 on_catch_malformed_type_test: MissingCompileTimeError
 optional_named_parameters_test/01: MissingCompileTimeError
 optional_named_parameters_test/02: MissingCompileTimeError
@@ -954,7 +862,7 @@
 override_inheritance_no_such_method_test/10: MissingCompileTimeError
 override_inheritance_no_such_method_test/12: MissingCompileTimeError
 override_inheritance_no_such_method_test/13: MissingCompileTimeError
-override_method_with_field_test/02: MissingCompileTimeError
+parser_quirks_test: CompileTimeError # Issue 31533
 part2_test/01: MissingCompileTimeError
 positional_parameters_type_test/01: MissingCompileTimeError
 positional_parameters_type_test/02: MissingCompileTimeError
@@ -977,7 +885,6 @@
 redirecting_factory_malbounded_test/01: MissingCompileTimeError
 redirecting_factory_reflection_test: Crash, Pass
 redirecting_factory_reflection_test: RuntimeError
-regress_12561_test: MissingCompileTimeError
 regress_13494_test: MissingCompileTimeError
 regress_17382_test: MissingCompileTimeError
 regress_19413_test: MissingCompileTimeError
@@ -1000,44 +907,20 @@
 regress_29784_test/01: MissingCompileTimeError
 regress_29784_test/02: MissingCompileTimeError
 regress_30339_test: CompileTimeError # Issue 31402 (Variable declaration)
-rewrite_implicit_this_test/01: MissingCompileTimeError
 setter4_test: MissingCompileTimeError # Issue 14736
 setter_override_test/01: MissingCompileTimeError
 setter_override_test/02: MissingCompileTimeError
-static_field1_test/01: MissingCompileTimeError
-static_field1a_test/01: MissingCompileTimeError
 static_field3_test/01: MissingCompileTimeError
 static_field3_test/02: MissingCompileTimeError
 static_field3_test/03: MissingCompileTimeError
 static_field3_test/04: MissingCompileTimeError
-static_field_test/01: MissingCompileTimeError
-static_field_test/02: MissingCompileTimeError
-static_field_test/03: MissingCompileTimeError
-static_field_test/04: MissingCompileTimeError
 static_final_field2_test/01: MissingCompileTimeError
 static_getter_no_setter1_test/01: MissingCompileTimeError
 static_getter_no_setter2_test/01: MissingCompileTimeError
 static_setter_get_test/01: MissingCompileTimeError
+string_interpolate_test: CompileTimeError # Issue 31533
 string_interpolation_and_buffer_test: RuntimeError # Issue 31402 (Return and yield statements)
-string_interpolation_test/01: MissingCompileTimeError
-string_no_operator_test/01: MissingCompileTimeError
-string_no_operator_test/02: MissingCompileTimeError
-string_no_operator_test/03: MissingCompileTimeError
-string_no_operator_test/04: MissingCompileTimeError
-string_no_operator_test/05: MissingCompileTimeError
-string_no_operator_test/07: MissingCompileTimeError
-string_no_operator_test/08: MissingCompileTimeError
-string_no_operator_test/09: MissingCompileTimeError
-string_no_operator_test/10: MissingCompileTimeError
-string_no_operator_test/11: MissingCompileTimeError
-string_no_operator_test/12: MissingCompileTimeError
-string_no_operator_test/13: MissingCompileTimeError
-string_no_operator_test/14: MissingCompileTimeError
-string_no_operator_test/15: MissingCompileTimeError
-string_no_operator_test/16: MissingCompileTimeError
-string_test/01: MissingCompileTimeError
-super_assign_test/01: MissingCompileTimeError
-super_bound_closure_test/01: MissingCompileTimeError
+super_bound_closure_test/none: CompileTimeError # Issue 31533
 super_call4_test/01: MissingCompileTimeError
 super_call4_test/02: MissingCompileTimeError
 super_call4_test/03: MissingCompileTimeError
@@ -1066,7 +949,6 @@
 switch_case_test/01: MissingCompileTimeError # KernelVM bug: Constant evaluation.
 switch_case_test/02: MissingCompileTimeError # KernelVM bug: Constant evaluation.
 switch_fallthru_test/01: MissingCompileTimeError
-symbol_literal_test/01: MissingCompileTimeError
 syntax_test/28: MissingCompileTimeError
 syntax_test/29: MissingCompileTimeError
 syntax_test/30: MissingCompileTimeError
@@ -1081,7 +963,6 @@
 try_catch_on_syntax_test/11: MissingCompileTimeError
 try_catch_syntax_test/08: MissingCompileTimeError
 type_error_test: RuntimeError # Issue 31402 (Variable declaration)
-type_literal_prefix_call_test/00: MissingCompileTimeError
 type_literal_test: RuntimeError
 type_parameter_test/01: MissingCompileTimeError
 type_parameter_test/02: MissingCompileTimeError
@@ -1089,24 +970,6 @@
 type_parameter_test/07: MissingCompileTimeError
 type_parameter_test/08: MissingCompileTimeError
 type_parameter_test/09: MissingCompileTimeError
-type_promotion_assign_test/01: MissingCompileTimeError
-type_promotion_assign_test/02: MissingCompileTimeError
-type_promotion_assign_test/03: MissingCompileTimeError
-type_promotion_assign_test/04: MissingCompileTimeError
-type_promotion_closure_test/01: MissingCompileTimeError
-type_promotion_closure_test/02: MissingCompileTimeError
-type_promotion_closure_test/03: MissingCompileTimeError
-type_promotion_closure_test/04: MissingCompileTimeError
-type_promotion_closure_test/06: MissingCompileTimeError
-type_promotion_closure_test/07: MissingCompileTimeError
-type_promotion_closure_test/09: MissingCompileTimeError
-type_promotion_closure_test/10: MissingCompileTimeError
-type_promotion_closure_test/11: MissingCompileTimeError
-type_promotion_closure_test/12: MissingCompileTimeError
-type_promotion_closure_test/13: MissingCompileTimeError
-type_promotion_closure_test/14: MissingCompileTimeError
-type_promotion_closure_test/15: MissingCompileTimeError
-type_promotion_closure_test/16: MissingCompileTimeError
 type_promotion_functions_test/02: RuntimeError # Issue 31402 (Variable declaration)
 type_promotion_functions_test/03: RuntimeError # Issue 31402 (Variable declaration)
 type_promotion_functions_test/04: RuntimeError # Issue 31402 (Variable declaration)
@@ -1116,129 +979,8 @@
 type_promotion_functions_test/13: RuntimeError # Issue 31402 (Variable declaration)
 type_promotion_functions_test/14: RuntimeError # Issue 31402 (Variable declaration)
 type_promotion_functions_test/none: RuntimeError # Issue 31402 (Variable declaration)
-type_promotion_local_test/01: MissingCompileTimeError
-type_promotion_local_test/02: MissingCompileTimeError
-type_promotion_local_test/03: MissingCompileTimeError
-type_promotion_local_test/04: MissingCompileTimeError
-type_promotion_local_test/05: MissingCompileTimeError
-type_promotion_local_test/06: MissingCompileTimeError
-type_promotion_local_test/07: MissingCompileTimeError
-type_promotion_local_test/08: MissingCompileTimeError
-type_promotion_local_test/09: MissingCompileTimeError
-type_promotion_local_test/10: MissingCompileTimeError
-type_promotion_local_test/11: MissingCompileTimeError
-type_promotion_local_test/12: MissingCompileTimeError
-type_promotion_local_test/13: MissingCompileTimeError
-type_promotion_local_test/14: MissingCompileTimeError
-type_promotion_local_test/15: MissingCompileTimeError
-type_promotion_local_test/16: MissingCompileTimeError
-type_promotion_local_test/17: MissingCompileTimeError
-type_promotion_local_test/18: MissingCompileTimeError
-type_promotion_local_test/19: MissingCompileTimeError
-type_promotion_local_test/20: MissingCompileTimeError
-type_promotion_local_test/21: MissingCompileTimeError
-type_promotion_local_test/22: MissingCompileTimeError
-type_promotion_local_test/23: MissingCompileTimeError
-type_promotion_local_test/24: MissingCompileTimeError
-type_promotion_local_test/25: MissingCompileTimeError
-type_promotion_local_test/26: MissingCompileTimeError
-type_promotion_local_test/27: MissingCompileTimeError
-type_promotion_local_test/28: MissingCompileTimeError
-type_promotion_local_test/29: MissingCompileTimeError
-type_promotion_local_test/30: MissingCompileTimeError
-type_promotion_local_test/31: MissingCompileTimeError
-type_promotion_local_test/32: MissingCompileTimeError
-type_promotion_local_test/33: MissingCompileTimeError
-type_promotion_local_test/34: MissingCompileTimeError
-type_promotion_local_test/35: MissingCompileTimeError
-type_promotion_local_test/36: MissingCompileTimeError
-type_promotion_local_test/37: MissingCompileTimeError
-type_promotion_local_test/38: MissingCompileTimeError
-type_promotion_local_test/39: MissingCompileTimeError
-type_promotion_local_test/40: MissingCompileTimeError
-type_promotion_local_test/41: MissingCompileTimeError
 type_promotion_logical_and_test/01: MissingCompileTimeError
-type_promotion_logical_and_test/02: MissingCompileTimeError
-type_promotion_logical_and_test/03: MissingCompileTimeError
-type_promotion_more_specific_test/02: MissingCompileTimeError
-type_promotion_more_specific_test/09: MissingCompileTimeError
-type_promotion_multiple_test/01: MissingCompileTimeError
-type_promotion_multiple_test/02: MissingCompileTimeError
-type_promotion_multiple_test/03: MissingCompileTimeError
-type_promotion_multiple_test/04: MissingCompileTimeError
-type_promotion_multiple_test/05: MissingCompileTimeError
-type_promotion_multiple_test/06: MissingCompileTimeError
-type_promotion_multiple_test/07: MissingCompileTimeError
-type_promotion_multiple_test/08: MissingCompileTimeError
-type_promotion_multiple_test/09: MissingCompileTimeError
-type_promotion_multiple_test/10: MissingCompileTimeError
-type_promotion_multiple_test/11: MissingCompileTimeError
-type_promotion_multiple_test/12: MissingCompileTimeError
-type_promotion_multiple_test/13: MissingCompileTimeError
-type_promotion_multiple_test/14: MissingCompileTimeError
-type_promotion_multiple_test/15: MissingCompileTimeError
-type_promotion_multiple_test/16: MissingCompileTimeError
-type_promotion_multiple_test/17: MissingCompileTimeError
-type_promotion_multiple_test/18: MissingCompileTimeError
-type_promotion_multiple_test/19: MissingCompileTimeError
-type_promotion_multiple_test/20: MissingCompileTimeError
-type_promotion_multiple_test/21: MissingCompileTimeError
-type_promotion_multiple_test/22: MissingCompileTimeError
-type_promotion_parameter_test/01: MissingCompileTimeError
-type_promotion_parameter_test/02: MissingCompileTimeError
-type_promotion_parameter_test/03: MissingCompileTimeError
-type_promotion_parameter_test/04: MissingCompileTimeError
-type_promotion_parameter_test/05: MissingCompileTimeError
-type_promotion_parameter_test/06: MissingCompileTimeError
-type_promotion_parameter_test/07: MissingCompileTimeError
-type_promotion_parameter_test/08: MissingCompileTimeError
-type_promotion_parameter_test/09: MissingCompileTimeError
-type_promotion_parameter_test/10: MissingCompileTimeError
-type_promotion_parameter_test/11: MissingCompileTimeError
-type_promotion_parameter_test/12: MissingCompileTimeError
-type_promotion_parameter_test/13: MissingCompileTimeError
-type_promotion_parameter_test/14: MissingCompileTimeError
-type_promotion_parameter_test/15: MissingCompileTimeError
-type_promotion_parameter_test/16: MissingCompileTimeError
-type_promotion_parameter_test/17: MissingCompileTimeError
-type_promotion_parameter_test/18: MissingCompileTimeError
-type_promotion_parameter_test/19: MissingCompileTimeError
-type_promotion_parameter_test/20: MissingCompileTimeError
-type_promotion_parameter_test/21: MissingCompileTimeError
-type_promotion_parameter_test/22: MissingCompileTimeError
-type_promotion_parameter_test/23: MissingCompileTimeError
-type_promotion_parameter_test/24: MissingCompileTimeError
-type_promotion_parameter_test/25: MissingCompileTimeError
-type_promotion_parameter_test/26: MissingCompileTimeError
-type_promotion_parameter_test/27: MissingCompileTimeError
-type_promotion_parameter_test/28: MissingCompileTimeError
-type_promotion_parameter_test/29: MissingCompileTimeError
-type_promotion_parameter_test/30: MissingCompileTimeError
-type_promotion_parameter_test/31: MissingCompileTimeError
-type_promotion_parameter_test/32: MissingCompileTimeError
-type_promotion_parameter_test/33: MissingCompileTimeError
-type_promotion_parameter_test/34: MissingCompileTimeError
-type_promotion_parameter_test/35: MissingCompileTimeError
-type_promotion_parameter_test/36: MissingCompileTimeError
-type_promotion_parameter_test/37: MissingCompileTimeError
-type_promotion_parameter_test/38: MissingCompileTimeError
-type_promotion_parameter_test/39: MissingCompileTimeError
-type_promotion_parameter_test/40: MissingCompileTimeError
-type_promotion_parameter_test/41: MissingCompileTimeError
-type_promotion_parameter_test/42: MissingCompileTimeError
-type_promotion_parameter_test/43: MissingCompileTimeError
-type_promotion_parameter_test/44: MissingCompileTimeError
-type_promotion_parameter_test/45: MissingCompileTimeError
-type_promotion_parameter_test/46: MissingCompileTimeError
-type_promotion_parameter_test/47: MissingCompileTimeError
-type_promotion_parameter_test/48: MissingCompileTimeError
-type_promotion_parameter_test/49: MissingCompileTimeError
-type_promotion_parameter_test/50: MissingCompileTimeError
-type_promotion_parameter_test/51: MissingCompileTimeError
-type_promotion_parameter_test/52: MissingCompileTimeError
-type_promotion_parameter_test/54: MissingCompileTimeError
-type_promotion_parameter_test/55: MissingCompileTimeError
-type_promotion_parameter_test/56: MissingCompileTimeError
+type_promotion_more_specific_test/04: CompileTimeError # Issue 31533
 type_variable_bounds2_test: MissingCompileTimeError
 type_variable_bounds3_test/00: MissingCompileTimeError
 type_variable_bounds4_test/01: MissingCompileTimeError
@@ -1254,21 +996,14 @@
 type_variable_bounds_test/09: MissingCompileTimeError
 type_variable_bounds_test/10: MissingCompileTimeError
 type_variable_bounds_test/11: MissingCompileTimeError
-type_variable_conflict2_test/01: MissingCompileTimeError
 type_variable_conflict2_test/03: MissingCompileTimeError
 type_variable_conflict2_test/04: MissingCompileTimeError
-type_variable_conflict2_test/05: MissingCompileTimeError
-type_variable_conflict2_test/07: MissingCompileTimeError
-type_variable_conflict2_test/09: MissingCompileTimeError
-type_variable_identifier_expression_test: MissingCompileTimeError
 type_variable_scope2_test: MissingCompileTimeError
 type_variable_scope_test/00: MissingCompileTimeError
 type_variable_scope_test/01: MissingCompileTimeError
 type_variable_scope_test/04: MissingCompileTimeError
 type_variable_scope_test/05: MissingCompileTimeError
 type_variable_static_context_test: MissingCompileTimeError
-typed_selector2_test: MissingCompileTimeError
-unbound_getter_test: MissingCompileTimeError
 unresolved_default_constructor_test/01: MissingCompileTimeError
 unresolved_in_factory_test: MissingCompileTimeError
 unresolved_top_level_method_test: MissingCompileTimeError
@@ -1564,20 +1299,14 @@
 call_nonexistent_static_test/08: MissingCompileTimeError
 call_nonexistent_static_test/09: MissingCompileTimeError
 call_nonexistent_static_test/10: MissingCompileTimeError
-call_through_getter_test/01: MissingCompileTimeError
-call_through_getter_test/02: MissingCompileTimeError
-call_type_literal_test/01: MissingCompileTimeError
 call_with_no_such_method_test: CompileTimeError # Issue 31402 (Invocation arguments)
 callable_test/none: CompileTimeError # Issue 31402 (Variable declaration)
-cast_test/04: MissingCompileTimeError
-cast_test/05: MissingCompileTimeError
 cha_deopt1_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
 cha_deopt2_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
 cha_deopt3_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
 check_member_static_test/01: MissingCompileTimeError
 check_method_override_test/01: MissingCompileTimeError
 check_method_override_test/02: MissingCompileTimeError
-checked_null_test/01: MissingCompileTimeError
 checked_setter2_test: MissingCompileTimeError
 checked_setter3_test/01: MissingCompileTimeError
 checked_setter3_test/02: MissingCompileTimeError
@@ -1586,60 +1315,27 @@
 class_cycle_test/03: MissingCompileTimeError
 class_keyword_test/02: MissingCompileTimeError # Issue 13627
 class_keyword_test/02: Pass
-class_literal_static_test/01: MissingCompileTimeError
-class_literal_static_test/02: MissingCompileTimeError
-class_literal_static_test/03: MissingCompileTimeError
-class_literal_static_test/04: MissingCompileTimeError
-class_literal_static_test/05: MissingCompileTimeError
-class_literal_static_test/06: MissingCompileTimeError
-class_literal_static_test/07: MissingCompileTimeError
-class_literal_static_test/08: MissingCompileTimeError
-class_literal_static_test/09: MissingCompileTimeError
-class_literal_static_test/10: MissingCompileTimeError
-class_literal_static_test/11: MissingCompileTimeError
 class_literal_static_test/12: MissingCompileTimeError
 class_literal_static_test/13: MissingCompileTimeError
-class_literal_static_test/14: MissingCompileTimeError
-class_literal_static_test/15: MissingCompileTimeError
-class_literal_static_test/16: MissingCompileTimeError
 class_literal_static_test/17: MissingCompileTimeError
 class_literal_static_test/18: MissingCompileTimeError
 class_literal_static_test/19: MissingCompileTimeError
 class_literal_static_test/20: MissingCompileTimeError
 class_literal_static_test/21: MissingCompileTimeError
 class_literal_static_test/22: MissingCompileTimeError
-class_literal_static_test/23: MissingCompileTimeError
 class_literal_static_test/24: MissingCompileTimeError
 class_literal_static_test/25: MissingCompileTimeError
-class_literal_test/01: MissingCompileTimeError
-class_literal_test/02: MissingCompileTimeError
-class_literal_test/03: MissingCompileTimeError
-class_literal_test/04: MissingCompileTimeError
-class_literal_test/05: MissingCompileTimeError
-class_literal_test/06: MissingCompileTimeError
-class_literal_test/07: MissingCompileTimeError
-class_literal_test/08: MissingCompileTimeError
-class_literal_test/09: MissingCompileTimeError
-class_literal_test/10: MissingCompileTimeError
-class_literal_test/11: MissingCompileTimeError
 class_literal_test/12: MissingCompileTimeError
 class_literal_test/13: MissingCompileTimeError
-class_literal_test/14: MissingCompileTimeError
-class_literal_test/15: MissingCompileTimeError
-class_literal_test/16: MissingCompileTimeError
 class_literal_test/17: MissingCompileTimeError
 class_literal_test/18: MissingCompileTimeError
 class_literal_test/19: MissingCompileTimeError
 class_literal_test/20: MissingCompileTimeError
 class_literal_test/21: MissingCompileTimeError
 class_literal_test/22: MissingCompileTimeError
-class_literal_test/23: MissingCompileTimeError
 class_literal_test/24: MissingCompileTimeError
 class_literal_test/25: MissingCompileTimeError
 class_override_test: MissingCompileTimeError
-closure_internals_test/01: MissingCompileTimeError
-closure_internals_test/02: MissingCompileTimeError
-closure_internals_test/03: MissingCompileTimeError
 closure_invoked_through_interface_target_field_test: MissingCompileTimeError
 closure_invoked_through_interface_target_getter_test: MissingCompileTimeError
 compile_time_constant_c_test/02: MissingCompileTimeError # KernelVM bug: Constant evaluation.
@@ -1655,19 +1351,12 @@
 compile_time_constant_static5_test/23: CompileTimeError # Issue 31402 (Field declaration)
 conditional_import_string_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
 conditional_import_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
-conditional_method_invocation_test/07: MissingCompileTimeError
 conditional_method_invocation_test/12: MissingCompileTimeError
 conditional_method_invocation_test/13: MissingCompileTimeError
-conditional_property_access_test/05: MissingCompileTimeError
-conditional_property_access_test/06: MissingCompileTimeError
 conditional_property_access_test/10: MissingCompileTimeError
 conditional_property_access_test/11: MissingCompileTimeError
-conditional_property_assignment_test/05: MissingCompileTimeError
-conditional_property_assignment_test/06: MissingCompileTimeError
-conditional_property_assignment_test/10: MissingCompileTimeError
-conditional_property_assignment_test/11: MissingCompileTimeError
 conditional_rewrite_test: RuntimeError # Issue 31402 (Not)
-config_import_corelib_test: RuntimeError # KernelVM bug: Configurable imports.
+config_import_corelib_test: CompileTimeError # Issue 31533
 config_import_test: RuntimeError # KernelVM bug: Configurable imports.
 const_constructor2_test/11: CompileTimeError # Issue 31402 (Invocation arguments)
 const_constructor2_test/12: CompileTimeError # Issue 31402 (Invocation arguments)
@@ -1708,7 +1397,6 @@
 constructor13_test/01: MissingCompileTimeError
 constructor13_test/02: MissingCompileTimeError
 constructor3_test: Fail, OK, Pass
-constructor_call_as_function_test/01: MissingCompileTimeError
 constructor_duplicate_final_test/01: MissingCompileTimeError
 constructor_duplicate_final_test/02: MissingCompileTimeError
 constructor_named_arguments_test/01: MissingCompileTimeError
@@ -1720,7 +1408,6 @@
 covariant_subtyping_test: CompileTimeError
 covariant_subtyping_test: Crash
 covariant_subtyping_with_substitution_test: RuntimeError
-crash_6725_test/01: MissingCompileTimeError
 create_unresolved_type_test/01: MissingCompileTimeError
 ct_const2_test: Skip # Incompatible flag: --compile_all
 ct_const_test: RuntimeError
@@ -1815,21 +1502,17 @@
 duplicate_implements_test/02: MissingCompileTimeError
 duplicate_implements_test/03: MissingCompileTimeError
 duplicate_implements_test/04: MissingCompileTimeError
-dynamic_field_test/01: MissingCompileTimeError
-dynamic_field_test/02: MissingCompileTimeError
 dynamic_prefix_core_test/01: MissingCompileTimeError
 dynamic_prefix_core_test/01: RuntimeError # KernelVM bug: Issue 12478, Blocked on language issue 29125.
 dynamic_prefix_core_test/none: RuntimeError
 dynamic_test: CompileTimeError # Issue 31402 (Variable declaration)
+emit_const_fields_test: CompileTimeError # Issue 31533
 empty_block_case_test: MissingCompileTimeError
 enum_mirror_test: SkipByDesign
 enum_private_test/02: MissingCompileTimeError
-error_stacktrace_test/00: MissingCompileTimeError
 example_constructor_test: Fail, OK
 export_ambiguous_main_negative_test: Fail # Issue 14763
 export_ambiguous_main_negative_test: Skip # Issue 29895
-export_ambiguous_main_test: Crash
-export_ambiguous_main_test: MissingCompileTimeError
 export_double_same_main_test: Crash # Issue 29895
 export_double_same_main_test: Skip # Issue 29895
 external_test/10: MissingRuntimeError # KernelVM bug: Unbound external.
@@ -1870,14 +1553,8 @@
 final_variable_assignment_test/04: MissingCompileTimeError
 first_class_types_literals_test/03: MissingCompileTimeError
 first_class_types_literals_test/04: MissingCompileTimeError
-first_class_types_literals_test/05: MissingCompileTimeError
-first_class_types_literals_test/06: MissingCompileTimeError
-first_class_types_literals_test/07: MissingCompileTimeError
 first_class_types_literals_test/08: MissingCompileTimeError
 first_class_types_literals_test/09: MissingCompileTimeError
-first_class_types_literals_test/10: MissingCompileTimeError
-first_class_types_literals_test/11: MissingCompileTimeError
-first_class_types_literals_test/12: MissingCompileTimeError
 first_class_types_test: RuntimeError
 flatten_test/05: MissingRuntimeError
 flatten_test/08: MissingRuntimeError
@@ -2042,12 +1719,12 @@
 generic_methods_type_expression_test: RuntimeError # Issue 25869 / 27460
 generic_methods_unused_parameter_test: CompileTimeError # Issue 31402 (Variable declaration)
 generic_methods_unused_parameter_test: RuntimeError
+generic_no_such_method_dispatcher_simple_test: CompileTimeError # Issue 31533
+generic_no_such_method_dispatcher_test: CompileTimeError # Issue 31533
 generic_tearoff_test: CompileTimeError
 generic_tearoff_test: RuntimeError
-getter_no_setter2_test/00: MissingCompileTimeError
 getter_no_setter2_test/01: MissingCompileTimeError
 getter_no_setter2_test/03: MissingCompileTimeError
-getter_no_setter_test/00: MissingCompileTimeError
 getter_no_setter_test/01: MissingCompileTimeError
 getter_no_setter_test/03: MissingCompileTimeError
 getter_override_test/03: MissingCompileTimeError
@@ -2060,27 +1737,8 @@
 identical_const_test/02: MissingCompileTimeError
 identical_const_test/03: MissingCompileTimeError
 identical_const_test/04: MissingCompileTimeError
-if_null_assignment_behavior_test/03: MissingCompileTimeError
 if_null_assignment_behavior_test/13: MissingCompileTimeError
 if_null_assignment_behavior_test/15: MissingCompileTimeError
-if_null_assignment_static_test/02: MissingCompileTimeError
-if_null_assignment_static_test/04: MissingCompileTimeError
-if_null_assignment_static_test/06: MissingCompileTimeError
-if_null_assignment_static_test/09: MissingCompileTimeError
-if_null_assignment_static_test/11: MissingCompileTimeError
-if_null_assignment_static_test/13: MissingCompileTimeError
-if_null_assignment_static_test/16: MissingCompileTimeError
-if_null_assignment_static_test/18: MissingCompileTimeError
-if_null_assignment_static_test/20: MissingCompileTimeError
-if_null_assignment_static_test/23: MissingCompileTimeError
-if_null_assignment_static_test/25: MissingCompileTimeError
-if_null_assignment_static_test/27: MissingCompileTimeError
-if_null_assignment_static_test/30: MissingCompileTimeError
-if_null_assignment_static_test/32: MissingCompileTimeError
-if_null_assignment_static_test/34: MissingCompileTimeError
-if_null_assignment_static_test/37: MissingCompileTimeError
-if_null_assignment_static_test/39: MissingCompileTimeError
-if_null_assignment_static_test/41: MissingCompileTimeError
 if_null_precedence_test/none: RuntimeError
 implicit_closure_test: Skip # Incompatible flag: --use_slow_path
 implicit_downcast_during_assignment_test: Pass # Correctly passes.
@@ -2109,7 +1767,6 @@
 implicit_this_test/04: MissingCompileTimeError
 import_combinators2_test/00: MissingCompileTimeError
 import_self_test/01: MissingCompileTimeError
-inferrer_constructor5_test/01: MissingCompileTimeError
 initializing_formal_final_test: MissingCompileTimeError
 initializing_formal_type_annotation_test/01: MissingCompileTimeError
 initializing_formal_type_annotation_test/02: MissingCompileTimeError
@@ -2155,26 +1812,8 @@
 known_identifier_prefix_error_test/23: MissingCompileTimeError # Issue 28814
 known_identifier_prefix_error_test/24: MissingCompileTimeError # Issue 28814
 language_2/least_upper_bound_expansive_test/none: CompileTimeError
-least_upper_bound_expansive_test/01: MissingCompileTimeError
-least_upper_bound_expansive_test/02: MissingCompileTimeError
-least_upper_bound_expansive_test/03: MissingCompileTimeError
-least_upper_bound_expansive_test/04: MissingCompileTimeError
-least_upper_bound_expansive_test/05: MissingCompileTimeError
-least_upper_bound_expansive_test/06: MissingCompileTimeError
-least_upper_bound_expansive_test/07: MissingCompileTimeError
-least_upper_bound_expansive_test/08: MissingCompileTimeError
-least_upper_bound_expansive_test/09: MissingCompileTimeError
-least_upper_bound_expansive_test/10: MissingCompileTimeError
-least_upper_bound_expansive_test/11: MissingCompileTimeError
-least_upper_bound_expansive_test/12: MissingCompileTimeError
 least_upper_bound_expansive_test/none: CompileTimeError
 least_upper_bound_expansive_test/none: RuntimeError
-least_upper_bound_test/03: MissingCompileTimeError
-least_upper_bound_test/04: MissingCompileTimeError
-least_upper_bound_test/10: MissingCompileTimeError
-least_upper_bound_test/19: MissingCompileTimeError
-least_upper_bound_test/20: MissingCompileTimeError
-least_upper_bound_test/32: MissingCompileTimeError
 library_ambiguous_test/00: MissingCompileTimeError
 library_ambiguous_test/01: MissingCompileTimeError
 library_ambiguous_test/02: MissingCompileTimeError
@@ -2189,13 +1828,10 @@
 list_literal_syntax_test/02: MissingCompileTimeError
 list_literal_syntax_test/03: MissingCompileTimeError
 local_function2_test/none: RuntimeError
-local_function3_test/01: MissingCompileTimeError
 local_function3_test/none: RuntimeError
 local_function_test/01: MissingCompileTimeError
 local_function_test/02: MissingCompileTimeError
-local_function_test/03: MissingCompileTimeError
 local_function_test/none: RuntimeError
-logical_expression3_test: MissingCompileTimeError
 main_not_a_function_test: Skip
 main_test/03: RuntimeError
 malbounded_instantiation_test/01: MissingCompileTimeError
@@ -2230,7 +1866,6 @@
 malformed2_test/12: MissingCompileTimeError
 malformed2_test/13: MissingCompileTimeError
 malformed_bound_test/00: MissingCompileTimeError
-malformed_bound_test/01: MissingCompileTimeError
 malformed_inheritance_test/01: MissingCompileTimeError
 malformed_inheritance_test/03: MissingCompileTimeError
 malformed_inheritance_test/05: MissingCompileTimeError
@@ -2395,13 +2030,11 @@
 not_enough_positional_arguments_test/05: MissingCompileTimeError
 not_enough_positional_arguments_test/06: MissingCompileTimeError
 not_enough_positional_arguments_test/07: MissingCompileTimeError
+null_no_such_method_test: CompileTimeError # Issue 31533
 null_test/02: MissingCompileTimeError
 null_test/03: MissingCompileTimeError
 null_test/mirrors: Skip # Uses mirrors.
 null_test/none: SkipByDesign
-number_identifier_test/05: MissingCompileTimeError
-number_identifier_test/08: MissingCompileTimeError
-number_identifier_test/09: MissingCompileTimeError
 on_catch_malformed_type_test: MissingCompileTimeError
 optional_named_parameters_test/01: MissingCompileTimeError
 optional_named_parameters_test/02: Crash
@@ -2489,7 +2122,7 @@
 override_inheritance_no_such_method_test/10: MissingCompileTimeError
 override_inheritance_no_such_method_test/12: MissingCompileTimeError
 override_inheritance_no_such_method_test/13: MissingCompileTimeError
-override_method_with_field_test/02: MissingCompileTimeError
+parser_quirks_test: CompileTimeError # Issue 31533
 part2_test/01: MissingCompileTimeError
 positional_parameters_type_test/01: Crash
 positional_parameters_type_test/01: MissingCompileTimeError
@@ -2514,7 +2147,6 @@
 redirecting_factory_infinite_steps_test/01: MissingCompileTimeError
 redirecting_factory_malbounded_test/01: MissingCompileTimeError
 redirecting_factory_reflection_test: SkipByDesign
-regress_12561_test: MissingCompileTimeError
 regress_13462_0_test: SkipByDesign
 regress_13462_1_test: SkipByDesign
 regress_13494_test: MissingCompileTimeError
@@ -2543,45 +2175,22 @@
 regress_29784_test/01: MissingCompileTimeError
 regress_29784_test/02: MissingCompileTimeError
 regress_30339_test: CompileTimeError # Issue 31402 (Variable declaration)
-rewrite_implicit_this_test/01: MissingCompileTimeError
 setter4_test: MissingCompileTimeError # Issue 14736
+setter_no_getter_test/01: CompileTimeError # Issue 31533
 setter_override_test/01: MissingCompileTimeError
 setter_override_test/02: MissingCompileTimeError
 stacktrace_demangle_ctors_test: RuntimeError
-static_field1_test/01: MissingCompileTimeError
-static_field1a_test/01: MissingCompileTimeError
 static_field3_test/01: MissingCompileTimeError
 static_field3_test/02: MissingCompileTimeError
 static_field3_test/03: MissingCompileTimeError
 static_field3_test/04: MissingCompileTimeError
-static_field_test/01: MissingCompileTimeError
-static_field_test/02: MissingCompileTimeError
-static_field_test/03: MissingCompileTimeError
-static_field_test/04: MissingCompileTimeError
 static_final_field2_test/01: MissingCompileTimeError
 static_getter_no_setter1_test/01: MissingCompileTimeError
 static_getter_no_setter2_test/01: MissingCompileTimeError
 static_setter_get_test/01: MissingCompileTimeError
+string_interpolate_test: CompileTimeError # Issue 31533
 string_interpolation_and_buffer_test: RuntimeError # Issue 31402 (Return and yield statements)
-string_interpolation_test/01: MissingCompileTimeError
-string_no_operator_test/01: MissingCompileTimeError
-string_no_operator_test/02: MissingCompileTimeError
-string_no_operator_test/03: MissingCompileTimeError
-string_no_operator_test/04: MissingCompileTimeError
-string_no_operator_test/05: MissingCompileTimeError
-string_no_operator_test/07: MissingCompileTimeError
-string_no_operator_test/08: MissingCompileTimeError
-string_no_operator_test/09: MissingCompileTimeError
-string_no_operator_test/10: MissingCompileTimeError
-string_no_operator_test/11: MissingCompileTimeError
-string_no_operator_test/12: MissingCompileTimeError
-string_no_operator_test/13: MissingCompileTimeError
-string_no_operator_test/14: MissingCompileTimeError
-string_no_operator_test/15: MissingCompileTimeError
-string_no_operator_test/16: MissingCompileTimeError
-string_test/01: MissingCompileTimeError
-super_assign_test/01: MissingCompileTimeError
-super_bound_closure_test/01: MissingCompileTimeError
+super_bound_closure_test/none: CompileTimeError # Issue 31533
 super_call4_test: CompileTimeError
 super_call4_test: RuntimeError
 super_getter_setter_test: CompileTimeError
@@ -2600,7 +2209,6 @@
 switch_case_test/01: MissingCompileTimeError # KernelVM bug: Constant evaluation.
 switch_case_test/02: MissingCompileTimeError # KernelVM bug: Constant evaluation.
 switch_fallthru_test/01: MissingCompileTimeError
-symbol_literal_test/01: MissingCompileTimeError
 syntax_test/00: MissingCompileTimeError
 syntax_test/28: MissingCompileTimeError
 syntax_test/29: MissingCompileTimeError
@@ -2616,7 +2224,6 @@
 try_catch_on_syntax_test/11: MissingCompileTimeError
 try_catch_syntax_test/08: MissingCompileTimeError
 type_error_test: RuntimeError # Issue 31402 (Variable declaration)
-type_literal_prefix_call_test/00: MissingCompileTimeError
 type_literal_test: RuntimeError
 type_parameter_test/01: MissingCompileTimeError
 type_parameter_test/02: MissingCompileTimeError
@@ -2624,24 +2231,6 @@
 type_parameter_test/07: MissingCompileTimeError
 type_parameter_test/08: MissingCompileTimeError
 type_parameter_test/09: MissingCompileTimeError
-type_promotion_assign_test/01: MissingCompileTimeError
-type_promotion_assign_test/02: MissingCompileTimeError
-type_promotion_assign_test/03: MissingCompileTimeError
-type_promotion_assign_test/04: MissingCompileTimeError
-type_promotion_closure_test/01: MissingCompileTimeError
-type_promotion_closure_test/02: MissingCompileTimeError
-type_promotion_closure_test/03: MissingCompileTimeError
-type_promotion_closure_test/04: MissingCompileTimeError
-type_promotion_closure_test/06: MissingCompileTimeError
-type_promotion_closure_test/07: MissingCompileTimeError
-type_promotion_closure_test/09: MissingCompileTimeError
-type_promotion_closure_test/10: MissingCompileTimeError
-type_promotion_closure_test/11: MissingCompileTimeError
-type_promotion_closure_test/12: MissingCompileTimeError
-type_promotion_closure_test/13: MissingCompileTimeError
-type_promotion_closure_test/14: MissingCompileTimeError
-type_promotion_closure_test/15: MissingCompileTimeError
-type_promotion_closure_test/16: MissingCompileTimeError
 type_promotion_functions_test/01: MissingCompileTimeError
 type_promotion_functions_test/01: Pass
 type_promotion_functions_test/02: Pass
@@ -2653,130 +2242,8 @@
 type_promotion_functions_test/13: Pass
 type_promotion_functions_test/14: Pass
 type_promotion_functions_test/none: Pass
-type_promotion_local_test/01: MissingCompileTimeError
-type_promotion_local_test/02: MissingCompileTimeError
-type_promotion_local_test/03: MissingCompileTimeError
-type_promotion_local_test/04: MissingCompileTimeError
-type_promotion_local_test/05: MissingCompileTimeError
-type_promotion_local_test/06: MissingCompileTimeError
-type_promotion_local_test/07: MissingCompileTimeError
-type_promotion_local_test/08: MissingCompileTimeError
-type_promotion_local_test/09: MissingCompileTimeError
-type_promotion_local_test/10: MissingCompileTimeError
-type_promotion_local_test/11: MissingCompileTimeError
-type_promotion_local_test/12: MissingCompileTimeError
-type_promotion_local_test/13: MissingCompileTimeError
-type_promotion_local_test/14: MissingCompileTimeError
-type_promotion_local_test/15: MissingCompileTimeError
-type_promotion_local_test/16: MissingCompileTimeError
-type_promotion_local_test/17: MissingCompileTimeError
-type_promotion_local_test/18: MissingCompileTimeError
-type_promotion_local_test/19: MissingCompileTimeError
-type_promotion_local_test/20: MissingCompileTimeError
-type_promotion_local_test/21: MissingCompileTimeError
-type_promotion_local_test/22: MissingCompileTimeError
-type_promotion_local_test/23: MissingCompileTimeError
-type_promotion_local_test/24: MissingCompileTimeError
-type_promotion_local_test/25: MissingCompileTimeError
-type_promotion_local_test/26: MissingCompileTimeError
-type_promotion_local_test/27: MissingCompileTimeError
-type_promotion_local_test/28: MissingCompileTimeError
-type_promotion_local_test/29: MissingCompileTimeError
-type_promotion_local_test/30: MissingCompileTimeError
-type_promotion_local_test/31: MissingCompileTimeError
-type_promotion_local_test/32: MissingCompileTimeError
-type_promotion_local_test/33: MissingCompileTimeError
-type_promotion_local_test/34: MissingCompileTimeError
-type_promotion_local_test/35: MissingCompileTimeError
-type_promotion_local_test/36: MissingCompileTimeError
-type_promotion_local_test/37: MissingCompileTimeError
-type_promotion_local_test/38: MissingCompileTimeError
-type_promotion_local_test/39: MissingCompileTimeError
-type_promotion_local_test/40: MissingCompileTimeError
-type_promotion_local_test/41: MissingCompileTimeError
 type_promotion_logical_and_test/01: MissingCompileTimeError
-type_promotion_logical_and_test/02: MissingCompileTimeError
-type_promotion_logical_and_test/03: MissingCompileTimeError
-type_promotion_more_specific_test/02: MissingCompileTimeError
-type_promotion_more_specific_test/04: Pass
-type_promotion_more_specific_test/09: MissingCompileTimeError
-type_promotion_multiple_test/01: MissingCompileTimeError
-type_promotion_multiple_test/02: MissingCompileTimeError
-type_promotion_multiple_test/03: MissingCompileTimeError
-type_promotion_multiple_test/04: MissingCompileTimeError
-type_promotion_multiple_test/05: MissingCompileTimeError
-type_promotion_multiple_test/06: MissingCompileTimeError
-type_promotion_multiple_test/07: MissingCompileTimeError
-type_promotion_multiple_test/08: MissingCompileTimeError
-type_promotion_multiple_test/09: MissingCompileTimeError
-type_promotion_multiple_test/10: MissingCompileTimeError
-type_promotion_multiple_test/11: MissingCompileTimeError
-type_promotion_multiple_test/12: MissingCompileTimeError
-type_promotion_multiple_test/13: MissingCompileTimeError
-type_promotion_multiple_test/14: MissingCompileTimeError
-type_promotion_multiple_test/15: MissingCompileTimeError
-type_promotion_multiple_test/16: MissingCompileTimeError
-type_promotion_multiple_test/17: MissingCompileTimeError
-type_promotion_multiple_test/18: MissingCompileTimeError
-type_promotion_multiple_test/19: MissingCompileTimeError
-type_promotion_multiple_test/20: MissingCompileTimeError
-type_promotion_multiple_test/21: MissingCompileTimeError
-type_promotion_multiple_test/22: MissingCompileTimeError
-type_promotion_parameter_test/01: MissingCompileTimeError
-type_promotion_parameter_test/02: MissingCompileTimeError
-type_promotion_parameter_test/03: MissingCompileTimeError
-type_promotion_parameter_test/04: MissingCompileTimeError
-type_promotion_parameter_test/05: MissingCompileTimeError
-type_promotion_parameter_test/06: MissingCompileTimeError
-type_promotion_parameter_test/07: MissingCompileTimeError
-type_promotion_parameter_test/08: MissingCompileTimeError
-type_promotion_parameter_test/09: MissingCompileTimeError
-type_promotion_parameter_test/10: MissingCompileTimeError
-type_promotion_parameter_test/11: MissingCompileTimeError
-type_promotion_parameter_test/12: MissingCompileTimeError
-type_promotion_parameter_test/13: MissingCompileTimeError
-type_promotion_parameter_test/14: MissingCompileTimeError
-type_promotion_parameter_test/15: MissingCompileTimeError
-type_promotion_parameter_test/16: MissingCompileTimeError
-type_promotion_parameter_test/17: MissingCompileTimeError
-type_promotion_parameter_test/18: MissingCompileTimeError
-type_promotion_parameter_test/19: MissingCompileTimeError
-type_promotion_parameter_test/20: MissingCompileTimeError
-type_promotion_parameter_test/21: MissingCompileTimeError
-type_promotion_parameter_test/22: MissingCompileTimeError
-type_promotion_parameter_test/23: MissingCompileTimeError
-type_promotion_parameter_test/24: MissingCompileTimeError
-type_promotion_parameter_test/25: MissingCompileTimeError
-type_promotion_parameter_test/26: MissingCompileTimeError
-type_promotion_parameter_test/27: MissingCompileTimeError
-type_promotion_parameter_test/28: MissingCompileTimeError
-type_promotion_parameter_test/29: MissingCompileTimeError
-type_promotion_parameter_test/30: MissingCompileTimeError
-type_promotion_parameter_test/31: MissingCompileTimeError
-type_promotion_parameter_test/32: MissingCompileTimeError
-type_promotion_parameter_test/33: MissingCompileTimeError
-type_promotion_parameter_test/34: MissingCompileTimeError
-type_promotion_parameter_test/35: MissingCompileTimeError
-type_promotion_parameter_test/36: MissingCompileTimeError
-type_promotion_parameter_test/37: MissingCompileTimeError
-type_promotion_parameter_test/38: MissingCompileTimeError
-type_promotion_parameter_test/39: MissingCompileTimeError
-type_promotion_parameter_test/40: MissingCompileTimeError
-type_promotion_parameter_test/41: MissingCompileTimeError
-type_promotion_parameter_test/42: MissingCompileTimeError
-type_promotion_parameter_test/43: MissingCompileTimeError
-type_promotion_parameter_test/44: MissingCompileTimeError
-type_promotion_parameter_test/45: MissingCompileTimeError
-type_promotion_parameter_test/46: MissingCompileTimeError
-type_promotion_parameter_test/47: MissingCompileTimeError
-type_promotion_parameter_test/48: MissingCompileTimeError
-type_promotion_parameter_test/49: MissingCompileTimeError
-type_promotion_parameter_test/50: MissingCompileTimeError
-type_promotion_parameter_test/51: MissingCompileTimeError
-type_promotion_parameter_test/52: MissingCompileTimeError
-type_promotion_parameter_test/54: MissingCompileTimeError
-type_promotion_parameter_test/55: MissingCompileTimeError
-type_promotion_parameter_test/56: MissingCompileTimeError
+type_promotion_more_specific_test/04: CompileTimeError # Issue 31533
 type_variable_bounds2_test: MissingCompileTimeError
 type_variable_bounds3_test/00: MissingCompileTimeError
 type_variable_bounds4_test/01: MissingCompileTimeError
@@ -2792,13 +2259,8 @@
 type_variable_bounds_test/09: MissingCompileTimeError
 type_variable_bounds_test/10: MissingCompileTimeError
 type_variable_bounds_test/11: MissingCompileTimeError
-type_variable_conflict2_test/01: MissingCompileTimeError
 type_variable_conflict2_test/03: MissingCompileTimeError
 type_variable_conflict2_test/04: MissingCompileTimeError
-type_variable_conflict2_test/05: MissingCompileTimeError
-type_variable_conflict2_test/07: MissingCompileTimeError
-type_variable_conflict2_test/09: MissingCompileTimeError
-type_variable_identifier_expression_test: MissingCompileTimeError
 type_variable_nested_test/01: RuntimeError
 type_variable_promotion_test: Pass
 type_variable_promotion_test: RuntimeError
@@ -2810,8 +2272,6 @@
 type_variable_scope_test/04: MissingCompileTimeError
 type_variable_scope_test/05: MissingCompileTimeError
 type_variable_static_context_test: MissingCompileTimeError
-typed_selector2_test: MissingCompileTimeError
-unbound_getter_test: MissingCompileTimeError
 unicode_bom_test: Fail # Issue 16067
 unicode_bom_test: Pass
 unresolved_default_constructor_test/01: MissingCompileTimeError
@@ -3069,3 +2529,6 @@
 vm/unaligned_integer_access_literal_index_test: CompileTimeError  # Issue 31339
 mint_arithmetic_test: CompileTimeError                            # Issue 31339
 identical_closure2_test: CompileTimeError                         # Issue 31339
+mock_writable_final_field_test: RuntimeError                      # Issue 31424
+no_such_method_subtype_test: RuntimeError                         # Issue 31424
+generic_no_such_method_dispatcher_test: RuntimeError              # Issue 31424
diff --git a/tests/language_2/language_2_precompiled.status b/tests/language_2/language_2_precompiled.status
index 7af15f2..db7e865 100644
--- a/tests/language_2/language_2_precompiled.status
+++ b/tests/language_2/language_2_precompiled.status
@@ -637,6 +637,9 @@
 not_enough_positional_arguments_test/07: MissingCompileTimeError
 null_test/mirrors: Skip # Uses mirrors.
 null_test/none: SkipByDesign
+object_has_no_call_method_test/02: MissingCompileTimeError
+object_has_no_call_method_test/05: MissingCompileTimeError
+object_has_no_call_method_test/08: MissingCompileTimeError
 optional_named_parameters_test/01: MissingCompileTimeError
 optional_named_parameters_test/02: MissingCompileTimeError
 optional_named_parameters_test/03: MissingCompileTimeError
@@ -993,6 +996,8 @@
 assertion_initializer_const_error_test/01: MissingCompileTimeError
 assertion_initializer_const_function_error_test/01: MissingCompileTimeError
 callable_test/none: RuntimeError
+cascaded_forwarding_stubs_generic_test: RuntimeError
+cascaded_forwarding_stubs_test: RuntimeError
 checked_setter2_test: RuntimeError
 checked_setter3_test: RuntimeError
 checked_setter_test: RuntimeError
diff --git a/tests/language_2/language_2_vm.status b/tests/language_2/language_2_vm.status
index ab80d49..e7acdb5 100644
--- a/tests/language_2/language_2_vm.status
+++ b/tests/language_2/language_2_vm.status
@@ -539,6 +539,9 @@
 not_enough_positional_arguments_test/03: MissingCompileTimeError
 not_enough_positional_arguments_test/06: MissingCompileTimeError
 not_enough_positional_arguments_test/07: MissingCompileTimeError
+object_has_no_call_method_test/02: MissingCompileTimeError
+object_has_no_call_method_test/05: MissingCompileTimeError
+object_has_no_call_method_test/08: MissingCompileTimeError
 optional_named_parameters_test/01: MissingCompileTimeError
 optional_named_parameters_test/02: MissingCompileTimeError
 optional_named_parameters_test/03: MissingCompileTimeError
@@ -932,6 +935,8 @@
 bool_check_test: RuntimeError
 bool_condition_check_test: RuntimeError
 callable_test/none: RuntimeError
+cascaded_forwarding_stubs_generic_test: RuntimeError
+cascaded_forwarding_stubs_test: RuntimeError
 checked_setter2_test: RuntimeError
 checked_setter3_test: RuntimeError
 checked_setter_test: RuntimeError
diff --git a/tests/language_2/object_has_no_call_method_test.dart b/tests/language_2/object_has_no_call_method_test.dart
new file mode 100644
index 0000000..cf334e8
--- /dev/null
+++ b/tests/language_2/object_has_no_call_method_test.dart
@@ -0,0 +1,17 @@
+// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+void test(dynamic d, Object o, Function f) {
+  d(); //# 01: ok
+  o(); //# 02: compile-time error
+  f(); //# 03: ok
+  d.call; //# 04: ok
+  o.call; //# 05: compile-time error
+  f.call; //# 06: ok
+  d.call(); //# 07: ok
+  o.call(); //# 08: compile-time error
+  f.call(); //# 09: ok
+}
+
+main() {}
diff --git a/tests/lib_2/js/prototype_access_test.dart b/tests/lib_2/js/prototype_access_test.dart
new file mode 100644
index 0000000..fe93733
--- /dev/null
+++ b/tests/lib_2/js/prototype_access_test.dart
@@ -0,0 +1,38 @@
+// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+@JS()
+library prototest;
+
+import 'package:js/js.dart';
+import 'package:expect/expect.dart';
+
+@JS('window.ArrayBuffer')
+external Class get arrayBufferClass;
+
+@JS('Function')
+class Class {
+  external dynamic get prototype;
+  external dynamic get constructor;
+}
+
+class Normal {
+  int prototype = 42;
+  Normal constructor() {
+    return this;
+  }
+
+  int operator [](int i) => prototype;
+}
+
+void main() {
+  Expect.isTrue(arrayBufferClass.prototype != null);
+  var normal = new Normal();
+  Expect.equals(42, normal.prototype);
+  Expect.equals(42, normal[0]);
+  Expect.isTrue(arrayBufferClass.constructor != null);
+  Expect.isTrue(arrayBufferClass.constructor is Function);
+  Expect.isTrue(normal.constructor is Function);
+  Expect.equals(normal, normal.constructor());
+}
diff --git a/tests/lib_2/lib_2_kernel.status b/tests/lib_2/lib_2_kernel.status
index 151aef4..0c63350 100644
--- a/tests/lib_2/lib_2_kernel.status
+++ b/tests/lib_2/lib_2_kernel.status
@@ -105,6 +105,7 @@
 isolate/unresolved_ports_test: CompileTimeError # Issue 31402 (Invocation arguments)
 js/datetime_roundtrip_test: CompileTimeError
 js/null_test: CompileTimeError
+js/prototype_access_test: CompileTimeError
 mirrors/abstract_class_test: RuntimeError
 mirrors/abstract_test: CompileTimeError # Issue 31402 (Invocation arguments)
 mirrors/class_declarations_test/01: CompileTimeError # Issue 31402 (Invocation arguments)
@@ -199,8 +200,9 @@
 mirrors/method_mirror_name_test: CompileTimeError # Issue 31402 (Invocation arguments)
 mirrors/method_mirror_source_line_ending_test: Crash
 mirrors/method_mirror_source_test: Crash
-mirrors/mirrors_nsm_mismatch_test: RuntimeError
-mirrors/mirrors_nsm_test/dart2js: RuntimeError
+mirrors/mirrors_nsm_mismatch_test: CompileTimeError # Issue 31533
+mirrors/mirrors_nsm_test/dart2js: CompileTimeError # Issue 31533
+mirrors/mirrors_nsm_test/none: CompileTimeError # Issue 31533
 mirrors/mirrors_reader_test: Crash
 mirrors/mirrors_test: Crash
 mirrors/mirrors_used*: SkipByDesign # Invalid tests. MirrorsUsed does not have a specification, and dart:mirrors is not required to hide declarations that are not covered by any MirrorsUsed annotation.
@@ -243,7 +245,7 @@
 mirrors/reflected_type_typevars_test: RuntimeError
 mirrors/regress_26187_test: RuntimeError
 mirrors/relation_assignable_test: RuntimeError
-mirrors/relation_subclass_test: RuntimeError
+mirrors/relation_subclass_test: CompileTimeError # Issue 31533
 mirrors/relation_subtype_test: RuntimeError
 mirrors/repeated_private_anon_mixin_app_test: RuntimeError
 mirrors/return_type_test: CompileTimeError # Issue 31402 (Invocation arguments)
@@ -478,6 +480,7 @@
 isolate/typed_message_test: CompileTimeError # Issue 31402 (Invocation arguments)
 js/datetime_roundtrip_test: CompileTimeError
 js/null_test: CompileTimeError
+js/prototype_access_test: CompileTimeError
 mirrors/*: SkipByDesign # Mirrors are not supported in AOT mode.
 
 [ $compiler == dartkp && $runtime == dart_precompiled && $strong && $mode == debug]
diff --git a/tests/lib_2/lib_2_precompiled.status b/tests/lib_2/lib_2_precompiled.status
index 7438eb2..2f8ee97 100644
--- a/tests/lib_2/lib_2_precompiled.status
+++ b/tests/lib_2/lib_2_precompiled.status
@@ -38,6 +38,7 @@
 isolate/unresolved_ports_test: SkipByDesign
 js/datetime_roundtrip_test: CompileTimeError
 js/null_test: CompileTimeError
+js/prototype_access_test: CompileTimeError
 
 [ ($compiler == none || $compiler == precompiler || $compiler == app_jit) ]
 async/timer_regress22626_test: Pass, RuntimeError # Issue 28254
diff --git a/tests/lib_2/lib_2_vm.status b/tests/lib_2/lib_2_vm.status
index 61fcb9e..819bd58 100644
--- a/tests/lib_2/lib_2_vm.status
+++ b/tests/lib_2/lib_2_vm.status
@@ -49,6 +49,7 @@
 html/*: SkipByDesign # dart:html not supported on VM.
 js/datetime_roundtrip_test: CompileTimeError
 js/null_test: CompileTimeError
+js/prototype_access_test: CompileTimeError
 mirrors/deferred_type_test: CompileTimeError
 mirrors/generic_bounded_by_type_parameter_test/02: MissingCompileTimeError
 mirrors/generic_bounded_test/01: MissingCompileTimeError
diff --git a/tests/standalone/script_snapshot_depfile_test.dart b/tests/standalone/script_snapshot_depfile_test.dart
new file mode 100644
index 0000000..3bcd2ec
--- /dev/null
+++ b/tests/standalone/script_snapshot_depfile_test.dart
@@ -0,0 +1,53 @@
+// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import "dart:io";
+
+void main(List<String> args) {
+  if (args.contains("--child")) {
+    print("Hello, pre-scanned world!");
+  } else {
+    generateSnapshot();
+  }
+}
+
+void generateSnapshot() {
+  var tempDir = Directory.systemTemp.createTempSync("script-snapshot");
+  var snapshotPath = tempDir.uri.resolve("hello.snapshot").toFilePath();
+  var depfilePath = tempDir.uri.resolve("hello.snapshot.d").toFilePath();
+  var scriptPath = Platform.script.toFilePath();
+
+  var exec = Platform.resolvedExecutable;
+  var args = new List();
+  args.addAll(Platform.executableArguments);
+  args.add("--snapshot=$snapshotPath");
+  args.add("--snapshot-depfile=$depfilePath");
+  args.add(scriptPath);
+  args.add("--child");
+  var result = Process.runSync(exec, args);
+
+  print("Exit code: ${result.exitCode}");
+  print("stdout:");
+  print(result.stdout);
+  print("stderr:");
+  print(result.stderr);
+
+  if (result.exitCode != 0) {
+    throw "Bad exit code: ${result.exitCode}";
+  }
+
+  var depfileContents = new File(depfilePath).readAsStringSync();
+  print("depfile:");
+  print(depfileContents);
+  if (!depfileContents.contains(snapshotPath)) {
+    print("snapshotPath:");
+    print(snapshotPath);
+    throw "Missing snapshot path";
+  }
+  if (!depfileContents.contains(scriptPath)) {
+    print("scriptPath:");
+    print(scriptPath);
+    throw "Missing script path";
+  }
+}
diff --git a/tests/standalone/standalone.status b/tests/standalone/standalone.status
index 23dcff8..b5758d6 100644
--- a/tests/standalone/standalone.status
+++ b/tests/standalone/standalone.status
@@ -21,9 +21,11 @@
 
 [ $runtime != vm || $compiler != none ]
 script_snapshot_not_executed_test: SkipByDesign # Only makes sense running from source.
+script_snapshot_depfile_test: SkipByDesign # Only makes sense running from source.
 
-[ (($hot_reload) || ($hot_reload_rollback)) ]
-script_snapshot_not_executed_test: RuntimeError
+[ $hot_reload || $hot_reload_rollback ]
+script_snapshot_not_executed_test: RuntimeError, OK # Child VM doesn't execute Dart.
+script_snapshot_depfile_test: RuntimeError, OK # Child VM doesn't execute Dart.
 
 [ $system == macos && $builder_tag == swarming ]
 io/*: Skip # Issue 30618
diff --git a/tools/VERSION b/tools/VERSION
index ecb40bd..6644c98 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 0
 PATCH 0
-PRERELEASE 10
+PRERELEASE 11
 PRERELEASE_PATCH 0
diff --git a/tools/bots/test_matrix.json b/tools/bots/test_matrix.json
index aa3dd87..0f5186a 100644
--- a/tools/bots/test_matrix.json
+++ b/tools/bots/test_matrix.json
@@ -346,17 +346,6 @@
             "--use-sdk",
             "language_2"
           ]
-        },
-        {
-          "name": "ddc kernel -rnone tests",
-          "arguments": [
-            "-cdartdevk",
-            "-rnone",
-            "--checked",
-            "--strong",
-            "--use-sdk",
-            "language_2"
-          ]
         }
       ]
     },
diff --git a/tools/bots/try_test.dart b/tools/bots/try_test.dart
index 3185e2d..1365fb0 100644
--- a/tools/bots/try_test.dart
+++ b/tools/bots/try_test.dart
@@ -21,18 +21,27 @@
 
   String buildArgs = null;
   if (buildType == BuildType.compile) {
-    buildArgs = getStepInput("Give the arguments to build.py, seperate by "
+    buildArgs = getStepInput("Give the arguments to build.py, separate by "
         "' '");
   } else if (buildType == BuildType.existing) {
     buildArgs = getStepInput("Input the fileset hash");
   }
 
   var testCommands = <TestCommand>[];
-  var testCommandString = getStepInput("Write a command to execute. Use ' ' to "
-      "separate arguments. If you only wish to build, just press <Enter>");
+  var testCommandString = getStepInput("Write a command to execute after the "
+      "build-step. Use ' ' to separate arguments. If you only wish to build, "
+      "just press <Enter>");
   while (testCommandString.isNotEmpty) {
+    if (builderPlatform == Platform.linux) {
+      var useXvfb = getIntegerStepInput(
+          "Should the command be wrapped by xvfb (i.e. is the runtime 'drt', "
+          "'chrome' or 'ff')?: (0) No, (1) Yes");
+      if (useXvfb == 1) {
+        testCommandString = "xvfb $testCommandString";
+      }
+    }
     var testCommandRepeat = getIntegerStepInput("How many times would you like "
-        "the command '${testCommandString} to be invoked?");
+        "the command '${testCommandString}' to be invoked?");
     testCommands.add(new TestCommand(testCommandString, testCommandRepeat));
     testCommandString = getStepInput("Write an additional command to execute. "
         "Use ' ' to separate arguments. If no additional commands should be run"
@@ -44,7 +53,7 @@
   int commandIndex = 1;
   var allTestCommands = testCommands
       .expand((testCommand) => testCommand.toTryCommand(commandIndex++));
-  print("git try cl -b ${getBuilderName(builderPlatform)} "
+  print("git cl try -B luci.dart.try -b ${getBuilderName(builderPlatform)} "
       "${getBuildProperties(buildType, buildArgs)}"
       "${allTestCommands.join(' ')}");
 }
@@ -52,13 +61,13 @@
 String getBuilderName(Platform builderPlatform) {
   switch (builderPlatform) {
     case Platform.linux:
-      return "dart-linux-test-try";
+      return "cl-linux-try";
     case Platform.win:
-      return "dart-win-test-try";
+      return "cl-win-try";
     case Platform.mac:
-      return "dart-mac-test-try";
+      return "cl-mac-try";
   }
-  return "dart-linux-test-try";
+  return "cl-linux-try";
 }
 
 String getBuildProperties(BuildType buildType, String buildArgs) {
diff --git a/tools/testing/dart/compiler_configuration.dart b/tools/testing/dart/compiler_configuration.dart
index 0c84922..c3b8d31 100644
--- a/tools/testing/dart/compiler_configuration.dart
+++ b/tools/testing/dart/compiler_configuration.dart
@@ -597,14 +597,11 @@
     String exec = Platform.executable;
     var args = [
       '--packages=.packages',
-      'pkg/front_end/tool/_fasta/compile.dart',
+      'pkg/vm/bin/precompiler_kernel_front_end.dart',
       '--platform=${buildDir}/vm_platform_strong.dill',
-      '--strong-mode',
-      '--fatal=errors',
-      '--target-options=strong-aot',
+      '-o',
+      tempKernelFile(tempDir),
     ];
-    args.add('-o');
-    args.add(tempKernelFile(tempDir));
     args.addAll(arguments.where((name) => name.endsWith('.dart')));
     return Command.compilation('compile_to_kernel', tempDir,
         bootstrapDependencies(), exec, args, environmentOverrides,
diff --git a/utils/application_snapshot.gni b/utils/application_snapshot.gni
index a333f1b..fa28255 100644
--- a/utils/application_snapshot.gni
+++ b/utils/application_snapshot.gni
@@ -39,25 +39,26 @@
   }
   compiled_action(target_name) {
     tool = "$_dart_root/runtime/bin:dart"
-    deps = extra_deps + [ "$_dart_root/pkg:pkg_files_stamp" ]
+    deps = extra_deps
+    depfile = "$root_gen_dir/$name.dart.snapshot.d"
 
-    inputs = extra_inputs + [
-               "$_dart_root/sdk/lib/_internal/sdk_library_metadata/lib/libraries.dart",
-               "$root_gen_dir/pkg_files.stamp",
-             ]
+    main_file = rebase_path(main_dart)
+
+    inputs = extra_inputs + [ main_file ]
 
     output = "$root_gen_dir/$name.dart.snapshot"
     outputs = [
       output,
     ]
 
+    abs_depfile = rebase_path(depfile)
     abs_output = rebase_path(output)
-    main_file = rebase_path(main_dart)
 
     args = [
       "--deterministic",
       "--packages=$dot_packages",
       "--snapshot=$abs_output",
+      "--snapshot-depfile=$abs_depfile",
     ]
 
     if (dart_snapshot_kind == "script") {