Version 2.15.0-60.0.dev

Merge commit '114ccb2c5c5f6f8857714e8f1734d4f1a6ed445c' into 'dev'
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/constructor_reference_context.dart b/pkg/_fe_analyzer_shared/lib/src/parser/constructor_reference_context.dart
new file mode 100644
index 0000000..435eefb
--- /dev/null
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/constructor_reference_context.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2021, 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.
+
+/// Enum for the context in which a constructor occurs
+enum ConstructorReferenceContext {
+  /// A constructor reference in the context of a constructor invocation with
+  /// an explicit `new`.
+  New,
+
+  /// A constructor reference in the context of a constant constructor
+  /// invocation with an explicit `const`.
+  Const,
+
+  /// A constructor reference in the context of a constructor invocation with an
+  /// implicit `new` or `const`.
+  Implicit,
+
+  /// A constructor reference in the context of a redirecting factory body.
+  RedirectingFactory,
+}
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart b/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
index da87016..93ebfdc 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
@@ -610,9 +610,10 @@
   }
 
   @override
-  void endConstructorReference(
-      Token start, Token? periodBeforeName, Token endToken) {
-    listener?.endConstructorReference(start, periodBeforeName, endToken);
+  void endConstructorReference(Token start, Token? periodBeforeName,
+      Token endToken, ConstructorReferenceContext constructorReferenceContext) {
+    listener?.endConstructorReference(
+        start, periodBeforeName, endToken, constructorReferenceContext);
   }
 
   @override
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart b/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
index 2c8e578..564eaaa 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
@@ -15,6 +15,8 @@
 
 import 'block_kind.dart' show BlockKind;
 
+import 'constructor_reference_context.dart' show ConstructorReferenceContext;
+
 import 'formal_parameter_kind.dart' show FormalParameterKind;
 
 import 'identifier_context.dart' show IdentifierContext;
@@ -268,8 +270,8 @@
 
   void beginConstructorReference(Token start) {}
 
-  void endConstructorReference(
-      Token start, Token? periodBeforeName, Token endToken) {
+  void endConstructorReference(Token start, Token? periodBeforeName,
+      Token endToken, ConstructorReferenceContext constructorReferenceContext) {
     logEvent("ConstructorReference");
   }
 
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/parser.dart b/pkg/_fe_analyzer_shared/lib/src/parser/parser.dart
index 0239fca..ade0f51 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/parser.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/parser.dart
@@ -21,6 +21,8 @@
 
 export 'class_member_parser.dart' show ClassMemberParser;
 
+export 'constructor_reference_context.dart' show ConstructorReferenceContext;
+
 export 'formal_parameter_kind.dart' show FormalParameterKind;
 
 export 'identifier_context.dart' show IdentifierContext;
@@ -29,6 +31,8 @@
 
 export 'declaration_kind.dart' show DeclarationKind;
 
+export 'directive_context.dart' show DirectiveContext;
+
 export 'member_kind.dart' show MemberKind;
 
 export 'parser_impl.dart' show Parser;
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
index d31cf68..9355d16 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
@@ -56,6 +56,8 @@
 
 import 'block_kind.dart';
 
+import 'constructor_reference_context.dart' show ConstructorReferenceContext;
+
 import 'declaration_kind.dart' show DeclarationKind;
 
 import 'directive_context.dart';
@@ -4328,7 +4330,9 @@
     return token;
   }
 
-  Token parseConstructorReference(Token token, [TypeParamOrArgInfo? typeArg]) {
+  Token parseConstructorReference(
+      Token token, ConstructorReferenceContext constructorReferenceContext,
+      [TypeParamOrArgInfo? typeArg]) {
     Token start =
         ensureIdentifier(token, IdentifierContext.constructorReference);
     listener.beginConstructorReference(start);
@@ -4345,7 +4349,8 @@
       listener.handleNoConstructorReferenceContinuationAfterTypeArguments(
           token.next!);
     }
-    listener.endConstructorReference(start, period, token.next!);
+    listener.endConstructorReference(
+        start, period, token.next!, constructorReferenceContext);
     return token;
   }
 
@@ -4354,7 +4359,8 @@
     assert(optional('=', token));
     listener.beginRedirectingFactoryBody(token);
     Token equals = token;
-    token = parseConstructorReference(token);
+    token = parseConstructorReference(
+        token, ConstructorReferenceContext.RedirectingFactory);
     token = ensureSemicolon(token);
     listener.endRedirectingFactoryBody(equals, token);
     return token;
@@ -4480,7 +4486,9 @@
         begin = next = token.next!;
         // Fall through to parse the block.
       } else {
-        token = ensureBlock(token, codes.templateExpectedFunctionBody,
+        token = ensureBlock(
+            token,
+            codes.templateExpectedFunctionBody,
             /* missingBlockName = */ null);
         listener.handleInvalidFunctionBody(token);
         return token.endGroup!;
@@ -5971,7 +5979,8 @@
     }
 
     listener.beginNewExpression(newKeyword);
-    token = parseConstructorReference(newKeyword, potentialTypeArg);
+    token = parseConstructorReference(
+        newKeyword, ConstructorReferenceContext.New, potentialTypeArg);
     token = parseConstructorInvocationArguments(token);
     listener.endNewExpression(newKeyword);
     return token;
@@ -5981,7 +5990,8 @@
       Token token, TypeParamOrArgInfo typeArg) {
     Token begin = token;
     listener.beginImplicitCreationExpression(token);
-    token = parseConstructorReference(token, typeArg);
+    token = parseConstructorReference(
+        token, ConstructorReferenceContext.Implicit, typeArg);
     token = parseConstructorInvocationArguments(token);
     listener.endImplicitCreationExpression(begin);
     return token;
@@ -6097,7 +6107,8 @@
       }
     }
     listener.beginConstExpression(constKeyword);
-    token = parseConstructorReference(token, potentialTypeArg);
+    token = parseConstructorReference(
+        token, ConstructorReferenceContext.Const, potentialTypeArg);
     token = parseConstructorInvocationArguments(token);
     listener.endConstExpression(constKeyword);
     return token;
diff --git a/pkg/analysis_server/doc/tutorial/quick_fix.md b/pkg/analysis_server/doc/tutorial/quick_fix.md
new file mode 100644
index 0000000..be98c06
--- /dev/null
+++ b/pkg/analysis_server/doc/tutorial/quick_fix.md
@@ -0,0 +1,365 @@
+# Writing a quick fix
+
+This document outlines the basic steps for writing a quick fix.
+
+## Overview
+
+A quick fix is an automated code edit that's associated with a diagnostic. The
+intent is to automate the work required to fix the issue being reported. When
+the client asks for quick fixes, server computes the relevant diagnostics based
+on the cursor location. Then, for each diagnostic, it computes one or more
+fixes. The list of computed fixes is then returned to the client.
+
+Through most of this document we'll use a simple example. We'll assume you wrote
+a new lint named `could_be_final` that flags fields that could be marked final
+but aren't, and that you're adding a fix for it. The fix will simply add the
+keyword `final` to the field declaration.
+
+## Describing the fix
+
+Each fix has an instance of the class `FixKind` associated with it. The existing
+fixes for Dart diagnostics are defined in the class `DartFixKind`, fixes for the
+analysis options file are defined in the class `AnalysisOptionsFixKind`, and
+fixes for the pubspec file are in the class `PubspecFixKind`. A fix kind has an
+identifier, a priority, and a message.
+
+The identifier is used by some LSP-based clients to provide user-defined
+shortcuts. It's a hierarchical dot-separated identifier and should follow the
+pattern seen in the existing fix kinds.
+
+The priority is used to order the list of fixes when presented to the user. The
+larger the value the closer to the top of the list it will appear. You should
+use one of the constants defined in `DartFixKindPriority` (typically
+`DartFixKindPriority.DEFAULT`), or add a new constant if there's a need for it.
+
+The message is what will be displayed to the user by the client. This should be
+a sentence fragment (no terminating period) that would be appropriate as a label
+in a menu or on a button. It should describe the change that will be made to the
+user's code.
+
+Create a static field, in the appropriate class, whose value is a `FixKind`
+describing the fix you're implementing. For our example you might define a new
+constant in `DartFixKind` like this:
+
+```dart
+static const ADD_FINAL = FixKind(
+  'dart.fix.add.final',
+  DartFixKindPriority.DEFAULT,
+  "Add 'final' modifier",
+);
+```
+
+## Implementing the fix, part 1
+
+To implement the fix you'll create a subclass of `CorrectionProducer`. The
+existing correction producers are in the directory
+`analysis_server/lib/src/services/correction/dart`, so we'll start by creating
+a file named `add_final.dart` in that directory that contains the following:
+
+```dart
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
+import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
+import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
+
+class AddFinal extends CorrectionProducer {
+  @override
+  FixKind get fixKind => DartFixKind.ADD_FINAL;
+
+  @override
+  Future<void> compute(ChangeBuilder builder) async {
+  }
+
+  /// Return an instance of this class. Used as a tear-off in `FixProcessor`.
+  static AddFinal newInstance() => AddFinal();
+}
+```
+
+The `compute` method is where the fix will be built. We'll come back to it in
+"Implementing the fix, part 2".
+
+The `fixKind` getter is how you associate the fix kind we created earlier with
+the fix produced by the `compute` method.
+
+The static `newInstance` method will be used later in "Registering the fix".
+
+## Testing the fix
+
+Before we look at implementing the `compute` method, we should probably write
+some tests. Even if you don't normally use a test-driven approach to coding, we
+recommend it in this case because writing the tests can help you think of corner
+cases that the implementation will need to handle. The corresponding tests are
+in the directory `analysis_server/test/src/services/correction/fix`, so we'll
+create a file named `add_final_test.dart` that contains the following:
+
+```dart
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analysis_server/src/services/linter/lint_names.dart';
+import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import 'fix_processor.dart';
+
+void main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(AddFinalTest);
+  });
+}
+
+@reflectiveTest
+class AddFinalTest extends FixProcessorLintTest {
+  @override
+  FixKind get kind => DartFixKind.ADD_FINAL;
+
+  @override
+  String get lintCode => LintNames.could_be_final;
+}
+```
+
+These two getters tell the test framework to enable the lint being fixed and to
+expect a fix of the expected kind.
+
+The test can then be written in a method that looks something like this:
+
+```dart
+Future<void> test_withType() async {
+  await resolveTestCode('''
+class C {
+  String name;
+
+  C(this.name);
+}
+''');
+  await assertHasFix('''
+class C {
+  final String name;
+
+  C(this.name);
+}
+''');
+}
+```
+
+The test framework will create a file containing the first piece of code, run
+the lint over the code, use our correction producer to build a fix, apply the
+fix to the file, and textually compare the results with the second piece of
+code.
+
+## Registering the fix
+
+Before we can run the test, we need to register the correction producer so that
+it can be run.
+
+The list of fixes is computed by a `FixProcessor`. For each diagnostic passed
+to it, it will look up the diagnostic in a table to get a list of the correction
+producers it can use to produce fixes. There are three tables:
+
+- The `lintProducerMap` is used for fixes related to lint rules. The table is
+  keyed by the name of the lint to which the fix applies.
+
+- The `nonLintProducerMap` is used for all other fixes. The table is keyed by
+  the `ErrorCode` associated with the diagnostic.
+
+- The `nonLintMultiProducerMap` is used for multi-producers, which are
+  described below in "Multi-fix producers".
+
+Actually, the tables contain lists of functions used to create the producers. We
+do that so that producers can't accidentally carry state over from one use to
+the next. These functions are usually a tear-off of the static method you
+defined in "Implementing the fix, part 1".
+
+The last step is to add your correction producer to the appropriate map. If
+you're adding a fix for a lint, then you'd add an entry like
+
+```dart
+LintNames.could_be_final: [
+  AddFinal.newInstance,
+],
+```
+
+At this point you should be able to run the test and see it failing.
+
+## Implementing the fix, part 2
+
+We're now at a point where we can finish the implementation of the fix by
+implementing the `compute` method.
+
+The correction producer has access to most of the information you should need in
+order to write the fix. The change builder passed to `compute` is how you
+construct the fix that will be sent back to the client.
+
+The first step in the implementation of any fix is to find the location in the
+AST where the diagnostic was reported and verify that all of the conditions on
+which the fix is predicated are valid. Assuming that the lint has been written
+and tested correctly, there's no need to test that the conditions that caused
+the lint rule to generate a diagnostic are still true. However, sometimes there
+are additional constraints that need to be satisfied before the fix can safely
+be applied. For example, for our fix, where we're only going to add a keyword,
+we'll need to ensure that there's only one field that would be impacted by the
+change, otherwise we might introduce more problems than there were before the
+fix.
+
+Of course, sometimes you'll end up duplicating some of the work done by the lint
+in the course of getting the information you need from the AST. While that's
+less than optimal, there isn't any mechanism for passing information from the
+diagnostic to the fix, so sometimes it just can't be avoided.
+
+For this example we're going to assume that the lint highlights the name of the
+field that could have been final. Finding the AST node is easy because it's done
+for you by the fix processor before `compute` is invoked. All you have to do is
+use the getter `node` to find the node at the offset of the lint's highlight
+region. We're expecting it to be the name of a field, so that's how we'll name
+the variable:
+
+```dart
+@override
+Future<void> compute(ChangeBuilder builder) async {
+  var fieldName = node;
+}
+```
+
+Then we need to verify that this node really is an identifier as expected:
+
+```dart
+@override
+Future<void> compute(ChangeBuilder builder) async {
+  var fieldName = node;
+  if (fieldName is! SimpleIdentifier) {
+    return;
+  }
+}
+```
+
+If it isn't, then we'll return. Because we haven't used the builder to create a
+fix, returning now means that no fix from this producer will be sent to the
+client.
+
+Simple identifiers appear in lots of places, so to be extra sure we have what
+we're looking for we'll also make sure that
+- the identifier is the name being declared by a variable declaration,
+- the variable declaration is in a list of variables in a field declaration, and
+- there's only one field being declared.
+
+```dart
+@override
+Future<void> compute(ChangeBuilder builder) async {
+  var fieldName = node;
+  if (fieldName is! SimpleIdentifier) {
+    return;
+  }
+  var field = fieldName.parent;
+  if (field is! VariableDeclaration || field.name != fieldName) {
+    return;
+  }
+  var fieldList = field.parent;
+  if (fieldList is! VariableDeclarationList ||
+          fieldList.variables.length > 1 ||
+          fieldList.parent is! FieldDeclaration) {
+    return;
+  }
+}
+```
+
+After all those checks we now know that the `fieldName` really is the name of a
+field and that there are no other fields that would be impacted by marking the
+list of fields with `final`.
+
+We're now ready to create the actual fix. To do that we're going to use the
+`ChangeBuilder` passed to the `compute` method. In the example below we'll
+introduce a couple of the methods on `ChangeBuilder`, but for more information
+you can read [Creating `SourceChange`s](https://github.com/dart-lang/sdk/blob/master/pkg/analyzer_plugin/doc/tutorial/creating_edits.md).
+
+Fields can be declared with either `final`, `const`, `var`, or a type
+annotation, and the change that needs to be made depends on how the field was
+declared. To figure that out we'll make use of the fact that the first three
+tokens are all accessible from the AST by using the getter `keyword`. If there
+is no keyword, then we can safely insert `final `, but if `var` was used then it
+has to be replaced. And, of course, if it's already `final` or `const` then we
+shouldn't do anything (and presumably the lint rule wouldn't have produced a
+lint).
+
+```dart
+@override
+Future<void> compute(ChangeBuilder builder) async {
+  var fieldName = node;
+  if (fieldName is! SimpleIdentifier) {
+    return;
+  }
+  var field = fieldName.parent;
+  if (field is! VariableDeclaration || field.name != fieldName) {
+    return;
+  }
+  var fieldList = field.parent;
+  if (fieldList is! VariableDeclarationList ||
+          fieldList.variables.length > 1 ||
+          fieldList.parent is! FieldDeclaration) {
+    return;
+  }
+  var keyword = fieldList.keyword;
+  if (keyword == null) {
+    await builder.addDartFileEdit(file, (builder) {
+      builder.addSimpleInsertion(fieldList.offset, 'final ');
+    });
+  } else if (keyword.type == Keyword.VAR) {
+    await builder.addDartFileEdit(file, (builder) {
+      builder.addSimpleReplacement(range.token(keyword), 'final');
+    });
+  }
+}
+```
+
+In both cases we're using `addDartFileEdit` to create an edit in a `.dart` file.
+If we only need to insert the keyword, then we'll use `addSimpleInsertion` to do
+the insertion, but if we need to replace the existing keyword, then we'll use
+`addSimpleReplacement` to do the replacement.
+
+We don't have a test case for the branch where the keyword `var` is used. We'll
+leave adding such a test as an exercise for the reader.
+
+In this example we're just adding a single keyword, so we're avoiding any need
+to worry about formatting. As a general principle we don't attempt to format the
+code after it's been modified, but we do make an effort to leave the code in a
+reasonably readable state. There's a getter (`eol`) that you can use to get the
+end-of-line marker that should be used in the file, and there's another getter
+(`utils`) that will return an object with several utility methods that help with
+things like getting the right indentation for nested code.
+
+If we were adding a fix for a non-lint diagnostic, then there would be a couple
+of minor differences. First, we'd register the correction producer using the
+diagnostic's error code. Second, the test class would be a subclass of
+`FixProcessorTest` and wouldn't specify the name of the lint.
+
+## Multi-fix producers
+
+We skipped over the map named `nonLintMultiProducerMap` earlier, promising that
+we'd return to it later. You'll probably never have a need for it, but in case
+you do this section will hopefully tell you what you need to know.
+
+There's a subclass of `CorrectionProducer` named `MultiCorrectionProducer` and
+this map is how you register one of them. That class exists for rare cases where
+you need to use a single correction producer to produce multiple fixes. This is
+generally only needed when you can't know in advance the maximum number of
+fixes that might need to be produced. For example, if there is an undefined
+identifier and it might be possible to add an import to fix the problem, there's
+no way to know in advance how many different libraries might define the name.
+
+If you are able to enumerate the possible fixes ahead of time, then you're
+better off to create one subclass of `CorrectionProducer` for each of the fixes.
+For example, taking the case of an undefined identifier again, another way to
+fix the problem is to add a declaration of the name. There are a finite number
+of kinds of declarations a user might want: class, mixin, variable, etc. Even
+though some of the declarations might not make sense because of how the
+identifier is being used, it's better to have a separate correction producer for
+each kind of declaration and have each one determine whether to generate a fix.
+
+And, we don't currently have support for associating a `MultiCorrectionProducer`
+with a lint, so if you're writing fixes for a lint then this option isn't
+available to you.
diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart
index 44ea8bb..9968a05 100644
--- a/pkg/analyzer/lib/src/fasta/ast_builder.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart
@@ -36,6 +36,7 @@
     show
         Assert,
         BlockKind,
+        ConstructorReferenceContext,
         DeclarationKind,
         FormalParameterKind,
         IdentifierContext,
@@ -1099,8 +1100,8 @@
   }
 
   @override
-  void endConstructorReference(
-      Token start, Token? periodBeforeName, Token endToken) {
+  void endConstructorReference(Token start, Token? periodBeforeName,
+      Token endToken, ConstructorReferenceContext constructorReferenceContext) {
     assert(optionalOrNull('.', periodBeforeName));
     debugEvent("ConstructorReference");
 
diff --git a/pkg/analyzer/test/generated/parser_fasta_listener.dart b/pkg/analyzer/test/generated/parser_fasta_listener.dart
index c2509ed..48ea92e 100644
--- a/pkg/analyzer/test/generated/parser_fasta_listener.dart
+++ b/pkg/analyzer/test/generated/parser_fasta_listener.dart
@@ -702,10 +702,11 @@
   }
 
   @override
-  void endConstructorReference(
-      Token start, Token? periodBeforeName, Token endToken) {
+  void endConstructorReference(Token start, Token? periodBeforeName,
+      Token endToken, ConstructorReferenceContext constructorReferenceContext) {
     end('ConstructorReference');
-    super.endConstructorReference(start, periodBeforeName, endToken);
+    super.endConstructorReference(
+        start, periodBeforeName, endToken, constructorReferenceContext);
   }
 
   @override
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 71bb73f..c18ba24 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -12,6 +12,7 @@
     show
         Assert,
         BlockKind,
+        ConstructorReferenceContext,
         FormalParameterKind,
         IdentifierContext,
         MemberKind,
@@ -127,6 +128,8 @@
 
 import 'constness.dart' show Constness;
 
+import 'constructor_tearoff_lowering.dart';
+
 import 'expression_generator.dart';
 
 import 'expression_generator_helper.dart';
@@ -140,8 +143,7 @@
         RedirectingFactoryBody,
         RedirectionTarget,
         getRedirectingFactoryBody,
-        getRedirectionTarget,
-        isRedirectingFactory;
+        getRedirectionTarget;
 
 import 'type_algorithms.dart' show calculateBounds;
 
@@ -303,7 +305,7 @@
 
   Scope? switchScope;
 
-  CloneVisitorNotMembers? cloner;
+  late _BodyBuilderCloner _cloner = new _BodyBuilderCloner(this);
 
   ConstantContext constantContext = ConstantContext.none;
 
@@ -319,26 +321,25 @@
 
   /// List of built redirecting factory invocations.  The targets of the
   /// invocations are to be resolved in a separate step.
-  final List<StaticInvocation> redirectingFactoryInvocations =
-      <StaticInvocation>[];
+  final List<FactoryConstructorInvocation> redirectingFactoryInvocations =
+      <FactoryConstructorInvocation>[];
 
   /// List of redirecting factory invocations delayed for resolution.
   ///
   /// A resolution of a redirecting factory invocation can be delayed because
   /// the inference in the declaration of the redirecting factory isn't done
   /// yet.
-  final List<StaticInvocation> delayedRedirectingFactoryInvocations =
-      <StaticInvocation>[];
+  final List<FactoryConstructorInvocation>
+      delayedRedirectingFactoryInvocations = <FactoryConstructorInvocation>[];
 
   /// List of built type aliased generative constructor invocations that
   /// require unaliasing.
-  final List<TypeAliasedConstructorInvocationJudgment>
+  final List<TypeAliasedConstructorInvocation>
       typeAliasedConstructorInvocations = [];
 
   /// List of built type aliased factory constructor invocations that require
   /// unaliasing.
-  final List<TypeAliasedFactoryInvocationJudgment>
-      typeAliasedFactoryInvocations = [];
+  final List<TypeAliasedFactoryInvocation> typeAliasedFactoryInvocations = [];
 
   /// Variables with metadata.  Their types need to be inferred late, for
   /// example, in [finishFunction].
@@ -648,13 +649,37 @@
     debugEvent("beginMetadata");
     super.push(constantContext);
     constantContext = ConstantContext.inferred;
+    assert(checkState(token, [ValueKinds.ConstantContext]));
   }
 
   @override
   void endMetadata(Token beginToken, Token? periodBeforeName, Token endToken) {
+    assert(checkState(beginToken, [
+      /*arguments*/ ValueKinds.ArgumentsOrNull,
+      /*suffix*/ if (periodBeforeName != null)
+        unionOfKinds([ValueKinds.Identifier, ValueKinds.ParserRecovery]),
+      /*type arguments*/ ValueKinds.TypeArgumentsOrNull,
+      /*type*/ unionOfKinds([
+        ValueKinds.Generator,
+        ValueKinds.QualifiedName,
+        ValueKinds.ProblemBuilder,
+        ValueKinds.ParserRecovery
+      ])
+    ]));
     debugEvent("Metadata");
     Arguments? arguments = pop() as Arguments?;
-    pushQualifiedReference(beginToken.next!, periodBeforeName);
+    pushQualifiedReference(
+        beginToken.next!, periodBeforeName, ConstructorReferenceContext.Const);
+    assert(checkState(beginToken, [
+      /*constructor name identifier*/ ValueKinds.IdentifierOrNull,
+      /*constructor name*/ ValueKinds.Name,
+      /*type arguments*/ ValueKinds.TypeArgumentsOrNull,
+      /*class*/ unionOfKinds([
+        ValueKinds.Generator,
+        ValueKinds.ProblemBuilder,
+        ValueKinds.ParserRecovery
+      ]),
+    ]));
     if (arguments != null) {
       push(arguments);
       _buildConstructorReferenceInvocation(
@@ -698,10 +723,12 @@
       }
       constantContext = savedConstantContext;
     }
+    assert(checkState(beginToken, [ValueKinds.Expression]));
   }
 
   @override
   void endMetadataStar(int count) {
+    assert(checkState(null, repeatedKinds(ValueKinds.Expression, count)));
     debugEvent("MetadataStar");
     if (count == 0) {
       push(NullValue.Metadata);
@@ -710,6 +737,7 @@
               .popNonNullable(stack, count, dummyExpression) ??
           NullValue.Metadata /* Ignore parser recovery */);
     }
+    assert(checkState(null, [ValueKinds.AnnotationListOrNull]));
   }
 
   @override
@@ -731,6 +759,7 @@
       }
     }
     push(count);
+    assert(checkState(beginToken, [ValueKinds.Integer]));
   }
 
   @override
@@ -757,14 +786,20 @@
       }
     }
     push(count);
+    assert(checkState(beginToken, [ValueKinds.Integer]));
   }
 
   @override
   void finishFields() {
     debugEvent("finishFields");
+    assert(checkState(null, [/*field count*/ ValueKinds.Integer]));
     int count = pop() as int;
     List<FieldBuilder> fields = <FieldBuilder>[];
     for (int i = 0; i < count; i++) {
+      assert(checkState(null, [
+        ValueKinds.FieldInitializerOrNull,
+        ValueKinds.Identifier,
+      ]));
       Expression? initializer = pop() as Expression?;
       Identifier identifier = pop() as Identifier;
       String name = identifier.name;
@@ -812,6 +847,8 @@
         fieldBuilder.buildBody(coreTypes, null);
       }
     }
+    assert(checkState(
+        null, [ValueKinds.TypeOrNull, ValueKinds.AnnotationListOrNull]));
     {
       // TODO(ahe): The type we compute here may be different from what is
       // computed in the outline phase. We should make sure that the outline
@@ -829,6 +866,7 @@
 
     resolveRedirectingFactoryTargets();
     finishVariableMetadata();
+    assert(stack.length == 0);
   }
 
   @override
@@ -847,6 +885,7 @@
       exitLocalScope();
       push(block);
     }
+    assert(checkState(closeBrace, [ValueKinds.StatementOrNull]));
   }
 
   void prepareInitializers() {
@@ -918,6 +957,14 @@
 
   @override
   void endInitializer(Token token) {
+    assert(checkState(token, [
+      unionOfKinds([
+        ValueKinds.Initializer,
+        ValueKinds.Generator,
+        ValueKinds.Expression,
+      ])
+    ]));
+
     debugEvent("endInitializer");
     inFieldInitializer = false;
     assert(!inInitializer);
@@ -1012,8 +1059,8 @@
           VariableDeclaration? tearOffParameter =
               builder.getTearOffParameter(i);
           if (tearOffParameter != null) {
-            cloner ??= new CloneVisitorNotMembers();
-            Expression tearOffInitializer = cloner!.clone(initializer!);
+            Expression tearOffInitializer =
+                _cloner.cloneInContext(initializer!);
             tearOffParameter.initializer = tearOffInitializer
               ..parent = tearOffParameter;
             libraryBuilder.loader.transformPostInference(
@@ -1264,9 +1311,13 @@
   }
 
   void _resolveRedirectingFactoryTargets(
-      List<StaticInvocation> redirectingFactoryInvocations,
-      List<StaticInvocation>? delayedRedirectingFactoryInvocations) {
-    for (StaticInvocation invocation in redirectingFactoryInvocations) {
+      List<FactoryConstructorInvocation> redirectingFactoryInvocations,
+      List<FactoryConstructorInvocation>?
+          delayedRedirectingFactoryInvocations) {
+    List<FactoryConstructorInvocation> invocations =
+        redirectingFactoryInvocations.toList();
+    redirectingFactoryInvocations.clear();
+    for (FactoryConstructorInvocation invocation in invocations) {
       // If the invocation was invalid, it or its parent has already been
       // desugared into an exception throwing expression.  There is nothing to
       // resolve anymore.  Note that in the case where the invocation's parent
@@ -1276,8 +1327,7 @@
       if (invocation.parent == null) continue;
       // ignore: unnecessary_null_comparison
       if (typeInferrer != null) {
-        if (invocation is FactoryConstructorInvocationJudgment &&
-            !invocation.hasBeenInferred) {
+        if (!invocation.hasBeenInferred) {
           continue;
         }
       } else {
@@ -1298,11 +1348,10 @@
         invocation.replaceWith(replacement);
       }
     }
-    redirectingFactoryInvocations.clear();
   }
 
   void _unaliasTypeAliasedConstructorInvocations() {
-    for (TypeAliasedConstructorInvocationJudgment invocation
+    for (TypeAliasedConstructorInvocation invocation
         in typeAliasedConstructorInvocations) {
       bool inferred = !hasExplicitTypeArguments(invocation.arguments);
       DartType aliasedType = new TypedefType(
@@ -1328,7 +1377,7 @@
   }
 
   void _unaliasTypeAliasedFactoryInvocations() {
-    for (TypeAliasedFactoryInvocationJudgment invocation
+    for (TypeAliasedFactoryInvocation invocation
         in typeAliasedFactoryInvocations) {
       bool inferred = !hasExplicitTypeArguments(invocation.arguments);
       DartType aliasedType = new TypedefType(
@@ -1402,10 +1451,9 @@
         List<Expression> annotations = variables.first.annotations;
         inferAnnotations(variables.first, annotations);
         for (int i = 1; i < variables.length; i++) {
-          cloner ??= new CloneVisitorNotMembers();
           VariableDeclaration variable = variables[i];
           for (int i = 0; i < annotations.length; i++) {
-            variable.addAnnotation(cloner!.clone(annotations[i]));
+            variable.addAnnotation(_cloner.cloneInContext(annotations[i]));
           }
         }
       }
@@ -1414,6 +1462,7 @@
 
   @override
   List<Expression> finishMetadata(Annotatable? parent) {
+    assert(checkState(null, [ValueKinds.AnnotationList]));
     List<Expression> expressions = pop() as List<Expression>;
     inferAnnotations(parent, expressions);
 
@@ -1465,10 +1514,17 @@
         new FormalParameters(formals, fileOffset, noLength, uri)
             .computeFormalParameterScope(scope, member, this));
 
-    token = parser.parseExpression(parser.syntheticPreviousToken(token));
+    Token endToken =
+        parser.parseExpression(parser.syntheticPreviousToken(token));
 
+    assert(checkState(token, [
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+      ])
+    ]));
     Expression expression = popForValue();
-    Token eof = token.next!;
+    Token eof = endToken.next!;
 
     if (!eof.isEof) {
       expression = wrapInLocatedProblem(
@@ -1514,18 +1570,27 @@
   Expression parseFieldInitializer(Token token) {
     Parser parser = new Parser(this,
         useImplicitCreationExpression: useImplicitCreationExpressionInCfe);
-    token = parser.parseExpression(parser.syntheticPreviousToken(token));
+    Token endToken =
+        parser.parseExpression(parser.syntheticPreviousToken(token));
+    assert(checkState(token, [
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+        ValueKinds.ProblemBuilder,
+      ])
+    ]));
     Expression expression = popForValue();
-    checkEmpty(token.charOffset);
+    checkEmpty(endToken.charOffset);
     return expression;
   }
 
   Expression parseAnnotation(Token token) {
     Parser parser = new Parser(this,
         useImplicitCreationExpression: useImplicitCreationExpressionInCfe);
-    token = parser.parseMetadata(parser.syntheticPreviousToken(token));
+    Token endToken = parser.parseMetadata(parser.syntheticPreviousToken(token));
+    assert(checkState(token, [ValueKinds.Expression]));
     Expression annotation = pop() as Expression;
-    checkEmpty(token.charOffset);
+    checkEmpty(endToken.charOffset);
     return annotation;
   }
 
@@ -1600,6 +1665,13 @@
 
   @override
   void handleExpressionStatement(Token token) {
+    assert(checkState(token, [
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+        ValueKinds.ProblemBuilder,
+      ]),
+    ]));
     debugEvent("ExpressionStatement");
     push(forest.createExpressionStatement(
         offsetForToken(token), popForEffect()));
@@ -1645,16 +1717,32 @@
       push(forest.createArguments(
           beginToken.offset, new List<Expression>.from(arguments)));
     }
+    assert(checkState(beginToken, [ValueKinds.Arguments]));
   }
 
   @override
   void handleParenthesizedCondition(Token token) {
+    assert(checkState(token, [
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+        ValueKinds.ProblemBuilder,
+      ]),
+    ]));
     debugEvent("ParenthesizedCondition");
     push(popForValue());
+    assert(checkState(token, [ValueKinds.Expression]));
   }
 
   @override
   void handleParenthesizedExpression(Token token) {
+    assert(checkState(token, [
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+        ValueKinds.ProblemBuilder,
+      ]),
+    ]));
     debugEvent("ParenthesizedExpression");
     Expression value = popForValue();
     if (value is ShadowLargeIntLiteral) {
@@ -1670,6 +1758,12 @@
     } else {
       push(new ParenthesizedExpressionGenerator(this, token.endGroup!, value));
     }
+    assert(checkState(token, [
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+      ]),
+    ]));
   }
 
   @override
@@ -1752,6 +1846,12 @@
 
   @override
   void beginCascade(Token token) {
+    assert(checkState(token, [
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+      ]),
+    ]));
     debugEvent("beginCascade");
     Expression expression = popForValue();
     if (expression is Cascade) {
@@ -1770,10 +1870,24 @@
       push(_createReadOnlyVariableAccess(variable, token, expression.fileOffset,
           null, ReadOnlyAccessKind.LetVariable));
     }
+    assert(checkState(token, [
+      ValueKinds.Generator,
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+      ]),
+    ]));
   }
 
   @override
   void endCascade() {
+    assert(checkState(null, [
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+      ]),
+      ValueKinds.Expression,
+    ]));
     debugEvent("endCascade");
     Expression expression = popForEffect();
     Cascade cascadeReceiver = pop() as Cascade;
@@ -1786,18 +1900,35 @@
     debugEvent("beginCaseExpression");
     super.push(constantContext);
     constantContext = ConstantContext.inferred;
+    assert(checkState(caseKeyword, [ValueKinds.ConstantContext]));
   }
 
   @override
   void endCaseExpression(Token colon) {
+    assert(checkState(colon, [
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+        ValueKinds.ProblemBuilder,
+      ]),
+      ValueKinds.ConstantContext,
+    ]));
     debugEvent("endCaseExpression");
     Expression expression = popForValue();
     constantContext = pop() as ConstantContext;
     super.push(expression);
+    assert(checkState(colon, [ValueKinds.Expression]));
   }
 
   @override
   void beginBinaryExpression(Token token) {
+    assert(checkState(token, [
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+        ValueKinds.ProblemBuilder,
+      ]),
+    ]));
     bool isAnd = optional("&&", token);
     if (isAnd || optional("||", token)) {
       Expression lhs = popForValue();
@@ -1808,10 +1939,24 @@
       }
       push(lhs);
     }
+    assert(checkState(token, [
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+        ValueKinds.ProblemBuilder,
+      ]),
+    ]));
   }
 
   @override
   void endBinaryExpression(Token token) {
+    assert(checkState(token, [
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+        ValueKinds.ProblemBuilder,
+      ]),
+    ]));
     debugEvent("BinaryExpression");
     if (optional(".", token) ||
         optional("..", token) ||
@@ -1826,6 +1971,13 @@
     } else {
       doBinaryExpression(token);
     }
+    assert(checkState(token, [
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+        ValueKinds.Initializer,
+      ]),
+    ]));
   }
 
   void doBinaryExpression(Token token) {
@@ -1881,10 +2033,25 @@
         push(forest.createBinary(fileOffset, left as Expression, name, right));
       }
     }
+    assert(checkState(token, <ValueKind>[
+      ValueKinds.Expression,
+    ]));
   }
 
   /// Handle `a && b` and `a || b`.
   void doLogicalExpression(Token token) {
+    assert(checkState(token, <ValueKind>[
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+        ValueKinds.ProblemBuilder,
+      ]),
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+        ValueKinds.ProblemBuilder,
+      ]),
+    ]));
     Expression argument = popForValue();
     Expression receiver = pop() as Expression;
     Expression logicalExpression = forest.createLogicalExpression(
@@ -1895,17 +2062,47 @@
       // [beginBinaryExpression].
       typeInferrer.assignedVariables.endNode(logicalExpression);
     }
+    assert(checkState(token, <ValueKind>[
+      ValueKinds.Expression,
+    ]));
   }
 
   /// Handle `a ?? b`.
   void doIfNull(Token token) {
+    assert(checkState(token, <ValueKind>[
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+        ValueKinds.ProblemBuilder,
+      ]),
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+        ValueKinds.ProblemBuilder,
+      ]),
+    ]));
     Expression b = popForValue();
     Expression a = popForValue();
     push(new IfNullExpression(a, b)..fileOffset = offsetForToken(token));
+    assert(checkState(token, <ValueKind>[
+      ValueKinds.Expression,
+    ]));
   }
 
   /// Handle `a?.b(...)`.
   void doIfNotNull(Token token) {
+    assert(checkState(token, <ValueKind>[
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+      ]),
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+        ValueKinds.ProblemBuilder,
+        ValueKinds.Initializer,
+      ]),
+    ]));
     Object? send = pop();
     if (send is IncompleteSendGenerator) {
       push(send.withReceiver(pop(), token.charOffset, isNullAware: true));
@@ -1915,11 +2112,32 @@
       push(buildProblem(fasta.templateExpectedIdentifier.withArguments(token),
           offsetForToken(token), lengthForToken(token)));
     }
+    assert(checkState(token, <ValueKind>[
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+        ValueKinds.Initializer,
+      ]),
+    ]));
   }
 
   void doDotOrCascadeExpression(Token token) {
+    assert(checkState(token, <ValueKind>[
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+      ]),
+    ]));
     Object? send = pop();
     if (send is IncompleteSendGenerator) {
+      assert(checkState(token, <ValueKind>[
+        unionOfKinds([
+          ValueKinds.Expression,
+          ValueKinds.Generator,
+          ValueKinds.ProblemBuilder,
+          ValueKinds.Initializer,
+        ]),
+      ]));
       Object? receiver = optional(".", token) ? pop() : popForValue();
       push(send.withReceiver(receiver, token.charOffset));
     } else {
@@ -1928,6 +2146,13 @@
       push(buildProblem(fasta.templateExpectedIdentifier.withArguments(token),
           offsetForToken(token), lengthForToken(token)));
     }
+    assert(checkState(token, <ValueKind>[
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+        ValueKinds.Initializer,
+      ]),
+    ]));
   }
 
   bool areArgumentsCompatible(FunctionNode function, Arguments arguments) {
@@ -2122,28 +2347,37 @@
       // This deals with this kind of initializer: `C(a) : a = a;`
       Scope scope = inInitializer ? enclosingScope : this.scope;
       push(scopeLookup(scope, name, token));
-      return;
-    } else if (context.inDeclaration) {
-      if (context == IdentifierContext.topLevelVariableDeclaration ||
-          context == IdentifierContext.fieldDeclaration) {
-        constantContext = member.isConst
-            ? ConstantContext.inferred
-            : !member.isStatic &&
-                    classBuilder != null &&
-                    classBuilder!.declaresConstConstructor
-                ? ConstantContext.required
-                : ConstantContext.none;
-      }
-    } else if (constantContext != ConstantContext.none &&
-        !context.allowedInConstantExpression) {
-      addProblem(
-          fasta.messageNotAConstantExpression, token.charOffset, token.length);
-    }
-    if (token.isSynthetic) {
-      push(new ParserRecovery(offsetForToken(token)));
     } else {
-      push(new Identifier(token));
+      if (context.inDeclaration) {
+        if (context == IdentifierContext.topLevelVariableDeclaration ||
+            context == IdentifierContext.fieldDeclaration) {
+          constantContext = member.isConst
+              ? ConstantContext.inferred
+              : !member.isStatic &&
+                      classBuilder != null &&
+                      classBuilder!.declaresConstConstructor
+                  ? ConstantContext.required
+                  : ConstantContext.none;
+        }
+      } else if (constantContext != ConstantContext.none &&
+          !context.allowedInConstantExpression) {
+        addProblem(fasta.messageNotAConstantExpression, token.charOffset,
+            token.length);
+      }
+      if (token.isSynthetic) {
+        push(new ParserRecovery(offsetForToken(token)));
+      } else {
+        push(new Identifier(token));
+      }
     }
+    assert(checkState(token, [
+      unionOfKinds([
+        ValueKinds.Identifier,
+        ValueKinds.Generator,
+        ValueKinds.ParserRecovery,
+        ValueKinds.ProblemBuilder,
+      ]),
+    ]));
   }
 
   /// Helper method to create a [VariableGet] of the [variable] using
@@ -4091,10 +4325,11 @@
   }
 
   @override
-  void endConstructorReference(
-      Token start, Token? periodBeforeName, Token endToken) {
+  void endConstructorReference(Token start, Token? periodBeforeName,
+      Token endToken, ConstructorReferenceContext constructorReferenceContext) {
     debugEvent("ConstructorReference");
-    pushQualifiedReference(start, periodBeforeName);
+    pushQualifiedReference(
+        start, periodBeforeName, constructorReferenceContext);
   }
 
   /// A qualified reference is something that matches one of:
@@ -4130,7 +4365,8 @@
   /// stack and pushes 3 values: a generator (the type in a constructor
   /// reference, or an expression in metadata), a list of type arguments, and a
   /// name.
-  void pushQualifiedReference(Token start, Token? periodBeforeName) {
+  void pushQualifiedReference(Token start, Token? periodBeforeName,
+      ConstructorReferenceContext constructorReferenceContext) {
     assert(checkState(start, [
       /*suffix*/ if (periodBeforeName != null)
         unionOfKinds([ValueKinds.Identifier, ValueKinds.ParserRecovery]),
@@ -4140,7 +4376,7 @@
         ValueKinds.QualifiedName,
         ValueKinds.ProblemBuilder,
         ValueKinds.ParserRecovery
-      ])
+      ]),
     ]));
     Object? suffixObject = popIfNotNull(periodBeforeName);
     Identifier? suffix;
@@ -4165,7 +4401,7 @@
           start,
           unionOfKinds([ValueKinds.Generator, ValueKinds.ProblemBuilder]),
           qualifier));
-      if (qualifier is TypeUseGenerator) {
+      if (qualifier is TypeUseGenerator && suffix == null) {
         type = qualifier;
         if (typeArguments != null) {
           // TODO(ahe): Point to the type arguments instead.
@@ -4173,7 +4409,16 @@
               identifier.charOffset, identifier.name.length);
         }
       } else if (qualifier is Generator) {
-        type = qualifier.qualifiedLookup(identifier.token);
+        if (constructorReferenceContext !=
+            ConstructorReferenceContext.Implicit) {
+          type = qualifier.qualifiedLookup(qualified.token);
+        } else {
+          type = qualifier.buildPropertyAccess(
+              new IncompletePropertyAccessGenerator(this, qualified.token,
+                  new Name(qualified.name, libraryBuilder.nameOrigin)),
+              qualified.token.charOffset,
+              false);
+        }
         identifier = null;
       } else if (qualifier is ProblemBuilder) {
         type = qualifier;
@@ -4192,6 +4437,9 @@
     } else {
       name = "";
     }
+
+    // TODO(johnniwinther): Provide sufficient offsets for pointing correctly
+    //  to prefix, class name and suffix.
     push(type);
     push(typeArguments ?? NullValue.TypeArguments);
     push(name);
@@ -4204,7 +4452,8 @@
       /*class*/ unionOfKinds([
         ValueKinds.Generator,
         ValueKinds.ProblemBuilder,
-        ValueKinds.ParserRecovery
+        ValueKinds.ParserRecovery,
+        ValueKinds.Expression,
       ]),
     ]));
   }
@@ -4248,8 +4497,8 @@
         libraryBuilder.checkBoundsInConstructorInvocation(
             node, typeEnvironment, uri);
       } else {
-        TypeAliasedConstructorInvocationJudgment constructorInvocation =
-            node = new TypeAliasedConstructorInvocationJudgment(
+        TypeAliasedConstructorInvocation constructorInvocation =
+            node = new TypeAliasedConstructorInvocation(
                 typeAliasBuilder, target, arguments,
                 isConst: isConst)
               ..fileOffset = charOffset;
@@ -4271,15 +4520,18 @@
         }
         StaticInvocation node;
         if (typeAliasBuilder == null) {
-          node = new FactoryConstructorInvocationJudgment(target, arguments,
-              isConst: isConst)
-            ..fileOffset = charOffset;
+          FactoryConstructorInvocation factoryInvocation =
+              new FactoryConstructorInvocation(target, arguments,
+                  isConst: isConst)
+                ..fileOffset = charOffset;
           libraryBuilder.checkBoundsInFactoryInvocation(
-              node, typeEnvironment, uri,
+              factoryInvocation, typeEnvironment, uri,
               inferred: !hasExplicitTypeArguments(arguments));
+          redirectingFactoryInvocations.add(factoryInvocation);
+          node = factoryInvocation;
         } else {
-          TypeAliasedFactoryInvocationJudgment constructorInvocation =
-              new TypeAliasedFactoryInvocationJudgment(
+          TypeAliasedFactoryInvocation constructorInvocation =
+              new TypeAliasedFactoryInvocation(
                   typeAliasBuilder, target, arguments,
                   isConst: isConst)
                 ..fileOffset = charOffset;
@@ -4519,8 +4771,10 @@
       /*class*/ unionOfKinds([
         ValueKinds.Generator,
         ValueKinds.ProblemBuilder,
-        ValueKinds.ParserRecovery
+        ValueKinds.ParserRecovery,
+        ValueKinds.Expression,
       ]),
+      /*previous constant context*/ ValueKinds.ConstantContext,
     ]));
     Arguments arguments = pop() as Arguments;
     Identifier? nameLastIdentifier = pop(NullValue.Identifier) as Identifier?;
@@ -4543,6 +4797,11 @@
     } else if (type is ParserRecovery) {
       push(new ParserErrorGenerator(
           this, nameToken, fasta.messageSyntheticToken));
+    } else if (type is Expression) {
+      push(createInstantiationAndInvocation(
+          () => type, typeArguments, name, name, arguments,
+          instantiationOffset: offset,
+          invocationOffset: nameLastToken.charOffset));
     } else {
       String? typeName;
       if (type is ProblemBuilder) {
@@ -4553,6 +4812,43 @@
           kind: UnresolvedKind.Constructor));
     }
     constantContext = savedConstantContext;
+    assert(checkState(nameToken, [
+      unionOfKinds([
+        ValueKinds.Expression,
+        ValueKinds.Generator,
+      ])
+    ]));
+  }
+
+  Expression createInstantiationAndInvocation(
+      Expression Function() receiverFunction,
+      List<UnresolvedType>? typeArguments,
+      String className,
+      String constructorName,
+      Arguments arguments,
+      {required int instantiationOffset,
+      required int invocationOffset}) {
+    if (enableConstructorTearOffsInLibrary) {
+      Expression receiver = receiverFunction();
+      if (typeArguments != null) {
+        receiver = forest.createInstantiation(instantiationOffset, receiver,
+            buildDartTypeArguments(typeArguments));
+      }
+      return forest.createMethodInvocation(invocationOffset, receiver,
+          new Name(constructorName, libraryBuilder.nameOrigin), arguments);
+    } else {
+      if (typeArguments != null) {
+        assert(forest.argumentsTypeArguments(arguments).isEmpty);
+        forest.argumentsSetTypeArguments(
+            arguments, buildDartTypeArguments(typeArguments));
+      }
+      return buildUnresolvedError(
+          forest.createNullLiteral(instantiationOffset),
+          constructorNameForDiagnostics(constructorName, className: className),
+          arguments,
+          invocationOffset,
+          kind: UnresolvedKind.Constructor);
+    }
   }
 
   @override
@@ -4803,12 +5099,6 @@
             charOffset: nameToken.charOffset,
             charLength: nameToken.length,
             typeAliasBuilder: typeAliasBuilder as TypeAliasBuilder?);
-
-        if (invocation is StaticInvocation &&
-            isRedirectingFactory(target, helper: this)) {
-          redirectingFactoryInvocations.add(invocation);
-        }
-
         return invocation;
       } else {
         errorName ??= debugName(type.name, name);
@@ -6420,7 +6710,8 @@
       if (operand is Generator) {
         push(operand.applyTypeArguments(
             openAngleBracket.charOffset, typeArguments));
-      } else if (operand is StaticTearOff && operand.target.isFactory ||
+      } else if (operand is StaticTearOff &&
+              (operand.target.isFactory || isTearOffLowering(operand.target)) ||
           operand is ConstructorTearOff ||
           operand is RedirectingFactoryTearOff) {
         push(buildProblem(fasta.messageConstructorTearOffWithTypeArguments,
@@ -7075,3 +7366,52 @@
   VariableDeclaration get variable =>
       (explicitVariableDeclaration ?? syntheticVariableDeclaration)!;
 }
+
+class _BodyBuilderCloner extends CloneVisitorNotMembers {
+  final BodyBuilder bodyBuilder;
+
+  _BodyBuilderCloner(this.bodyBuilder);
+
+  @override
+  visitStaticInvocation(StaticInvocation node) {
+    if (node is FactoryConstructorInvocation) {
+      FactoryConstructorInvocation result = new FactoryConstructorInvocation(
+          node.target, clone(node.arguments),
+          isConst: node.isConst)
+        ..hasBeenInferred = node.hasBeenInferred;
+      bodyBuilder.redirectingFactoryInvocations.add(result);
+      return result;
+    } else if (node is TypeAliasedFactoryInvocation) {
+      TypeAliasedFactoryInvocation result = new TypeAliasedFactoryInvocation(
+          node.typeAliasBuilder, node.target, clone(node.arguments),
+          isConst: node.isConst)
+        ..hasBeenInferred = node.hasBeenInferred;
+      bodyBuilder.typeAliasedFactoryInvocations.add(result);
+      return result;
+    }
+    return super.visitStaticInvocation(node);
+  }
+
+  @override
+  visitConstructorInvocation(ConstructorInvocation node) {
+    if (node is TypeAliasedConstructorInvocation) {
+      TypeAliasedConstructorInvocation result =
+          new TypeAliasedConstructorInvocation(
+              node.typeAliasBuilder, node.target, clone(node.arguments),
+              isConst: node.isConst)
+            ..hasBeenInferred = node.hasBeenInferred;
+      bodyBuilder.typeAliasedConstructorInvocations.add(result);
+      return result;
+    }
+    return super.visitConstructorInvocation(node);
+  }
+
+  @override
+  visitArguments(Arguments node) {
+    if (node is ArgumentsImpl) {
+      return ArgumentsImpl.clone(node, node.positional.map(clone).toList(),
+          node.named.map(clone).toList(), node.types.map(visitType).toList());
+    }
+    return super.visitArguments(node);
+  }
+}
diff --git a/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart b/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart
index 2452d86..ad3885a 100644
--- a/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart
@@ -76,6 +76,19 @@
   return null;
 }
 
+/// Returns `true` if [member] is a lowered constructor, factory or typedef tear
+/// off.
+bool isTearOffLowering(Member member) {
+  return member is Procedure &&
+      (isConstructorTearOffLowering(member) ||
+          isTypedefTearOffLowering(member));
+}
+
+/// Returns `true` if [procedure] is a lowered constructor or factory tear off.
+bool isConstructorTearOffLowering(Procedure procedure) {
+  return extractConstructorNameFromTearOff(procedure.name) != null;
+}
+
 /// Returns `true` if [procedure] is a lowered typedef tear off.
 bool isTypedefTearOffLowering(Procedure procedure) {
   return extractTypedefNameFromTearOff(procedure.name) != null;
diff --git a/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart b/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
index 2e0d7b0..1449f34 100644
--- a/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
@@ -296,18 +296,10 @@
       Token nameToken,
       Token nameLastToken,
       Constness constness) {
-    if (typeArguments != null) {
-      assert(_forest.argumentsTypeArguments(arguments).isEmpty);
-      _forest.argumentsSetTypeArguments(
-          arguments, _helper.buildDartTypeArguments(typeArguments));
-    }
-    return _helper.buildUnresolvedError(
-        _forest.createNullLiteral(fileOffset),
-        _helper.constructorNameForDiagnostics(name,
-            className: _plainNameForRead),
-        arguments,
-        nameToken.charOffset,
-        kind: UnresolvedKind.Constructor);
+    return _helper.createInstantiationAndInvocation(() => buildSimpleRead(),
+        typeArguments, _plainNameForRead, name, arguments,
+        instantiationOffset: fileOffset,
+        invocationOffset: nameLastToken.charOffset);
   }
 
   void printOn(StringSink sink);
diff --git a/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart b/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
index c6be249..70eb4d1 100644
--- a/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
@@ -99,8 +99,7 @@
 
   Expression buildUnresolvedError(
       Expression receiver, String name, Arguments arguments, int charOffset,
-      {
-      Member candidate,
+      {Member candidate,
       bool isSuper,
       required UnresolvedKind kind,
       bool isStatic,
@@ -133,7 +132,7 @@
       Constness constness,
       {bool isTypeArgumentsInForest = false,
       TypeDeclarationBuilder? typeAliasBuilder,
-        required UnresolvedKind unresolvedKind});
+      required UnresolvedKind unresolvedKind});
 
   UnresolvedType validateTypeUse(UnresolvedType unresolved,
       {required bool nonInstanceAccessIsError,
@@ -144,11 +143,9 @@
   Expression buildProblemErrorIfConst(
       Message message, int charOffset, int length);
 
-  Message warnUnresolvedGet(Name name, int charOffset,
-      {bool isSuper: false});
+  Message warnUnresolvedGet(Name name, int charOffset, {bool isSuper: false});
 
-  Message warnUnresolvedSet(Name name, int charOffset,
-      {bool isSuper: false});
+  Message warnUnresolvedSet(Name name, int charOffset, {bool isSuper: false});
 
   Message warnUnresolvedMethod(Name name, int charOffset,
       {bool isSuper: false});
@@ -187,6 +184,30 @@
   void registerVariableAssignment(VariableDeclaration variable);
 
   TypeEnvironment get typeEnvironment;
+
+  /// If explicit instantiations are support in this library, create an
+  /// instantiation of the result of [receiverFunction] using
+  /// [typeArguments] followed by an invocation of [name] with [arguments].
+  /// Otherwise create the errors for the corresponding invalid implicit
+  /// creation expression.
+  ///
+  /// This is used to handle the syntax for implicit creation expression as
+  /// an explicit instantiation with and invocation. For instance
+  ///
+  ///     a.b<c>.d()
+  ///
+  /// The parser treat the as the constructor invocation of constructor `d` on
+  /// class `b` with prefix `a` with type arguments `<c>`, but with explicit
+  /// instantiation it could instead be the explicit instantiation of expression
+  /// `a.b` with type arguments `<c>` followed by and invocation of `d()`.
+  Expression createInstantiationAndInvocation(
+      Expression Function() receiverFunction,
+      List<UnresolvedType>? typeArguments,
+      String className,
+      String constructorName,
+      Arguments arguments,
+      {required int instantiationOffset,
+      required int invocationOffset});
 }
 
 /// Checks that a generic [typedef] for a generic class.
diff --git a/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart b/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
index 3cc531a..b6b2ccb 100644
--- a/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
@@ -403,7 +403,7 @@
           }
         }
       }
-    } else {
+    } else if (operandType is! InvalidType) {
       if (!inferrer.isTopLevel) {
         result = inferrer.helper!.buildProblem(
             templateInstantiationNonGenericFunctionType.withArguments(
@@ -924,8 +924,8 @@
     return const StatementInferenceResult();
   }
 
-  ExpressionInferenceResult visitFactoryConstructorInvocationJudgment(
-      FactoryConstructorInvocationJudgment node, DartType typeContext) {
+  ExpressionInferenceResult visitFactoryConstructorInvocation(
+      FactoryConstructorInvocation node, DartType typeContext) {
     bool hadExplicitTypeArguments = hasExplicitTypeArguments(node.arguments);
 
     FunctionType functionType = node.target.function
@@ -954,8 +954,8 @@
         result.inferredType, result.applyResult(resultNode));
   }
 
-  ExpressionInferenceResult visitTypeAliasedConstructorInvocationJudgment(
-      TypeAliasedConstructorInvocationJudgment node, DartType typeContext) {
+  ExpressionInferenceResult visitTypeAliasedConstructorInvocation(
+      TypeAliasedConstructorInvocation node, DartType typeContext) {
     assert(getExplicitTypeArguments(node.arguments) == null);
     Typedef typedef = node.typeAliasBuilder.typedef;
     FunctionType calleeType = node.target.function
@@ -979,8 +979,8 @@
         result.inferredType, result.applyResult(resultNode));
   }
 
-  ExpressionInferenceResult visitTypeAliasedFactoryInvocationJudgment(
-      TypeAliasedFactoryInvocationJudgment node, DartType typeContext) {
+  ExpressionInferenceResult visitTypeAliasedFactoryInvocation(
+      TypeAliasedFactoryInvocation node, DartType typeContext) {
     assert(getExplicitTypeArguments(node.arguments) == null);
     Typedef typedef = node.typeAliasBuilder.typedef;
     FunctionType calleeType = node.target.function
diff --git a/pkg/front_end/lib/src/fasta/kernel/internal_ast.dart b/pkg/front_end/lib/src/fasta/kernel/internal_ast.dart
index c141da9..658e06a 100644
--- a/pkg/front_end/lib/src/fasta/kernel/internal_ast.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/internal_ast.dart
@@ -487,6 +487,21 @@
 
   int _explicitTypeArgumentCount;
 
+  ArgumentsImpl.internal(
+      {required List<Expression> positional,
+      required List<DartType>? types,
+      required List<NamedExpression>? named,
+      required int extensionTypeParameterCount,
+      required int explicitExtensionTypeArgumentCount,
+      required int? extensionTypeArgumentOffset,
+      required int explicitTypeArgumentCount})
+      : this._extensionTypeParameterCount = extensionTypeParameterCount,
+        this._explicitExtensionTypeArgumentCount =
+            explicitExtensionTypeArgumentCount,
+        this._extensionTypeArgumentOffset = extensionTypeArgumentOffset,
+        this._explicitTypeArgumentCount = explicitTypeArgumentCount,
+        super(positional, types: types, named: named);
+
   ArgumentsImpl(List<Expression> positional,
       {List<DartType>? types, List<NamedExpression>? named})
       : _explicitTypeArgumentCount = types?.length ?? 0,
@@ -519,6 +534,19 @@
               ..addAll(
                   _normalizeTypeArguments(typeParameterCount, typeArguments)));
 
+  static ArgumentsImpl clone(ArgumentsImpl node, List<Expression> positional,
+      List<NamedExpression> named, List<DartType> types) {
+    return new ArgumentsImpl.internal(
+        positional: positional,
+        named: named,
+        types: types,
+        extensionTypeParameterCount: node._extensionTypeParameterCount,
+        explicitExtensionTypeArgumentCount:
+            node._explicitExtensionTypeArgumentCount,
+        explicitTypeArgumentCount: node._explicitTypeArgumentCount,
+        extensionTypeArgumentOffset: node._extensionTypeArgumentOffset);
+  }
+
   static List<DartType> _normalizeTypeArguments(
       int length, List<DartType> arguments) {
     if (arguments.isEmpty && length > 0) {
@@ -729,23 +757,23 @@
 
 /// Shadow object for [StaticInvocation] when the procedure being invoked is a
 /// factory constructor.
-class FactoryConstructorInvocationJudgment extends StaticInvocation
+class FactoryConstructorInvocation extends StaticInvocation
     implements ExpressionJudgment {
   bool hasBeenInferred = false;
 
-  FactoryConstructorInvocationJudgment(Procedure target, Arguments arguments,
+  FactoryConstructorInvocation(Procedure target, Arguments arguments,
       {bool isConst: false})
       : super(target, arguments, isConst: isConst);
 
   @override
   ExpressionInferenceResult acceptInference(
       InferenceVisitor visitor, DartType typeContext) {
-    return visitor.visitFactoryConstructorInvocationJudgment(this, typeContext);
+    return visitor.visitFactoryConstructorInvocation(this, typeContext);
   }
 
   @override
   String toString() {
-    return "FactoryConstructorInvocationJudgment(${toStringInternal()})";
+    return "FactoryConstructorInvocation(${toStringInternal()})";
   }
 
   @override
@@ -767,12 +795,12 @@
 
 /// Shadow object for [ConstructorInvocation] when the procedure being invoked
 /// is a type aliased constructor.
-class TypeAliasedConstructorInvocationJudgment extends ConstructorInvocation
+class TypeAliasedConstructorInvocation extends ConstructorInvocation
     implements ExpressionJudgment {
   bool hasBeenInferred = false;
   final TypeAliasBuilder typeAliasBuilder;
 
-  TypeAliasedConstructorInvocationJudgment(
+  TypeAliasedConstructorInvocation(
       this.typeAliasBuilder, Constructor target, Arguments arguments,
       {bool isConst: false})
       : super(target, arguments, isConst: isConst);
@@ -780,13 +808,12 @@
   @override
   ExpressionInferenceResult acceptInference(
       InferenceVisitor visitor, DartType typeContext) {
-    return visitor.visitTypeAliasedConstructorInvocationJudgment(
-        this, typeContext);
+    return visitor.visitTypeAliasedConstructorInvocation(this, typeContext);
   }
 
   @override
   String toString() {
-    return "TypeAliasedConstructorInvocationJudgment(${toStringInternal()})";
+    return "TypeAliasedConstructorInvocation(${toStringInternal()})";
   }
 
   @override
@@ -797,12 +824,12 @@
 
 /// Shadow object for [StaticInvocation] when the procedure being invoked is a
 /// type aliased factory constructor.
-class TypeAliasedFactoryInvocationJudgment extends StaticInvocation
+class TypeAliasedFactoryInvocation extends StaticInvocation
     implements ExpressionJudgment {
   bool hasBeenInferred = false;
   final TypeAliasBuilder typeAliasBuilder;
 
-  TypeAliasedFactoryInvocationJudgment(
+  TypeAliasedFactoryInvocation(
       this.typeAliasBuilder, Procedure target, Arguments arguments,
       {bool isConst: false})
       : super(target, arguments, isConst: isConst);
@@ -810,12 +837,12 @@
   @override
   ExpressionInferenceResult acceptInference(
       InferenceVisitor visitor, DartType typeContext) {
-    return visitor.visitTypeAliasedFactoryInvocationJudgment(this, typeContext);
+    return visitor.visitTypeAliasedFactoryInvocation(this, typeContext);
   }
 
   @override
   String toString() {
-    return "TypeAliasedConstructorInvocationJudgment(${toStringInternal()})";
+    return "TypeAliasedConstructorInvocation(${toStringInternal()})";
   }
 
   @override
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart
index 7c62ddb..c82741e 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart
@@ -83,7 +83,7 @@
         ArgumentsImpl,
         Cascade,
         DeferredCheck,
-        FactoryConstructorInvocationJudgment,
+        FactoryConstructorInvocation,
         FunctionDeclarationImpl,
         InvalidSuperInitializerJudgment,
         LoadLibraryTearOff,
diff --git a/pkg/front_end/lib/src/fasta/source/diet_listener.dart b/pkg/front_end/lib/src/fasta/source/diet_listener.dart
index 01268b4..248ecdd 100644
--- a/pkg/front_end/lib/src/fasta/source/diet_listener.dart
+++ b/pkg/front_end/lib/src/fasta/source/diet_listener.dart
@@ -5,7 +5,13 @@
 library fasta.diet_listener;
 
 import 'package:_fe_analyzer_shared/src/parser/parser.dart'
-    show Assert, DeclarationKind, MemberKind, Parser, optional;
+    show
+        Assert,
+        ConstructorReferenceContext,
+        DeclarationKind,
+        MemberKind,
+        Parser,
+        optional;
 
 import 'package:_fe_analyzer_shared/src/parser/quote.dart' show unescapeString;
 
@@ -578,8 +584,8 @@
   }
 
   @override
-  void endConstructorReference(
-      Token start, Token? periodBeforeName, Token endToken) {
+  void endConstructorReference(Token start, Token? periodBeforeName,
+      Token endToken, ConstructorReferenceContext constructorReferenceContext) {
     debugEvent("ConstructorReference");
     popIfNotNull(periodBeforeName);
   }
diff --git a/pkg/front_end/lib/src/fasta/source/outline_builder.dart b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
index 1cbd3d7..8ddf28c 100644
--- a/pkg/front_end/lib/src/fasta/source/outline_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
@@ -7,6 +7,7 @@
 import 'package:_fe_analyzer_shared/src/parser/parser.dart'
     show
         Assert,
+        ConstructorReferenceContext,
         DeclarationKind,
         FormalParameterKind,
         IdentifierContext,
@@ -2028,8 +2029,8 @@
   }
 
   @override
-  void endConstructorReference(
-      Token start, Token? periodBeforeName, Token endToken) {
+  void endConstructorReference(Token start, Token? periodBeforeName,
+      Token endToken, ConstructorReferenceContext constructorReferenceContext) {
     debugEvent("ConstructorReference");
     popIfNotNull(periodBeforeName); // charOffset.
     String? suffix = popIfNotNull(periodBeforeName) as String?;
diff --git a/pkg/front_end/lib/src/fasta/source/value_kinds.dart b/pkg/front_end/lib/src/fasta/source/value_kinds.dart
index 047d3c6..50543f0 100644
--- a/pkg/front_end/lib/src/fasta/source/value_kinds.dart
+++ b/pkg/front_end/lib/src/fasta/source/value_kinds.dart
@@ -32,15 +32,23 @@
 
 import '../source/outline_builder.dart' as type;
 
+import '../constant_context.dart' as type;
+
 class ValueKinds {
+  static const ValueKind AnnotationList =
+  const SingleValueKind<List<type.Expression>>();
   static const ValueKind AnnotationListOrNull =
       const SingleValueKind<List<type.Expression>>(NullValue.Metadata);
   static const ValueKind Arguments = const SingleValueKind<type.Arguments>();
   static const ValueKind ArgumentsOrNull =
       const SingleValueKind<type.Arguments>(NullValue.Arguments);
+  static const ValueKind ConstantContext =
+      const SingleValueKind<type.ConstantContext>();
   static const ValueKind Expression = const SingleValueKind<type.Expression>();
   static const ValueKind ExpressionOrNull =
       const SingleValueKind<type.Expression>(NullValue.Expression);
+  static const ValueKind FieldInitializerOrNull =
+      const SingleValueKind<type.Expression>(NullValue.FieldInitializer);
   static const ValueKind Identifier = const SingleValueKind<type.Identifier>();
   static const ValueKind IdentifierOrNull =
       const SingleValueKind<type.Identifier>(NullValue.Identifier);
@@ -80,9 +88,13 @@
   static const ValueKind QualifiedName =
       const SingleValueKind<type.QualifiedName>();
   static const ValueKind Statement = const SingleValueKind<type.Statement>();
+  static const ValueKind StatementOrNull =
+      const SingleValueKind<type.Statement>(NullValue.Block);
   static const ValueKind Token = const SingleValueKind<type.Token>();
   static const ValueKind TokenOrNull =
       const SingleValueKind<type.Token>(NullValue.Token);
+  static const ValueKind TypeOrNull =
+      const SingleValueKind<type.UnresolvedType>(NullValue.Type);
   static const ValueKind TypeArguments =
       const SingleValueKind<List<type.UnresolvedType>>();
   static const ValueKind TypeArgumentsOrNull =
diff --git a/pkg/front_end/lib/src/fasta/util/direct_parser_ast_helper.dart b/pkg/front_end/lib/src/fasta/util/direct_parser_ast_helper.dart
index 340943c..55b9fb2 100644
--- a/pkg/front_end/lib/src/fasta/util/direct_parser_ast_helper.dart
+++ b/pkg/front_end/lib/src/fasta/util/direct_parser_ast_helper.dart
@@ -4,6 +4,7 @@
 
 import 'package:_fe_analyzer_shared/src/parser/assert.dart';
 import 'package:_fe_analyzer_shared/src/parser/block_kind.dart';
+import 'package:_fe_analyzer_shared/src/parser/constructor_reference_context.dart';
 import 'package:_fe_analyzer_shared/src/parser/declaration_kind.dart';
 import 'package:_fe_analyzer_shared/src/parser/formal_parameter_kind.dart';
 import 'package:_fe_analyzer_shared/src/parser/identifier_context.dart';
@@ -348,14 +349,15 @@
     seen(data);
   }
 
-  void endConstructorReference(
-      Token start, Token? periodBeforeName, Token endToken) {
+  void endConstructorReference(Token start, Token? periodBeforeName,
+      Token endToken, ConstructorReferenceContext constructorReferenceContext) {
     DirectParserASTContentConstructorReferenceEnd data =
         new DirectParserASTContentConstructorReferenceEnd(
             DirectParserASTType.END,
             start: start,
             periodBeforeName: periodBeforeName,
-            endToken: endToken);
+            endToken: endToken,
+            constructorReferenceContext: constructorReferenceContext);
     seen(data);
   }
 
@@ -3103,15 +3105,20 @@
   final Token start;
   final Token? periodBeforeName;
   final Token endToken;
+  final ConstructorReferenceContext constructorReferenceContext;
 
   DirectParserASTContentConstructorReferenceEnd(DirectParserASTType type,
-      {required this.start, this.periodBeforeName, required this.endToken})
+      {required this.start,
+      this.periodBeforeName,
+      required this.endToken,
+      required this.constructorReferenceContext})
       : super("ConstructorReference", type);
 
   Map<String, Object?> get deprecatedArguments => {
         "start": start,
         "periodBeforeName": periodBeforeName,
         "endToken": endToken,
+        "constructorReferenceContext": constructorReferenceContext,
       };
 }
 
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.expect
index 38d9d89..2d94d81 100644
--- a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.expect
@@ -25,7 +25,7 @@
           beginConstructorReference(C)
             handleNoTypeArguments(()
             handleNoConstructorReferenceContinuationAfterTypeArguments(()
-          endConstructorReference(C, null, ()
+          endConstructorReference(C, null, (, ConstructorReferenceContext.New)
           beginArguments(()
             handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ';'., Try inserting an identifier before ';'., {lexeme: ;}], ;, ;)
             handleIdentifier(, expression)
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.intertwined.expect
index 1367408..e2d55ca 100644
--- a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.intertwined.expect
@@ -40,14 +40,14 @@
                             parseNewExpression({)
                               isNextIdentifier(new)
                               listener: beginNewExpression(new)
-                              parseConstructorReference(new, null)
+                              parseConstructorReference(new, ConstructorReferenceContext.New, null)
                                 ensureIdentifier(new, constructorReference)
                                   listener: handleIdentifier(C, constructorReference)
                                 listener: beginConstructorReference(C)
                                 parseQualifiedRestOpt(C, constructorReferenceContinuation)
                                 listener: handleNoTypeArguments(()
                                 listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                                listener: endConstructorReference(C, null, ()
+                                listener: endConstructorReference(C, null, (, ConstructorReferenceContext.New)
                               parseConstructorInvocationArguments(C)
                                 parseArgumentsRest(()
                                   listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.expect
index 6514ad1..23e29a3 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.expect
@@ -124,7 +124,7 @@
                   handleType(C, null)
                 endTypeArguments(1, <, >)
                 handleNoConstructorReferenceContinuationAfterTypeArguments(()
-              endConstructorReference(A, null, ()
+              endConstructorReference(A, null, (, ConstructorReferenceContext.New)
               beginArguments(()
               endArguments(0, (, ))
             endNewExpression(new)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.intertwined.expect
index 9dfd6b8..f79f784 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.intertwined.expect
@@ -203,7 +203,7 @@
                             parseNewExpression(=>)
                               isNextIdentifier(new)
                               listener: beginNewExpression(new)
-                              parseConstructorReference(new, null)
+                              parseConstructorReference(new, ConstructorReferenceContext.New, null)
                                 ensureIdentifier(new, constructorReference)
                                   listener: handleIdentifier(A, constructorReference)
                                 listener: beginConstructorReference(A)
@@ -218,7 +218,7 @@
                                 listener: handleType(C, null)
                                 listener: endTypeArguments(1, <, >)
                                 listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                                listener: endConstructorReference(A, null, ()
+                                listener: endConstructorReference(A, null, (, ConstructorReferenceContext.New)
                               parseConstructorInvocationArguments(>)
                                 parseArgumentsRest(()
                                   listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.expect
index 0291006..a6a2fda 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.expect
@@ -154,7 +154,7 @@
                     handleType(List, null)
                   endTypeArguments(2, <, >)
                   handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                endConstructorReference(Map, null, ()
+                endConstructorReference(Map, null, (, ConstructorReferenceContext.Const)
                 beginArguments(()
                 endArguments(0, (, ))
               endConstExpression(const)
@@ -182,7 +182,7 @@
                 beginConstructorReference(Map)
                   handleNoTypeArguments(()
                   handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                endConstructorReference(Map, null, ()
+                endConstructorReference(Map, null, (, ConstructorReferenceContext.Const)
                 beginArguments(()
                 endArguments(0, (, ))
               endConstExpression(const)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.intertwined.expect
index 3d2e81d..dcf5d7e 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.intertwined.expect
@@ -191,7 +191,7 @@
                         parsePrimary(=, expression)
                           parseConstExpression(=)
                             listener: beginConstExpression(const)
-                            parseConstructorReference(const, Instance of 'ComplexTypeParamOrArgInfo')
+                            parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'ComplexTypeParamOrArgInfo')
                               ensureIdentifier(const, constructorReference)
                                 listener: handleIdentifier(Map, constructorReference)
                               listener: beginConstructorReference(Map)
@@ -209,7 +209,7 @@
                               listener: handleType(List, null)
                               listener: endTypeArguments(2, <, >)
                               listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                              listener: endConstructorReference(Map, null, ()
+                              listener: endConstructorReference(Map, null, (, ConstructorReferenceContext.Const)
                             parseConstructorInvocationArguments(>)
                               parseArgumentsRest(()
                                 listener: beginArguments(()
@@ -247,14 +247,14 @@
                         parsePrimary(=, expression)
                           parseConstExpression(=)
                             listener: beginConstExpression(const)
-                            parseConstructorReference(const, Instance of 'NoTypeParamOrArg')
+                            parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'NoTypeParamOrArg')
                               ensureIdentifier(const, constructorReference)
                                 listener: handleIdentifier(Map, constructorReference)
                               listener: beginConstructorReference(Map)
                               parseQualifiedRestOpt(Map, constructorReferenceContinuation)
                               listener: handleNoTypeArguments(()
                               listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                              listener: endConstructorReference(Map, null, ()
+                              listener: endConstructorReference(Map, null, (, ConstructorReferenceContext.Const)
                             parseConstructorInvocationArguments(Map)
                               parseArgumentsRest(()
                                 listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.expect
index 0f278c9..50b89e2 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.expect
@@ -133,7 +133,7 @@
                     handleType(List, null)
                   endTypeArguments(1, <, >)
                   handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                endConstructorReference(List, null, ()
+                endConstructorReference(List, null, (, ConstructorReferenceContext.Const)
                 beginArguments(()
                 endArguments(0, (, ))
               endConstExpression(const)
@@ -158,7 +158,7 @@
                 beginConstructorReference(List)
                   handleNoTypeArguments(()
                   handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                endConstructorReference(List, null, ()
+                endConstructorReference(List, null, (, ConstructorReferenceContext.Const)
                 beginArguments(()
                 endArguments(0, (, ))
               endConstExpression(const)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.intertwined.expect
index 84d3ed8..cce2e11 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.intertwined.expect
@@ -178,7 +178,7 @@
                         parsePrimary(=, expression)
                           parseConstExpression(=)
                             listener: beginConstExpression(const)
-                            parseConstructorReference(const, Instance of 'ComplexTypeParamOrArgInfo')
+                            parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'ComplexTypeParamOrArgInfo')
                               ensureIdentifier(const, constructorReference)
                                 listener: handleIdentifier(List, constructorReference)
                               listener: beginConstructorReference(List)
@@ -193,7 +193,7 @@
                               listener: handleType(List, null)
                               listener: endTypeArguments(1, <, >)
                               listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                              listener: endConstructorReference(List, null, ()
+                              listener: endConstructorReference(List, null, (, ConstructorReferenceContext.Const)
                             parseConstructorInvocationArguments(>)
                               parseArgumentsRest(()
                                 listener: beginArguments(()
@@ -227,14 +227,14 @@
                         parsePrimary(=, expression)
                           parseConstExpression(=)
                             listener: beginConstExpression(const)
-                            parseConstructorReference(const, Instance of 'NoTypeParamOrArg')
+                            parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'NoTypeParamOrArg')
                               ensureIdentifier(const, constructorReference)
                                 listener: handleIdentifier(List, constructorReference)
                               listener: beginConstructorReference(List)
                               parseQualifiedRestOpt(List, constructorReferenceContinuation)
                               listener: handleNoTypeArguments(()
                               listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                              listener: endConstructorReference(List, null, ()
+                              listener: endConstructorReference(List, null, (, ConstructorReferenceContext.Const)
                             parseConstructorInvocationArguments(List)
                               parseArgumentsRest(()
                                 listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.expect
index 447db69..afbfdbd 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.expect
@@ -140,7 +140,7 @@
                     handleType(List, null)
                   endTypeArguments(1, <, >)
                   handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                endConstructorReference(List, null, ()
+                endConstructorReference(List, null, (, ConstructorReferenceContext.New)
                 beginArguments(()
                 endArguments(0, (, ))
               endNewExpression(new)
@@ -165,7 +165,7 @@
                 beginConstructorReference(List)
                   handleNoTypeArguments(()
                   handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                endConstructorReference(List, null, ()
+                endConstructorReference(List, null, (, ConstructorReferenceContext.New)
                 beginArguments(()
                 endArguments(0, (, ))
               endNewExpression(new)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.intertwined.expect
index a8ab4b7..a698701 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.intertwined.expect
@@ -181,7 +181,7 @@
                           parseNewExpression(=)
                             isNextIdentifier(new)
                             listener: beginNewExpression(new)
-                            parseConstructorReference(new, Instance of 'ComplexTypeParamOrArgInfo')
+                            parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'ComplexTypeParamOrArgInfo')
                               ensureIdentifier(new, constructorReference)
                                 listener: handleIdentifier(List, constructorReference)
                               listener: beginConstructorReference(List)
@@ -196,7 +196,7 @@
                               listener: handleType(List, null)
                               listener: endTypeArguments(1, <, >)
                               listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                              listener: endConstructorReference(List, null, ()
+                              listener: endConstructorReference(List, null, (, ConstructorReferenceContext.New)
                             parseConstructorInvocationArguments(>)
                               parseArgumentsRest(()
                                 listener: beginArguments(()
@@ -231,14 +231,14 @@
                           parseNewExpression(=)
                             isNextIdentifier(new)
                             listener: beginNewExpression(new)
-                            parseConstructorReference(new, Instance of 'NoTypeParamOrArg')
+                            parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'NoTypeParamOrArg')
                               ensureIdentifier(new, constructorReference)
                                 listener: handleIdentifier(List, constructorReference)
                               listener: beginConstructorReference(List)
                               parseQualifiedRestOpt(List, constructorReferenceContinuation)
                               listener: handleNoTypeArguments(()
                               listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                              listener: endConstructorReference(List, null, ()
+                              listener: endConstructorReference(List, null, (, ConstructorReferenceContext.New)
                             parseConstructorInvocationArguments(List)
                               parseArgumentsRest(()
                                 listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.expect
index c1b095d..2010b9a 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.expect
@@ -161,7 +161,7 @@
                     handleType(List, null)
                   endTypeArguments(2, <, >)
                   handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                endConstructorReference(Map, null, ()
+                endConstructorReference(Map, null, (, ConstructorReferenceContext.New)
                 beginArguments(()
                 endArguments(0, (, ))
               endNewExpression(new)
@@ -189,7 +189,7 @@
                 beginConstructorReference(Map)
                   handleNoTypeArguments(()
                   handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                endConstructorReference(Map, null, ()
+                endConstructorReference(Map, null, (, ConstructorReferenceContext.New)
                 beginArguments(()
                 endArguments(0, (, ))
               endNewExpression(new)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.intertwined.expect
index faa270d..61610fe1 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.intertwined.expect
@@ -194,7 +194,7 @@
                           parseNewExpression(=)
                             isNextIdentifier(new)
                             listener: beginNewExpression(new)
-                            parseConstructorReference(new, Instance of 'ComplexTypeParamOrArgInfo')
+                            parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'ComplexTypeParamOrArgInfo')
                               ensureIdentifier(new, constructorReference)
                                 listener: handleIdentifier(Map, constructorReference)
                               listener: beginConstructorReference(Map)
@@ -212,7 +212,7 @@
                               listener: handleType(List, null)
                               listener: endTypeArguments(2, <, >)
                               listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                              listener: endConstructorReference(Map, null, ()
+                              listener: endConstructorReference(Map, null, (, ConstructorReferenceContext.New)
                             parseConstructorInvocationArguments(>)
                               parseArgumentsRest(()
                                 listener: beginArguments(()
@@ -251,14 +251,14 @@
                           parseNewExpression(=)
                             isNextIdentifier(new)
                             listener: beginNewExpression(new)
-                            parseConstructorReference(new, Instance of 'NoTypeParamOrArg')
+                            parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'NoTypeParamOrArg')
                               ensureIdentifier(new, constructorReference)
                                 listener: handleIdentifier(Map, constructorReference)
                               listener: beginConstructorReference(Map)
                               parseQualifiedRestOpt(Map, constructorReferenceContinuation)
                               listener: handleNoTypeArguments(()
                               listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                              listener: endConstructorReference(Map, null, ()
+                              listener: endConstructorReference(Map, null, (, ConstructorReferenceContext.New)
                             parseConstructorInvocationArguments(Map)
                               parseArgumentsRest(()
                                 listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.expect
index 7d01b7d5..4fa9c10 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.expect
@@ -133,7 +133,7 @@
                     handleType(List, null)
                   endTypeArguments(1, <, >)
                   handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                endConstructorReference(Set, null, ()
+                endConstructorReference(Set, null, (, ConstructorReferenceContext.Const)
                 beginArguments(()
                 endArguments(0, (, ))
               endConstExpression(const)
@@ -158,7 +158,7 @@
                 beginConstructorReference(Set)
                   handleNoTypeArguments(()
                   handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                endConstructorReference(Set, null, ()
+                endConstructorReference(Set, null, (, ConstructorReferenceContext.Const)
                 beginArguments(()
                 endArguments(0, (, ))
               endConstExpression(const)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.intertwined.expect
index 7f9a6a5..bce083f 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.intertwined.expect
@@ -169,7 +169,7 @@
                         parsePrimary(=, expression)
                           parseConstExpression(=)
                             listener: beginConstExpression(const)
-                            parseConstructorReference(const, Instance of 'ComplexTypeParamOrArgInfo')
+                            parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'ComplexTypeParamOrArgInfo')
                               ensureIdentifier(const, constructorReference)
                                 listener: handleIdentifier(Set, constructorReference)
                               listener: beginConstructorReference(Set)
@@ -184,7 +184,7 @@
                               listener: handleType(List, null)
                               listener: endTypeArguments(1, <, >)
                               listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                              listener: endConstructorReference(Set, null, ()
+                              listener: endConstructorReference(Set, null, (, ConstructorReferenceContext.Const)
                             parseConstructorInvocationArguments(>)
                               parseArgumentsRest(()
                                 listener: beginArguments(()
@@ -218,14 +218,14 @@
                         parsePrimary(=, expression)
                           parseConstExpression(=)
                             listener: beginConstExpression(const)
-                            parseConstructorReference(const, Instance of 'NoTypeParamOrArg')
+                            parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'NoTypeParamOrArg')
                               ensureIdentifier(const, constructorReference)
                                 listener: handleIdentifier(Set, constructorReference)
                               listener: beginConstructorReference(Set)
                               parseQualifiedRestOpt(Set, constructorReferenceContinuation)
                               listener: handleNoTypeArguments(()
                               listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                              listener: endConstructorReference(Set, null, ()
+                              listener: endConstructorReference(Set, null, (, ConstructorReferenceContext.Const)
                             parseConstructorInvocationArguments(Set)
                               parseArgumentsRest(()
                                 listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.expect
index 1df0d1b..8259775 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.expect
@@ -140,7 +140,7 @@
                     handleType(List, null)
                   endTypeArguments(1, <, >)
                   handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                endConstructorReference(Set, null, ()
+                endConstructorReference(Set, null, (, ConstructorReferenceContext.New)
                 beginArguments(()
                 endArguments(0, (, ))
               endNewExpression(new)
@@ -165,7 +165,7 @@
                 beginConstructorReference(Set)
                   handleNoTypeArguments(()
                   handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                endConstructorReference(Set, null, ()
+                endConstructorReference(Set, null, (, ConstructorReferenceContext.New)
                 beginArguments(()
                 endArguments(0, (, ))
               endNewExpression(new)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.intertwined.expect
index 264c4d0..ae71f89 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.intertwined.expect
@@ -172,7 +172,7 @@
                           parseNewExpression(=)
                             isNextIdentifier(new)
                             listener: beginNewExpression(new)
-                            parseConstructorReference(new, Instance of 'ComplexTypeParamOrArgInfo')
+                            parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'ComplexTypeParamOrArgInfo')
                               ensureIdentifier(new, constructorReference)
                                 listener: handleIdentifier(Set, constructorReference)
                               listener: beginConstructorReference(Set)
@@ -187,7 +187,7 @@
                               listener: handleType(List, null)
                               listener: endTypeArguments(1, <, >)
                               listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                              listener: endConstructorReference(Set, null, ()
+                              listener: endConstructorReference(Set, null, (, ConstructorReferenceContext.New)
                             parseConstructorInvocationArguments(>)
                               parseArgumentsRest(()
                                 listener: beginArguments(()
@@ -222,14 +222,14 @@
                           parseNewExpression(=)
                             isNextIdentifier(new)
                             listener: beginNewExpression(new)
-                            parseConstructorReference(new, Instance of 'NoTypeParamOrArg')
+                            parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'NoTypeParamOrArg')
                               ensureIdentifier(new, constructorReference)
                                 listener: handleIdentifier(Set, constructorReference)
                               listener: beginConstructorReference(Set)
                               parseQualifiedRestOpt(Set, constructorReferenceContinuation)
                               listener: handleNoTypeArguments(()
                               listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                              listener: endConstructorReference(Set, null, ()
+                              listener: endConstructorReference(Set, null, (, ConstructorReferenceContext.New)
                             parseConstructorInvocationArguments(Set)
                               parseArgumentsRest(()
                                 listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.expect
index 8fcefc7..39204f7 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.expect
@@ -1065,7 +1065,7 @@
                   beginConstructorReference()
                     handleNoTypeArguments(()
                     handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                  endConstructorReference(, null, ()
+                  endConstructorReference(, null, (, ConstructorReferenceContext.Const)
                   beginArguments(()
                     handleIdentifier(x, expression)
                     handleNoTypeArguments(-)
@@ -3049,7 +3049,7 @@
                   beginConstructorReference()
                     handleNoTypeArguments(()
                     handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                  endConstructorReference(, null, ()
+                  endConstructorReference(, null, (, ConstructorReferenceContext.New)
                   beginArguments(()
                     handleIdentifier(x, expression)
                     handleNoTypeArguments(-)
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.intertwined.expect
index 25e2025..983ce33 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.intertwined.expect
@@ -1465,7 +1465,7 @@
                               parsePrimary(return, expression)
                                 parseConstExpression(return)
                                   listener: beginConstExpression(const)
-                                  parseConstructorReference(const, null)
+                                  parseConstructorReference(const, ConstructorReferenceContext.Const, null)
                                     ensureIdentifier(const, constructorReference)
                                       insertSyntheticIdentifier(const, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}], messageOnToken: null)
                                         reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}])
@@ -1476,7 +1476,7 @@
                                     parseQualifiedRestOpt(, constructorReferenceContinuation)
                                     listener: handleNoTypeArguments(()
                                     listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                                    listener: endConstructorReference(, null, ()
+                                    listener: endConstructorReference(, null, (, ConstructorReferenceContext.Const)
                                   parseConstructorInvocationArguments()
                                     parseArgumentsRest(()
                                       listener: beginArguments(()
@@ -6484,7 +6484,7 @@
                                 parseNewExpression(return)
                                   isNextIdentifier(new)
                                   listener: beginNewExpression(new)
-                                  parseConstructorReference(new, null)
+                                  parseConstructorReference(new, ConstructorReferenceContext.New, null)
                                     ensureIdentifier(new, constructorReference)
                                       insertSyntheticIdentifier(new, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}], messageOnToken: null)
                                         reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}])
@@ -6495,7 +6495,7 @@
                                     parseQualifiedRestOpt(, constructorReferenceContinuation)
                                     listener: handleNoTypeArguments(()
                                     listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                                    listener: endConstructorReference(, null, ()
+                                    listener: endConstructorReference(, null, (, ConstructorReferenceContext.New)
                                   parseConstructorInvocationArguments()
                                     parseArgumentsRest(()
                                       listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.expect
index 0c446fc..cca2b0b 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.expect
@@ -1035,7 +1035,7 @@
             beginConstructorReference()
               handleNoTypeArguments(()
               handleNoConstructorReferenceContinuationAfterTypeArguments(()
-            endConstructorReference(, null, ()
+            endConstructorReference(, null, (, ConstructorReferenceContext.Const)
             beginArguments(()
               handleIdentifier(x, expression)
               handleNoTypeArguments(-)
@@ -2987,7 +2987,7 @@
             beginConstructorReference()
               handleNoTypeArguments(()
               handleNoConstructorReferenceContinuationAfterTypeArguments(()
-            endConstructorReference(, null, ()
+            endConstructorReference(, null, (, ConstructorReferenceContext.New)
             beginArguments(()
               handleIdentifier(x, expression)
               handleNoTypeArguments(-)
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.intertwined.expect
index 3e3f317..4b6c26a 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.intertwined.expect
@@ -1401,7 +1401,7 @@
                       parsePrimary(return, expression)
                         parseConstExpression(return)
                           listener: beginConstExpression(const)
-                          parseConstructorReference(const, null)
+                          parseConstructorReference(const, ConstructorReferenceContext.Const, null)
                             ensureIdentifier(const, constructorReference)
                               insertSyntheticIdentifier(const, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}], messageOnToken: null)
                                 reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}])
@@ -1412,7 +1412,7 @@
                             parseQualifiedRestOpt(, constructorReferenceContinuation)
                             listener: handleNoTypeArguments(()
                             listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                            listener: endConstructorReference(, null, ()
+                            listener: endConstructorReference(, null, (, ConstructorReferenceContext.Const)
                           parseConstructorInvocationArguments()
                             parseArgumentsRest(()
                               listener: beginArguments(()
@@ -6291,7 +6291,7 @@
                         parseNewExpression(return)
                           isNextIdentifier(new)
                           listener: beginNewExpression(new)
-                          parseConstructorReference(new, null)
+                          parseConstructorReference(new, ConstructorReferenceContext.New, null)
                             ensureIdentifier(new, constructorReference)
                               insertSyntheticIdentifier(new, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}], messageOnToken: null)
                                 reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}])
@@ -6302,7 +6302,7 @@
                             parseQualifiedRestOpt(, constructorReferenceContinuation)
                             listener: handleNoTypeArguments(()
                             listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                            listener: endConstructorReference(, null, ()
+                            listener: endConstructorReference(, null, (, ConstructorReferenceContext.New)
                           parseConstructorInvocationArguments()
                             parseArgumentsRest(()
                               listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/extension_named_type.dart.expect b/pkg/front_end/parser_testcases/extension_named_type.dart.expect
index 1d63845..a502ee7 100644
--- a/pkg/front_end/parser_testcases/extension_named_type.dart.expect
+++ b/pkg/front_end/parser_testcases/extension_named_type.dart.expect
@@ -68,7 +68,7 @@
           beginConstructorReference(A)
             handleNoTypeArguments(()
             handleNoConstructorReferenceContinuationAfterTypeArguments(()
-          endConstructorReference(A, null, ()
+          endConstructorReference(A, null, (, ConstructorReferenceContext.New)
           beginArguments(()
           endArguments(0, (, ))
         endNewExpression(new)
diff --git a/pkg/front_end/parser_testcases/extension_named_type.dart.intertwined.expect b/pkg/front_end/parser_testcases/extension_named_type.dart.intertwined.expect
index ac6be71..dc87b68 100644
--- a/pkg/front_end/parser_testcases/extension_named_type.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/extension_named_type.dart.intertwined.expect
@@ -139,14 +139,14 @@
                                       parseNewExpression(()
                                         isNextIdentifier(new)
                                         listener: beginNewExpression(new)
-                                        parseConstructorReference(new, null)
+                                        parseConstructorReference(new, ConstructorReferenceContext.New, null)
                                           ensureIdentifier(new, constructorReference)
                                             listener: handleIdentifier(A, constructorReference)
                                           listener: beginConstructorReference(A)
                                           parseQualifiedRestOpt(A, constructorReferenceContinuation)
                                           listener: handleNoTypeArguments(()
                                           listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                                          listener: endConstructorReference(A, null, ()
+                                          listener: endConstructorReference(A, null, (, ConstructorReferenceContext.New)
                                         parseConstructorInvocationArguments(A)
                                           parseArgumentsRest(()
                                             listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.expect b/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.expect
index b960510..9e0f65c 100644
--- a/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.expect
+++ b/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.expect
@@ -425,7 +425,7 @@
               handleType(b, null)
             endTypeArguments(2, <, >)
             handleIdentifier(toString, constructorReferenceContinuationAfterTypeArguments)
-          endConstructorReference(f, ., ()
+          endConstructorReference(f, ., (, ConstructorReferenceContext.Implicit)
           beginArguments(()
           endArguments(0, (, ))
         endImplicitCreationExpression(=)
diff --git a/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.intertwined.expect
index 9b580ea..dff1e80 100644
--- a/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.intertwined.expect
@@ -717,7 +717,7 @@
               parseUnaryExpression(=, true)
                 parseImplicitCreationExpression(=, Instance of 'ComplexTypeParamOrArgInfo')
                   listener: beginImplicitCreationExpression(=)
-                  parseConstructorReference(=, Instance of 'ComplexTypeParamOrArgInfo')
+                  parseConstructorReference(=, ConstructorReferenceContext.Implicit, Instance of 'ComplexTypeParamOrArgInfo')
                     ensureIdentifier(=, constructorReference)
                       listener: handleIdentifier(f, constructorReference)
                     listener: beginConstructorReference(f)
@@ -732,7 +732,7 @@
                     listener: endTypeArguments(2, <, >)
                     ensureIdentifier(., constructorReferenceContinuationAfterTypeArguments)
                       listener: handleIdentifier(toString, constructorReferenceContinuationAfterTypeArguments)
-                    listener: endConstructorReference(f, ., ()
+                    listener: endConstructorReference(f, ., (, ConstructorReferenceContext.Implicit)
                   parseConstructorInvocationArguments(toString)
                     parseArgumentsRest(()
                       listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/general/new_as_identifier.dart.expect b/pkg/front_end/parser_testcases/general/new_as_identifier.dart.expect
index da22a5b..f914b42 100644
--- a/pkg/front_end/parser_testcases/general/new_as_identifier.dart.expect
+++ b/pkg/front_end/parser_testcases/general/new_as_identifier.dart.expect
@@ -193,7 +193,7 @@
                 handleQualified(.)
                 handleNoTypeArguments(;)
                 handleNoConstructorReferenceContinuationAfterTypeArguments(;)
-              endConstructorReference(C, null, ;)
+              endConstructorReference(C, null, ;, ConstructorReferenceContext.RedirectingFactory)
             endRedirectingFactoryBody(=, ;)
           endClassFactoryMethod(factory, factory, ;)
         endMember()
@@ -218,7 +218,7 @@
                 endTypeArguments(1, <, >)
                 handleNewAsIdentifier(new)
                 handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
-              endConstructorReference(C, ., ;)
+              endConstructorReference(C, ., ;, ConstructorReferenceContext.RedirectingFactory)
             endRedirectingFactoryBody(=, ;)
           endClassFactoryMethod(factory, factory, ;)
         endMember()
@@ -241,7 +241,7 @@
                 handleNoTypeArguments(.)
                 handleNewAsIdentifier(new)
                 handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
-              endConstructorReference(prefix, ., ;)
+              endConstructorReference(prefix, ., ;, ConstructorReferenceContext.RedirectingFactory)
             endRedirectingFactoryBody(=, ;)
           endClassFactoryMethod(factory, factory, ;)
         endMember()
@@ -268,7 +268,7 @@
                 endTypeArguments(1, <, >)
                 handleNewAsIdentifier(new)
                 handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
-              endConstructorReference(prefix, ., ;)
+              endConstructorReference(prefix, ., ;, ConstructorReferenceContext.RedirectingFactory)
             endRedirectingFactoryBody(=, ;)
           endClassFactoryMethod(factory, factory, ;)
         endMember()
@@ -344,7 +344,7 @@
             handleQualified(.)
             handleNoTypeArguments(()
             handleNoConstructorReferenceContinuationAfterTypeArguments(()
-          endConstructorReference(C, null, ()
+          endConstructorReference(C, null, (, ConstructorReferenceContext.Const)
           beginArguments(()
           endArguments(0, (, ))
         endConstExpression(const)
@@ -368,7 +368,7 @@
             endTypeArguments(1, <, >)
             handleNewAsIdentifier(new)
             handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
-          endConstructorReference(C, ., ()
+          endConstructorReference(C, ., (, ConstructorReferenceContext.Const)
           beginArguments(()
           endArguments(0, (, ))
         endConstExpression(const)
@@ -390,7 +390,7 @@
             handleNoTypeArguments(.)
             handleNewAsIdentifier(new)
             handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
-          endConstructorReference(prefix, ., ()
+          endConstructorReference(prefix, ., (, ConstructorReferenceContext.Const)
           beginArguments(()
           endArguments(0, (, ))
         endConstExpression(const)
@@ -416,7 +416,7 @@
             endTypeArguments(1, <, >)
             handleNewAsIdentifier(new)
             handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
-          endConstructorReference(prefix, ., ()
+          endConstructorReference(prefix, ., (, ConstructorReferenceContext.Const)
           beginArguments(()
           endArguments(0, (, ))
         endConstExpression(const)
@@ -438,7 +438,7 @@
             handleQualified(.)
             handleNoTypeArguments(()
             handleNoConstructorReferenceContinuationAfterTypeArguments(()
-          endConstructorReference(C, null, ()
+          endConstructorReference(C, null, (, ConstructorReferenceContext.New)
           beginArguments(()
           endArguments(0, (, ))
         endNewExpression(new)
@@ -462,7 +462,7 @@
             endTypeArguments(1, <, >)
             handleNewAsIdentifier(new)
             handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
-          endConstructorReference(C, ., ()
+          endConstructorReference(C, ., (, ConstructorReferenceContext.New)
           beginArguments(()
           endArguments(0, (, ))
         endNewExpression(new)
@@ -484,7 +484,7 @@
             handleNoTypeArguments(.)
             handleNewAsIdentifier(new)
             handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
-          endConstructorReference(prefix, ., ()
+          endConstructorReference(prefix, ., (, ConstructorReferenceContext.New)
           beginArguments(()
           endArguments(0, (, ))
         endNewExpression(new)
@@ -510,7 +510,7 @@
             endTypeArguments(1, <, >)
             handleNewAsIdentifier(new)
             handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
-          endConstructorReference(prefix, ., ()
+          endConstructorReference(prefix, ., (, ConstructorReferenceContext.New)
           beginArguments(()
           endArguments(0, (, ))
         endNewExpression(new)
@@ -555,7 +555,7 @@
             endTypeArguments(1, <, >)
             handleNewAsIdentifier(new)
             handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
-          endConstructorReference(C, ., ()
+          endConstructorReference(C, ., (, ConstructorReferenceContext.Implicit)
           beginArguments(()
           endArguments(0, (, ))
         endImplicitCreationExpression(=)
@@ -607,7 +607,7 @@
             endTypeArguments(1, <, >)
             handleNewAsIdentifier(new)
             handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
-          endConstructorReference(prefix, ., ()
+          endConstructorReference(prefix, ., (, ConstructorReferenceContext.Implicit)
           beginArguments(()
           endArguments(0, (, ))
         endImplicitCreationExpression(=)
diff --git a/pkg/front_end/parser_testcases/general/new_as_identifier.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/new_as_identifier.dart.intertwined.expect
index 318a32c..d88fc9d 100644
--- a/pkg/front_end/parser_testcases/general/new_as_identifier.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/new_as_identifier.dart.intertwined.expect
@@ -331,7 +331,7 @@
                 inPlainSync()
                 parseRedirectingFactoryBody())
                   listener: beginRedirectingFactoryBody(=)
-                  parseConstructorReference(=, null)
+                  parseConstructorReference(=, ConstructorReferenceContext.RedirectingFactory, null)
                     ensureIdentifier(=, constructorReference)
                       listener: handleIdentifier(C, constructorReference)
                     listener: beginConstructorReference(C)
@@ -344,7 +344,7 @@
                         listener: handleQualified(.)
                     listener: handleNoTypeArguments(;)
                     listener: handleNoConstructorReferenceContinuationAfterTypeArguments(;)
-                    listener: endConstructorReference(C, null, ;)
+                    listener: endConstructorReference(C, null, ;, ConstructorReferenceContext.RedirectingFactory)
                   ensureSemicolon(new)
                   listener: endRedirectingFactoryBody(=, ;)
                 listener: endClassFactoryMethod(factory, factory, ;)
@@ -376,7 +376,7 @@
                 inPlainSync()
                 parseRedirectingFactoryBody())
                   listener: beginRedirectingFactoryBody(=)
-                  parseConstructorReference(=, null)
+                  parseConstructorReference(=, ConstructorReferenceContext.RedirectingFactory, null)
                     ensureIdentifier(=, constructorReference)
                       listener: handleIdentifier(C, constructorReference)
                     listener: beginConstructorReference(C)
@@ -390,7 +390,7 @@
                       rewriter()
                       listener: handleNewAsIdentifier(new)
                       listener: handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
-                    listener: endConstructorReference(C, ., ;)
+                    listener: endConstructorReference(C, ., ;, ConstructorReferenceContext.RedirectingFactory)
                   ensureSemicolon(new)
                   listener: endRedirectingFactoryBody(=, ;)
                 listener: endClassFactoryMethod(factory, factory, ;)
@@ -422,7 +422,7 @@
                 inPlainSync()
                 parseRedirectingFactoryBody())
                   listener: beginRedirectingFactoryBody(=)
-                  parseConstructorReference(=, null)
+                  parseConstructorReference(=, ConstructorReferenceContext.RedirectingFactory, null)
                     ensureIdentifier(=, constructorReference)
                       listener: handleIdentifier(prefix, constructorReference)
                     listener: beginConstructorReference(prefix)
@@ -436,7 +436,7 @@
                       rewriter()
                       listener: handleNewAsIdentifier(new)
                       listener: handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
-                    listener: endConstructorReference(prefix, ., ;)
+                    listener: endConstructorReference(prefix, ., ;, ConstructorReferenceContext.RedirectingFactory)
                   ensureSemicolon(new)
                   listener: endRedirectingFactoryBody(=, ;)
                 listener: endClassFactoryMethod(factory, factory, ;)
@@ -468,7 +468,7 @@
                 inPlainSync()
                 parseRedirectingFactoryBody())
                   listener: beginRedirectingFactoryBody(=)
-                  parseConstructorReference(=, null)
+                  parseConstructorReference(=, ConstructorReferenceContext.RedirectingFactory, null)
                     ensureIdentifier(=, constructorReference)
                       listener: handleIdentifier(prefix, constructorReference)
                     listener: beginConstructorReference(prefix)
@@ -486,7 +486,7 @@
                       rewriter()
                       listener: handleNewAsIdentifier(new)
                       listener: handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
-                    listener: endConstructorReference(prefix, ., ;)
+                    listener: endConstructorReference(prefix, ., ;, ConstructorReferenceContext.RedirectingFactory)
                   ensureSemicolon(new)
                   listener: endRedirectingFactoryBody(=, ;)
                 listener: endClassFactoryMethod(factory, factory, ;)
@@ -639,7 +639,7 @@
                 parsePrimary(=, expression)
                   parseConstExpression(=)
                     listener: beginConstExpression(const)
-                    parseConstructorReference(const, null)
+                    parseConstructorReference(const, ConstructorReferenceContext.Const, null)
                       ensureIdentifier(const, constructorReference)
                         listener: handleIdentifier(C, constructorReference)
                       listener: beginConstructorReference(C)
@@ -652,7 +652,7 @@
                           listener: handleQualified(.)
                       listener: handleNoTypeArguments(()
                       listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                      listener: endConstructorReference(C, null, ()
+                      listener: endConstructorReference(C, null, (, ConstructorReferenceContext.Const)
                     parseConstructorInvocationArguments(new)
                       parseArgumentsRest(()
                         listener: beginArguments(()
@@ -680,7 +680,7 @@
                 parsePrimary(=, expression)
                   parseConstExpression(=)
                     listener: beginConstExpression(const)
-                    parseConstructorReference(const, null)
+                    parseConstructorReference(const, ConstructorReferenceContext.Const, null)
                       ensureIdentifier(const, constructorReference)
                         listener: handleIdentifier(C, constructorReference)
                       listener: beginConstructorReference(C)
@@ -694,7 +694,7 @@
                         rewriter()
                         listener: handleNewAsIdentifier(new)
                         listener: handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
-                      listener: endConstructorReference(C, ., ()
+                      listener: endConstructorReference(C, ., (, ConstructorReferenceContext.Const)
                     parseConstructorInvocationArguments(new)
                       parseArgumentsRest(()
                         listener: beginArguments(()
@@ -722,7 +722,7 @@
                 parsePrimary(=, expression)
                   parseConstExpression(=)
                     listener: beginConstExpression(const)
-                    parseConstructorReference(const, null)
+                    parseConstructorReference(const, ConstructorReferenceContext.Const, null)
                       ensureIdentifier(const, constructorReference)
                         listener: handleIdentifier(prefix, constructorReference)
                       listener: beginConstructorReference(prefix)
@@ -736,7 +736,7 @@
                         rewriter()
                         listener: handleNewAsIdentifier(new)
                         listener: handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
-                      listener: endConstructorReference(prefix, ., ()
+                      listener: endConstructorReference(prefix, ., (, ConstructorReferenceContext.Const)
                     parseConstructorInvocationArguments(new)
                       parseArgumentsRest(()
                         listener: beginArguments(()
@@ -764,7 +764,7 @@
                 parsePrimary(=, expression)
                   parseConstExpression(=)
                     listener: beginConstExpression(const)
-                    parseConstructorReference(const, null)
+                    parseConstructorReference(const, ConstructorReferenceContext.Const, null)
                       ensureIdentifier(const, constructorReference)
                         listener: handleIdentifier(prefix, constructorReference)
                       listener: beginConstructorReference(prefix)
@@ -782,7 +782,7 @@
                         rewriter()
                         listener: handleNewAsIdentifier(new)
                         listener: handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
-                      listener: endConstructorReference(prefix, ., ()
+                      listener: endConstructorReference(prefix, ., (, ConstructorReferenceContext.Const)
                     parseConstructorInvocationArguments(new)
                       parseArgumentsRest(()
                         listener: beginArguments(()
@@ -811,7 +811,7 @@
                   parseNewExpression(=)
                     isNextIdentifier(new)
                     listener: beginNewExpression(new)
-                    parseConstructorReference(new, null)
+                    parseConstructorReference(new, ConstructorReferenceContext.New, null)
                       ensureIdentifier(new, constructorReference)
                         listener: handleIdentifier(C, constructorReference)
                       listener: beginConstructorReference(C)
@@ -824,7 +824,7 @@
                           listener: handleQualified(.)
                       listener: handleNoTypeArguments(()
                       listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                      listener: endConstructorReference(C, null, ()
+                      listener: endConstructorReference(C, null, (, ConstructorReferenceContext.New)
                     parseConstructorInvocationArguments(new)
                       parseArgumentsRest(()
                         listener: beginArguments(()
@@ -853,7 +853,7 @@
                   parseNewExpression(=)
                     isNextIdentifier(new)
                     listener: beginNewExpression(new)
-                    parseConstructorReference(new, null)
+                    parseConstructorReference(new, ConstructorReferenceContext.New, null)
                       ensureIdentifier(new, constructorReference)
                         listener: handleIdentifier(C, constructorReference)
                       listener: beginConstructorReference(C)
@@ -867,7 +867,7 @@
                         rewriter()
                         listener: handleNewAsIdentifier(new)
                         listener: handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
-                      listener: endConstructorReference(C, ., ()
+                      listener: endConstructorReference(C, ., (, ConstructorReferenceContext.New)
                     parseConstructorInvocationArguments(new)
                       parseArgumentsRest(()
                         listener: beginArguments(()
@@ -896,7 +896,7 @@
                   parseNewExpression(=)
                     isNextIdentifier(new)
                     listener: beginNewExpression(new)
-                    parseConstructorReference(new, null)
+                    parseConstructorReference(new, ConstructorReferenceContext.New, null)
                       ensureIdentifier(new, constructorReference)
                         listener: handleIdentifier(prefix, constructorReference)
                       listener: beginConstructorReference(prefix)
@@ -910,7 +910,7 @@
                         rewriter()
                         listener: handleNewAsIdentifier(new)
                         listener: handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
-                      listener: endConstructorReference(prefix, ., ()
+                      listener: endConstructorReference(prefix, ., (, ConstructorReferenceContext.New)
                     parseConstructorInvocationArguments(new)
                       parseArgumentsRest(()
                         listener: beginArguments(()
@@ -939,7 +939,7 @@
                   parseNewExpression(=)
                     isNextIdentifier(new)
                     listener: beginNewExpression(new)
-                    parseConstructorReference(new, null)
+                    parseConstructorReference(new, ConstructorReferenceContext.New, null)
                       ensureIdentifier(new, constructorReference)
                         listener: handleIdentifier(prefix, constructorReference)
                       listener: beginConstructorReference(prefix)
@@ -957,7 +957,7 @@
                         rewriter()
                         listener: handleNewAsIdentifier(new)
                         listener: handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
-                      listener: endConstructorReference(prefix, ., ()
+                      listener: endConstructorReference(prefix, ., (, ConstructorReferenceContext.New)
                     parseConstructorInvocationArguments(new)
                       parseArgumentsRest(()
                         listener: beginArguments(()
@@ -1030,7 +1030,7 @@
               parseUnaryExpression(=, true)
                 parseImplicitCreationExpression(=, Instance of 'SimpleTypeArgument1')
                   listener: beginImplicitCreationExpression(=)
-                  parseConstructorReference(=, Instance of 'SimpleTypeArgument1')
+                  parseConstructorReference(=, ConstructorReferenceContext.Implicit, Instance of 'SimpleTypeArgument1')
                     ensureIdentifier(=, constructorReference)
                       listener: handleIdentifier(C, constructorReference)
                     listener: beginConstructorReference(C)
@@ -1044,7 +1044,7 @@
                       rewriter()
                       listener: handleNewAsIdentifier(new)
                       listener: handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
-                    listener: endConstructorReference(C, ., ()
+                    listener: endConstructorReference(C, ., (, ConstructorReferenceContext.Implicit)
                   parseConstructorInvocationArguments(new)
                     parseArgumentsRest(()
                       listener: beginArguments(()
@@ -1128,7 +1128,7 @@
               parseUnaryExpression(=, true)
                 parseImplicitCreationExpression(=, Instance of 'SimpleTypeArgument1')
                   listener: beginImplicitCreationExpression(=)
-                  parseConstructorReference(=, Instance of 'SimpleTypeArgument1')
+                  parseConstructorReference(=, ConstructorReferenceContext.Implicit, Instance of 'SimpleTypeArgument1')
                     ensureIdentifier(=, constructorReference)
                       listener: handleIdentifier(prefix, constructorReference)
                     listener: beginConstructorReference(prefix)
@@ -1146,7 +1146,7 @@
                       rewriter()
                       listener: handleNewAsIdentifier(new)
                       listener: handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
-                    listener: endConstructorReference(prefix, ., ()
+                    listener: endConstructorReference(prefix, ., (, ConstructorReferenceContext.Implicit)
                   parseConstructorInvocationArguments(new)
                     parseArgumentsRest(()
                       listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/nnbd/late_member.dart.expect b/pkg/front_end/parser_testcases/nnbd/late_member.dart.expect
index 4db9fb9..1295e65 100644
--- a/pkg/front_end/parser_testcases/nnbd/late_member.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/late_member.dart.expect
@@ -24,7 +24,7 @@
                 beginConstructorReference(X)
                   handleNoTypeArguments(()
                   handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                endConstructorReference(X, null, ()
+                endConstructorReference(X, null, (, ConstructorReferenceContext.New)
                 beginArguments(()
                 endArguments(0, (, ))
               endNewExpression(new)
@@ -67,7 +67,7 @@
           beginConstructorReference(X)
             handleNoTypeArguments(()
             handleNoConstructorReferenceContinuationAfterTypeArguments(()
-          endConstructorReference(X, null, ()
+          endConstructorReference(X, null, (, ConstructorReferenceContext.New)
           beginArguments(()
           endArguments(0, (, ))
         endNewExpression(new)
@@ -83,7 +83,7 @@
           beginConstructorReference(Y)
             handleNoTypeArguments(()
             handleNoConstructorReferenceContinuationAfterTypeArguments(()
-          endConstructorReference(Y, null, ()
+          endConstructorReference(Y, null, (, ConstructorReferenceContext.New)
           beginArguments(()
           endArguments(0, (, ))
         endNewExpression(new)
diff --git a/pkg/front_end/parser_testcases/nnbd/late_member.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/late_member.dart.intertwined.expect
index b245255..e5b3775 100644
--- a/pkg/front_end/parser_testcases/nnbd/late_member.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/late_member.dart.intertwined.expect
@@ -52,14 +52,14 @@
                                 parseNewExpression(=)
                                   isNextIdentifier(new)
                                   listener: beginNewExpression(new)
-                                  parseConstructorReference(new, null)
+                                  parseConstructorReference(new, ConstructorReferenceContext.New, null)
                                     ensureIdentifier(new, constructorReference)
                                       listener: handleIdentifier(X, constructorReference)
                                     listener: beginConstructorReference(X)
                                     parseQualifiedRestOpt(X, constructorReferenceContinuation)
                                     listener: handleNoTypeArguments(()
                                     listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                                    listener: endConstructorReference(X, null, ()
+                                    listener: endConstructorReference(X, null, (, ConstructorReferenceContext.New)
                                   parseConstructorInvocationArguments(X)
                                     parseArgumentsRest(()
                                       listener: beginArguments(()
@@ -182,14 +182,14 @@
                             parseNewExpression(;)
                               isNextIdentifier(new)
                               listener: beginNewExpression(new)
-                              parseConstructorReference(new, null)
+                              parseConstructorReference(new, ConstructorReferenceContext.New, null)
                                 ensureIdentifier(new, constructorReference)
                                   listener: handleIdentifier(X, constructorReference)
                                 listener: beginConstructorReference(X)
                                 parseQualifiedRestOpt(X, constructorReferenceContinuation)
                                 listener: handleNoTypeArguments(()
                                 listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                                listener: endConstructorReference(X, null, ()
+                                listener: endConstructorReference(X, null, (, ConstructorReferenceContext.New)
                               parseConstructorInvocationArguments(X)
                                 parseArgumentsRest(()
                                   listener: beginArguments(()
@@ -228,14 +228,14 @@
                             parseNewExpression(;)
                               isNextIdentifier(new)
                               listener: beginNewExpression(new)
-                              parseConstructorReference(new, null)
+                              parseConstructorReference(new, ConstructorReferenceContext.New, null)
                                 ensureIdentifier(new, constructorReference)
                                   listener: handleIdentifier(Y, constructorReference)
                                 listener: beginConstructorReference(Y)
                                 parseQualifiedRestOpt(Y, constructorReferenceContinuation)
                                 listener: handleNoTypeArguments(()
                                 listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                                listener: endConstructorReference(Y, null, ()
+                                listener: endConstructorReference(Y, null, (, ConstructorReferenceContext.New)
                               parseConstructorInvocationArguments(Y)
                                 parseArgumentsRest(()
                                   listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.expect b/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.expect
index d7696f5..e8b4997 100644
--- a/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.expect
@@ -24,7 +24,7 @@
                 beginConstructorReference(X)
                   handleNoTypeArguments(()
                   handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                endConstructorReference(X, null, ()
+                endConstructorReference(X, null, (, ConstructorReferenceContext.New)
                 beginArguments(()
                 endArguments(0, (, ))
               endNewExpression(new)
@@ -67,7 +67,7 @@
           beginConstructorReference(X)
             handleNoTypeArguments(()
             handleNoConstructorReferenceContinuationAfterTypeArguments(()
-          endConstructorReference(X, null, ()
+          endConstructorReference(X, null, (, ConstructorReferenceContext.New)
           beginArguments(()
           endArguments(0, (, ))
         endNewExpression(new)
@@ -83,7 +83,7 @@
           beginConstructorReference(Y)
             handleNoTypeArguments(()
             handleNoConstructorReferenceContinuationAfterTypeArguments(()
-          endConstructorReference(Y, null, ()
+          endConstructorReference(Y, null, (, ConstructorReferenceContext.New)
           beginArguments(()
           endArguments(0, (, ))
         endNewExpression(new)
diff --git a/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.intertwined.expect
index 43bc341..ef86be8 100644
--- a/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.intertwined.expect
@@ -52,14 +52,14 @@
                                 parseNewExpression(=)
                                   isNextIdentifier(new)
                                   listener: beginNewExpression(new)
-                                  parseConstructorReference(new, null)
+                                  parseConstructorReference(new, ConstructorReferenceContext.New, null)
                                     ensureIdentifier(new, constructorReference)
                                       listener: handleIdentifier(X, constructorReference)
                                     listener: beginConstructorReference(X)
                                     parseQualifiedRestOpt(X, constructorReferenceContinuation)
                                     listener: handleNoTypeArguments(()
                                     listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                                    listener: endConstructorReference(X, null, ()
+                                    listener: endConstructorReference(X, null, (, ConstructorReferenceContext.New)
                                   parseConstructorInvocationArguments(X)
                                     parseArgumentsRest(()
                                       listener: beginArguments(()
@@ -182,14 +182,14 @@
                             parseNewExpression(;)
                               isNextIdentifier(new)
                               listener: beginNewExpression(new)
-                              parseConstructorReference(new, null)
+                              parseConstructorReference(new, ConstructorReferenceContext.New, null)
                                 ensureIdentifier(new, constructorReference)
                                   listener: handleIdentifier(X, constructorReference)
                                 listener: beginConstructorReference(X)
                                 parseQualifiedRestOpt(X, constructorReferenceContinuation)
                                 listener: handleNoTypeArguments(()
                                 listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                                listener: endConstructorReference(X, null, ()
+                                listener: endConstructorReference(X, null, (, ConstructorReferenceContext.New)
                               parseConstructorInvocationArguments(X)
                                 parseArgumentsRest(()
                                   listener: beginArguments(()
@@ -228,14 +228,14 @@
                             parseNewExpression(;)
                               isNextIdentifier(new)
                               listener: beginNewExpression(new)
-                              parseConstructorReference(new, null)
+                              parseConstructorReference(new, ConstructorReferenceContext.New, null)
                                 ensureIdentifier(new, constructorReference)
                                   listener: handleIdentifier(Y, constructorReference)
                                 listener: beginConstructorReference(Y)
                                 parseQualifiedRestOpt(Y, constructorReferenceContinuation)
                                 listener: handleNoTypeArguments(()
                                 listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                                listener: endConstructorReference(Y, null, ()
+                                listener: endConstructorReference(Y, null, (, ConstructorReferenceContext.New)
                               parseConstructorInvocationArguments(Y)
                                 parseArgumentsRest(()
                                   listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/nnbd/required_member.dart.expect b/pkg/front_end/parser_testcases/nnbd/required_member.dart.expect
index ec54bee..4e2dc09 100644
--- a/pkg/front_end/parser_testcases/nnbd/required_member.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/required_member.dart.expect
@@ -24,7 +24,7 @@
                 beginConstructorReference(X)
                   handleNoTypeArguments(()
                   handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                endConstructorReference(X, null, ()
+                endConstructorReference(X, null, (, ConstructorReferenceContext.New)
                 beginArguments(()
                 endArguments(0, (, ))
               endNewExpression(new)
@@ -67,7 +67,7 @@
           beginConstructorReference(X)
             handleNoTypeArguments(()
             handleNoConstructorReferenceContinuationAfterTypeArguments(()
-          endConstructorReference(X, null, ()
+          endConstructorReference(X, null, (, ConstructorReferenceContext.New)
           beginArguments(()
           endArguments(0, (, ))
         endNewExpression(new)
@@ -83,7 +83,7 @@
           beginConstructorReference(Y)
             handleNoTypeArguments(()
             handleNoConstructorReferenceContinuationAfterTypeArguments(()
-          endConstructorReference(Y, null, ()
+          endConstructorReference(Y, null, (, ConstructorReferenceContext.New)
           beginArguments(()
           endArguments(0, (, ))
         endNewExpression(new)
diff --git a/pkg/front_end/parser_testcases/nnbd/required_member.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/required_member.dart.intertwined.expect
index 0a4179e..b40afe0 100644
--- a/pkg/front_end/parser_testcases/nnbd/required_member.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/required_member.dart.intertwined.expect
@@ -52,14 +52,14 @@
                                 parseNewExpression(=)
                                   isNextIdentifier(new)
                                   listener: beginNewExpression(new)
-                                  parseConstructorReference(new, null)
+                                  parseConstructorReference(new, ConstructorReferenceContext.New, null)
                                     ensureIdentifier(new, constructorReference)
                                       listener: handleIdentifier(X, constructorReference)
                                     listener: beginConstructorReference(X)
                                     parseQualifiedRestOpt(X, constructorReferenceContinuation)
                                     listener: handleNoTypeArguments(()
                                     listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                                    listener: endConstructorReference(X, null, ()
+                                    listener: endConstructorReference(X, null, (, ConstructorReferenceContext.New)
                                   parseConstructorInvocationArguments(X)
                                     parseArgumentsRest(()
                                       listener: beginArguments(()
@@ -182,14 +182,14 @@
                             parseNewExpression(;)
                               isNextIdentifier(new)
                               listener: beginNewExpression(new)
-                              parseConstructorReference(new, null)
+                              parseConstructorReference(new, ConstructorReferenceContext.New, null)
                                 ensureIdentifier(new, constructorReference)
                                   listener: handleIdentifier(X, constructorReference)
                                 listener: beginConstructorReference(X)
                                 parseQualifiedRestOpt(X, constructorReferenceContinuation)
                                 listener: handleNoTypeArguments(()
                                 listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                                listener: endConstructorReference(X, null, ()
+                                listener: endConstructorReference(X, null, (, ConstructorReferenceContext.New)
                               parseConstructorInvocationArguments(X)
                                 parseArgumentsRest(()
                                   listener: beginArguments(()
@@ -228,14 +228,14 @@
                             parseNewExpression(;)
                               isNextIdentifier(new)
                               listener: beginNewExpression(new)
-                              parseConstructorReference(new, null)
+                              parseConstructorReference(new, ConstructorReferenceContext.New, null)
                                 ensureIdentifier(new, constructorReference)
                                   listener: handleIdentifier(Y, constructorReference)
                                 listener: beginConstructorReference(Y)
                                 parseQualifiedRestOpt(Y, constructorReferenceContinuation)
                                 listener: handleNoTypeArguments(()
                                 listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                                listener: endConstructorReference(Y, null, ()
+                                listener: endConstructorReference(Y, null, (, ConstructorReferenceContext.New)
                               parseConstructorInvocationArguments(Y)
                                 parseArgumentsRest(()
                                   listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.expect b/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.expect
index 7ef46c8..407ba51 100644
--- a/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.expect
@@ -24,7 +24,7 @@
                 beginConstructorReference(X)
                   handleNoTypeArguments(()
                   handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                endConstructorReference(X, null, ()
+                endConstructorReference(X, null, (, ConstructorReferenceContext.New)
                 beginArguments(()
                 endArguments(0, (, ))
               endNewExpression(new)
@@ -67,7 +67,7 @@
           beginConstructorReference(X)
             handleNoTypeArguments(()
             handleNoConstructorReferenceContinuationAfterTypeArguments(()
-          endConstructorReference(X, null, ()
+          endConstructorReference(X, null, (, ConstructorReferenceContext.New)
           beginArguments(()
           endArguments(0, (, ))
         endNewExpression(new)
@@ -83,7 +83,7 @@
           beginConstructorReference(Y)
             handleNoTypeArguments(()
             handleNoConstructorReferenceContinuationAfterTypeArguments(()
-          endConstructorReference(Y, null, ()
+          endConstructorReference(Y, null, (, ConstructorReferenceContext.New)
           beginArguments(()
           endArguments(0, (, ))
         endNewExpression(new)
diff --git a/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.intertwined.expect
index 0fd59b4..5bab2cc 100644
--- a/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.intertwined.expect
@@ -52,14 +52,14 @@
                                 parseNewExpression(=)
                                   isNextIdentifier(new)
                                   listener: beginNewExpression(new)
-                                  parseConstructorReference(new, null)
+                                  parseConstructorReference(new, ConstructorReferenceContext.New, null)
                                     ensureIdentifier(new, constructorReference)
                                       listener: handleIdentifier(X, constructorReference)
                                     listener: beginConstructorReference(X)
                                     parseQualifiedRestOpt(X, constructorReferenceContinuation)
                                     listener: handleNoTypeArguments(()
                                     listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                                    listener: endConstructorReference(X, null, ()
+                                    listener: endConstructorReference(X, null, (, ConstructorReferenceContext.New)
                                   parseConstructorInvocationArguments(X)
                                     parseArgumentsRest(()
                                       listener: beginArguments(()
@@ -182,14 +182,14 @@
                             parseNewExpression(;)
                               isNextIdentifier(new)
                               listener: beginNewExpression(new)
-                              parseConstructorReference(new, null)
+                              parseConstructorReference(new, ConstructorReferenceContext.New, null)
                                 ensureIdentifier(new, constructorReference)
                                   listener: handleIdentifier(X, constructorReference)
                                 listener: beginConstructorReference(X)
                                 parseQualifiedRestOpt(X, constructorReferenceContinuation)
                                 listener: handleNoTypeArguments(()
                                 listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                                listener: endConstructorReference(X, null, ()
+                                listener: endConstructorReference(X, null, (, ConstructorReferenceContext.New)
                               parseConstructorInvocationArguments(X)
                                 parseArgumentsRest(()
                                   listener: beginArguments(()
@@ -228,14 +228,14 @@
                             parseNewExpression(;)
                               isNextIdentifier(new)
                               listener: beginNewExpression(new)
-                              parseConstructorReference(new, null)
+                              parseConstructorReference(new, ConstructorReferenceContext.New, null)
                                 ensureIdentifier(new, constructorReference)
                                   listener: handleIdentifier(Y, constructorReference)
                                 listener: beginConstructorReference(Y)
                                 parseQualifiedRestOpt(Y, constructorReferenceContinuation)
                                 listener: handleNoTypeArguments(()
                                 listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                                listener: endConstructorReference(Y, null, ()
+                                listener: endConstructorReference(Y, null, (, ConstructorReferenceContext.New)
                               parseConstructorInvocationArguments(Y)
                                 parseArgumentsRest(()
                                   listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.expect b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.expect
index 3854dcc..e6983f9 100644
--- a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.expect
+++ b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.expect
@@ -86,7 +86,7 @@
                 beginConstructorReference(Foo)
                   handleNoTypeArguments(()
                   handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                endConstructorReference(Foo, null, ()
+                endConstructorReference(Foo, null, (, ConstructorReferenceContext.New)
                 beginArguments(()
                 endArguments(0, (, ))
               endNewExpression(new)
diff --git a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.intertwined.expect b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.intertwined.expect
index 158a83e..012f061 100644
--- a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.intertwined.expect
@@ -131,14 +131,14 @@
                               parseNewExpression(=)
                                 isNextIdentifier(new)
                                 listener: beginNewExpression(new)
-                                parseConstructorReference(new, null)
+                                parseConstructorReference(new, ConstructorReferenceContext.New, null)
                                   ensureIdentifier(new, constructorReference)
                                     listener: handleIdentifier(Foo, constructorReference)
                                   listener: beginConstructorReference(Foo)
                                   parseQualifiedRestOpt(Foo, constructorReferenceContinuation)
                                   listener: handleNoTypeArguments(()
                                   listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                                  listener: endConstructorReference(Foo, null, ()
+                                  listener: endConstructorReference(Foo, null, (, ConstructorReferenceContext.New)
                                 parseConstructorInvocationArguments(Foo)
                                   parseArgumentsRest(()
                                     listener: beginArguments(()
diff --git a/pkg/front_end/test/parser_test_listener.dart b/pkg/front_end/test/parser_test_listener.dart
index cb76069..3e5652c 100644
--- a/pkg/front_end/test/parser_test_listener.dart
+++ b/pkg/front_end/test/parser_test_listener.dart
@@ -4,6 +4,7 @@
 
 import 'package:_fe_analyzer_shared/src/parser/assert.dart';
 import 'package:_fe_analyzer_shared/src/parser/block_kind.dart';
+import 'package:_fe_analyzer_shared/src/parser/constructor_reference_context.dart';
 import 'package:_fe_analyzer_shared/src/parser/declaration_kind.dart';
 import 'package:_fe_analyzer_shared/src/parser/formal_parameter_kind.dart';
 import 'package:_fe_analyzer_shared/src/parser/identifier_context.dart';
@@ -324,8 +325,8 @@
     indent++;
   }
 
-  void endConstructorReference(
-      Token start, Token? periodBeforeName, Token endToken) {
+  void endConstructorReference(Token start, Token? periodBeforeName,
+      Token endToken, ConstructorReferenceContext constructorReferenceContext) {
     indent--;
     seen(start);
     seen(periodBeforeName);
@@ -333,7 +334,8 @@
     doPrint('endConstructorReference('
         '$start, '
         '$periodBeforeName, '
-        '$endToken)');
+        '$endToken, '
+        '$constructorReferenceContext)');
   }
 
   void beginDoWhileStatement(Token token) {
diff --git a/pkg/front_end/test/parser_test_listener_creator.dart b/pkg/front_end/test/parser_test_listener_creator.dart
index b4f5fc9..4ab6ba5 100644
--- a/pkg/front_end/test/parser_test_listener_creator.dart
+++ b/pkg/front_end/test/parser_test_listener_creator.dart
@@ -45,6 +45,7 @@
 
 import 'package:_fe_analyzer_shared/src/parser/assert.dart';
 import 'package:_fe_analyzer_shared/src/parser/block_kind.dart';
+import 'package:_fe_analyzer_shared/src/parser/constructor_reference_context.dart';
 import 'package:_fe_analyzer_shared/src/parser/declaration_kind.dart';
 import 'package:_fe_analyzer_shared/src/parser/formal_parameter_kind.dart';
 import 'package:_fe_analyzer_shared/src/parser/identifier_context.dart';
diff --git a/pkg/front_end/test/parser_test_parser.dart b/pkg/front_end/test/parser_test_parser.dart
index 79afa41..dad75c5 100644
--- a/pkg/front_end/test/parser_test_parser.dart
+++ b/pkg/front_end/test/parser_test_parser.dart
@@ -4,6 +4,7 @@
 
 import 'package:_fe_analyzer_shared/src/parser/assert.dart';
 import 'package:_fe_analyzer_shared/src/parser/block_kind.dart';
+import 'package:_fe_analyzer_shared/src/parser/constructor_reference_context.dart';
 import 'package:_fe_analyzer_shared/src/parser/declaration_kind.dart';
 import 'package:_fe_analyzer_shared/src/parser/directive_context.dart';
 import 'package:_fe_analyzer_shared/src/parser/formal_parameter_kind.dart';
@@ -1162,10 +1163,16 @@
     return result;
   }
 
-  Token parseConstructorReference(Token token, [TypeParamOrArgInfo? typeArg]) {
-    doPrint('parseConstructorReference(' '$token, ' '$typeArg)');
+  Token parseConstructorReference(
+      Token token, ConstructorReferenceContext constructorReferenceContext,
+      [TypeParamOrArgInfo? typeArg]) {
+    doPrint('parseConstructorReference('
+        '$token, '
+        '$constructorReferenceContext, '
+        '$typeArg)');
     indent++;
-    var result = super.parseConstructorReference(token, typeArg);
+    var result = super
+        .parseConstructorReference(token, constructorReferenceContext, typeArg);
     indent--;
     return result;
   }
diff --git a/pkg/front_end/test/parser_test_parser_creator.dart b/pkg/front_end/test/parser_test_parser_creator.dart
index 806d113..e7a826f 100644
--- a/pkg/front_end/test/parser_test_parser_creator.dart
+++ b/pkg/front_end/test/parser_test_parser_creator.dart
@@ -44,6 +44,7 @@
 
 import 'package:_fe_analyzer_shared/src/parser/assert.dart';
 import 'package:_fe_analyzer_shared/src/parser/block_kind.dart';
+import 'package:_fe_analyzer_shared/src/parser/constructor_reference_context.dart';
 import 'package:_fe_analyzer_shared/src/parser/declaration_kind.dart';
 import 'package:_fe_analyzer_shared/src/parser/directive_context.dart';
 import 'package:_fe_analyzer_shared/src/parser/formal_parameter_kind.dart';
diff --git a/pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart b/pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart
index 2021c88..e5a47ce 100644
--- a/pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart
+++ b/pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart
@@ -325,7 +325,7 @@
   cls.addProcedure(factoryConstructor);
 
   testExpression(
-      new FactoryConstructorInvocationJudgment(
+      new FactoryConstructorInvocation(
           factoryConstructor, new ArgumentsImpl([])),
       '''
 new Class()''',
@@ -333,7 +333,7 @@
 new library test:dummy::Class()''');
 
   testExpression(
-      new FactoryConstructorInvocationJudgment(
+      new FactoryConstructorInvocation(
           factoryConstructor,
           new ArgumentsImpl([new IntLiteral(0)],
               types: [const VoidType()],
@@ -345,7 +345,7 @@
 
   factoryConstructor.name = new Name('foo');
   testExpression(
-      new FactoryConstructorInvocationJudgment(
+      new FactoryConstructorInvocation(
           factoryConstructor,
           new ArgumentsImpl([new IntLiteral(0)],
               types: [const VoidType()],
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.expect
index 100d155..2c377ec 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.expect
@@ -1,50 +1,4 @@
 library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-//   A.named<int>.toString();
-//     ^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:16: Error: Couldn't find constructor 'A.named.toString'.
-//   A.named<int>.toString();
-//                ^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:29:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-//   a.m<int>.applyAndPrint([2]);
-//   ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:30:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-//   a.m<String>.applyAndPrint(['three']);
-//   ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-//   A.n<int>.applyAndPrint([2]);
-//     ^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-//   A.n<int>.applyAndPrint([2]);
-//            ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-//   A.n<String>.applyAndPrint(['three']);
-//     ^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-//   A.n<String>.applyAndPrint(['three']);
-//               ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:33:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-//   self.m<int>.applyAndPrint([2]);
-//   ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:34:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-//   self.m<String>.applyAndPrint(['three']);
-//   ^^^^^^^^^^^^^
-//
 import self as self;
 import "dart:core" as core;
 
@@ -73,42 +27,31 @@
 static method FunctionApplier|get#applyAndPrint(lowered final core::Function #this) → (core::List<core::Object?>) → void
   return (core::List<core::Object?> positionalArguments) → void => self::FunctionApplier|applyAndPrint(#this, positionalArguments);
 static method test() → dynamic {
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:16: Error: Couldn't find constructor 'A.named.toString'.
-  A.named<int>.toString();
-               ^^^^^^^^";
+  (#C4).{core::Object::toString}(){() → core::String};
 }
 static method main() → void {
   self::A<dynamic> a = new self::A::•<dynamic>();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:29:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-  a.m<int>.applyAndPrint([2]);
-  ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:30:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-  a.m<String>.applyAndPrint(['three']);
-  ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-  A.n<int>.applyAndPrint([2]);
-           ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-  A.n<String>.applyAndPrint(['three']);
-              ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:33:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-  self.m<int>.applyAndPrint([2]);
-  ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:34:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-  self.m<String>.applyAndPrint(['three']);
-  ^^^^^^^^^^^^^";
-  self::FunctionApplier|applyAndPrint(#C4, <core::Object?>[2]);
-  self::FunctionApplier|applyAndPrint(#C5, <core::Object?>["three"]);
-  (#C6).{core::Object::toString}(){() → core::String};
-  (#C7).{core::Object::toString}(){() → core::String};
+  self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::int>, <core::Object?>[2]);
+  self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::String>, <core::Object?>["three"]);
+  self::FunctionApplier|applyAndPrint(#C6, <core::Object?>[2]);
+  self::FunctionApplier|applyAndPrint(#C7, <core::Object?>["three"]);
+  self::FunctionApplier|applyAndPrint(#C9, <core::Object?>[2]);
+  self::FunctionApplier|applyAndPrint(#C10, <core::Object?>["three"]);
+  self::FunctionApplier|applyAndPrint(#C6, <core::Object?>[2]);
+  self::FunctionApplier|applyAndPrint(#C7, <core::Object?>["three"]);
+  (#C3).{core::Object::toString}(){() → core::String};
+  (#C4).{core::Object::toString}(){() → core::String};
 }
 
 constants  {
   #C1 = <dynamic>[]
   #C2 = core::_ImmutableMap<core::Symbol, dynamic> {_kvPairs:#C1}
-  #C3 = static-tearoff self::A::n
-  #C4 = instantiation self::A::n <core::int>
-  #C5 = instantiation self::A::n <core::String>
-  #C6 = constructor-tearoff self::A::named
-  #C7 = instantiation self::A::named <core::int>
+  #C3 = constructor-tearoff self::A::named
+  #C4 = instantiation self::A::named <core::int>
+  #C5 = static-tearoff self::A::n
+  #C6 = instantiation self::A::n <core::int>
+  #C7 = instantiation self::A::n <core::String>
+  #C8 = static-tearoff self::m
+  #C9 = instantiation self::m <core::int>
+  #C10 = instantiation self::m <core::String>
 }
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.transformed.expect
index c514b30..67fea71 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.transformed.expect
@@ -1,50 +1,4 @@
 library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-//   A.named<int>.toString();
-//     ^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:16: Error: Couldn't find constructor 'A.named.toString'.
-//   A.named<int>.toString();
-//                ^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:29:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-//   a.m<int>.applyAndPrint([2]);
-//   ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:30:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-//   a.m<String>.applyAndPrint(['three']);
-//   ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-//   A.n<int>.applyAndPrint([2]);
-//     ^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-//   A.n<int>.applyAndPrint([2]);
-//            ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-//   A.n<String>.applyAndPrint(['three']);
-//     ^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-//   A.n<String>.applyAndPrint(['three']);
-//               ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:33:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-//   self.m<int>.applyAndPrint([2]);
-//   ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:34:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-//   self.m<String>.applyAndPrint(['three']);
-//   ^^^^^^^^^^^^^
-//
 import self as self;
 import "dart:core" as core;
 
@@ -73,42 +27,31 @@
 static method FunctionApplier|get#applyAndPrint(lowered final core::Function #this) → (core::List<core::Object?>) → void
   return (core::List<core::Object?> positionalArguments) → void => self::FunctionApplier|applyAndPrint(#this, positionalArguments);
 static method test() → dynamic {
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:16: Error: Couldn't find constructor 'A.named.toString'.
-  A.named<int>.toString();
-               ^^^^^^^^";
+  (#C4).{core::Object::toString}(){() → core::String};
 }
 static method main() → void {
   self::A<dynamic> a = new self::A::•<dynamic>();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:29:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-  a.m<int>.applyAndPrint([2]);
-  ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:30:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-  a.m<String>.applyAndPrint(['three']);
-  ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-  A.n<int>.applyAndPrint([2]);
-           ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-  A.n<String>.applyAndPrint(['three']);
-              ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:33:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-  self.m<int>.applyAndPrint([2]);
-  ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:34:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-  self.m<String>.applyAndPrint(['three']);
-  ^^^^^^^^^^^^^";
-  self::FunctionApplier|applyAndPrint(#C4, core::_GrowableList::_literal1<core::Object?>(2));
-  self::FunctionApplier|applyAndPrint(#C5, core::_GrowableList::_literal1<core::Object?>("three"));
-  (#C6).{core::Object::toString}(){() → core::String};
-  (#C7).{core::Object::toString}(){() → core::String};
+  self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::int>, core::_GrowableList::_literal1<core::Object?>(2));
+  self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::String>, core::_GrowableList::_literal1<core::Object?>("three"));
+  self::FunctionApplier|applyAndPrint(#C6, core::_GrowableList::_literal1<core::Object?>(2));
+  self::FunctionApplier|applyAndPrint(#C7, core::_GrowableList::_literal1<core::Object?>("three"));
+  self::FunctionApplier|applyAndPrint(#C9, core::_GrowableList::_literal1<core::Object?>(2));
+  self::FunctionApplier|applyAndPrint(#C10, core::_GrowableList::_literal1<core::Object?>("three"));
+  self::FunctionApplier|applyAndPrint(#C6, core::_GrowableList::_literal1<core::Object?>(2));
+  self::FunctionApplier|applyAndPrint(#C7, core::_GrowableList::_literal1<core::Object?>("three"));
+  (#C3).{core::Object::toString}(){() → core::String};
+  (#C4).{core::Object::toString}(){() → core::String};
 }
 
 constants  {
   #C1 = <dynamic>[]
   #C2 = core::_ImmutableMap<core::Symbol, dynamic> {_kvPairs:#C1}
-  #C3 = static-tearoff self::A::n
-  #C4 = instantiation self::A::n <core::int>
-  #C5 = instantiation self::A::n <core::String>
-  #C6 = constructor-tearoff self::A::named
-  #C7 = instantiation self::A::named <core::int>
+  #C3 = constructor-tearoff self::A::named
+  #C4 = instantiation self::A::named <core::int>
+  #C5 = static-tearoff self::A::n
+  #C6 = instantiation self::A::n <core::int>
+  #C7 = instantiation self::A::n <core::String>
+  #C8 = static-tearoff self::m
+  #C9 = instantiation self::m <core::int>
+  #C10 = instantiation self::m <core::String>
 }
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.expect
index d900242..a112778 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.expect
@@ -1,50 +1,4 @@
 library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-//   A.named<int>.toString();
-//     ^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:16: Error: Couldn't find constructor 'A.named.toString'.
-//   A.named<int>.toString();
-//                ^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:29:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-//   a.m<int>.applyAndPrint([2]);
-//   ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:30:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-//   a.m<String>.applyAndPrint(['three']);
-//   ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-//   A.n<int>.applyAndPrint([2]);
-//     ^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-//   A.n<int>.applyAndPrint([2]);
-//            ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-//   A.n<String>.applyAndPrint(['three']);
-//     ^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-//   A.n<String>.applyAndPrint(['three']);
-//               ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:33:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-//   self.m<int>.applyAndPrint([2]);
-//   ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:34:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-//   self.m<String>.applyAndPrint(['three']);
-//   ^^^^^^^^^^^^^
-//
 import self as self;
 import "dart:core" as core;
 
@@ -73,42 +27,31 @@
 static method FunctionApplier|get#applyAndPrint(lowered final core::Function #this) → (core::List<core::Object?>) → void
   return (core::List<core::Object?> positionalArguments) → void => self::FunctionApplier|applyAndPrint(#this, positionalArguments);
 static method test() → dynamic {
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:16: Error: Couldn't find constructor 'A.named.toString'.
-  A.named<int>.toString();
-               ^^^^^^^^";
+  (#C4).{core::Object::toString}(){() → core::String};
 }
 static method main() → void {
   self::A<dynamic> a = new self::A::•<dynamic>();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:29:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-  a.m<int>.applyAndPrint([2]);
-  ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:30:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-  a.m<String>.applyAndPrint(['three']);
-  ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-  A.n<int>.applyAndPrint([2]);
-           ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-  A.n<String>.applyAndPrint(['three']);
-              ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:33:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-  self.m<int>.applyAndPrint([2]);
-  ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:34:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-  self.m<String>.applyAndPrint(['three']);
-  ^^^^^^^^^^^^^";
-  self::FunctionApplier|applyAndPrint(#C4, <core::Object?>[2]);
-  self::FunctionApplier|applyAndPrint(#C5, <core::Object?>["three"]);
-  (#C6).{core::Object::toString}(){() → core::String};
-  (#C7).{core::Object::toString}(){() → core::String};
+  self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::int>, <core::Object?>[2]);
+  self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::String>, <core::Object?>["three"]);
+  self::FunctionApplier|applyAndPrint(#C6, <core::Object?>[2]);
+  self::FunctionApplier|applyAndPrint(#C7, <core::Object?>["three"]);
+  self::FunctionApplier|applyAndPrint(#C9, <core::Object?>[2]);
+  self::FunctionApplier|applyAndPrint(#C10, <core::Object?>["three"]);
+  self::FunctionApplier|applyAndPrint(#C6, <core::Object?>[2]);
+  self::FunctionApplier|applyAndPrint(#C7, <core::Object?>["three"]);
+  (#C3).{core::Object::toString}(){() → core::String};
+  (#C4).{core::Object::toString}(){() → core::String};
 }
 
 constants  {
   #C1 = <dynamic>[]
   #C2 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C1}
-  #C3 = static-tearoff self::A::n
-  #C4 = instantiation self::A::n <core::int*>
-  #C5 = instantiation self::A::n <core::String*>
-  #C6 = constructor-tearoff self::A::named
-  #C7 = instantiation self::A::named <core::int*>
+  #C3 = constructor-tearoff self::A::named
+  #C4 = instantiation self::A::named <core::int*>
+  #C5 = static-tearoff self::A::n
+  #C6 = instantiation self::A::n <core::int*>
+  #C7 = instantiation self::A::n <core::String*>
+  #C8 = static-tearoff self::m
+  #C9 = instantiation self::m <core::int*>
+  #C10 = instantiation self::m <core::String*>
 }
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.transformed.expect
index c7d67d3..ca0d633 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.transformed.expect
@@ -1,50 +1,4 @@
 library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-//   A.named<int>.toString();
-//     ^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:16: Error: Couldn't find constructor 'A.named.toString'.
-//   A.named<int>.toString();
-//                ^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:29:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-//   a.m<int>.applyAndPrint([2]);
-//   ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:30:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-//   a.m<String>.applyAndPrint(['three']);
-//   ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-//   A.n<int>.applyAndPrint([2]);
-//     ^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-//   A.n<int>.applyAndPrint([2]);
-//            ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-//   A.n<String>.applyAndPrint(['three']);
-//     ^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-//   A.n<String>.applyAndPrint(['three']);
-//               ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:33:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-//   self.m<int>.applyAndPrint([2]);
-//   ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:34:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-//   self.m<String>.applyAndPrint(['three']);
-//   ^^^^^^^^^^^^^
-//
 import self as self;
 import "dart:core" as core;
 
@@ -73,42 +27,31 @@
 static method FunctionApplier|get#applyAndPrint(lowered final core::Function #this) → (core::List<core::Object?>) → void
   return (core::List<core::Object?> positionalArguments) → void => self::FunctionApplier|applyAndPrint(#this, positionalArguments);
 static method test() → dynamic {
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:16: Error: Couldn't find constructor 'A.named.toString'.
-  A.named<int>.toString();
-               ^^^^^^^^";
+  (#C4).{core::Object::toString}(){() → core::String};
 }
 static method main() → void {
   self::A<dynamic> a = new self::A::•<dynamic>();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:29:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-  a.m<int>.applyAndPrint([2]);
-  ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:30:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-  a.m<String>.applyAndPrint(['three']);
-  ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-  A.n<int>.applyAndPrint([2]);
-           ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-  A.n<String>.applyAndPrint(['three']);
-              ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:33:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-  self.m<int>.applyAndPrint([2]);
-  ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:34:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-  self.m<String>.applyAndPrint(['three']);
-  ^^^^^^^^^^^^^";
-  self::FunctionApplier|applyAndPrint(#C4, core::_GrowableList::_literal1<core::Object?>(2));
-  self::FunctionApplier|applyAndPrint(#C5, core::_GrowableList::_literal1<core::Object?>("three"));
-  (#C6).{core::Object::toString}(){() → core::String};
-  (#C7).{core::Object::toString}(){() → core::String};
+  self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::int>, core::_GrowableList::_literal1<core::Object?>(2));
+  self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::String>, core::_GrowableList::_literal1<core::Object?>("three"));
+  self::FunctionApplier|applyAndPrint(#C6, core::_GrowableList::_literal1<core::Object?>(2));
+  self::FunctionApplier|applyAndPrint(#C7, core::_GrowableList::_literal1<core::Object?>("three"));
+  self::FunctionApplier|applyAndPrint(#C9, core::_GrowableList::_literal1<core::Object?>(2));
+  self::FunctionApplier|applyAndPrint(#C10, core::_GrowableList::_literal1<core::Object?>("three"));
+  self::FunctionApplier|applyAndPrint(#C6, core::_GrowableList::_literal1<core::Object?>(2));
+  self::FunctionApplier|applyAndPrint(#C7, core::_GrowableList::_literal1<core::Object?>("three"));
+  (#C3).{core::Object::toString}(){() → core::String};
+  (#C4).{core::Object::toString}(){() → core::String};
 }
 
 constants  {
   #C1 = <dynamic>[]
   #C2 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C1}
-  #C3 = static-tearoff self::A::n
-  #C4 = instantiation self::A::n <core::int*>
-  #C5 = instantiation self::A::n <core::String*>
-  #C6 = constructor-tearoff self::A::named
-  #C7 = instantiation self::A::named <core::int*>
+  #C3 = constructor-tearoff self::A::named
+  #C4 = instantiation self::A::named <core::int*>
+  #C5 = static-tearoff self::A::n
+  #C6 = instantiation self::A::n <core::int*>
+  #C7 = instantiation self::A::n <core::String*>
+  #C8 = static-tearoff self::m
+  #C9 = instantiation self::m <core::int*>
+  #C10 = instantiation self::m <core::String*>
 }
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.expect
index 92ee53e..1c0eeb1 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.expect
@@ -1,11 +1,4 @@
 library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46887.dart:15:32: Error: Couldn't find constructor 'a.toString'.
-//   expect("${a<b, c>}, null", f(a<b, c>.toString()));
-//                                ^^^^^^^^
-//
 import self as self;
 import "dart:core" as core;
 
@@ -17,9 +10,7 @@
   return "a<${self::a::T1%}, ${self::a::T2%}>(${x})";
 }
 static method main() → dynamic {
-  self::expect("${#C3}, null", self::f(invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46887.dart:15:32: Error: Couldn't find constructor 'a.toString'.
-  expect(\"\${a<b, c>}, null\", f(a<b, c>.toString()));
-                               ^^^^^^^^"));
+  self::expect("${#C3}, null", self::f((#C3).{core::Object::toString}(){() → core::String}));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
   if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.transformed.expect
index 92ee53e..1c0eeb1 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.transformed.expect
@@ -1,11 +1,4 @@
 library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46887.dart:15:32: Error: Couldn't find constructor 'a.toString'.
-//   expect("${a<b, c>}, null", f(a<b, c>.toString()));
-//                                ^^^^^^^^
-//
 import self as self;
 import "dart:core" as core;
 
@@ -17,9 +10,7 @@
   return "a<${self::a::T1%}, ${self::a::T2%}>(${x})";
 }
 static method main() → dynamic {
-  self::expect("${#C3}, null", self::f(invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46887.dart:15:32: Error: Couldn't find constructor 'a.toString'.
-  expect(\"\${a<b, c>}, null\", f(a<b, c>.toString()));
-                               ^^^^^^^^"));
+  self::expect("${#C3}, null", self::f((#C3).{core::Object::toString}(){() → core::String}));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
   if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.expect
index a8a4b37..19cc640 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.expect
@@ -1,11 +1,4 @@
 library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46887.dart:15:32: Error: Couldn't find constructor 'a.toString'.
-//   expect("${a<b, c>}, null", f(a<b, c>.toString()));
-//                                ^^^^^^^^
-//
 import self as self;
 import "dart:core" as core;
 
@@ -17,9 +10,7 @@
   return "a<${self::a::T1%}, ${self::a::T2%}>(${x})";
 }
 static method main() → dynamic {
-  self::expect("${#C3}, null", self::f(invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46887.dart:15:32: Error: Couldn't find constructor 'a.toString'.
-  expect(\"\${a<b, c>}, null\", f(a<b, c>.toString()));
-                               ^^^^^^^^"));
+  self::expect("${#C3}, null", self::f((#C3).{core::Object::toString}(){() → core::String}));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
   if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.transformed.expect
index a8a4b37..19cc640 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.transformed.expect
@@ -1,11 +1,4 @@
 library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46887.dart:15:32: Error: Couldn't find constructor 'a.toString'.
-//   expect("${a<b, c>}, null", f(a<b, c>.toString()));
-//                                ^^^^^^^^
-//
 import self as self;
 import "dart:core" as core;
 
@@ -17,9 +10,7 @@
   return "a<${self::a::T1%}, ${self::a::T2%}>(${x})";
 }
 static method main() → dynamic {
-  self::expect("${#C3}, null", self::f(invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46887.dart:15:32: Error: Couldn't find constructor 'a.toString'.
-  expect(\"\${a<b, c>}, null\", f(a<b, c>.toString()));
-                               ^^^^^^^^"));
+  self::expect("${#C3}, null", self::f((#C3).{core::Object::toString}(){() → core::String}));
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
   if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart
new file mode 100644
index 0000000..19d9464
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2021, 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.
+
+// Test that redirecting factory invocations in default values are handled for
+// tear off parameters.
+
+class Class {
+  final List<Const> constants;
+
+  Class(
+      {this.constants = const [
+        Const.impl(),
+        Alias.impl(),
+        ImplAlias<String>()
+      ]});
+}
+
+typedef Alias = Const;
+
+abstract class Const {
+  const factory Const.impl() = _ConstImpl;
+}
+
+typedef ImplAlias<T extends num> = _ConstImpl<T>;
+
+class _ConstImpl<T> implements Const {
+  const _ConstImpl();
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.strong.expect
new file mode 100644
index 0000000..c0c195f
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.strong.expect
@@ -0,0 +1,54 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart:15:9: Error: Type argument 'String' doesn't conform to the bound 'num' of the type variable 'T' on 'ImplAlias'.
+// Try changing type arguments so that they conform to the bounds.
+//         ImplAlias<String>()
+//         ^
+// pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart:25:19: Context: This is the type variable whose bound isn't conformed to.
+// typedef ImplAlias<T extends num> = _ConstImpl<T>;
+//                   ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef Alias = self::Const;
+typedef ImplAlias<T extends core::num> = self::_ConstImpl<T>;
+class Class extends core::Object {
+  final field core::List<self::Const> constants;
+  constructor •({core::List<self::Const> constants = #C3}) → self::Class
+    : self::Class::constants = constants, super core::Object::•()
+    ;
+  static method _#new#tearOff({core::List<self::Const> constants = #C3}) → self::Class
+    return new self::Class::•(constants: constants);
+}
+abstract class Const extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::Const::impl]/*isLegacy*/;
+  static factory impl() → self::Const
+    return new self::_ConstImpl::•<dynamic>();
+  static method _#impl#tearOff() → self::Const
+    return new self::_ConstImpl::•<dynamic>();
+}
+class _ConstImpl<T extends core::Object? = dynamic> extends core::Object implements self::Const /*hasConstConstructor*/  {
+  const constructor •() → self::_ConstImpl<self::_ConstImpl::T%>
+    : super core::Object::•()
+    ;
+  static method _#new#tearOff<T extends core::Object? = dynamic>() → self::_ConstImpl<self::_ConstImpl::_#new#tearOff::T%>
+    return new self::_ConstImpl::•<self::_ConstImpl::_#new#tearOff::T%>();
+}
+static method main() → dynamic {}
+static method _#ImplAlias#new#tearOff<T extends core::num>() → self::_ConstImpl<self::_#ImplAlias#new#tearOff::T>
+  return new self::_ConstImpl::•<self::_#ImplAlias#new#tearOff::T>();
+
+constants  {
+  #C1 = self::_ConstImpl<dynamic> {}
+  #C2 = self::_ConstImpl<core::String> {}
+  #C3 = <self::Const>[#C1, #C1, #C2]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///const_redirect.dart:
+- _ConstImpl. (from org-dartlang-testcase:///const_redirect.dart:28:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.strong.transformed.expect
new file mode 100644
index 0000000..c0c195f
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.strong.transformed.expect
@@ -0,0 +1,54 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart:15:9: Error: Type argument 'String' doesn't conform to the bound 'num' of the type variable 'T' on 'ImplAlias'.
+// Try changing type arguments so that they conform to the bounds.
+//         ImplAlias<String>()
+//         ^
+// pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart:25:19: Context: This is the type variable whose bound isn't conformed to.
+// typedef ImplAlias<T extends num> = _ConstImpl<T>;
+//                   ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef Alias = self::Const;
+typedef ImplAlias<T extends core::num> = self::_ConstImpl<T>;
+class Class extends core::Object {
+  final field core::List<self::Const> constants;
+  constructor •({core::List<self::Const> constants = #C3}) → self::Class
+    : self::Class::constants = constants, super core::Object::•()
+    ;
+  static method _#new#tearOff({core::List<self::Const> constants = #C3}) → self::Class
+    return new self::Class::•(constants: constants);
+}
+abstract class Const extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::Const::impl]/*isLegacy*/;
+  static factory impl() → self::Const
+    return new self::_ConstImpl::•<dynamic>();
+  static method _#impl#tearOff() → self::Const
+    return new self::_ConstImpl::•<dynamic>();
+}
+class _ConstImpl<T extends core::Object? = dynamic> extends core::Object implements self::Const /*hasConstConstructor*/  {
+  const constructor •() → self::_ConstImpl<self::_ConstImpl::T%>
+    : super core::Object::•()
+    ;
+  static method _#new#tearOff<T extends core::Object? = dynamic>() → self::_ConstImpl<self::_ConstImpl::_#new#tearOff::T%>
+    return new self::_ConstImpl::•<self::_ConstImpl::_#new#tearOff::T%>();
+}
+static method main() → dynamic {}
+static method _#ImplAlias#new#tearOff<T extends core::num>() → self::_ConstImpl<self::_#ImplAlias#new#tearOff::T>
+  return new self::_ConstImpl::•<self::_#ImplAlias#new#tearOff::T>();
+
+constants  {
+  #C1 = self::_ConstImpl<dynamic> {}
+  #C2 = self::_ConstImpl<core::String> {}
+  #C3 = <self::Const>[#C1, #C1, #C2]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///const_redirect.dart:
+- _ConstImpl. (from org-dartlang-testcase:///const_redirect.dart:28:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.textual_outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.textual_outline.expect
new file mode 100644
index 0000000..2453b30
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.textual_outline.expect
@@ -0,0 +1,23 @@
+class Class {
+  final List<Const> constants;
+  Class(
+      {this.constants = const [
+        Const.impl(),
+        Alias.impl(),
+        ImplAlias<String>()
+      ]});
+}
+
+typedef Alias = Const;
+
+abstract class Const {
+  const factory Const.impl() = _ConstImpl;
+}
+
+typedef ImplAlias<T extends num> = _ConstImpl<T>;
+
+class _ConstImpl<T> implements Const {
+  const _ConstImpl();
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..615c4c2
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.textual_outline_modelled.expect
@@ -0,0 +1,21 @@
+abstract class Const {
+  const factory Const.impl() = _ConstImpl;
+}
+
+class Class {
+  Class(
+      {this.constants = const [
+        Const.impl(),
+        Alias.impl(),
+        ImplAlias<String>()
+      ]});
+  final List<Const> constants;
+}
+
+class _ConstImpl<T> implements Const {
+  const _ConstImpl();
+}
+
+main() {}
+typedef Alias = Const;
+typedef ImplAlias<T extends num> = _ConstImpl<T>;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.expect
new file mode 100644
index 0000000..94ca00a
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.expect
@@ -0,0 +1,54 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart:15:9: Error: Type argument 'String' doesn't conform to the bound 'num' of the type variable 'T' on 'ImplAlias'.
+// Try changing type arguments so that they conform to the bounds.
+//         ImplAlias<String>()
+//         ^
+// pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart:25:19: Context: This is the type variable whose bound isn't conformed to.
+// typedef ImplAlias<T extends num> = _ConstImpl<T>;
+//                   ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef Alias = self::Const;
+typedef ImplAlias<T extends core::num> = self::_ConstImpl<T>;
+class Class extends core::Object {
+  final field core::List<self::Const> constants;
+  constructor •({core::List<self::Const> constants = #C3}) → self::Class
+    : self::Class::constants = constants, super core::Object::•()
+    ;
+  static method _#new#tearOff({core::List<self::Const> constants = #C3}) → self::Class
+    return new self::Class::•(constants: constants);
+}
+abstract class Const extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::Const::impl]/*isLegacy*/;
+  static factory impl() → self::Const
+    return new self::_ConstImpl::•<dynamic>();
+  static method _#impl#tearOff() → self::Const
+    return new self::_ConstImpl::•<dynamic>();
+}
+class _ConstImpl<T extends core::Object? = dynamic> extends core::Object implements self::Const /*hasConstConstructor*/  {
+  const constructor •() → self::_ConstImpl<self::_ConstImpl::T%>
+    : super core::Object::•()
+    ;
+  static method _#new#tearOff<T extends core::Object? = dynamic>() → self::_ConstImpl<self::_ConstImpl::_#new#tearOff::T%>
+    return new self::_ConstImpl::•<self::_ConstImpl::_#new#tearOff::T%>();
+}
+static method main() → dynamic {}
+static method _#ImplAlias#new#tearOff<T extends core::num>() → self::_ConstImpl<self::_#ImplAlias#new#tearOff::T>
+  return new self::_ConstImpl::•<self::_#ImplAlias#new#tearOff::T>();
+
+constants  {
+  #C1 = self::_ConstImpl<dynamic> {}
+  #C2 = self::_ConstImpl<core::String*> {}
+  #C3 = <self::Const*>[#C1, #C1, #C2]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///const_redirect.dart:
+- _ConstImpl. (from org-dartlang-testcase:///const_redirect.dart:28:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.outline.expect
new file mode 100644
index 0000000..f2eca4d
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.outline.expect
@@ -0,0 +1,31 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+typedef Alias = self::Const;
+typedef ImplAlias<T extends core::num> = self::_ConstImpl<T>;
+class Class extends core::Object {
+  final field core::List<self::Const> constants;
+  constructor •({core::List<self::Const> constants}) → self::Class
+    ;
+  static method _#new#tearOff({core::List<self::Const> constants}) → self::Class
+    return new self::Class::•(constants: constants);
+}
+abstract class Const extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::Const::impl]/*isLegacy*/;
+  static factory impl() → self::Const
+    return new self::_ConstImpl::•<dynamic>();
+  static method _#impl#tearOff() → self::Const
+    return new self::_ConstImpl::•<dynamic>();
+}
+class _ConstImpl<T extends core::Object? = dynamic> extends core::Object implements self::Const /*hasConstConstructor*/  {
+  const constructor •() → self::_ConstImpl<self::_ConstImpl::T%>
+    : super core::Object::•()
+    ;
+  static method _#new#tearOff<T extends core::Object? = dynamic>() → self::_ConstImpl<self::_ConstImpl::_#new#tearOff::T%>
+    return new self::_ConstImpl::•<self::_ConstImpl::_#new#tearOff::T%>();
+}
+static method main() → dynamic
+  ;
+static method _#ImplAlias#new#tearOff<T extends core::num>() → self::_ConstImpl<self::_#ImplAlias#new#tearOff::T>
+  return new self::_ConstImpl::•<self::_#ImplAlias#new#tearOff::T>();
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.transformed.expect
new file mode 100644
index 0000000..94ca00a
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.transformed.expect
@@ -0,0 +1,54 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart:15:9: Error: Type argument 'String' doesn't conform to the bound 'num' of the type variable 'T' on 'ImplAlias'.
+// Try changing type arguments so that they conform to the bounds.
+//         ImplAlias<String>()
+//         ^
+// pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart:25:19: Context: This is the type variable whose bound isn't conformed to.
+// typedef ImplAlias<T extends num> = _ConstImpl<T>;
+//                   ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef Alias = self::Const;
+typedef ImplAlias<T extends core::num> = self::_ConstImpl<T>;
+class Class extends core::Object {
+  final field core::List<self::Const> constants;
+  constructor •({core::List<self::Const> constants = #C3}) → self::Class
+    : self::Class::constants = constants, super core::Object::•()
+    ;
+  static method _#new#tearOff({core::List<self::Const> constants = #C3}) → self::Class
+    return new self::Class::•(constants: constants);
+}
+abstract class Const extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::Const::impl]/*isLegacy*/;
+  static factory impl() → self::Const
+    return new self::_ConstImpl::•<dynamic>();
+  static method _#impl#tearOff() → self::Const
+    return new self::_ConstImpl::•<dynamic>();
+}
+class _ConstImpl<T extends core::Object? = dynamic> extends core::Object implements self::Const /*hasConstConstructor*/  {
+  const constructor •() → self::_ConstImpl<self::_ConstImpl::T%>
+    : super core::Object::•()
+    ;
+  static method _#new#tearOff<T extends core::Object? = dynamic>() → self::_ConstImpl<self::_ConstImpl::_#new#tearOff::T%>
+    return new self::_ConstImpl::•<self::_ConstImpl::_#new#tearOff::T%>();
+}
+static method main() → dynamic {}
+static method _#ImplAlias#new#tearOff<T extends core::num>() → self::_ConstImpl<self::_#ImplAlias#new#tearOff::T>
+  return new self::_ConstImpl::•<self::_#ImplAlias#new#tearOff::T>();
+
+constants  {
+  #C1 = self::_ConstImpl<dynamic> {}
+  #C2 = self::_ConstImpl<core::String*> {}
+  #C3 = <self::Const*>[#C1, #C1, #C2]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///const_redirect.dart:
+- _ConstImpl. (from org-dartlang-testcase:///const_redirect.dart:28:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart
new file mode 100644
index 0000000..9c53ca0
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart
@@ -0,0 +1,25 @@
+// Copyright (c) 2021, 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.
+
+class A<T> {
+  A();
+  A.named();
+  factory A.fact() => new A();
+  factory A.redirect() = A;
+}
+
+typedef B<T extends num> = A<T>;
+
+test() {
+  A.new<int>;
+  A.named<int>;
+  A.fact<int>;
+  A.redirect<int>;
+  B.new<int>;
+  B.named<int>;
+  B.fact<int>;
+  B.redirect<int>;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.strong.expect
new file mode 100644
index 0000000..1970258
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.strong.expect
@@ -0,0 +1,112 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:15:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   A.new<int>;
+//        ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:16:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   A.named<int>;
+//          ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:17:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   A.fact<int>;
+//         ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:18:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   A.redirect<int>;
+//             ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:19:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   B.new<int>;
+//        ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:20:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   B.named<int>;
+//          ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:21:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   B.fact<int>;
+//         ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:22:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   B.redirect<int>;
+//             ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef B<T extends core::num> = self::A<T>;
+class A<T extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
+  constructor •() → self::A<self::A::T%>
+    : super core::Object::•()
+    ;
+  constructor named() → self::A<self::A::T%>
+    : super core::Object::•()
+    ;
+  static method _#new#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#new#tearOff::T%>
+    return new self::A::•<self::A::_#new#tearOff::T%>();
+  static method _#named#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#named#tearOff::T%>
+    return new self::A::named<self::A::_#named#tearOff::T%>();
+  static factory fact<T extends core::Object? = dynamic>() → self::A<self::A::fact::T%>
+    return new self::A::•<self::A::fact::T%>();
+  static method _#fact#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#fact#tearOff::T%>
+    return self::A::fact<self::A::_#fact#tearOff::T%>();
+  static factory redirect<T extends core::Object? = dynamic>() → self::A<self::A::redirect::T%>
+    return new self::A::•<self::A::redirect::T%>();
+  static method _#redirect#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#redirect#tearOff::T%>
+    return new self::A::•<self::A::_#redirect#tearOff::T%>();
+}
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:15:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  A.new<int>;
+       ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:16:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  A.named<int>;
+         ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:17:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  A.fact<int>;
+        ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:18:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  A.redirect<int>;
+            ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:19:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  B.new<int>;
+       ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:20:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  B.named<int>;
+         ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:21:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  B.fact<int>;
+        ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:22:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  B.redirect<int>;
+            ^";
+}
+static method main() → dynamic {}
+static method _#B#new#tearOff<T extends core::num>() → self::A<self::_#B#new#tearOff::T>
+  return new self::A::•<self::_#B#new#tearOff::T>();
+static method _#B#named#tearOff<T extends core::num>() → self::A<self::_#B#named#tearOff::T>
+  return new self::A::named<self::_#B#named#tearOff::T>();
+static method _#B#fact#tearOff<T extends core::num>() → self::A<self::_#B#fact#tearOff::T>
+  return self::A::fact<self::_#B#fact#tearOff::T>();
+static method _#B#redirect#tearOff<T extends core::num>() → self::A<self::_#B#redirect#tearOff::T>
+  return self::A::_#redirect#tearOff<self::_#B#redirect#tearOff::T>();
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.strong.transformed.expect
new file mode 100644
index 0000000..1970258
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.strong.transformed.expect
@@ -0,0 +1,112 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:15:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   A.new<int>;
+//        ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:16:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   A.named<int>;
+//          ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:17:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   A.fact<int>;
+//         ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:18:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   A.redirect<int>;
+//             ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:19:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   B.new<int>;
+//        ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:20:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   B.named<int>;
+//          ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:21:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   B.fact<int>;
+//         ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:22:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   B.redirect<int>;
+//             ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef B<T extends core::num> = self::A<T>;
+class A<T extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
+  constructor •() → self::A<self::A::T%>
+    : super core::Object::•()
+    ;
+  constructor named() → self::A<self::A::T%>
+    : super core::Object::•()
+    ;
+  static method _#new#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#new#tearOff::T%>
+    return new self::A::•<self::A::_#new#tearOff::T%>();
+  static method _#named#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#named#tearOff::T%>
+    return new self::A::named<self::A::_#named#tearOff::T%>();
+  static factory fact<T extends core::Object? = dynamic>() → self::A<self::A::fact::T%>
+    return new self::A::•<self::A::fact::T%>();
+  static method _#fact#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#fact#tearOff::T%>
+    return self::A::fact<self::A::_#fact#tearOff::T%>();
+  static factory redirect<T extends core::Object? = dynamic>() → self::A<self::A::redirect::T%>
+    return new self::A::•<self::A::redirect::T%>();
+  static method _#redirect#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#redirect#tearOff::T%>
+    return new self::A::•<self::A::_#redirect#tearOff::T%>();
+}
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:15:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  A.new<int>;
+       ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:16:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  A.named<int>;
+         ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:17:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  A.fact<int>;
+        ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:18:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  A.redirect<int>;
+            ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:19:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  B.new<int>;
+       ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:20:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  B.named<int>;
+         ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:21:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  B.fact<int>;
+        ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:22:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  B.redirect<int>;
+            ^";
+}
+static method main() → dynamic {}
+static method _#B#new#tearOff<T extends core::num>() → self::A<self::_#B#new#tearOff::T>
+  return new self::A::•<self::_#B#new#tearOff::T>();
+static method _#B#named#tearOff<T extends core::num>() → self::A<self::_#B#named#tearOff::T>
+  return new self::A::named<self::_#B#named#tearOff::T>();
+static method _#B#fact#tearOff<T extends core::num>() → self::A<self::_#B#fact#tearOff::T>
+  return self::A::fact<self::_#B#fact#tearOff::T>();
+static method _#B#redirect#tearOff<T extends core::num>() → self::A<self::_#B#redirect#tearOff::T>
+  return self::A::_#redirect#tearOff<self::_#B#redirect#tearOff::T>();
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.textual_outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.textual_outline.expect
new file mode 100644
index 0000000..a06e869
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.textual_outline.expect
@@ -0,0 +1,10 @@
+class A<T> {
+  A();
+  A.named();
+  factory A.fact() => new A();
+  factory A.redirect() = A;
+}
+
+typedef B<T extends num> = A<T>;
+test() {}
+main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..fe289bf
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.textual_outline_modelled.expect
@@ -0,0 +1,10 @@
+class A<T> {
+  A();
+  A.named();
+  factory A.fact() => new A();
+  factory A.redirect() = A;
+}
+
+main() {}
+test() {}
+typedef B<T extends num> = A<T>;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.expect
new file mode 100644
index 0000000..1970258
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.expect
@@ -0,0 +1,112 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:15:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   A.new<int>;
+//        ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:16:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   A.named<int>;
+//          ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:17:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   A.fact<int>;
+//         ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:18:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   A.redirect<int>;
+//             ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:19:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   B.new<int>;
+//        ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:20:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   B.named<int>;
+//          ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:21:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   B.fact<int>;
+//         ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:22:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   B.redirect<int>;
+//             ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef B<T extends core::num> = self::A<T>;
+class A<T extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
+  constructor •() → self::A<self::A::T%>
+    : super core::Object::•()
+    ;
+  constructor named() → self::A<self::A::T%>
+    : super core::Object::•()
+    ;
+  static method _#new#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#new#tearOff::T%>
+    return new self::A::•<self::A::_#new#tearOff::T%>();
+  static method _#named#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#named#tearOff::T%>
+    return new self::A::named<self::A::_#named#tearOff::T%>();
+  static factory fact<T extends core::Object? = dynamic>() → self::A<self::A::fact::T%>
+    return new self::A::•<self::A::fact::T%>();
+  static method _#fact#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#fact#tearOff::T%>
+    return self::A::fact<self::A::_#fact#tearOff::T%>();
+  static factory redirect<T extends core::Object? = dynamic>() → self::A<self::A::redirect::T%>
+    return new self::A::•<self::A::redirect::T%>();
+  static method _#redirect#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#redirect#tearOff::T%>
+    return new self::A::•<self::A::_#redirect#tearOff::T%>();
+}
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:15:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  A.new<int>;
+       ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:16:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  A.named<int>;
+         ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:17:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  A.fact<int>;
+        ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:18:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  A.redirect<int>;
+            ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:19:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  B.new<int>;
+       ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:20:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  B.named<int>;
+         ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:21:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  B.fact<int>;
+        ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:22:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  B.redirect<int>;
+            ^";
+}
+static method main() → dynamic {}
+static method _#B#new#tearOff<T extends core::num>() → self::A<self::_#B#new#tearOff::T>
+  return new self::A::•<self::_#B#new#tearOff::T>();
+static method _#B#named#tearOff<T extends core::num>() → self::A<self::_#B#named#tearOff::T>
+  return new self::A::named<self::_#B#named#tearOff::T>();
+static method _#B#fact#tearOff<T extends core::num>() → self::A<self::_#B#fact#tearOff::T>
+  return self::A::fact<self::_#B#fact#tearOff::T>();
+static method _#B#redirect#tearOff<T extends core::num>() → self::A<self::_#B#redirect#tearOff::T>
+  return self::A::_#redirect#tearOff<self::_#B#redirect#tearOff::T>();
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.outline.expect
new file mode 100644
index 0000000..ae23513
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.outline.expect
@@ -0,0 +1,36 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+typedef B<T extends core::num> = self::A<T>;
+class A<T extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
+  constructor •() → self::A<self::A::T%>
+    ;
+  constructor named() → self::A<self::A::T%>
+    ;
+  static method _#new#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#new#tearOff::T%>
+    return new self::A::•<self::A::_#new#tearOff::T%>();
+  static method _#named#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#named#tearOff::T%>
+    return new self::A::named<self::A::_#named#tearOff::T%>();
+  static factory fact<T extends core::Object? = dynamic>() → self::A<self::A::fact::T%>
+    ;
+  static method _#fact#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#fact#tearOff::T%>
+    return self::A::fact<self::A::_#fact#tearOff::T%>();
+  static factory redirect<T extends core::Object? = dynamic>() → self::A<self::A::redirect::T%>
+    return new self::A::•<self::A::redirect::T%>();
+  static method _#redirect#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#redirect#tearOff::T%>
+    return new self::A::•<self::A::_#redirect#tearOff::T%>();
+}
+static method test() → dynamic
+  ;
+static method main() → dynamic
+  ;
+static method _#B#new#tearOff<T extends core::num>() → self::A<self::_#B#new#tearOff::T>
+  return new self::A::•<self::_#B#new#tearOff::T>();
+static method _#B#named#tearOff<T extends core::num>() → self::A<self::_#B#named#tearOff::T>
+  return new self::A::named<self::_#B#named#tearOff::T>();
+static method _#B#fact#tearOff<T extends core::num>() → self::A<self::_#B#fact#tearOff::T>
+  return self::A::fact<self::_#B#fact#tearOff::T>();
+static method _#B#redirect#tearOff<T extends core::num>() → self::A<self::_#B#redirect#tearOff::T>
+  return self::A::_#redirect#tearOff<self::_#B#redirect#tearOff::T>();
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.transformed.expect
new file mode 100644
index 0000000..1970258
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.transformed.expect
@@ -0,0 +1,112 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:15:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   A.new<int>;
+//        ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:16:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   A.named<int>;
+//          ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:17:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   A.fact<int>;
+//         ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:18:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   A.redirect<int>;
+//             ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:19:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   B.new<int>;
+//        ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:20:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   B.named<int>;
+//          ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:21:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   B.fact<int>;
+//         ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:22:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+//   B.redirect<int>;
+//             ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef B<T extends core::num> = self::A<T>;
+class A<T extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
+  constructor •() → self::A<self::A::T%>
+    : super core::Object::•()
+    ;
+  constructor named() → self::A<self::A::T%>
+    : super core::Object::•()
+    ;
+  static method _#new#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#new#tearOff::T%>
+    return new self::A::•<self::A::_#new#tearOff::T%>();
+  static method _#named#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#named#tearOff::T%>
+    return new self::A::named<self::A::_#named#tearOff::T%>();
+  static factory fact<T extends core::Object? = dynamic>() → self::A<self::A::fact::T%>
+    return new self::A::•<self::A::fact::T%>();
+  static method _#fact#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#fact#tearOff::T%>
+    return self::A::fact<self::A::_#fact#tearOff::T%>();
+  static factory redirect<T extends core::Object? = dynamic>() → self::A<self::A::redirect::T%>
+    return new self::A::•<self::A::redirect::T%>();
+  static method _#redirect#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#redirect#tearOff::T%>
+    return new self::A::•<self::A::_#redirect#tearOff::T%>();
+}
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:15:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  A.new<int>;
+       ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:16:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  A.named<int>;
+         ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:17:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  A.fact<int>;
+        ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:18:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  A.redirect<int>;
+            ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:19:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  B.new<int>;
+       ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:20:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  B.named<int>;
+         ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:21:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  B.fact<int>;
+        ^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:22:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+  B.redirect<int>;
+            ^";
+}
+static method main() → dynamic {}
+static method _#B#new#tearOff<T extends core::num>() → self::A<self::_#B#new#tearOff::T>
+  return new self::A::•<self::_#B#new#tearOff::T>();
+static method _#B#named#tearOff<T extends core::num>() → self::A<self::_#B#named#tearOff::T>
+  return new self::A::named<self::_#B#named#tearOff::T>();
+static method _#B#fact#tearOff<T extends core::num>() → self::A<self::_#B#fact#tearOff::T>
+  return self::A::fact<self::_#B#fact#tearOff::T>();
+static method _#B#redirect#tearOff<T extends core::num>() → self::A<self::_#B#redirect#tearOff::T>
+  return self::A::_#redirect#tearOff<self::_#B#redirect#tearOff::T>();
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart
new file mode 100644
index 0000000..96a42a8
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart
@@ -0,0 +1,159 @@
+// Copyright (c) 2021, 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 'unresolved_constructor_invocation.dart' as resolved_prefix;
+
+class Super {
+  Super.named();
+}
+
+class Class extends Super {
+  Class.constructor1() : super();
+  Class.constructor2() : super.unresolved();
+  Class.constructor3() : this();
+  Class.constructor4() : this.unresolved();
+}
+
+class ResolvedClass<T> {
+  ResolvedClass.named();
+}
+
+test() {
+  UnresolvedClass();
+  new UnresolvedClass();
+  const UnresolvedClass();
+
+  UnresolvedClass.unresolvedConstructor();
+  new UnresolvedClass.unresolvedConstructor();
+  const UnresolvedClass.unresolvedConstructor();
+  UnresolvedClass /**/ .unresolvedConstructor();
+  new UnresolvedClass. /**/ unresolvedConstructor();
+  const UnresolvedClass /**/ .unresolvedConstructor();
+
+  unresolved_prefix.UnresolvedClass();
+  new unresolved_prefix.UnresolvedClass();
+  const unresolved_prefix.UnresolvedClass();
+  unresolved_prefix. /**/ UnresolvedClass();
+  new unresolved_prefix /**/ .UnresolvedClass();
+  const unresolved_prefix. /**/ UnresolvedClass();
+
+  unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+  new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+  const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+  unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+  new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+  const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+
+  UnresolvedClass<int>();
+  new UnresolvedClass<int>();
+  const UnresolvedClass<int>();
+  UnresolvedClass /**/ <int>();
+  new UnresolvedClass<int> /**/ ();
+  const UnresolvedClass /**/ <int>();
+
+  UnresolvedClass<int>.unresolvedConstructor();
+  new UnresolvedClass<int>.unresolvedConstructor();
+  const UnresolvedClass<int>.unresolvedConstructor();
+  UnresolvedClass /**/ <int>.unresolvedConstructor();
+  new UnresolvedClass<int> /**/ .unresolvedConstructor();
+  const UnresolvedClass<int>. /**/ unresolvedConstructor();
+
+  unresolved_prefix.UnresolvedClass<int>();
+  new unresolved_prefix.UnresolvedClass<int>();
+  const unresolved_prefix.UnresolvedClass<int>();
+  unresolved_prefix /**/ .UnresolvedClass<int>();
+  new unresolved_prefix.UnresolvedClass /**/ <int>();
+  const unresolved_prefix.UnresolvedClass<int> /**/ ();
+
+  unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+  new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+  const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+  unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+  new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
+  const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
+
+  ResolvedClass();
+  new ResolvedClass();
+  const ResolvedClass();
+
+  ResolvedClass.unresolvedConstructor();
+  new ResolvedClass.unresolvedConstructor();
+  const ResolvedClass.unresolvedConstructor();
+  ResolvedClass /**/ .unresolvedConstructor();
+  new ResolvedClass. /**/ unresolvedConstructor();
+  const ResolvedClass /**/ .unresolvedConstructor();
+
+  resolved_prefix.UnresolvedClass();
+  new resolved_prefix.UnresolvedClass();
+  const resolved_prefix.UnresolvedClass();
+  resolved_prefix. /**/ UnresolvedClass();
+  new resolved_prefix /**/ .UnresolvedClass();
+  const resolved_prefix. /**/ UnresolvedClass();
+
+  resolved_prefix.ResolvedClass();
+  new resolved_prefix.ResolvedClass();
+  const resolved_prefix.ResolvedClass();
+  resolved_prefix. /**/ ResolvedClass();
+  new resolved_prefix /**/ .ResolvedClass();
+  const resolved_prefix. /**/ ResolvedClass();
+
+  resolved_prefix.UnresolvedClass.unresolvedConstructor();
+  new resolved_prefix.UnresolvedClass.unresolvedConstructor();
+  const resolved_prefix.UnresolvedClass.unresolvedConstructor();
+  resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+  new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+  const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+
+  resolved_prefix.ResolvedClass.unresolvedConstructor();
+  new resolved_prefix.ResolvedClass.unresolvedConstructor();
+  const resolved_prefix.ResolvedClass.unresolvedConstructor();
+  resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
+  new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
+  const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
+
+  ResolvedClass<int>();
+  new ResolvedClass<int>();
+  const ResolvedClass<int>();
+  ResolvedClass /**/ <int>();
+  new ResolvedClass /**/ <int>();
+  const ResolvedClass /**/ <int>();
+
+  ResolvedClass<int>.unresolvedConstructor();
+  new ResolvedClass<int>.unresolvedConstructor();
+  const ResolvedClass<int>.unresolvedConstructor();
+  ResolvedClass<int> /**/ .unresolvedConstructor();
+  new ResolvedClass<int>. /**/ unresolvedConstructor();
+  const ResolvedClass /**/ <int>.unresolvedConstructor();
+
+  resolved_prefix.UnresolvedClass<int>();
+  new resolved_prefix.UnresolvedClass<int>();
+  const resolved_prefix.UnresolvedClass<int>();
+  resolved_prefix. /**/ UnresolvedClass<int>();
+  new resolved_prefix.UnresolvedClass /**/ <int>();
+  const resolved_prefix.UnresolvedClass<int> /**/ ();
+
+  resolved_prefix.ResolvedClass<int>();
+  new resolved_prefix.ResolvedClass<int>();
+  const resolved_prefix.ResolvedClass<int>();
+  resolved_prefix. /**/ ResolvedClass<int>();
+  new resolved_prefix.ResolvedClass /**/ <int>();
+  const resolved_prefix.ResolvedClass<int> /**/ ();
+
+  resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+  new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+  const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+  resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+  new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
+  const resolved_prefix
+      . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
+
+  resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+  new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+  const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+  resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
+  new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
+  const resolved_prefix. /**/ ResolvedClass<int>. /**/ unresolvedConstructor();
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.strong.expect
new file mode 100644
index 0000000..c148623
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.strong.expect
@@ -0,0 +1,858 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:12:26: Error: Superclass has no constructor named 'Super'.
+//   Class.constructor1() : super();
+//                          ^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:13:26: Error: Superclass has no constructor named 'Super.unresolved'.
+//   Class.constructor2() : super.unresolved();
+//                          ^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:14:26: Error: Couldn't find constructor 'Class'.
+//   Class.constructor3() : this();
+//                          ^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:15:26: Error: Couldn't find constructor 'Class.unresolved'.
+//   Class.constructor4() : this.unresolved();
+//                          ^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+//   UnresolvedClass();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+//   UnresolvedClass.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+//   new UnresolvedClass.unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+//   const UnresolvedClass.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+//   UnresolvedClass /**/ .unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+//   new UnresolvedClass. /**/ unresolvedConstructor();
+//                             ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+//   const UnresolvedClass /**/ .unresolvedConstructor();
+//                               ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix.UnresolvedClass();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix. /**/ UnresolvedClass();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix /**/ .UnresolvedClass();
+//                               ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix. /**/ UnresolvedClass();
+//                                 ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+//                                 ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
+//   UnresolvedClass<int>();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int>();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass<int>();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+//   UnresolvedClass /**/ <int>();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int> /**/ ();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass /**/ <int>();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+//   UnresolvedClass<int>.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int>.unresolvedConstructor();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass<int>.unresolvedConstructor();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+//   UnresolvedClass /**/ <int>.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int> /**/ .unresolvedConstructor();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass<int>. /**/ unresolvedConstructor();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix.UnresolvedClass<int>();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass<int>();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass<int>();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix /**/ .UnresolvedClass<int>();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass /**/ <int>();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass<int> /**/ ();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
+//   ResolvedClass();
+//   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new ResolvedClass();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const ResolvedClass();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass.unresolvedConstructor();
+//                 ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass.unresolvedConstructor();
+//                     ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass.unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass /**/ .unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass. /**/ unresolvedConstructor();
+//                           ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass /**/ .unresolvedConstructor();
+//                             ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix. /**/ UnresolvedClass();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix /**/ .UnresolvedClass();
+//                             ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix. /**/ UnresolvedClass();
+//                               ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix.ResolvedClass();
+//                   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix.ResolvedClass();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix.ResolvedClass();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix. /**/ ResolvedClass();
+//                         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix /**/ .ResolvedClass();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix. /**/ ResolvedClass();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+//   resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+//                               ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix.ResolvedClass.unresolvedConstructor();
+//                                 ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass.unresolvedConstructor();
+//                                     ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const resolved_prefix.ResolvedClass.unresolvedConstructor();
+//                                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
+//                                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
+//                                           ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
+//                                                   ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+//   ResolvedClass<int>();
+//   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new ResolvedClass<int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const ResolvedClass<int>();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+//   ResolvedClass /**/ <int>();
+//   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new ResolvedClass /**/ <int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const ResolvedClass /**/ <int>();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass<int>.unresolvedConstructor();
+//                      ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass<int>.unresolvedConstructor();
+//                          ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass<int>.unresolvedConstructor();
+//                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass<int> /**/ .unresolvedConstructor();
+//                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass<int>. /**/ unresolvedConstructor();
+//                                ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass /**/ <int>.unresolvedConstructor();
+//                                  ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass<int>();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass<int>();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass<int>();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix. /**/ UnresolvedClass<int>();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass /**/ <int>();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass<int> /**/ ();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix.ResolvedClass<int>();
+//                   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix.ResolvedClass<int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix.ResolvedClass<int>();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix. /**/ ResolvedClass<int>();
+//                         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix.ResolvedClass /**/ <int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix.ResolvedClass<int> /**/ ();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+//       . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
+//              ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+//                                      ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:152:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+//                                          ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:153:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+//                                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
+//                                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:155:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
+//                                                ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:156:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const resolved_prefix. /**/ ResolvedClass<int>. /**/ unresolvedConstructor();
+//                                                        ^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///unresolved_constructor_invocation.dart" as resolved_prefix;
+
+class Super extends core::Object {
+  constructor named() → self::Super
+    : super core::Object::•()
+    ;
+}
+class Class extends self::Super {
+  constructor constructor1() → self::Class
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:12:26: Error: Superclass has no constructor named 'Super'.
+  Class.constructor1() : super();
+                         ^^^^^"
+    ;
+  constructor constructor2() → self::Class
+    : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:13:26: Error: Superclass has no constructor named 'Super.unresolved'.
+  Class.constructor2() : super.unresolved();
+                         ^^^^^"
+    ;
+  constructor constructor3() → self::Class
+    : final dynamic #t3 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:14:26: Error: Couldn't find constructor 'Class'.
+  Class.constructor3() : this();
+                         ^^^^"
+    ;
+  constructor constructor4() → self::Class
+    : final dynamic #t4 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:15:26: Error: Couldn't find constructor 'Class.unresolved'.
+  Class.constructor4() : this.unresolved();
+                         ^^^^"
+    ;
+}
+class ResolvedClass<T extends core::Object? = dynamic> extends core::Object {
+  constructor named() → self::ResolvedClass<self::ResolvedClass::T%>
+    : super core::Object::•()
+    ;
+}
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+  UnresolvedClass();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+  UnresolvedClass.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  new UnresolvedClass.unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  const UnresolvedClass.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+  UnresolvedClass /**/ .unresolvedConstructor();
+  ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  new UnresolvedClass. /**/ unresolvedConstructor();
+                            ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  const UnresolvedClass /**/ .unresolvedConstructor();
+                              ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix.UnresolvedClass();
+  ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass();
+                        ^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass();
+                          ^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix. /**/ UnresolvedClass();
+  ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix /**/ .UnresolvedClass();
+                              ^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix. /**/ UnresolvedClass();
+                                ^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+                          ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+                                ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
+  UnresolvedClass<int>();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int>();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass<int>();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+  UnresolvedClass /**/ <int>();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int> /**/ ();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass /**/ <int>();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+  UnresolvedClass<int>.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int>.unresolvedConstructor();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass<int>.unresolvedConstructor();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+  UnresolvedClass /**/ <int>.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int> /**/ .unresolvedConstructor();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass<int>. /**/ unresolvedConstructor();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix.UnresolvedClass<int>();
+  ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass<int>();
+                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass<int>();
+                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix /**/ .UnresolvedClass<int>();
+  ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass /**/ <int>();
+                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass<int> /**/ ();
+                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
+                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
+  ResolvedClass();
+  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new ResolvedClass();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const ResolvedClass();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass.unresolvedConstructor();
+                ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass.unresolvedConstructor();
+                    ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass.unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass /**/ .unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass. /**/ unresolvedConstructor();
+                          ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass /**/ .unresolvedConstructor();
+                            ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass();
+                  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix. /**/ UnresolvedClass();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix /**/ .UnresolvedClass();
+                            ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix. /**/ UnresolvedClass();
+                              ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix.ResolvedClass();
+                  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix.ResolvedClass();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix.ResolvedClass();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix. /**/ ResolvedClass();
+                        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix /**/ .ResolvedClass();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix. /**/ ResolvedClass();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass.unresolvedConstructor();
+                  ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass.unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+  resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+                              ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix.ResolvedClass.unresolvedConstructor();
+                                ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new resolved_prefix.ResolvedClass.unresolvedConstructor();
+                                    ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const resolved_prefix.ResolvedClass.unresolvedConstructor();
+                                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
+                                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
+                                          ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
+                                                  ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+  ResolvedClass<int>();
+  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new ResolvedClass<int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const ResolvedClass<int>();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+  ResolvedClass /**/ <int>();
+  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new ResolvedClass /**/ <int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const ResolvedClass /**/ <int>();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass<int>.unresolvedConstructor();
+                     ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass<int>.unresolvedConstructor();
+                         ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass<int>.unresolvedConstructor();
+                           ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass<int> /**/ .unresolvedConstructor();
+                           ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass<int>. /**/ unresolvedConstructor();
+                               ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass /**/ <int>.unresolvedConstructor();
+                                 ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass<int>();
+                  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass<int>();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass<int>();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix. /**/ UnresolvedClass<int>();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass /**/ <int>();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass<int> /**/ ();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix.ResolvedClass<int>();
+                  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix.ResolvedClass<int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix.ResolvedClass<int>();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix. /**/ ResolvedClass<int>();
+                        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix.ResolvedClass /**/ <int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix.ResolvedClass<int> /**/ ();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+      . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
+             ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+                                     ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:152:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+                                         ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:153:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+                                           ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
+                                           ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:155:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
+                                               ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:156:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const resolved_prefix. /**/ ResolvedClass<int>. /**/ unresolvedConstructor();
+                                                       ^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.strong.transformed.expect
new file mode 100644
index 0000000..c148623
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.strong.transformed.expect
@@ -0,0 +1,858 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:12:26: Error: Superclass has no constructor named 'Super'.
+//   Class.constructor1() : super();
+//                          ^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:13:26: Error: Superclass has no constructor named 'Super.unresolved'.
+//   Class.constructor2() : super.unresolved();
+//                          ^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:14:26: Error: Couldn't find constructor 'Class'.
+//   Class.constructor3() : this();
+//                          ^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:15:26: Error: Couldn't find constructor 'Class.unresolved'.
+//   Class.constructor4() : this.unresolved();
+//                          ^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+//   UnresolvedClass();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+//   UnresolvedClass.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+//   new UnresolvedClass.unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+//   const UnresolvedClass.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+//   UnresolvedClass /**/ .unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+//   new UnresolvedClass. /**/ unresolvedConstructor();
+//                             ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+//   const UnresolvedClass /**/ .unresolvedConstructor();
+//                               ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix.UnresolvedClass();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix. /**/ UnresolvedClass();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix /**/ .UnresolvedClass();
+//                               ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix. /**/ UnresolvedClass();
+//                                 ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+//                                 ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
+//   UnresolvedClass<int>();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int>();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass<int>();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+//   UnresolvedClass /**/ <int>();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int> /**/ ();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass /**/ <int>();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+//   UnresolvedClass<int>.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int>.unresolvedConstructor();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass<int>.unresolvedConstructor();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+//   UnresolvedClass /**/ <int>.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int> /**/ .unresolvedConstructor();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass<int>. /**/ unresolvedConstructor();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix.UnresolvedClass<int>();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass<int>();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass<int>();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix /**/ .UnresolvedClass<int>();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass /**/ <int>();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass<int> /**/ ();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
+//   ResolvedClass();
+//   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new ResolvedClass();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const ResolvedClass();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass.unresolvedConstructor();
+//                 ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass.unresolvedConstructor();
+//                     ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass.unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass /**/ .unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass. /**/ unresolvedConstructor();
+//                           ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass /**/ .unresolvedConstructor();
+//                             ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix. /**/ UnresolvedClass();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix /**/ .UnresolvedClass();
+//                             ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix. /**/ UnresolvedClass();
+//                               ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix.ResolvedClass();
+//                   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix.ResolvedClass();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix.ResolvedClass();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix. /**/ ResolvedClass();
+//                         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix /**/ .ResolvedClass();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix. /**/ ResolvedClass();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+//   resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+//                               ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix.ResolvedClass.unresolvedConstructor();
+//                                 ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass.unresolvedConstructor();
+//                                     ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const resolved_prefix.ResolvedClass.unresolvedConstructor();
+//                                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
+//                                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
+//                                           ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
+//                                                   ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+//   ResolvedClass<int>();
+//   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new ResolvedClass<int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const ResolvedClass<int>();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+//   ResolvedClass /**/ <int>();
+//   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new ResolvedClass /**/ <int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const ResolvedClass /**/ <int>();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass<int>.unresolvedConstructor();
+//                      ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass<int>.unresolvedConstructor();
+//                          ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass<int>.unresolvedConstructor();
+//                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass<int> /**/ .unresolvedConstructor();
+//                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass<int>. /**/ unresolvedConstructor();
+//                                ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass /**/ <int>.unresolvedConstructor();
+//                                  ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass<int>();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass<int>();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass<int>();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix. /**/ UnresolvedClass<int>();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass /**/ <int>();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass<int> /**/ ();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix.ResolvedClass<int>();
+//                   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix.ResolvedClass<int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix.ResolvedClass<int>();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix. /**/ ResolvedClass<int>();
+//                         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix.ResolvedClass /**/ <int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix.ResolvedClass<int> /**/ ();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+//       . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
+//              ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+//                                      ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:152:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+//                                          ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:153:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+//                                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
+//                                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:155:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
+//                                                ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:156:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const resolved_prefix. /**/ ResolvedClass<int>. /**/ unresolvedConstructor();
+//                                                        ^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///unresolved_constructor_invocation.dart" as resolved_prefix;
+
+class Super extends core::Object {
+  constructor named() → self::Super
+    : super core::Object::•()
+    ;
+}
+class Class extends self::Super {
+  constructor constructor1() → self::Class
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:12:26: Error: Superclass has no constructor named 'Super'.
+  Class.constructor1() : super();
+                         ^^^^^"
+    ;
+  constructor constructor2() → self::Class
+    : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:13:26: Error: Superclass has no constructor named 'Super.unresolved'.
+  Class.constructor2() : super.unresolved();
+                         ^^^^^"
+    ;
+  constructor constructor3() → self::Class
+    : final dynamic #t3 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:14:26: Error: Couldn't find constructor 'Class'.
+  Class.constructor3() : this();
+                         ^^^^"
+    ;
+  constructor constructor4() → self::Class
+    : final dynamic #t4 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:15:26: Error: Couldn't find constructor 'Class.unresolved'.
+  Class.constructor4() : this.unresolved();
+                         ^^^^"
+    ;
+}
+class ResolvedClass<T extends core::Object? = dynamic> extends core::Object {
+  constructor named() → self::ResolvedClass<self::ResolvedClass::T%>
+    : super core::Object::•()
+    ;
+}
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+  UnresolvedClass();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+  UnresolvedClass.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  new UnresolvedClass.unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  const UnresolvedClass.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+  UnresolvedClass /**/ .unresolvedConstructor();
+  ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  new UnresolvedClass. /**/ unresolvedConstructor();
+                            ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  const UnresolvedClass /**/ .unresolvedConstructor();
+                              ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix.UnresolvedClass();
+  ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass();
+                        ^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass();
+                          ^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix. /**/ UnresolvedClass();
+  ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix /**/ .UnresolvedClass();
+                              ^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix. /**/ UnresolvedClass();
+                                ^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+                          ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+                                ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
+  UnresolvedClass<int>();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int>();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass<int>();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+  UnresolvedClass /**/ <int>();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int> /**/ ();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass /**/ <int>();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+  UnresolvedClass<int>.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int>.unresolvedConstructor();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass<int>.unresolvedConstructor();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+  UnresolvedClass /**/ <int>.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int> /**/ .unresolvedConstructor();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass<int>. /**/ unresolvedConstructor();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix.UnresolvedClass<int>();
+  ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass<int>();
+                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass<int>();
+                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix /**/ .UnresolvedClass<int>();
+  ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass /**/ <int>();
+                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass<int> /**/ ();
+                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
+                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
+  ResolvedClass();
+  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new ResolvedClass();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const ResolvedClass();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass.unresolvedConstructor();
+                ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass.unresolvedConstructor();
+                    ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass.unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass /**/ .unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass. /**/ unresolvedConstructor();
+                          ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass /**/ .unresolvedConstructor();
+                            ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass();
+                  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix. /**/ UnresolvedClass();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix /**/ .UnresolvedClass();
+                            ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix. /**/ UnresolvedClass();
+                              ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix.ResolvedClass();
+                  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix.ResolvedClass();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix.ResolvedClass();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix. /**/ ResolvedClass();
+                        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix /**/ .ResolvedClass();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix. /**/ ResolvedClass();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass.unresolvedConstructor();
+                  ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass.unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+  resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+                              ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix.ResolvedClass.unresolvedConstructor();
+                                ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new resolved_prefix.ResolvedClass.unresolvedConstructor();
+                                    ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const resolved_prefix.ResolvedClass.unresolvedConstructor();
+                                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
+                                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
+                                          ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
+                                                  ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+  ResolvedClass<int>();
+  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new ResolvedClass<int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const ResolvedClass<int>();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+  ResolvedClass /**/ <int>();
+  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new ResolvedClass /**/ <int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const ResolvedClass /**/ <int>();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass<int>.unresolvedConstructor();
+                     ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass<int>.unresolvedConstructor();
+                         ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass<int>.unresolvedConstructor();
+                           ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass<int> /**/ .unresolvedConstructor();
+                           ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass<int>. /**/ unresolvedConstructor();
+                               ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass /**/ <int>.unresolvedConstructor();
+                                 ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass<int>();
+                  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass<int>();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass<int>();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix. /**/ UnresolvedClass<int>();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass /**/ <int>();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass<int> /**/ ();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix.ResolvedClass<int>();
+                  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix.ResolvedClass<int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix.ResolvedClass<int>();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix. /**/ ResolvedClass<int>();
+                        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix.ResolvedClass /**/ <int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix.ResolvedClass<int> /**/ ();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+      . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
+             ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+                                     ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:152:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+                                         ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:153:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+                                           ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
+                                           ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:155:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
+                                               ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:156:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const resolved_prefix. /**/ ResolvedClass<int>. /**/ unresolvedConstructor();
+                                                       ^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.textual_outline.expect b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.textual_outline.expect
new file mode 100644
index 0000000..1981b9a
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.textual_outline.expect
@@ -0,0 +1,19 @@
+import 'unresolved_constructor_invocation.dart' as resolved_prefix;
+
+class Super {
+  Super.named();
+}
+
+class Class extends Super {
+  Class.constructor1() : super();
+  Class.constructor2() : super.unresolved();
+  Class.constructor3() : this();
+  Class.constructor4() : this.unresolved();
+}
+
+class ResolvedClass<T> {
+  ResolvedClass.named();
+}
+
+test() {}
+main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..a8ffa5d
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.textual_outline_modelled.expect
@@ -0,0 +1,19 @@
+import 'unresolved_constructor_invocation.dart' as resolved_prefix;
+
+class Class extends Super {
+  Class.constructor1() : super();
+  Class.constructor2() : super.unresolved();
+  Class.constructor3() : this();
+  Class.constructor4() : this.unresolved();
+}
+
+class ResolvedClass<T> {
+  ResolvedClass.named();
+}
+
+class Super {
+  Super.named();
+}
+
+main() {}
+test() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.expect
new file mode 100644
index 0000000..c148623
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.expect
@@ -0,0 +1,858 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:12:26: Error: Superclass has no constructor named 'Super'.
+//   Class.constructor1() : super();
+//                          ^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:13:26: Error: Superclass has no constructor named 'Super.unresolved'.
+//   Class.constructor2() : super.unresolved();
+//                          ^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:14:26: Error: Couldn't find constructor 'Class'.
+//   Class.constructor3() : this();
+//                          ^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:15:26: Error: Couldn't find constructor 'Class.unresolved'.
+//   Class.constructor4() : this.unresolved();
+//                          ^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+//   UnresolvedClass();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+//   UnresolvedClass.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+//   new UnresolvedClass.unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+//   const UnresolvedClass.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+//   UnresolvedClass /**/ .unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+//   new UnresolvedClass. /**/ unresolvedConstructor();
+//                             ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+//   const UnresolvedClass /**/ .unresolvedConstructor();
+//                               ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix.UnresolvedClass();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix. /**/ UnresolvedClass();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix /**/ .UnresolvedClass();
+//                               ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix. /**/ UnresolvedClass();
+//                                 ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+//                                 ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
+//   UnresolvedClass<int>();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int>();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass<int>();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+//   UnresolvedClass /**/ <int>();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int> /**/ ();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass /**/ <int>();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+//   UnresolvedClass<int>.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int>.unresolvedConstructor();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass<int>.unresolvedConstructor();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+//   UnresolvedClass /**/ <int>.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int> /**/ .unresolvedConstructor();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass<int>. /**/ unresolvedConstructor();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix.UnresolvedClass<int>();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass<int>();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass<int>();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix /**/ .UnresolvedClass<int>();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass /**/ <int>();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass<int> /**/ ();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
+//   ResolvedClass();
+//   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new ResolvedClass();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const ResolvedClass();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass.unresolvedConstructor();
+//                 ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass.unresolvedConstructor();
+//                     ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass.unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass /**/ .unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass. /**/ unresolvedConstructor();
+//                           ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass /**/ .unresolvedConstructor();
+//                             ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix. /**/ UnresolvedClass();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix /**/ .UnresolvedClass();
+//                             ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix. /**/ UnresolvedClass();
+//                               ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix.ResolvedClass();
+//                   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix.ResolvedClass();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix.ResolvedClass();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix. /**/ ResolvedClass();
+//                         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix /**/ .ResolvedClass();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix. /**/ ResolvedClass();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+//   resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+//                               ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix.ResolvedClass.unresolvedConstructor();
+//                                 ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass.unresolvedConstructor();
+//                                     ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const resolved_prefix.ResolvedClass.unresolvedConstructor();
+//                                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
+//                                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
+//                                           ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
+//                                                   ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+//   ResolvedClass<int>();
+//   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new ResolvedClass<int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const ResolvedClass<int>();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+//   ResolvedClass /**/ <int>();
+//   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new ResolvedClass /**/ <int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const ResolvedClass /**/ <int>();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass<int>.unresolvedConstructor();
+//                      ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass<int>.unresolvedConstructor();
+//                          ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass<int>.unresolvedConstructor();
+//                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass<int> /**/ .unresolvedConstructor();
+//                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass<int>. /**/ unresolvedConstructor();
+//                                ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass /**/ <int>.unresolvedConstructor();
+//                                  ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass<int>();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass<int>();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass<int>();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix. /**/ UnresolvedClass<int>();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass /**/ <int>();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass<int> /**/ ();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix.ResolvedClass<int>();
+//                   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix.ResolvedClass<int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix.ResolvedClass<int>();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix. /**/ ResolvedClass<int>();
+//                         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix.ResolvedClass /**/ <int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix.ResolvedClass<int> /**/ ();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+//       . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
+//              ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+//                                      ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:152:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+//                                          ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:153:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+//                                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
+//                                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:155:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
+//                                                ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:156:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const resolved_prefix. /**/ ResolvedClass<int>. /**/ unresolvedConstructor();
+//                                                        ^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///unresolved_constructor_invocation.dart" as resolved_prefix;
+
+class Super extends core::Object {
+  constructor named() → self::Super
+    : super core::Object::•()
+    ;
+}
+class Class extends self::Super {
+  constructor constructor1() → self::Class
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:12:26: Error: Superclass has no constructor named 'Super'.
+  Class.constructor1() : super();
+                         ^^^^^"
+    ;
+  constructor constructor2() → self::Class
+    : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:13:26: Error: Superclass has no constructor named 'Super.unresolved'.
+  Class.constructor2() : super.unresolved();
+                         ^^^^^"
+    ;
+  constructor constructor3() → self::Class
+    : final dynamic #t3 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:14:26: Error: Couldn't find constructor 'Class'.
+  Class.constructor3() : this();
+                         ^^^^"
+    ;
+  constructor constructor4() → self::Class
+    : final dynamic #t4 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:15:26: Error: Couldn't find constructor 'Class.unresolved'.
+  Class.constructor4() : this.unresolved();
+                         ^^^^"
+    ;
+}
+class ResolvedClass<T extends core::Object? = dynamic> extends core::Object {
+  constructor named() → self::ResolvedClass<self::ResolvedClass::T%>
+    : super core::Object::•()
+    ;
+}
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+  UnresolvedClass();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+  UnresolvedClass.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  new UnresolvedClass.unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  const UnresolvedClass.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+  UnresolvedClass /**/ .unresolvedConstructor();
+  ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  new UnresolvedClass. /**/ unresolvedConstructor();
+                            ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  const UnresolvedClass /**/ .unresolvedConstructor();
+                              ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix.UnresolvedClass();
+  ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass();
+                        ^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass();
+                          ^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix. /**/ UnresolvedClass();
+  ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix /**/ .UnresolvedClass();
+                              ^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix. /**/ UnresolvedClass();
+                                ^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+                          ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+                                ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
+  UnresolvedClass<int>();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int>();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass<int>();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+  UnresolvedClass /**/ <int>();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int> /**/ ();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass /**/ <int>();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+  UnresolvedClass<int>.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int>.unresolvedConstructor();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass<int>.unresolvedConstructor();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+  UnresolvedClass /**/ <int>.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int> /**/ .unresolvedConstructor();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass<int>. /**/ unresolvedConstructor();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix.UnresolvedClass<int>();
+  ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass<int>();
+                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass<int>();
+                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix /**/ .UnresolvedClass<int>();
+  ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass /**/ <int>();
+                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass<int> /**/ ();
+                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
+                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
+  ResolvedClass();
+  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new ResolvedClass();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const ResolvedClass();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass.unresolvedConstructor();
+                ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass.unresolvedConstructor();
+                    ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass.unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass /**/ .unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass. /**/ unresolvedConstructor();
+                          ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass /**/ .unresolvedConstructor();
+                            ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass();
+                  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix. /**/ UnresolvedClass();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix /**/ .UnresolvedClass();
+                            ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix. /**/ UnresolvedClass();
+                              ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix.ResolvedClass();
+                  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix.ResolvedClass();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix.ResolvedClass();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix. /**/ ResolvedClass();
+                        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix /**/ .ResolvedClass();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix. /**/ ResolvedClass();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass.unresolvedConstructor();
+                  ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass.unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+  resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+                              ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix.ResolvedClass.unresolvedConstructor();
+                                ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new resolved_prefix.ResolvedClass.unresolvedConstructor();
+                                    ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const resolved_prefix.ResolvedClass.unresolvedConstructor();
+                                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
+                                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
+                                          ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
+                                                  ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+  ResolvedClass<int>();
+  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new ResolvedClass<int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const ResolvedClass<int>();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+  ResolvedClass /**/ <int>();
+  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new ResolvedClass /**/ <int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const ResolvedClass /**/ <int>();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass<int>.unresolvedConstructor();
+                     ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass<int>.unresolvedConstructor();
+                         ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass<int>.unresolvedConstructor();
+                           ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass<int> /**/ .unresolvedConstructor();
+                           ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass<int>. /**/ unresolvedConstructor();
+                               ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass /**/ <int>.unresolvedConstructor();
+                                 ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass<int>();
+                  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass<int>();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass<int>();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix. /**/ UnresolvedClass<int>();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass /**/ <int>();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass<int> /**/ ();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix.ResolvedClass<int>();
+                  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix.ResolvedClass<int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix.ResolvedClass<int>();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix. /**/ ResolvedClass<int>();
+                        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix.ResolvedClass /**/ <int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix.ResolvedClass<int> /**/ ();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+      . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
+             ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+                                     ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:152:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+                                         ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:153:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+                                           ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
+                                           ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:155:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
+                                               ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:156:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const resolved_prefix. /**/ ResolvedClass<int>. /**/ unresolvedConstructor();
+                                                       ^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.outline.expect
new file mode 100644
index 0000000..1532807
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.outline.expect
@@ -0,0 +1,28 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///unresolved_constructor_invocation.dart" as resolved_prefix;
+
+class Super extends core::Object {
+  constructor named() → self::Super
+    ;
+}
+class Class extends self::Super {
+  constructor constructor1() → self::Class
+    ;
+  constructor constructor2() → self::Class
+    ;
+  constructor constructor3() → self::Class
+    ;
+  constructor constructor4() → self::Class
+    ;
+}
+class ResolvedClass<T extends core::Object? = dynamic> extends core::Object {
+  constructor named() → self::ResolvedClass<self::ResolvedClass::T%>
+    ;
+}
+static method test() → dynamic
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.transformed.expect
new file mode 100644
index 0000000..c148623
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.transformed.expect
@@ -0,0 +1,858 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:12:26: Error: Superclass has no constructor named 'Super'.
+//   Class.constructor1() : super();
+//                          ^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:13:26: Error: Superclass has no constructor named 'Super.unresolved'.
+//   Class.constructor2() : super.unresolved();
+//                          ^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:14:26: Error: Couldn't find constructor 'Class'.
+//   Class.constructor3() : this();
+//                          ^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:15:26: Error: Couldn't find constructor 'Class.unresolved'.
+//   Class.constructor4() : this.unresolved();
+//                          ^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+//   UnresolvedClass();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+//   UnresolvedClass.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+//   new UnresolvedClass.unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+//   const UnresolvedClass.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+//   UnresolvedClass /**/ .unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+//   new UnresolvedClass. /**/ unresolvedConstructor();
+//                             ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+//   const UnresolvedClass /**/ .unresolvedConstructor();
+//                               ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix.UnresolvedClass();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix. /**/ UnresolvedClass();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix /**/ .UnresolvedClass();
+//                               ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix. /**/ UnresolvedClass();
+//                                 ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+//                                 ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
+//   UnresolvedClass<int>();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int>();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass<int>();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+//   UnresolvedClass /**/ <int>();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int> /**/ ();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass /**/ <int>();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+//   UnresolvedClass<int>.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int>.unresolvedConstructor();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass<int>.unresolvedConstructor();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+//   UnresolvedClass /**/ <int>.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int> /**/ .unresolvedConstructor();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass<int>. /**/ unresolvedConstructor();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix.UnresolvedClass<int>();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass<int>();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass<int>();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix /**/ .UnresolvedClass<int>();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass /**/ <int>();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass<int> /**/ ();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
+//                           ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
+//   ResolvedClass();
+//   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new ResolvedClass();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const ResolvedClass();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass.unresolvedConstructor();
+//                 ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass.unresolvedConstructor();
+//                     ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass.unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass /**/ .unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass. /**/ unresolvedConstructor();
+//                           ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass /**/ .unresolvedConstructor();
+//                             ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix. /**/ UnresolvedClass();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix /**/ .UnresolvedClass();
+//                             ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix. /**/ UnresolvedClass();
+//                               ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix.ResolvedClass();
+//                   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix.ResolvedClass();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix.ResolvedClass();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix. /**/ ResolvedClass();
+//                         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix /**/ .ResolvedClass();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix. /**/ ResolvedClass();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+//   resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+//                               ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix.ResolvedClass.unresolvedConstructor();
+//                                 ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass.unresolvedConstructor();
+//                                     ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const resolved_prefix.ResolvedClass.unresolvedConstructor();
+//                                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
+//                                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
+//                                           ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
+//                                                   ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+//   ResolvedClass<int>();
+//   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new ResolvedClass<int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const ResolvedClass<int>();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+//   ResolvedClass /**/ <int>();
+//   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new ResolvedClass /**/ <int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const ResolvedClass /**/ <int>();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass<int>.unresolvedConstructor();
+//                      ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass<int>.unresolvedConstructor();
+//                          ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass<int>.unresolvedConstructor();
+//                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass<int> /**/ .unresolvedConstructor();
+//                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass<int>. /**/ unresolvedConstructor();
+//                                ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass /**/ <int>.unresolvedConstructor();
+//                                  ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass<int>();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass<int>();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass<int>();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix. /**/ UnresolvedClass<int>();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass /**/ <int>();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass<int> /**/ ();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix.ResolvedClass<int>();
+//                   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix.ResolvedClass<int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix.ResolvedClass<int>();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix. /**/ ResolvedClass<int>();
+//                         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix.ResolvedClass /**/ <int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix.ResolvedClass<int> /**/ ();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+//       . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
+//              ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+//                                      ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:152:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+//                                          ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:153:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+//                                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
+//                                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:155:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
+//                                                ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:156:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const resolved_prefix. /**/ ResolvedClass<int>. /**/ unresolvedConstructor();
+//                                                        ^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///unresolved_constructor_invocation.dart" as resolved_prefix;
+
+class Super extends core::Object {
+  constructor named() → self::Super
+    : super core::Object::•()
+    ;
+}
+class Class extends self::Super {
+  constructor constructor1() → self::Class
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:12:26: Error: Superclass has no constructor named 'Super'.
+  Class.constructor1() : super();
+                         ^^^^^"
+    ;
+  constructor constructor2() → self::Class
+    : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:13:26: Error: Superclass has no constructor named 'Super.unresolved'.
+  Class.constructor2() : super.unresolved();
+                         ^^^^^"
+    ;
+  constructor constructor3() → self::Class
+    : final dynamic #t3 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:14:26: Error: Couldn't find constructor 'Class'.
+  Class.constructor3() : this();
+                         ^^^^"
+    ;
+  constructor constructor4() → self::Class
+    : final dynamic #t4 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:15:26: Error: Couldn't find constructor 'Class.unresolved'.
+  Class.constructor4() : this.unresolved();
+                         ^^^^"
+    ;
+}
+class ResolvedClass<T extends core::Object? = dynamic> extends core::Object {
+  constructor named() → self::ResolvedClass<self::ResolvedClass::T%>
+    : super core::Object::•()
+    ;
+}
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+  UnresolvedClass();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+  UnresolvedClass.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  new UnresolvedClass.unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  const UnresolvedClass.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+  UnresolvedClass /**/ .unresolvedConstructor();
+  ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  new UnresolvedClass. /**/ unresolvedConstructor();
+                            ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  const UnresolvedClass /**/ .unresolvedConstructor();
+                              ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix.UnresolvedClass();
+  ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass();
+                        ^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass();
+                          ^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix. /**/ UnresolvedClass();
+  ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix /**/ .UnresolvedClass();
+                              ^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix. /**/ UnresolvedClass();
+                                ^^^^^^^^^^^^^^^"{dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+                          ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+                                ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
+  UnresolvedClass<int>();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int>();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass<int>();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+  UnresolvedClass /**/ <int>();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int> /**/ ();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass /**/ <int>();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+  UnresolvedClass<int>.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int>.unresolvedConstructor();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass<int>.unresolvedConstructor();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+  UnresolvedClass /**/ <int>.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int> /**/ .unresolvedConstructor();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass<int>. /**/ unresolvedConstructor();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix.UnresolvedClass<int>();
+  ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass<int>();
+                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass<int>();
+                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix /**/ .UnresolvedClass<int>();
+  ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass /**/ <int>();
+                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass<int> /**/ ();
+                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
+                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
+  ResolvedClass();
+  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new ResolvedClass();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const ResolvedClass();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass.unresolvedConstructor();
+                ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass.unresolvedConstructor();
+                    ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass.unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass /**/ .unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass. /**/ unresolvedConstructor();
+                          ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass /**/ .unresolvedConstructor();
+                            ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass();
+                  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix. /**/ UnresolvedClass();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix /**/ .UnresolvedClass();
+                            ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix. /**/ UnresolvedClass();
+                              ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix.ResolvedClass();
+                  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix.ResolvedClass();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix.ResolvedClass();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix. /**/ ResolvedClass();
+                        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix /**/ .ResolvedClass();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix. /**/ ResolvedClass();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass.unresolvedConstructor();
+                  ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass.unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+  resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+                              ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix.ResolvedClass.unresolvedConstructor();
+                                ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new resolved_prefix.ResolvedClass.unresolvedConstructor();
+                                    ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const resolved_prefix.ResolvedClass.unresolvedConstructor();
+                                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
+                                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
+                                          ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
+                                                  ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+  ResolvedClass<int>();
+  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new ResolvedClass<int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const ResolvedClass<int>();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+  ResolvedClass /**/ <int>();
+  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new ResolvedClass /**/ <int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const ResolvedClass /**/ <int>();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass<int>.unresolvedConstructor();
+                     ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass<int>.unresolvedConstructor();
+                         ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass<int>.unresolvedConstructor();
+                           ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass<int> /**/ .unresolvedConstructor();
+                           ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass<int>. /**/ unresolvedConstructor();
+                               ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass /**/ <int>.unresolvedConstructor();
+                                 ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass<int>();
+                  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass<int>();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass<int>();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix. /**/ UnresolvedClass<int>();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass /**/ <int>();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass<int> /**/ ();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix.ResolvedClass<int>();
+                  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix.ResolvedClass<int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix.ResolvedClass<int>();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix. /**/ ResolvedClass<int>();
+                        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix.ResolvedClass /**/ <int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix.ResolvedClass<int> /**/ ();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+      . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
+             ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+                                     ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:152:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+                                         ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:153:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+                                           ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
+                                           ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:155:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
+                                               ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:156:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const resolved_prefix. /**/ ResolvedClass<int>. /**/ unresolvedConstructor();
+                                                       ^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/constants/const_asserts.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/const_asserts.dart.weak.outline.expect
index 1aa653d..d767009 100644
--- a/pkg/front_end/testcases/general/constants/const_asserts.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/const_asserts.dart.weak.outline.expect
@@ -91,7 +91,7 @@
 Evaluated: StringConcatenation @ org-dartlang-testcase:///const_asserts.dart:12:59 -> StringConstant("foo was false")
 Evaluated: EqualsCall @ org-dartlang-testcase:///const_asserts.dart:13:50 -> BoolConstant(true)
 Evaluated: StringConcatenation @ org-dartlang-testcase:///const_asserts.dart:15:73 -> StringConstant("btw foo was false")
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_asserts.dart:19:21 -> NullConstant(null)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_asserts.dart:21:22 -> NullConstant(null)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///const_asserts.dart:19:21 -> NullConstant(null)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///const_asserts.dart:21:22 -> NullConstant(null)
 Evaluated: ConstructorInvocation @ org-dartlang-testcase:///const_asserts.dart:31:24 -> InstanceConstant(const Foo{Foo.x: 1})
 Extra constant evaluation: evaluated: 45, effectively constant: 7
diff --git a/pkg/front_end/testcases/general/constants/various.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/various.dart.weak.outline.expect
index 28ec243..7b7e406 100644
--- a/pkg/front_end/testcases/general/constants/various.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/various.dart.weak.outline.expect
@@ -370,9 +370,9 @@
 
 Extra constant evaluation status:
 Evaluated: InstanceGet @ org-dartlang-testcase:///various.dart:111:26 -> IntConstant(5)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:6:31 -> BoolConstant(false)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:7:30 -> BoolConstant(false)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:9:11 -> NullConstant(null)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:6:31 -> BoolConstant(false)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:7:30 -> BoolConstant(false)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:9:11 -> NullConstant(null)
 Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:10:35 -> NullConstant(null)
 Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:11:32 -> NullConstant(null)
 Evaluated: Let @ org-dartlang-testcase:///various.dart:12:51 -> BoolConstant(true)
@@ -385,24 +385,24 @@
 Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:19:24 -> NullConstant(null)
 Evaluated: LogicalExpression @ org-dartlang-testcase:///various.dart:20:29 -> BoolConstant(true)
 Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:21:33 -> NullConstant(null)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:23:39 -> StringConstant("")
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:25:11 -> NullConstant(null)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:27:11 -> StringConstant("hello")
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:23:39 -> StringConstant("")
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:25:11 -> NullConstant(null)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:27:11 -> StringConstant("hello")
 Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:29:34 -> NullConstant(null)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:31:35 -> BoolConstant(false)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:33:11 -> NullConstant(null)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:35:11 -> BoolConstant(true)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:31:35 -> BoolConstant(false)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:33:11 -> NullConstant(null)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:35:11 -> BoolConstant(true)
 Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:36:57 -> NullConstant(null)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:38:33 -> IntConstant(0)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:40:11 -> NullConstant(null)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:42:11 -> IntConstant(42)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:38:33 -> IntConstant(0)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:40:11 -> NullConstant(null)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:42:11 -> IntConstant(42)
 Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:43:54 -> NullConstant(null)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:46:31 -> BoolConstant(false)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:47:30 -> BoolConstant(true)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:48:35 -> IntConstant(42)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:49:41 -> StringConstant("42")
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:53:35 -> BoolConstant(true)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:54:36 -> BoolConstant(false)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:46:31 -> BoolConstant(false)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:47:30 -> BoolConstant(true)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:48:35 -> IntConstant(42)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:49:41 -> StringConstant("42")
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:53:35 -> BoolConstant(true)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:54:36 -> BoolConstant(false)
 Evaluated: InstanceInvocation @ org-dartlang-testcase:///various.dart:58:41 -> BoolConstant(true)
 Evaluated: InstanceInvocation @ org-dartlang-testcase:///various.dart:59:45 -> BoolConstant(false)
 Evaluated: InstanceInvocation @ org-dartlang-testcase:///various.dart:60:39 -> BoolConstant(true)
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart.weak.outline.expect
index 4e4e0ec..3b295c8 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart.weak.outline.expect
@@ -50,12 +50,12 @@
 
 Extra constant evaluation status:
 Evaluated with empty environment: EqualsCall @ org-dartlang-testcase:///const_asserts.dart:10:50 -> BoolConstant(true)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_asserts.dart:10:22 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_asserts.dart:10:22 -> BoolConstant(false)
 Evaluated with empty environment: StringConcatenation @ org-dartlang-testcase:///const_asserts.dart:11:59 -> StringConstant("foo was false")
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_asserts.dart:11:30 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_asserts.dart:11:30 -> BoolConstant(false)
 Evaluated with empty environment: EqualsCall @ org-dartlang-testcase:///const_asserts.dart:12:50 -> BoolConstant(true)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_asserts.dart:12:22 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_asserts.dart:12:22 -> BoolConstant(false)
 Evaluated with empty environment: StringConcatenation @ org-dartlang-testcase:///const_asserts.dart:14:73 -> StringConstant("btw foo was false")
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_asserts.dart:14:44 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_asserts.dart:14:44 -> BoolConstant(false)
 Evaluated with empty environment: ConstructorInvocation @ org-dartlang-testcase:///const_asserts.dart:25:24 -> InstanceConstant(const Foo{Foo.x: 1})
 Extra constant evaluation: evaluated: 36, effectively constant: 9
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections.dart.weak.outline.expect
index c2729313..d08ca5a 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections.dart.weak.outline.expect
@@ -24,21 +24,21 @@
 
 Extra constant evaluation status:
 Evaluated with empty environment: ListLiteral @ org-dartlang-testcase:///const_collections.dart:5:40 -> ListConstant(const <bool*>[false, false, true])
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections.dart:6:8 -> BoolConstant(false)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections.dart:7:8 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections.dart:6:8 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections.dart:7:8 -> BoolConstant(false)
 Evaluated with empty environment: ListConcatenation @ org-dartlang-testcase:///const_collections.dart:10:46 -> ListConstant(const <bool*>[true, false, false, true, false])
 Evaluated: ListLiteral @ org-dartlang-testcase:///const_collections.dart:10:46 -> ListConstant(const <bool*>[true])
 Evaluated with empty environment: StaticGet @ org-dartlang-testcase:///const_collections.dart:12:6 -> ListConstant(const <bool*>[false, false, true])
 Evaluated: ListLiteral @ org-dartlang-testcase:///const_collections.dart:10:46 -> ListConstant(const <bool*>[false])
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections.dart:17:8 -> BoolConstant(false)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections.dart:18:8 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections.dart:17:8 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections.dart:18:8 -> BoolConstant(false)
 Evaluated: SetLiteral @ org-dartlang-testcase:///const_collections.dart:21:44 -> SetConstant(const <bool*>{true})
 Evaluated: SetLiteral @ org-dartlang-testcase:///const_collections.dart:21:44 -> SetConstant(const <bool*>{false})
 Evaluated: ListLiteral @ org-dartlang-testcase:///const_collections.dart:23:16 -> ListConstant(const <int*>[])
 Evaluated: ListLiteral @ org-dartlang-testcase:///const_collections.dart:24:17 -> ListConstant(const <int?>[])
 Evaluated: SetLiteral @ org-dartlang-testcase:///const_collections.dart:25:26 -> SetConstant(const <List<int?>*>{const <int*>[], const <int?>[]})
 Evaluated with empty environment: MapLiteral @ org-dartlang-testcase:///const_collections.dart:27:38 -> MapConstant(const <bool*, bool*>{false: false})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections.dart:28:8 -> BoolConstant(false)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections.dart:28:37 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections.dart:28:8 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections.dart:28:37 -> BoolConstant(false)
 Evaluated: MapLiteral @ org-dartlang-testcase:///const_collections.dart:31:26 -> MapConstant(const <List<int?>*, int*>{const <int*>[]: 0, const <int?>[]: 1})
 Extra constant evaluation: evaluated: 21, effectively constant: 18
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections_2.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections_2.dart.weak.outline.expect
index 9a289e2..0913c95 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections_2.dart.weak.outline.expect
@@ -12,17 +12,17 @@
 
 Extra constant evaluation status:
 Evaluated with empty environment: ListLiteral @ org-dartlang-testcase:///const_collections_2.dart:5:58 -> ListConstant(const <String*>["", "", "hello", "world"])
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections_2.dart:6:10 -> StringConstant("")
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections_2.dart:7:10 -> StringConstant("")
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections_2.dart:6:10 -> StringConstant("")
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections_2.dart:7:10 -> StringConstant("")
 Evaluated with empty environment: ListLiteral @ org-dartlang-testcase:///const_collections_2.dart:12:59 -> ListConstant(const <String*>["A", "few", "strings", "", "", "hello", "world", "and", "more"])
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections_2.dart:16:10 -> StringConstant("")
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections_2.dart:17:10 -> StringConstant("")
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections_2.dart:16:10 -> StringConstant("")
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections_2.dart:17:10 -> StringConstant("")
 Evaluated with empty environment: SetLiteral @ org-dartlang-testcase:///const_collections_2.dart:24:56 -> SetConstant(const <String*>{"", "hello", "world"})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections_2.dart:27:10 -> StringConstant("")
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections_2.dart:27:10 -> StringConstant("")
 Evaluated with empty environment: SetLiteral @ org-dartlang-testcase:///const_collections_2.dart:32:57 -> SetConstant(const <String*>{"A", "few", "strings", "", "hello", "world", "and", "more"})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections_2.dart:38:10 -> StringConstant("")
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections_2.dart:38:10 -> StringConstant("")
 Evaluated with empty environment: MapLiteral @ org-dartlang-testcase:///const_collections_2.dart:45:61 -> MapConstant(const <String*, int*>{"": 42, "hello": 42, "world": 42})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections_2.dart:48:10 -> StringConstant("")
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections_2.dart:48:10 -> StringConstant("")
 Evaluated with empty environment: MapLiteral @ org-dartlang-testcase:///const_collections_2.dart:53:62 -> MapConstant(const <String*, int*>{"A": 42, "few": 42, "strings": 42, "": 42, "hello": 42, "world": 42, "and": 42, "more": 42})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections_2.dart:59:10 -> StringConstant("")
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections_2.dart:59:10 -> StringConstant("")
 Extra constant evaluation: evaluated: 14, effectively constant: 14
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/many_fields_pointing_to_previous_field.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/many_fields_pointing_to_previous_field.dart.weak.outline.expect
index 8ea780a..9bd98d9 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/many_fields_pointing_to_previous_field.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/many_fields_pointing_to_previous_field.dart.weak.outline.expect
@@ -57,7 +57,7 @@
 
 Extra constant evaluation status:
 Evaluated with empty environment: ListLiteral @ org-dartlang-testcase:///many_fields_pointing_to_previous_field.dart:1:18 -> ListConstant(const <String*>["lots", "of", "strings", "", "that", "are", "already", "constants"])
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///many_fields_pointing_to_previous_field.dart:5:10 -> StringConstant("")
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///many_fields_pointing_to_previous_field.dart:5:10 -> StringConstant("")
 Evaluated with empty environment: StaticGet @ org-dartlang-testcase:///many_fields_pointing_to_previous_field.dart:11:15 -> ListConstant(const <String*>["lots", "of", "strings", "", "that", "are", "already", "constants"])
 Evaluated with empty environment: StaticGet @ org-dartlang-testcase:///many_fields_pointing_to_previous_field.dart:12:15 -> ListConstant(const <String*>["lots", "of", "strings", "", "that", "are", "already", "constants"])
 Evaluated with empty environment: StaticGet @ org-dartlang-testcase:///many_fields_pointing_to_previous_field.dart:13:15 -> ListConstant(const <String*>["lots", "of", "strings", "", "that", "are", "already", "constants"])
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/rudimentary_test_01.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/rudimentary_test_01.dart.weak.outline.expect
index a4388e8..e236e5c 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/rudimentary_test_01.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/rudimentary_test_01.dart.weak.outline.expect
@@ -15,7 +15,7 @@
 Extra constant evaluation status:
 Evaluated: InstanceInvocation @ org-dartlang-testcase:///rudimentary_test_01.dart:5:20 -> IntConstant(1764)
 Evaluated with empty environment: StringConcatenation @ org-dartlang-testcase:///rudimentary_test_01.dart:6:18 -> StringConstant("hello world!")
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///rudimentary_test_01.dart:7:27 -> StringConstant("world")
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///rudimentary_test_01.dart:7:27 -> StringConstant("world")
 Evaluated: LogicalExpression @ org-dartlang-testcase:///rudimentary_test_01.dart:8:50 -> BoolConstant(true)
 Evaluated: SymbolLiteral @ org-dartlang-testcase:///rudimentary_test_01.dart:9:19 -> SymbolConstant(#_x)
 Extra constant evaluation: evaluated: 5, effectively constant: 5
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart.weak.outline.expect
index 7967bf9..aecdca6 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart.weak.outline.expect
@@ -159,21 +159,21 @@
 
 
 Extra constant evaluation status:
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:32:27 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:32:27 -> BoolConstant(false)
 Evaluated with empty environment: StaticGet @ org-dartlang-testcase:///various.dart:32:69 -> BoolConstant(false)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:33:21 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:33:21 -> BoolConstant(false)
 Evaluated with empty environment: StaticGet @ org-dartlang-testcase:///various.dart:33:63 -> BoolConstant(false)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:7:31 -> BoolConstant(false)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:8:30 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:7:31 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:8:30 -> BoolConstant(false)
 Evaluated with empty environment: ConditionalExpression @ org-dartlang-testcase:///various.dart:9:67 -> NullConstant(null)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:9:39 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:9:39 -> BoolConstant(false)
 Evaluated with empty environment: StaticGet @ org-dartlang-testcase:///various.dart:11:53 -> NullConstant(null)
 Evaluated: LogicalExpression @ org-dartlang-testcase:///various.dart:19:29 -> BoolConstant(true)
 Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:22:29 -> IntConstant(42)
 Evaluated with empty environment: ConstructorInvocation @ org-dartlang-testcase:///various.dart:37:17 -> InstanceConstant(const Foo<int*>{Foo.saved: false, Foo.saved2: false, Foo.initialized: null, Foo.value: 42})
 Evaluated: Not @ org-dartlang-testcase:///various.dart:40:16 -> BoolConstant(false)
 Evaluated with empty environment: ConditionalExpression @ org-dartlang-testcase:///various.dart:42:46 -> BoolConstant(true)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:42:23 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:42:23 -> BoolConstant(false)
 Evaluated with empty environment: ConditionalExpression @ org-dartlang-testcase:///various.dart:43:38 -> BoolConstant(false)
 Evaluated with empty environment: IsExpression @ org-dartlang-testcase:///various.dart:43:31 -> BoolConstant(false)
 Evaluated with empty environment: StaticGet @ org-dartlang-testcase:///various.dart:43:22 -> BoolConstant(true)
@@ -199,33 +199,33 @@
 Evaluated: IsExpression @ org-dartlang-testcase:///various.dart:72:46 -> BoolConstant(true)
 Evaluated: IsExpression @ org-dartlang-testcase:///various.dart:73:46 -> BoolConstant(true)
 Evaluated with empty environment: ConstructorInvocation @ org-dartlang-testcase:///various.dart:76:11 -> SymbolConstant(#)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:76:25 -> StringConstant("")
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:76:25 -> StringConstant("")
 Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various.dart:77:44 -> SymbolConstant(#42)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:107:17 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:107:17 -> BoolConstant(false)
 Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various.dart:107:71 -> InstanceConstant(const C{})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:108:17 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:108:17 -> BoolConstant(false)
 Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various.dart:108:69 -> InstanceConstant(const A{})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:109:17 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:109:17 -> BoolConstant(false)
 Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various.dart:109:65 -> InstanceConstant(const C{})
 Evaluated with empty environment: ConditionalExpression @ org-dartlang-testcase:///various.dart:110:38 -> InstanceConstant(const Class<A*>{})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:110:17 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:110:17 -> BoolConstant(false)
 Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various.dart:110:53 -> InstanceConstant(const Class<A*>{})
 Evaluated with empty environment: ConditionalExpression @ org-dartlang-testcase:///various.dart:111:38 -> InstanceConstant(const Class<B*>{})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:111:17 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:111:17 -> BoolConstant(false)
 Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various.dart:111:53 -> InstanceConstant(const Class<B*>{})
 Evaluated with empty environment: ConditionalExpression @ org-dartlang-testcase:///various.dart:112:38 -> InstanceConstant(const Subclass<A*>{})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:112:17 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:112:17 -> BoolConstant(false)
 Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various.dart:112:53 -> InstanceConstant(const Subclass<A*>{})
 Evaluated with empty environment: ConditionalExpression @ org-dartlang-testcase:///various.dart:113:38 -> InstanceConstant(const Subclass<B*>{})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:113:17 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:113:17 -> BoolConstant(false)
 Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various.dart:113:53 -> InstanceConstant(const Subclass<B*>{})
 Evaluated: TypeLiteral @ org-dartlang-testcase:///various.dart:116:11 -> TypeLiteralConstant(int* Function(int*, {named: int*})*)
 Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various.dart:125:48 -> InstanceConstant(const ConstClassWithF{ConstClassWithF.foo: procedure})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:127:35 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:127:35 -> BoolConstant(false)
 Evaluated with empty environment: Not @ org-dartlang-testcase:///various.dart:128:33 -> BoolConstant(true)
 Evaluated with empty environment: StaticGet @ org-dartlang-testcase:///various.dart:128:34 -> BoolConstant(false)
 Evaluated with empty environment: ConditionalExpression @ org-dartlang-testcase:///various.dart:130:33 -> NullConstant(null)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:130:10 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:130:10 -> BoolConstant(false)
 Evaluated with empty environment: StaticGet @ org-dartlang-testcase:///various.dart:130:35 -> BoolConstant(false)
 Evaluated with empty environment: StaticGet @ org-dartlang-testcase:///various.dart:131:37 -> NullConstant(null)
 Extra constant evaluation: evaluated: 108, effectively constant: 69
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.outline.expect
index 373d6b4..b505038 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.outline.expect
@@ -112,7 +112,7 @@
 Evaluated: TypeLiteral @ org-dartlang-testcase:///various_2_lib.dart:17:27 -> TypeLiteralConstant(Object*)
 Evaluated: StaticTearOff @ org-dartlang-testcase:///various_2_lib.dart:18:12 -> StaticTearOffConstant(identical)
 Evaluated with empty environment: ConditionalExpression @ org-dartlang-testcase:///various_2_lib.dart:20:39 -> InstantiationConstant(id2<int*>)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various_2_lib.dart:20:11 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various_2_lib.dart:20:11 -> BoolConstant(false)
 Evaluated with empty environment: Instantiation @ org-dartlang-testcase:///various_2_lib.dart:20:41 -> InstantiationConstant(id1<int*>)
 Evaluated: StaticTearOff @ org-dartlang-testcase:///various_2_lib.dart:20:41 -> StaticTearOffConstant(id1)
 Evaluated with empty environment: Instantiation @ org-dartlang-testcase:///various_2_lib.dart:20:47 -> InstantiationConstant(id2<int*>)
diff --git a/pkg/front_end/testcases/general/implicit_new2.dart.weak.expect b/pkg/front_end/testcases/general/implicit_new2.dart.weak.expect
index 8602f0b..a487595 100644
--- a/pkg/front_end/testcases/general/implicit_new2.dart.weak.expect
+++ b/pkg/front_end/testcases/general/implicit_new2.dart.weak.expect
@@ -27,7 +27,7 @@
   return 42;
 }
 static method test6() → FutureOr<FutureOr<void>> {
-  return asy::Future::value<FutureOr<void>>(42);
+  return asy::Future::value<FutureOr<void>?>(42);
 }
 static method test() → FutureOr<FutureOr<void>> {
   return asy::Future::value<asy::Future<asy::Future<void>>>(asy::Future::value<asy::Future<void>>(asy::Future::value<void>(null)));
diff --git a/pkg/front_end/testcases/general/implicit_new2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/implicit_new2.dart.weak.transformed.expect
index c8bea67..3d5fcf9 100644
--- a/pkg/front_end/testcases/general/implicit_new2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/implicit_new2.dart.weak.transformed.expect
@@ -27,7 +27,7 @@
   return 42;
 }
 static method test6() → FutureOr<FutureOr<void>> {
-  return asy::Future::value<FutureOr<void>>(42);
+  return asy::Future::value<FutureOr<void>?>(42);
 }
 static method test() → FutureOr<FutureOr<void>> {
   return asy::Future::value<asy::Future<asy::Future<void>>>(asy::Future::value<asy::Future<void>>(asy::Future::value<void>(null)));
diff --git a/pkg/front_end/testcases/general/issue46334.dart b/pkg/front_end/testcases/general/issue46334.dart
new file mode 100644
index 0000000..d84c9a6
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46334.dart
@@ -0,0 +1,9 @@
+// Copyright (c) 2021, 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.
+
+class C {
+  factory C() = C;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/issue46334.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue46334.dart.textual_outline.expect
new file mode 100644
index 0000000..0474482
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46334.dart.textual_outline.expect
@@ -0,0 +1,5 @@
+class C {
+  factory C() = C;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/issue46334.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue46334.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..0474482
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46334.dart.textual_outline_modelled.expect
@@ -0,0 +1,5 @@
+class C {
+  factory C() = C;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/issue46334.dart.weak.expect b/pkg/front_end/testcases/general/issue46334.dart.weak.expect
new file mode 100644
index 0000000..2fd5dea
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46334.dart.weak.expect
@@ -0,0 +1,19 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue46334.dart:6:11: Error: Cyclic definition of factory 'C'.
+//   factory C() = C;
+//           ^
+//
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+  static factory •() → self::C
+    return invalid-expression "pkg/front_end/testcases/general/issue46334.dart:6:11: Error: Cyclic definition of factory 'C'.
+  factory C() = C;
+          ^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue46334.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue46334.dart.weak.outline.expect
new file mode 100644
index 0000000..2ac4318
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46334.dart.weak.outline.expect
@@ -0,0 +1,20 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue46334.dart:6:11: Error: Cyclic definition of factory 'C'.
+//   factory C() = C;
+//           ^
+//
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+  static factory •() → self::C
+    return invalid-expression "pkg/front_end/testcases/general/issue46334.dart:6:11: Error: Cyclic definition of factory 'C'.
+  factory C() = C;
+          ^";
+}
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/issue46334.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue46334.dart.weak.transformed.expect
new file mode 100644
index 0000000..2fd5dea
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46334.dart.weak.transformed.expect
@@ -0,0 +1,19 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue46334.dart:6:11: Error: Cyclic definition of factory 'C'.
+//   factory C() = C;
+//           ^
+//
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+  static factory •() → self::C
+    return invalid-expression "pkg/front_end/testcases/general/issue46334.dart:6:11: Error: Cyclic definition of factory 'C'.
+  factory C() = C;
+          ^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue46719.dart.weak.expect b/pkg/front_end/testcases/general/issue46719.dart.weak.expect
index c76f68a..6c43742 100644
--- a/pkg/front_end/testcases/general/issue46719.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue46719.dart.weak.expect
@@ -2,39 +2,29 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/issue46719.dart:25:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:25:12: Error: Couldn't find constructor 'm.applyAndPrint'.
 //   a.m<int>.applyAndPrint([2]);
-//   ^^^^^^^^^^^^^
+//            ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:26:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:26:15: Error: Couldn't find constructor 'm.applyAndPrint'.
 //   a.m<String>.applyAndPrint(['three']);
-//   ^^^^^^^^^^^^^
+//               ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:27:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-//   A.n<int>.applyAndPrint([2]);
-//     ^
-//
-// pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'n.applyAndPrint'.
 //   A.n<int>.applyAndPrint([2]);
 //            ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:28:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-//   A.n<String>.applyAndPrint(['three']);
-//     ^
-//
-// pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'n.applyAndPrint'.
 //   A.n<String>.applyAndPrint(['three']);
 //               ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:29:3: Error: Couldn't find constructor 'm.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:29:15: Error: Couldn't find constructor 'm.applyAndPrint'.
 //   self.m<int>.applyAndPrint([2]);
-//   ^^^^^^^^^^^^^
+//               ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:30:3: Error: Couldn't find constructor 'm.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:30:18: Error: Couldn't find constructor 'm.applyAndPrint'.
 //   self.m<String>.applyAndPrint(['three']);
-//   ^^^^^^^^^^^^^
+//                  ^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/general/issue46719.dart:31:11: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
@@ -59,15 +49,10 @@
 //   A<int>.named.toString();
 //          ^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:35:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
+// pkg/front_end/testcases/general/issue46719.dart:35:5: Error: Couldn't find constructor 'named'.
 //   A.named<int>.toString();
 //     ^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:35:16: Error: Couldn't find constructor 'A.named.toString'.
-//   A.named<int>.toString();
-//                ^^^^^^^^
-//
 import self as self;
 import "dart:core" as core;
 
@@ -97,24 +82,24 @@
   return (core::List<core::Object?> positionalArguments) → void => self::FunctionApplier|applyAndPrint(#this, positionalArguments);
 static method test() → dynamic {
   self::A<dynamic> a = new self::A::•<dynamic>();
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:25:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:25:12: Error: Couldn't find constructor 'm.applyAndPrint'.
   a.m<int>.applyAndPrint([2]);
-  ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:26:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
+           ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:26:15: Error: Couldn't find constructor 'm.applyAndPrint'.
   a.m<String>.applyAndPrint(['three']);
-  ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
+              ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'n.applyAndPrint'.
   A.n<int>.applyAndPrint([2]);
            ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'n.applyAndPrint'.
   A.n<String>.applyAndPrint(['three']);
               ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:29:3: Error: Couldn't find constructor 'm.applyAndPrint'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:29:15: Error: Couldn't find constructor 'm.applyAndPrint'.
   self.m<int>.applyAndPrint([2]);
-  ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:30:3: Error: Couldn't find constructor 'm.applyAndPrint'.
+              ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:30:18: Error: Couldn't find constructor 'm.applyAndPrint'.
   self.m<String>.applyAndPrint(['three']);
-  ^^^^^^^^^^^^^";
+                 ^^^^^^^^^^^^^";
   self::FunctionApplier|applyAndPrint(#C3, <core::Object?>[2]);
   self::FunctionApplier|applyAndPrint(#C3, <core::Object?>["three"]);
   invalid-expression "pkg/front_end/testcases/general/issue46719.dart:33:5: Error: Member not found: 'named'.
@@ -123,9 +108,9 @@
   invalid-expression "pkg/front_end/testcases/general/issue46719.dart:34:10: Error: Member not found: 'named'.
   A<int>.named.toString();
          ^^^^^".{core::Object::toString}(){() → core::String};
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:35:16: Error: Couldn't find constructor 'A.named.toString'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:35:5: Error: Couldn't find constructor 'named'.
   A.named<int>.toString();
-               ^^^^^^^^";
+    ^^^^^";
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general/issue46719.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue46719.dart.weak.transformed.expect
index f0fc296..ca845a7 100644
--- a/pkg/front_end/testcases/general/issue46719.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue46719.dart.weak.transformed.expect
@@ -2,39 +2,29 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/issue46719.dart:25:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:25:12: Error: Couldn't find constructor 'm.applyAndPrint'.
 //   a.m<int>.applyAndPrint([2]);
-//   ^^^^^^^^^^^^^
+//            ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:26:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:26:15: Error: Couldn't find constructor 'm.applyAndPrint'.
 //   a.m<String>.applyAndPrint(['three']);
-//   ^^^^^^^^^^^^^
+//               ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:27:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-//   A.n<int>.applyAndPrint([2]);
-//     ^
-//
-// pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'n.applyAndPrint'.
 //   A.n<int>.applyAndPrint([2]);
 //            ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:28:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-//   A.n<String>.applyAndPrint(['three']);
-//     ^
-//
-// pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'n.applyAndPrint'.
 //   A.n<String>.applyAndPrint(['three']);
 //               ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:29:3: Error: Couldn't find constructor 'm.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:29:15: Error: Couldn't find constructor 'm.applyAndPrint'.
 //   self.m<int>.applyAndPrint([2]);
-//   ^^^^^^^^^^^^^
+//               ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:30:3: Error: Couldn't find constructor 'm.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:30:18: Error: Couldn't find constructor 'm.applyAndPrint'.
 //   self.m<String>.applyAndPrint(['three']);
-//   ^^^^^^^^^^^^^
+//                  ^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/general/issue46719.dart:31:11: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
@@ -59,15 +49,10 @@
 //   A<int>.named.toString();
 //          ^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:35:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
+// pkg/front_end/testcases/general/issue46719.dart:35:5: Error: Couldn't find constructor 'named'.
 //   A.named<int>.toString();
 //     ^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:35:16: Error: Couldn't find constructor 'A.named.toString'.
-//   A.named<int>.toString();
-//                ^^^^^^^^
-//
 import self as self;
 import "dart:core" as core;
 
@@ -97,24 +82,24 @@
   return (core::List<core::Object?> positionalArguments) → void => self::FunctionApplier|applyAndPrint(#this, positionalArguments);
 static method test() → dynamic {
   self::A<dynamic> a = new self::A::•<dynamic>();
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:25:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:25:12: Error: Couldn't find constructor 'm.applyAndPrint'.
   a.m<int>.applyAndPrint([2]);
-  ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:26:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
+           ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:26:15: Error: Couldn't find constructor 'm.applyAndPrint'.
   a.m<String>.applyAndPrint(['three']);
-  ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
+              ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'n.applyAndPrint'.
   A.n<int>.applyAndPrint([2]);
            ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'n.applyAndPrint'.
   A.n<String>.applyAndPrint(['three']);
               ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:29:3: Error: Couldn't find constructor 'm.applyAndPrint'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:29:15: Error: Couldn't find constructor 'm.applyAndPrint'.
   self.m<int>.applyAndPrint([2]);
-  ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:30:3: Error: Couldn't find constructor 'm.applyAndPrint'.
+              ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:30:18: Error: Couldn't find constructor 'm.applyAndPrint'.
   self.m<String>.applyAndPrint(['three']);
-  ^^^^^^^^^^^^^";
+                 ^^^^^^^^^^^^^";
   self::FunctionApplier|applyAndPrint(#C3, core::_GrowableList::_literal1<core::Object?>(2));
   self::FunctionApplier|applyAndPrint(#C3, core::_GrowableList::_literal1<core::Object?>("three"));
   invalid-expression "pkg/front_end/testcases/general/issue46719.dart:33:5: Error: Member not found: 'named'.
@@ -123,9 +108,9 @@
   invalid-expression "pkg/front_end/testcases/general/issue46719.dart:34:10: Error: Member not found: 'named'.
   A<int>.named.toString();
          ^^^^^".{core::Object::toString}(){() → core::String};
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:35:16: Error: Couldn't find constructor 'A.named.toString'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:35:5: Error: Couldn't find constructor 'named'.
   A.named<int>.toString();
-               ^^^^^^^^";
+    ^^^^^";
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general/magic_const.dart.weak.transformed.expect b/pkg/front_end/testcases/general/magic_const.dart.weak.transformed.expect
index 3755189..e6298bf 100644
--- a/pkg/front_end/testcases/general/magic_const.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/magic_const.dart.weak.transformed.expect
@@ -75,7 +75,7 @@
 }
 
 Extra constant evaluation status:
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///magic_const.dart:21:8 -> BoolConstant(false)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///magic_const.dart:21:8 -> BoolConstant(false)
 Extra constant evaluation: evaluated: 2, effectively constant: 1
 
 
diff --git a/pkg/front_end/testcases/general/missing_toplevel.dart.weak.transformed.expect b/pkg/front_end/testcases/general/missing_toplevel.dart.weak.transformed.expect
index f7a04b0..92a8aa8 100644
--- a/pkg/front_end/testcases/general/missing_toplevel.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/missing_toplevel.dart.weak.transformed.expect
@@ -108,7 +108,7 @@
 Try correcting the operator to an existing operator, or defining a '+' operator.
 var missingBinary = classWithProperty.property += 2;
                                                ^" in #t1.{self::ClassWithProperty::property}{self::EmptyClass*}{<unresolved>}.+(2);
-static field dynamic missingIndexGet = let final self::ClassWithIndexSet* #t2 = self::classWithIndexSet in let final core::int* #t3 = 0 in let final Never #t4 = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:28:40: Error: The operator '[]' isn't defined for the class 'ClassWithIndexSet'.
+static field dynamic missingIndexGet = let final self::ClassWithIndexSet* #t2 = self::classWithIndexSet in let final core::int* #t3 = 0 in let final invalid-type #t4 = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:28:40: Error: The operator '[]' isn't defined for the class 'ClassWithIndexSet'.
  - 'ClassWithIndexSet' is from 'pkg/front_end/testcases/general/missing_toplevel.dart'.
 Try correcting the operator to an existing operator, or defining a '[]' operator.
 var missingIndexGet = classWithIndexSet[0] ??= 2;
diff --git a/pkg/front_end/testcases/general/named_function_scope.dart.weak.transformed.expect b/pkg/front_end/testcases/general/named_function_scope.dart.weak.transformed.expect
index 2f3683b..c14d8e6 100644
--- a/pkg/front_end/testcases/general/named_function_scope.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/named_function_scope.dart.weak.transformed.expect
@@ -140,7 +140,7 @@
         ^" in null;
   }
   {
-    () →* Null x = let final Never #t1 = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:41:15: Error: Can't declare 'T' because it was already used in this scope.
+    () →* Null x = let final invalid-type #t1 = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:41:15: Error: Can't declare 'T' because it was already used in this scope.
     var x = T T() {};
               ^" in let final () →* Null T = () → Null {} in T;
   }
@@ -150,7 +150,7 @@
       ^";
   }
   {
-    <T extends core::Object* = dynamic>() →* Null x = let final Never #t2 = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:52:13: Error: 'T' is already declared in this scope.
+    <T extends core::Object* = dynamic>() →* Null x = let final invalid-type #t2 = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:52:13: Error: 'T' is already declared in this scope.
     var x = T<T>() {};
             ^" in let final <T extends core::Object* = dynamic>() →* Null T = <T extends core::Object* = dynamic>() → Null {} in T;
   }
diff --git a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.outline.expect b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.outline.expect
index ab987d2..2c8cde5 100644
--- a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.outline.expect
@@ -56,5 +56,5 @@
 
 
 Extra constant evaluation status:
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///nested_implicit_const_with_env_var.dart:5:23 -> IntConstant(0)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///nested_implicit_const_with_env_var.dart:5:23 -> IntConstant(0)
 Extra constant evaluation: evaluated: 3, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/null_aware_super.dart b/pkg/front_end/testcases/general/null_aware_super.dart
new file mode 100644
index 0000000..106fd43
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_super.dart
@@ -0,0 +1,13 @@
+// Copyright (c) 2021, 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.
+
+class Super {
+  Super.named();
+}
+
+class Class extends Super {
+  Class() : super?.named();
+}
+
+main() {}
\ No newline at end of file
diff --git a/pkg/front_end/testcases/general/null_aware_super.dart.textual_outline.expect b/pkg/front_end/testcases/general/null_aware_super.dart.textual_outline.expect
new file mode 100644
index 0000000..903b3d4
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_super.dart.textual_outline.expect
@@ -0,0 +1,7 @@
+class Super {
+  Super.named();
+}
+class Class extends Super {
+  Class() : super?.named();
+}
+main() {}
diff --git a/pkg/front_end/testcases/general/null_aware_super.dart.weak.expect b/pkg/front_end/testcases/general/null_aware_super.dart.weak.expect
new file mode 100644
index 0000000..2e47743
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_super.dart.weak.expect
@@ -0,0 +1,28 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/null_aware_super.dart:10:18: Error: The operator '?.' cannot be used with 'super' because 'super' cannot be null.
+// Try replacing '?.' with '.'
+//   Class() : super?.named();
+//                  ^^
+//
+// pkg/front_end/testcases/general/null_aware_super.dart:10:18: Error: Cannot use '?.' here.
+// Try using '.'.
+//   Class() : super?.named();
+//                  ^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Super extends core::Object {
+  constructor named() → self::Super
+    : super core::Object::•()
+    ;
+}
+class Class extends self::Super {
+  constructor •() → self::Class
+    : super self::Super::named()
+    ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/null_aware_super.dart.weak.outline.expect b/pkg/front_end/testcases/general/null_aware_super.dart.weak.outline.expect
new file mode 100644
index 0000000..a9cb459
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_super.dart.weak.outline.expect
@@ -0,0 +1,22 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/null_aware_super.dart:10:18: Error: The operator '?.' cannot be used with 'super' because 'super' cannot be null.
+// Try replacing '?.' with '.'
+//   Class() : super?.named();
+//                  ^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Super extends core::Object {
+  constructor named() → self::Super
+    ;
+}
+class Class extends self::Super {
+  constructor •() → self::Class
+    ;
+}
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/null_aware_super.dart.weak.transformed.expect b/pkg/front_end/testcases/general/null_aware_super.dart.weak.transformed.expect
new file mode 100644
index 0000000..2e47743
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_super.dart.weak.transformed.expect
@@ -0,0 +1,28 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/null_aware_super.dart:10:18: Error: The operator '?.' cannot be used with 'super' because 'super' cannot be null.
+// Try replacing '?.' with '.'
+//   Class() : super?.named();
+//                  ^^
+//
+// pkg/front_end/testcases/general/null_aware_super.dart:10:18: Error: Cannot use '?.' here.
+// Try using '.'.
+//   Class() : super?.named();
+//                  ^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Super extends core::Object {
+  constructor named() → self::Super
+    : super core::Object::•()
+    ;
+}
+class Class extends self::Super {
+  constructor •() → self::Class
+    : super self::Super::named()
+    ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.expect b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.expect
index a155bab..6b88eff 100644
--- a/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.expect
+++ b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.expect
@@ -82,25 +82,25 @@
 //   unresolved_prefix.UnresolvedClass.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:42:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:42:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-//       ^^^^^^^^^^^^^^^^^^^^^
+//                                         ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-//         ^^^^^^^^^^^^^^^^^^^^^
+//                                           ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
-//       ^^^^^^^^^^^^^^^^^^^^^
+//                                               ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
-//         ^^^^^^^^^^^^^^^^^^^^^
+//                                                       ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
 //   UnresolvedClass<int>();
@@ -174,29 +174,37 @@
 //   const unresolved_prefix.UnresolvedClass<int> /**/ ();
 //         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:3: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-//   ^^^^^^^^^^^^^^^^^^^^^
+//   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:70:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:42: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+//   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                                          ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:70:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-//       ^^^^^^^^^^^^^^^^^^^^^
+//                                              ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-//         ^^^^^^^^^^^^^^^^^^^^^
+//                                                ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:3: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
-//   ^^^^^^^^^^^^^^^^^^^^^
+//   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:48: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+//   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+//                                                ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
-//       ^^^^^^^^^^^^^^^^^^^^^
+//                                                    ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
-//         ^^^^^^^^^^^^^^^^^^^^^
+//                                                      ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
 //   ResolvedClass();
@@ -560,21 +568,21 @@
   invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:42:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:42:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-      ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+                                        ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-        ^^^^^^^^^^^^^^^^^^^^^";
+                                          ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
-      ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+                                              ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
-        ^^^^^^^^^^^^^^^^^^^^^";
+                                                      ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
   UnresolvedClass<int>();
   ^^^^^^^^^^^^^^^";
@@ -629,24 +637,24 @@
   invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:67:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix.UnresolvedClass<int> /**/ ();
         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:3: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:42: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-  ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:70:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+                                         ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:70:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-      ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+                                             ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-        ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:3: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+                                               ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:48: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
-  ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+                                               ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
-      ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+                                                   ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
-        ^^^^^^^^^^^^^^^^^^^^^";
+                                                     ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
   ResolvedClass();
   ^^^^^^^^^^^^^";
diff --git a/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.transformed.expect b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.transformed.expect
index a155bab..6b88eff 100644
--- a/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.transformed.expect
@@ -82,25 +82,25 @@
 //   unresolved_prefix.UnresolvedClass.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:42:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:42:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-//       ^^^^^^^^^^^^^^^^^^^^^
+//                                         ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-//         ^^^^^^^^^^^^^^^^^^^^^
+//                                           ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
-//       ^^^^^^^^^^^^^^^^^^^^^
+//                                               ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
-//         ^^^^^^^^^^^^^^^^^^^^^
+//                                                       ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
 //   UnresolvedClass<int>();
@@ -174,29 +174,37 @@
 //   const unresolved_prefix.UnresolvedClass<int> /**/ ();
 //         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:3: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-//   ^^^^^^^^^^^^^^^^^^^^^
+//   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:70:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:42: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+//   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                                          ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:70:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-//       ^^^^^^^^^^^^^^^^^^^^^
+//                                              ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-//         ^^^^^^^^^^^^^^^^^^^^^
+//                                                ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:3: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
-//   ^^^^^^^^^^^^^^^^^^^^^
+//   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:48: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+//   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+//                                                ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
-//       ^^^^^^^^^^^^^^^^^^^^^
+//                                                    ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
-//         ^^^^^^^^^^^^^^^^^^^^^
+//                                                      ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
 //   ResolvedClass();
@@ -560,21 +568,21 @@
   invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:42:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:42:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-      ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+                                        ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-        ^^^^^^^^^^^^^^^^^^^^^";
+                                          ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
-      ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+                                              ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
-        ^^^^^^^^^^^^^^^^^^^^^";
+                                                      ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
   UnresolvedClass<int>();
   ^^^^^^^^^^^^^^^";
@@ -629,24 +637,24 @@
   invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:67:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix.UnresolvedClass<int> /**/ ();
         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:3: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:42: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-  ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:70:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+                                         ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:70:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-      ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+                                             ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-        ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:3: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+                                               ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:48: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
-  ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+                                               ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
-      ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+                                                   ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
-        ^^^^^^^^^^^^^^^^^^^^^";
+                                                     ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
   ResolvedClass();
   ^^^^^^^^^^^^^";
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart
index bcd891f..cdde874 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart
@@ -79,9 +79,25 @@
 
 int topLevelMethodAndSetter2() => 1;
 
+var field = topLevelMethod;
+
+@topLevelMethod
 test() {
   topLevelMethod();
   (topLevelMethod)();
+  if (topLevelMethod) {}
+  topLevelMethod;
+  @topLevelMethod
+  var foo;
+  switch (null) {
+    case topLevelMethod;
+  }
+  topLevelMethod || topLevelMethod;
+  topLevelMethod + 0;
+  topLevelMethod ~ 0;
+  topLevelMethod ?? topLevelMethod;
+  topLevelMethod?.foo;
+  topLevelMethod?.foo();
   topLevelGetter;
   topLevelSetter = 0;
   topLevelField;
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect
index ca55581..85c4c69 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect
@@ -112,55 +112,123 @@
 // int topLevelMethodAndSetter2() => 1;
 //     ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// var field = topLevelMethod;
+//             ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// @topLevelMethod
+//  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @topLevelMethod
+//  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
 //   topLevelMethod();
 //   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
 //   (topLevelMethod)();
 //    ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:7: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   if (topLevelMethod) {}
+//       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   @topLevelMethod
+//    ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+//   @topLevelMethod
+//    ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:24: Error: Expected ':' before this.
+//     case topLevelMethod;
+//                        ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:10: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//     case topLevelMethod;
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod || topLevelMethod;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod || topLevelMethod;
+//                     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod + 0;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:97:18: Error: '~' isn't a binary operator.
+//   topLevelMethod ~ 0;
+//                  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod ?? topLevelMethod;
+//                     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod ?? topLevelMethod;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:99:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod?.foo;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:100:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod?.foo();
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:101:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
 //   topLevelGetter;
 //   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:102:18: Error: Can't assign to this.
 //   topLevelSetter = 0;
 //                  ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:103:3: Error: Can't use 'topLevelField' because it is declared more than once.
 //   topLevelField;
 //   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:104:17: Error: Can't assign to this.
 //   topLevelField = 0;
 //                 ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:105:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
 //   topLevelDuplicateFieldAndSetter;
 //   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:106:35: Error: Can't assign to this.
 //   topLevelDuplicateFieldAndSetter = 0;
 //                                   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:108:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
 //   topLevelFieldAndDuplicateSetter = 0;
 //   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:109:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
 //   topLevelDuplicateFieldAndDuplicateSetter;
 //   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:110:44: Error: Can't assign to this.
 //   topLevelDuplicateFieldAndDuplicateSetter = 0;
 //                                            ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:111:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
 //   topLevelMethodAndSetter1 = 0;
 //   ^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:112:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
 //   topLevelMethodAndSetter2 = 0;
 //   ^^^^^^^^^^^^^^^^^^^^^^^^
 //
@@ -176,6 +244,9 @@
 static final field core::int topLevelDuplicateFieldAndSetter;
 static final field core::int topLevelFieldAndDuplicateSetter = 1;
 static final field core::int topLevelDuplicateFieldAndDuplicateSetter;
+static field invalid-type field = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
+var field = topLevelMethod;
+            ^";
 static const field dynamic _exports# = #C1 /*isLegacy*/;
 static method topLevelMethod() → core::int
   return 1;
@@ -203,45 +274,89 @@
 }
 static method topLevelMethodAndSetter2() → core::int
   return 1;
+@invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@topLevelMethod
+ ^"
 static method test() → dynamic {
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
   topLevelMethod();
   ^"{dynamic}.call();
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
   (topLevelMethod)();
    ^"{dynamic}.call();
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+  if(invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:7: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  if (topLevelMethod) {}
+      ^") {
+  }
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod;
+  ^";
+  @invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+  @topLevelMethod
+   ^" dynamic foo;
+  switch(null) {
+    #L1:
+    case invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:10: Error: Can't use 'topLevelMethod' because it is declared more than once.
+    case topLevelMethod;
+         ^":
+      {
+        ;
+      }
+  }
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod || topLevelMethod;
+  ^" || invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod || topLevelMethod;
+                    ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod + 0;
+  ^"{<invalid>}.+(0);
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:97:18: Error: '~' isn't a binary operator.
+  topLevelMethod ~ 0;
+                 ^";
+  let final invalid-type #t1 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod ?? topLevelMethod;
+  ^" in #t1 == null ?{invalid-type} invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod ?? topLevelMethod;
+                    ^" : #t1;
+  let final invalid-type #t2 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:99:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod?.foo;
+  ^" in #t2 == null ?{invalid-type} null : #t2{<invalid>}.foo;
+  let final invalid-type #t3 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:100:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod?.foo();
+  ^" in #t3 == null ?{dynamic} null : #t3{dynamic}.foo();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:101:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
   topLevelGetter;
   ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:102:18: Error: Can't assign to this.
   topLevelSetter = 0;
                  ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:103:3: Error: Can't use 'topLevelField' because it is declared more than once.
   topLevelField;
   ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:104:17: Error: Can't assign to this.
   topLevelField = 0;
                 ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:105:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
   topLevelDuplicateFieldAndSetter;
   ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:106:35: Error: Can't assign to this.
   topLevelDuplicateFieldAndSetter = 0;
                                   ^";
   self::topLevelFieldAndDuplicateSetter;
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:108:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
   topLevelFieldAndDuplicateSetter = 0;
   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:109:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
   topLevelDuplicateFieldAndDuplicateSetter;
   ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:110:44: Error: Can't assign to this.
   topLevelDuplicateFieldAndDuplicateSetter = 0;
                                            ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:111:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
   topLevelMethodAndSetter1 = 0;
   ^^^^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:112:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
   topLevelMethodAndSetter2 = 0;
   ^^^^^^^^^^^^^^^^^^^^^^^^";
 }
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.transformed.expect
index ca55581..85c4c69 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.transformed.expect
@@ -112,55 +112,123 @@
 // int topLevelMethodAndSetter2() => 1;
 //     ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// var field = topLevelMethod;
+//             ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// @topLevelMethod
+//  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @topLevelMethod
+//  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
 //   topLevelMethod();
 //   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
 //   (topLevelMethod)();
 //    ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:7: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   if (topLevelMethod) {}
+//       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   @topLevelMethod
+//    ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+//   @topLevelMethod
+//    ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:24: Error: Expected ':' before this.
+//     case topLevelMethod;
+//                        ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:10: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//     case topLevelMethod;
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod || topLevelMethod;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod || topLevelMethod;
+//                     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod + 0;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:97:18: Error: '~' isn't a binary operator.
+//   topLevelMethod ~ 0;
+//                  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod ?? topLevelMethod;
+//                     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod ?? topLevelMethod;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:99:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod?.foo;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:100:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod?.foo();
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:101:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
 //   topLevelGetter;
 //   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:102:18: Error: Can't assign to this.
 //   topLevelSetter = 0;
 //                  ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:103:3: Error: Can't use 'topLevelField' because it is declared more than once.
 //   topLevelField;
 //   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:104:17: Error: Can't assign to this.
 //   topLevelField = 0;
 //                 ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:105:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
 //   topLevelDuplicateFieldAndSetter;
 //   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:106:35: Error: Can't assign to this.
 //   topLevelDuplicateFieldAndSetter = 0;
 //                                   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:108:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
 //   topLevelFieldAndDuplicateSetter = 0;
 //   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:109:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
 //   topLevelDuplicateFieldAndDuplicateSetter;
 //   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:110:44: Error: Can't assign to this.
 //   topLevelDuplicateFieldAndDuplicateSetter = 0;
 //                                            ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:111:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
 //   topLevelMethodAndSetter1 = 0;
 //   ^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:112:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
 //   topLevelMethodAndSetter2 = 0;
 //   ^^^^^^^^^^^^^^^^^^^^^^^^
 //
@@ -176,6 +244,9 @@
 static final field core::int topLevelDuplicateFieldAndSetter;
 static final field core::int topLevelFieldAndDuplicateSetter = 1;
 static final field core::int topLevelDuplicateFieldAndDuplicateSetter;
+static field invalid-type field = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
+var field = topLevelMethod;
+            ^";
 static const field dynamic _exports# = #C1 /*isLegacy*/;
 static method topLevelMethod() → core::int
   return 1;
@@ -203,45 +274,89 @@
 }
 static method topLevelMethodAndSetter2() → core::int
   return 1;
+@invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@topLevelMethod
+ ^"
 static method test() → dynamic {
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
   topLevelMethod();
   ^"{dynamic}.call();
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
   (topLevelMethod)();
    ^"{dynamic}.call();
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+  if(invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:7: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  if (topLevelMethod) {}
+      ^") {
+  }
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod;
+  ^";
+  @invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+  @topLevelMethod
+   ^" dynamic foo;
+  switch(null) {
+    #L1:
+    case invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:10: Error: Can't use 'topLevelMethod' because it is declared more than once.
+    case topLevelMethod;
+         ^":
+      {
+        ;
+      }
+  }
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod || topLevelMethod;
+  ^" || invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod || topLevelMethod;
+                    ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod + 0;
+  ^"{<invalid>}.+(0);
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:97:18: Error: '~' isn't a binary operator.
+  topLevelMethod ~ 0;
+                 ^";
+  let final invalid-type #t1 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod ?? topLevelMethod;
+  ^" in #t1 == null ?{invalid-type} invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod ?? topLevelMethod;
+                    ^" : #t1;
+  let final invalid-type #t2 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:99:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod?.foo;
+  ^" in #t2 == null ?{invalid-type} null : #t2{<invalid>}.foo;
+  let final invalid-type #t3 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:100:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod?.foo();
+  ^" in #t3 == null ?{dynamic} null : #t3{dynamic}.foo();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:101:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
   topLevelGetter;
   ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:102:18: Error: Can't assign to this.
   topLevelSetter = 0;
                  ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:103:3: Error: Can't use 'topLevelField' because it is declared more than once.
   topLevelField;
   ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:104:17: Error: Can't assign to this.
   topLevelField = 0;
                 ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:105:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
   topLevelDuplicateFieldAndSetter;
   ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:106:35: Error: Can't assign to this.
   topLevelDuplicateFieldAndSetter = 0;
                                   ^";
   self::topLevelFieldAndDuplicateSetter;
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:108:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
   topLevelFieldAndDuplicateSetter = 0;
   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:109:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
   topLevelDuplicateFieldAndDuplicateSetter;
   ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:110:44: Error: Can't assign to this.
   topLevelDuplicateFieldAndDuplicateSetter = 0;
                                            ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:111:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
   topLevelMethodAndSetter1 = 0;
   ^^^^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:112:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
   topLevelMethodAndSetter2 = 0;
   ^^^^^^^^^^^^^^^^^^^^^^^^";
 }
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline.expect
index 20b935d..591960d 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline.expect
@@ -29,6 +29,8 @@
 void set topLevelMethodAndSetter1(int value) {}
 void set topLevelMethodAndSetter2(int value) {}
 int topLevelMethodAndSetter2() => 1;
+var field = topLevelMethod;
+@topLevelMethod
 test() {}
 main() {}
 expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline_modelled.expect
index bb9a9a2..b5d58c1 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline_modelled.expect
@@ -32,7 +32,9 @@
 int topLevelMethodAndSetter1() => 1;
 int topLevelMethodAndSetter2() => 1;
 main() {}
+@topLevelMethod
 test() {}
+var field = topLevelMethod;
 void set topLevelDuplicateFieldAndDuplicateSetter(int value) {}
 void set topLevelDuplicateFieldAndDuplicateSetter(int value) {}
 void set topLevelMethodAndSetter1(int value) {}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect
index ca55581..85c4c69 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect
@@ -112,55 +112,123 @@
 // int topLevelMethodAndSetter2() => 1;
 //     ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// var field = topLevelMethod;
+//             ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// @topLevelMethod
+//  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @topLevelMethod
+//  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
 //   topLevelMethod();
 //   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
 //   (topLevelMethod)();
 //    ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:7: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   if (topLevelMethod) {}
+//       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   @topLevelMethod
+//    ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+//   @topLevelMethod
+//    ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:24: Error: Expected ':' before this.
+//     case topLevelMethod;
+//                        ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:10: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//     case topLevelMethod;
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod || topLevelMethod;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod || topLevelMethod;
+//                     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod + 0;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:97:18: Error: '~' isn't a binary operator.
+//   topLevelMethod ~ 0;
+//                  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod ?? topLevelMethod;
+//                     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod ?? topLevelMethod;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:99:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod?.foo;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:100:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod?.foo();
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:101:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
 //   topLevelGetter;
 //   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:102:18: Error: Can't assign to this.
 //   topLevelSetter = 0;
 //                  ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:103:3: Error: Can't use 'topLevelField' because it is declared more than once.
 //   topLevelField;
 //   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:104:17: Error: Can't assign to this.
 //   topLevelField = 0;
 //                 ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:105:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
 //   topLevelDuplicateFieldAndSetter;
 //   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:106:35: Error: Can't assign to this.
 //   topLevelDuplicateFieldAndSetter = 0;
 //                                   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:108:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
 //   topLevelFieldAndDuplicateSetter = 0;
 //   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:109:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
 //   topLevelDuplicateFieldAndDuplicateSetter;
 //   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:110:44: Error: Can't assign to this.
 //   topLevelDuplicateFieldAndDuplicateSetter = 0;
 //                                            ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:111:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
 //   topLevelMethodAndSetter1 = 0;
 //   ^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:112:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
 //   topLevelMethodAndSetter2 = 0;
 //   ^^^^^^^^^^^^^^^^^^^^^^^^
 //
@@ -176,6 +244,9 @@
 static final field core::int topLevelDuplicateFieldAndSetter;
 static final field core::int topLevelFieldAndDuplicateSetter = 1;
 static final field core::int topLevelDuplicateFieldAndDuplicateSetter;
+static field invalid-type field = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
+var field = topLevelMethod;
+            ^";
 static const field dynamic _exports# = #C1 /*isLegacy*/;
 static method topLevelMethod() → core::int
   return 1;
@@ -203,45 +274,89 @@
 }
 static method topLevelMethodAndSetter2() → core::int
   return 1;
+@invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@topLevelMethod
+ ^"
 static method test() → dynamic {
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
   topLevelMethod();
   ^"{dynamic}.call();
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
   (topLevelMethod)();
    ^"{dynamic}.call();
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+  if(invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:7: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  if (topLevelMethod) {}
+      ^") {
+  }
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod;
+  ^";
+  @invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+  @topLevelMethod
+   ^" dynamic foo;
+  switch(null) {
+    #L1:
+    case invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:10: Error: Can't use 'topLevelMethod' because it is declared more than once.
+    case topLevelMethod;
+         ^":
+      {
+        ;
+      }
+  }
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod || topLevelMethod;
+  ^" || invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod || topLevelMethod;
+                    ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod + 0;
+  ^"{<invalid>}.+(0);
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:97:18: Error: '~' isn't a binary operator.
+  topLevelMethod ~ 0;
+                 ^";
+  let final invalid-type #t1 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod ?? topLevelMethod;
+  ^" in #t1 == null ?{invalid-type} invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod ?? topLevelMethod;
+                    ^" : #t1;
+  let final invalid-type #t2 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:99:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod?.foo;
+  ^" in #t2 == null ?{invalid-type} null : #t2{<invalid>}.foo;
+  let final invalid-type #t3 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:100:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod?.foo();
+  ^" in #t3 == null ?{dynamic} null : #t3{dynamic}.foo();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:101:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
   topLevelGetter;
   ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:102:18: Error: Can't assign to this.
   topLevelSetter = 0;
                  ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:103:3: Error: Can't use 'topLevelField' because it is declared more than once.
   topLevelField;
   ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:104:17: Error: Can't assign to this.
   topLevelField = 0;
                 ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:105:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
   topLevelDuplicateFieldAndSetter;
   ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:106:35: Error: Can't assign to this.
   topLevelDuplicateFieldAndSetter = 0;
                                   ^";
   self::topLevelFieldAndDuplicateSetter;
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:108:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
   topLevelFieldAndDuplicateSetter = 0;
   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:109:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
   topLevelDuplicateFieldAndDuplicateSetter;
   ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:110:44: Error: Can't assign to this.
   topLevelDuplicateFieldAndDuplicateSetter = 0;
                                            ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:111:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
   topLevelMethodAndSetter1 = 0;
   ^^^^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:112:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
   topLevelMethodAndSetter2 = 0;
   ^^^^^^^^^^^^^^^^^^^^^^^^";
 }
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.outline.expect
index 2540f70..25e0d01 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.outline.expect
@@ -112,6 +112,18 @@
 // int topLevelMethodAndSetter2() => 1;
 //     ^
 //
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// var field = topLevelMethod;
+//             ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// @topLevelMethod
+//  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @topLevelMethod
+//  ^
+//
 import self as self;
 import "dart:core" as core;
 
@@ -124,6 +136,7 @@
 static final field core::int topLevelDuplicateFieldAndSetter;
 static final field core::int topLevelFieldAndDuplicateSetter;
 static final field core::int topLevelDuplicateFieldAndDuplicateSetter;
+static field invalid-type field;
 static const field dynamic _exports# = "{\"topLevelSetter\":\"'topLevelSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.\",\"topLevelFieldAndDuplicateSetter\":\"'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.\",\"topLevelDuplicateFieldAndDuplicateSetter\":\"'topLevelDuplicateFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.\"}" /*isLegacy*/;
 static method topLevelMethod() → core::int
   ;
@@ -145,6 +158,11 @@
   ;
 static method topLevelMethodAndSetter2() → core::int
   ;
+@invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@topLevelMethod
+ ^" in invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: Can't use 'topLevelMethod' because it is declared more than once.
+@topLevelMethod
+ ^"
 static method test() → dynamic
   ;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.transformed.expect
index ca55581..85c4c69 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.transformed.expect
@@ -112,55 +112,123 @@
 // int topLevelMethodAndSetter2() => 1;
 //     ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// var field = topLevelMethod;
+//             ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// @topLevelMethod
+//  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @topLevelMethod
+//  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
 //   topLevelMethod();
 //   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
 //   (topLevelMethod)();
 //    ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:7: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   if (topLevelMethod) {}
+//       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   @topLevelMethod
+//    ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+//   @topLevelMethod
+//    ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:24: Error: Expected ':' before this.
+//     case topLevelMethod;
+//                        ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:10: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//     case topLevelMethod;
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod || topLevelMethod;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod || topLevelMethod;
+//                     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod + 0;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:97:18: Error: '~' isn't a binary operator.
+//   topLevelMethod ~ 0;
+//                  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod ?? topLevelMethod;
+//                     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod ?? topLevelMethod;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:99:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod?.foo;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:100:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod?.foo();
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:101:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
 //   topLevelGetter;
 //   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:102:18: Error: Can't assign to this.
 //   topLevelSetter = 0;
 //                  ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:103:3: Error: Can't use 'topLevelField' because it is declared more than once.
 //   topLevelField;
 //   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:104:17: Error: Can't assign to this.
 //   topLevelField = 0;
 //                 ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:105:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
 //   topLevelDuplicateFieldAndSetter;
 //   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:106:35: Error: Can't assign to this.
 //   topLevelDuplicateFieldAndSetter = 0;
 //                                   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:108:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
 //   topLevelFieldAndDuplicateSetter = 0;
 //   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:109:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
 //   topLevelDuplicateFieldAndDuplicateSetter;
 //   ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:110:44: Error: Can't assign to this.
 //   topLevelDuplicateFieldAndDuplicateSetter = 0;
 //                                            ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:111:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
 //   topLevelMethodAndSetter1 = 0;
 //   ^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:112:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
 //   topLevelMethodAndSetter2 = 0;
 //   ^^^^^^^^^^^^^^^^^^^^^^^^
 //
@@ -176,6 +244,9 @@
 static final field core::int topLevelDuplicateFieldAndSetter;
 static final field core::int topLevelFieldAndDuplicateSetter = 1;
 static final field core::int topLevelDuplicateFieldAndDuplicateSetter;
+static field invalid-type field = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
+var field = topLevelMethod;
+            ^";
 static const field dynamic _exports# = #C1 /*isLegacy*/;
 static method topLevelMethod() → core::int
   return 1;
@@ -203,45 +274,89 @@
 }
 static method topLevelMethodAndSetter2() → core::int
   return 1;
+@invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@topLevelMethod
+ ^"
 static method test() → dynamic {
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
   topLevelMethod();
   ^"{dynamic}.call();
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
   (topLevelMethod)();
    ^"{dynamic}.call();
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+  if(invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:7: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  if (topLevelMethod) {}
+      ^") {
+  }
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod;
+  ^";
+  @invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+  @topLevelMethod
+   ^" dynamic foo;
+  switch(null) {
+    #L1:
+    case invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:10: Error: Can't use 'topLevelMethod' because it is declared more than once.
+    case topLevelMethod;
+         ^":
+      {
+        ;
+      }
+  }
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod || topLevelMethod;
+  ^" || invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod || topLevelMethod;
+                    ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod + 0;
+  ^"{<invalid>}.+(0);
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:97:18: Error: '~' isn't a binary operator.
+  topLevelMethod ~ 0;
+                 ^";
+  let final invalid-type #t1 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod ?? topLevelMethod;
+  ^" in #t1 == null ?{invalid-type} invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod ?? topLevelMethod;
+                    ^" : #t1;
+  let final invalid-type #t2 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:99:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod?.foo;
+  ^" in #t2 == null ?{invalid-type} null : #t2{<invalid>}.foo;
+  let final invalid-type #t3 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:100:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod?.foo();
+  ^" in #t3 == null ?{dynamic} null : #t3{dynamic}.foo();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:101:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
   topLevelGetter;
   ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:102:18: Error: Can't assign to this.
   topLevelSetter = 0;
                  ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:103:3: Error: Can't use 'topLevelField' because it is declared more than once.
   topLevelField;
   ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:104:17: Error: Can't assign to this.
   topLevelField = 0;
                 ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:105:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
   topLevelDuplicateFieldAndSetter;
   ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:106:35: Error: Can't assign to this.
   topLevelDuplicateFieldAndSetter = 0;
                                   ^";
   self::topLevelFieldAndDuplicateSetter;
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:108:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
   topLevelFieldAndDuplicateSetter = 0;
   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:109:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
   topLevelDuplicateFieldAndDuplicateSetter;
   ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:110:44: Error: Can't assign to this.
   topLevelDuplicateFieldAndDuplicateSetter = 0;
                                            ^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:111:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
   topLevelMethodAndSetter1 = 0;
   ^^^^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:112:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
   topLevelMethodAndSetter2 = 0;
   ^^^^^^^^^^^^^^^^^^^^^^^^";
 }
diff --git a/pkg/front_end/testcases/strong.status b/pkg/front_end/testcases/strong.status
index 42c7fc9..47b80dd 100644
--- a/pkg/front_end/testcases/strong.status
+++ b/pkg/front_end/testcases/strong.status
@@ -9,8 +9,6 @@
 dart2js/late_statics: SemiFuzzFailure # dartbug.com/45854
 
 constructor_tearoffs/call_instantiation: TypeCheckError
-constructor_tearoffs/issue46719: RuntimeError
-constructor_tearoffs/issue46887: RuntimeError
 constructor_tearoffs/lowering/invalid_redirect: VerificationError
 extension_types/extension_on_nullable: ExpectationFileMismatchSerialized # Expected.
 extension_types/issue45775: ExpectationFileMismatchSerialized # Expected.
diff --git a/pkg/front_end/testcases/text_serialization.status b/pkg/front_end/testcases/text_serialization.status
index 4fdbf7c..dc74759 100644
--- a/pkg/front_end/testcases/text_serialization.status
+++ b/pkg/front_end/testcases/text_serialization.status
@@ -7,8 +7,6 @@
 # Kernel files are produced by compiling Dart code via Fasta.
 
 constructor_tearoffs/call_instantiation: TypeCheckError
-constructor_tearoffs/issue46719: RuntimeError
-constructor_tearoffs/issue46887: RuntimeError
 constructor_tearoffs/lowering/invalid_redirect: VerificationError
 extension_types/extension_on_nullable: ExpectationFileMismatchSerialized # Expected.
 extension_types/issue45775: ExpectationFileMismatchSerialized # Expected.
diff --git a/pkg/front_end/testcases/textual_outline.status b/pkg/front_end/testcases/textual_outline.status
index e2c8473..8675902 100644
--- a/pkg/front_end/testcases/textual_outline.status
+++ b/pkg/front_end/testcases/textual_outline.status
@@ -76,6 +76,7 @@
 general/issue45700.crash: FormatterCrash
 general/many_errors: FormatterCrash
 general/missing_prefix_name: FormatterCrash
+general/null_aware_super: FormatterCrash
 general/null_safety_invalid_experiment: FormatterCrash
 general/null_safety_invalid_experiment_and_language_version: FormatterCrash
 general/type_parameters_on_void: FormatterCrash
diff --git a/pkg/front_end/testcases/weak.status b/pkg/front_end/testcases/weak.status
index a641ff3..7263971 100644
--- a/pkg/front_end/testcases/weak.status
+++ b/pkg/front_end/testcases/weak.status
@@ -12,8 +12,6 @@
 dart2js/late_statics: SemiFuzzFailure # dartbug.com/45854
 
 constructor_tearoffs/call_instantiation: TypeCheckError
-constructor_tearoffs/issue46719: RuntimeError
-constructor_tearoffs/issue46887: RuntimeError
 constructor_tearoffs/lowering/invalid_redirect: VerificationError
 extension_types/extension_on_nullable: ExpectationFileMismatchSerialized # Expected.
 extension_types/issue45775: ExpectationFileMismatchSerialized # Expected.
diff --git a/pkg/front_end/tool/_fasta/direct_parser_ast_helper_creator.dart b/pkg/front_end/tool/_fasta/direct_parser_ast_helper_creator.dart
index 0d705a2..ce22dc6 100644
--- a/pkg/front_end/tool/_fasta/direct_parser_ast_helper_creator.dart
+++ b/pkg/front_end/tool/_fasta/direct_parser_ast_helper_creator.dart
@@ -42,6 +42,7 @@
 
 import 'package:_fe_analyzer_shared/src/parser/assert.dart';
 import 'package:_fe_analyzer_shared/src/parser/block_kind.dart';
+import 'package:_fe_analyzer_shared/src/parser/constructor_reference_context.dart';
 import 'package:_fe_analyzer_shared/src/parser/declaration_kind.dart';
 import 'package:_fe_analyzer_shared/src/parser/formal_parameter_kind.dart';
 import 'package:_fe_analyzer_shared/src/parser/identifier_context.dart';
diff --git a/pkg/kernel/lib/ast.dart b/pkg/kernel/lib/ast.dart
index b2c5e0e..9a9f894 100644
--- a/pkg/kernel/lib/ast.dart
+++ b/pkg/kernel/lib/ast.dart
@@ -6096,9 +6096,14 @@
 
   @override
   DartType getStaticTypeInternal(StaticTypeContext context) {
-    FunctionType type = expression.getStaticType(context) as FunctionType;
-    return Substitution.fromPairs(type.typeParameters, typeArguments)
-        .substituteType(type.withoutTypeParameters);
+    DartType type = expression.getStaticType(context);
+    if (type is FunctionType) {
+      return Substitution.fromPairs(type.typeParameters, typeArguments)
+          .substituteType(type.withoutTypeParameters);
+    }
+    assert(type is InvalidType || type is NeverType,
+        "Unexpected operand type $type for $expression");
+    return type;
   }
 
   @override
diff --git a/pkg/kernel/lib/type_checker.dart b/pkg/kernel/lib/type_checker.dart
index 401b4ef..8d9cacc 100644
--- a/pkg/kernel/lib/type_checker.dart
+++ b/pkg/kernel/lib/type_checker.dart
@@ -253,7 +253,7 @@
     while (type is TypeParameterType) {
       type = type.bound;
     }
-    if (type is NeverType || type is NullType) {
+    if (type is NeverType || type is NullType || type is InvalidType) {
       // The bottom type is a subtype of all types, so it should be allowed.
       return Substitution.bottomForClass(superclass);
     }
@@ -479,7 +479,7 @@
   @override
   DartType visitInvalidExpression(InvalidExpression node) {
     // Don't type check `node.expression`.
-    return const NeverType.nonNullable();
+    return const InvalidType();
   }
 
   @override
@@ -506,6 +506,9 @@
   @override
   DartType visitInstantiation(Instantiation node) {
     DartType type = visitExpression(node.expression);
+    if (type is InvalidType || type is NeverType) {
+      return type;
+    }
     if (type is! FunctionType) {
       fail(node, 'Not a function type: $type');
       return NeverType.fromNullability(currentLibrary!.nonNullable);
@@ -533,6 +536,9 @@
   @override
   DartType visitTypedefTearOff(TypedefTearOff node) {
     DartType type = visitExpression(node.expression);
+    if (type is InvalidType || type is NeverType) {
+      return type;
+    }
     if (type is! FunctionType) {
       fail(node, 'Not a function type: $type');
       return NeverType.fromNullability(currentLibrary!.nonNullable);
@@ -1061,7 +1067,15 @@
   DartType visitDynamicGet(DynamicGet node) {
     DartType receiverType = visitExpression(node.receiver);
     checkUnresolvedInvocation(receiverType, node);
-    return const DynamicType();
+    switch (node.kind) {
+      case DynamicAccessKind.Dynamic:
+        return const DynamicType();
+      case DynamicAccessKind.Never:
+        return new NeverType.internal(currentLibrary!.nonNullable);
+      case DynamicAccessKind.Invalid:
+      case DynamicAccessKind.Unresolved:
+        return const InvalidType();
+    }
   }
 
   @override
@@ -1071,7 +1085,15 @@
     node.arguments.positional.forEach(visitExpression);
     node.arguments.named
         .forEach((NamedExpression n) => visitExpression(n.value));
-    return const DynamicType();
+    switch (node.kind) {
+      case DynamicAccessKind.Dynamic:
+        return const DynamicType();
+      case DynamicAccessKind.Never:
+        return new NeverType.internal(currentLibrary!.nonNullable);
+      case DynamicAccessKind.Invalid:
+      case DynamicAccessKind.Unresolved:
+        return const InvalidType();
+    }
   }
 
   @override
diff --git a/runtime/bin/BUILD.gn b/runtime/bin/BUILD.gn
index 355d3ba..ba9c4bb 100644
--- a/runtime/bin/BUILD.gn
+++ b/runtime/bin/BUILD.gn
@@ -909,6 +909,7 @@
     ":dart_snapshot_cc",
     ":standalone_dart_io",
     "..:libdart_precompiler",
+    "//third_party/boringssl",  # for secure_socket_utils_test
     "//third_party/zlib",
   ]
   include_dirs = [
diff --git a/runtime/bin/builtin_impl_sources.gni b/runtime/bin/builtin_impl_sources.gni
index d1f7d95..9c14afb 100644
--- a/runtime/bin/builtin_impl_sources.gni
+++ b/runtime/bin/builtin_impl_sources.gni
@@ -4,7 +4,7 @@
 
 # This file contains all C++ sources for the dart:_builtin library and
 # some of the C++ sources for the dart:io library.  The rest are in
-# io_impl_sources.gypi.
+# io_impl_sources.gni.
 
 builtin_impl_sources = [
   "crypto.cc",
diff --git a/runtime/bin/io_impl_sources.gni b/runtime/bin/io_impl_sources.gni
index 846c775..8c368bb 100644
--- a/runtime/bin/io_impl_sources.gni
+++ b/runtime/bin/io_impl_sources.gni
@@ -3,7 +3,7 @@
 # BSD-style license that can be found in the LICENSE file.
 
 # This file contains some C++ sources for the dart:io library.  The other
-# implementation files are in builtin_impl_sources.gypi.
+# implementation files are in builtin_impl_sources.gni.
 io_impl_sources = [
   "console.h",
   "console_posix.cc",
@@ -109,4 +109,7 @@
   "typed_data_utils.h",
 ]
 
-io_impl_tests = [ "platform_macos_test.cc" ]
+io_impl_tests = [
+  "platform_macos_test.cc",
+  "secure_socket_utils_test.cc",
+]
diff --git a/runtime/bin/secure_socket_utils.cc b/runtime/bin/secure_socket_utils.cc
index ce38f8f..ad738e97 100644
--- a/runtime/bin/secure_socket_utils.cc
+++ b/runtime/bin/secure_socket_utils.cc
@@ -89,6 +89,22 @@
   SecureSocketUtils::CheckStatusSSL(status, type, message, NULL);
 }
 
+bool SecureSocketUtils::IsCurrentTimeInsideCertValidDateRange(X509* root_cert) {
+  ASN1_TIME* not_before = X509_get_notBefore(root_cert);
+  ASN1_TIME* not_after = X509_get_notAfter(root_cert);
+  int days_since_valid = 0;
+  int secs_since_valid = 0;
+  int days_before_invalid = 0;
+  int secs_before_invalid = 0;
+  // nullptr indicates current date/time
+  ASN1_TIME_diff(&days_since_valid, &secs_since_valid, not_before,
+                 /*to=*/nullptr);
+  ASN1_TIME_diff(&days_before_invalid, &secs_before_invalid,
+                 /*from=*/nullptr, not_after);
+  return days_since_valid >= 0 && secs_since_valid >= 0 &&
+         days_before_invalid >= 0 && secs_before_invalid >= 0;
+}
+
 }  // namespace bin
 }  // namespace dart
 
diff --git a/runtime/bin/secure_socket_utils.h b/runtime/bin/secure_socket_utils.h
index ddbd2b6..e8e306e 100644
--- a/runtime/bin/secure_socket_utils.h
+++ b/runtime/bin/secure_socket_utils.h
@@ -39,6 +39,8 @@
 
   static void CheckStatus(int status, const char* type, const char* message);
 
+  static bool IsCurrentTimeInsideCertValidDateRange(X509* root_cert);
+
   static bool NoPEMStartLine() {
     uint32_t last_error = ERR_peek_last_error();
     return (ERR_GET_LIB(last_error) == ERR_LIB_PEM) &&
diff --git a/runtime/bin/secure_socket_utils_test.cc b/runtime/bin/secure_socket_utils_test.cc
new file mode 100644
index 0000000..89bbb12
--- /dev/null
+++ b/runtime/bin/secure_socket_utils_test.cc
@@ -0,0 +1,152 @@
+// Copyright (c) 2021, 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.
+
+#if !defined(DART_IO_SECURE_SOCKET_DISABLED)
+
+#include <openssl/bio.h>
+#include <openssl/ssl.h>
+#include <openssl/x509.h>
+
+#include "bin/secure_socket_utils.h"
+#include "platform/globals.h"
+#include "vm/unit_test.h"
+
+namespace dart {
+namespace bin {
+
+TEST_CASE(SecureSocketUtils_CertNotYetValid) {
+  const char* valid_after_2121 =
+      "-----BEGIN CERTIFICATE-----\n"
+      "MIIFbzCCA1egAwIBAgIUO6PLWc8zatZF5Cc07uYdjDy4UGowDQYJKoZIhvcNAQEL\n"
+      "BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM\n"
+      "GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAiGA8yMTIxMDgwMTE3MDUwNFoYDzIx\n"
+      "MzEwNzMwMTcwNTA0WjBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0\n"
+      "ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIICIjANBgkqhkiG\n"
+      "9w0BAQEFAAOCAg8AMIICCgKCAgEAvgmd8v2K4ngOI/dOa/sn63uetG9sUhzTdViO\n"
+      "87q7s4XeFmziS3BMQyMqTmrIHJAKuZp66ZH6ZOno54UX2KedI4hf0He3NbAitGgI\n"
+      "o6z/WBglH+ByORUEU1Yzh03akja5C8Hp9IUpC6PGJEolPsZeoBMZs1bCxwD9miHy\n"
+      "bs/NYsUGsDJwUZFEW2UTjYuyeTPSdkIgoZIPCp8tp9E6jy7fb2H2XE0Z+rJ4rU/e\n"
+      "0aQ1Q7gNBnBWrJAGgYfQj9XbFx6nNEW6XUBqIV/uUmz9y64pMQ21I9e64Qn5KHDo\n"
+      "08CzQ651dGY1GJkziUuQITkPN4EqS6D5R74ruTJW0lp/cg7RNPoTAXBXI+Nqz7WE\n"
+      "bscerDKFGgaAZ8WXqvwpHqwGeiilZT/OwSwjrN8zaW6eLljAStGhLgn6j/Te8rfW\n"
+      "9+AGSjesJ8dJ+dppFG8A+1Auvtii12Jk8hj/IM/udt5ZLs6meSOYPeNF3UqHrA7s\n"
+      "O39KsMy7ppFQPwBBXgKZMXQlt6uMmi/2s/OHXZRpf7c09n6+3NKYutMsYHO6SrlD\n"
+      "hYcWdpjlv632O5WAdjehohDLfYLugsPPt/hJC3UAA8QfNrEXVHx3D2qgowLB9Brx\n"
+      "zC7aT/0rmVQu2wXvekc8tIRUnDgr8tLjSuEyj9nBb7cWUOWi/1YiEb5T1x7/zyhP\n"
+      "5p8g8l8CAwEAAaNTMFEwHQYDVR0OBBYEFN1Mf9EDYiYYds9IB9qvOYEmDhs5MB8G\n"
+      "A1UdIwQYMBaAFN1Mf9EDYiYYds9IB9qvOYEmDhs5MA8GA1UdEwEB/wQFMAMBAf8w\n"
+      "DQYJKoZIhvcNAQELBQADggIBAA8DjwXFECGFKPNc//kTSUUcMxRLORBH/oSe2hml\n"
+      "dNRtjkVHWcPDsn5Md0cM6e0kOXw2AEqRK9keYN/27JGHBvzu1MbzSHd1czeGx46d\n"
+      "5QI5MyI0U8iiYoW8IJURrnAuD+9yS6O4b7c9qnTwwdsAy98gzfWZbrb++mgoWDrt\n"
+      "Ma4V1zKMUZYezV95zlBmB9sKxbJlLP6pMGPENsbNuqB1KK8uAYnd4YYdEx97lt7o\n"
+      "SeUySohZQasheI73jJuYdDwqDcGCtRvwaOyDuOsDZVNqjNiqiI3aaGVII2lNbjOO\n"
+      "g85pN4pWB+1b3wdEt+c5VETYX3SiJNOyhy3rp68liegeeNVTgNdp5vSxmogWxtCN\n"
+      "uv6uim0Lw//Ezz6acc15CLdaS1msS2V/5Ogk7/cYEajtWp8l7/dy9Gf8ekzRBaET\n"
+      "3vw7sla+YhsUI+NZQG79gfkDfYmRMpW6djaWgY9c5l/NJ8ev1ZQWj1i5t4w7lW5h\n"
+      "3wB8qVV7BQ3zY36iEes4hvmXmykCOgQ2yXTOVZVhKYAxoaRMgkJSWL9rsPvmHEM8\n"
+      "b3gjUC/5nwTzLZAw0iYLtPpSnFwhprZPPWF+k5FQAx/UQ+0qjqY8EbfWLzexm+7P\n"
+      "Sm35NlpFHH6vyyj48RVYQcw8KvDvbuUwjiauydhYCCLoQVdywec8d3fUu6NdBusm\n"
+      "q8uu\n"
+      "-----END CERTIFICATE-----\n";
+  size_t len = strlen(valid_after_2121);
+  BIO* cert_bio = BIO_new(BIO_s_mem());
+  BIO_write(cert_bio, valid_after_2121, len);
+  X509* cert_X509 = PEM_read_bio_X509(cert_bio, NULL, NULL, NULL);
+  EXPECT(cert_X509 != nullptr);
+  EXPECT(!SecureSocketUtils::IsCurrentTimeInsideCertValidDateRange(cert_X509));
+  BIO_free(cert_bio);
+  X509_free(cert_X509);
+}
+
+TEST_CASE(SecureSocketUtils_CertValid) {
+  const char* valid_in_2021 =
+      "-----BEGIN CERTIFICATE-----\n"
+      "MIIFbTCCA1WgAwIBAgIUFmzKjF/PfpFX+5+pF1LXzbFzL/4wDQYJKoZIhvcNAQEL\n"
+      "BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM\n"
+      "GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAgFw0yMTA4MjUxNzA1NTNaGA8yMTIx\n"
+      "MDgwMTE3MDU1M1owRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx\n"
+      "ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCAiIwDQYJKoZIhvcN\n"
+      "AQEBBQADggIPADCCAgoCggIBAMdupz2RQB1fHii6EACZq8MPbDk+xoxHb111Z85C\n"
+      "VK47tC+Sn16DmWKwmcMp7mbPIO8jUSJOk8FrZWsSFZ9xBzXb/H2W6kFNb8XqKyhH\n"
+      "vweeTekPuONrpJIqBJiIEXqyMoxiqwbtl38ZVo5DwFvc8mriFVYapMLb3DKQxOMR\n"
+      "uM32R40VVf1S/LcYab/UTdxdtoI6MINv5SFsmp7Cd+8nUMXdetCTdlu5aoHSTUE0\n"
+      "EzsYG4WTQqi3WpvnTuFlFq4LLd7NYmWUoiUJiB5u7vSEZM91u/eGtOm9Y7OzwJUp\n"
+      "Obv3hEIrNS0c/qXuG89+7vlcW5AqJkyWhNgoMRXFXYlqPFKWwYOU0t/vjSlFlB3u\n"
+      "8a0zNur6d95IC/9XSGFgW3FYnEzTPiorR8y/dbw8P5ioP2yMrm1b6v+TlyOyQ3Hu\n"
+      "gCKJy7Ah1IpUG7wefZIpTN8CaumusUwJdCcGBPfwyOD1yvF8UyETJ5ZB7JC7jXgj\n"
+      "KUpytSeN79m15s+ksn6tS9uLqTHr3Yr7J7ha3m2UO4gl2QOa20/fdmenVqEsq+Z7\n"
+      "1PuDaitEVaCQE3/286rwNQPgoDgDbIckZOzOzYq0b3lZZBlSZRpcsrBEf3KJIz9Y\n"
+      "X5R5bLvw/qtCVjHDankA2EqMYKf9LBCLkQ0GUMpu3aS7xZhn4A6tIcqtRpe1+ruZ\n"
+      "k5GdAgMBAAGjUzBRMB0GA1UdDgQWBBRzt8cxhCiZoLnnKWgLDt5nPctfYTAfBgNV\n"
+      "HSMEGDAWgBRzt8cxhCiZoLnnKWgLDt5nPctfYTAPBgNVHRMBAf8EBTADAQH/MA0G\n"
+      "CSqGSIb3DQEBCwUAA4ICAQCUzlwgMiwnNo4VM2FCroJpGP/8gEsMcUUpfeQnKALm\n"
+      "MudiNPWVQk7uHeAKXvzoSlq/7/ZYKqlXxqiNXhkawnBl0lyR4Bnj8GbQMkujZzUS\n"
+      "EUI5UlPqlvy4WJw9ybgPPyl5D/0D7dkK0xAVxMktjaCGKtPQ/UCY2APxyoISmhSl\n"
+      "0+ql1YpHM1XIty/mzlTAIZ7bnbKDPA3J3OjaCP0Skhf2g4Wkch3+6Wx5xfYnyRv1\n"
+      "UbihStrvN1dH9d+D642C45qpRa2l3GJvDxdyr6xSa3l9IajUYbpMFe0yymuxqWhX\n"
+      "bDLi0ouKmowKNiiqUmUEJhJBbt/XdTIeeyTcaz2ZHVmMU9E72OhsjzxAvajoDBv9\n"
+      "FJ3THlLlh7iHBv24Hghx5V6FCliO6uLUdLB1d8WNUtEWdzf17ZlPqRIkjSY+6kSJ\n"
+      "dNwQhl5kYL0caOKWvEEP9f2HondKxtVpYGHgtKvcvCj/hz8UCk9R3odcwweq48RK\n"
+      "fKNRHy3nQfWttSSbBH8SwSmtX2VesMu6jMcqwU/8YSrWTJa/5UexlNR9qRrDnhya\n"
+      "kqZCaETfx15LUkPPuyn+z76z2+hNW0VDpnUVRystHHkDz+q2cbH/bsfY47Et0Bsb\n"
+      "TozWCPRzEkmzTTaAZLtqXa5MzWsZweBzK5owXlOPTD2eo1UphgtOqsKPE/RB/Qgq\n"
+      "dw==\n"
+      "-----END CERTIFICATE-----\n";
+  size_t len = strlen(valid_in_2021);
+  BIO* cert_bio = BIO_new(BIO_s_mem());
+  BIO_write(cert_bio, valid_in_2021, len);
+  X509* cert_X509 = PEM_read_bio_X509(cert_bio, NULL, NULL, NULL);
+  EXPECT(cert_X509 != nullptr);
+  EXPECT(SecureSocketUtils::IsCurrentTimeInsideCertValidDateRange(cert_X509));
+  BIO_free(cert_bio);
+  X509_free(cert_X509);
+}
+
+TEST_CASE(SecureSocketUtils_CertAlreadyExpired) {
+  const char* valid_before_2021 =
+      "-----BEGIN CERTIFICATE-----\n"
+      "MIIFazCCA1OgAwIBAgIUY+S+GbniK1WC9821VgAJusuF33UwDQYJKoZIhvcNAQEL\n"
+      "BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM\n"
+      "GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yMDA4MjUxNzAyNDFaFw0yMDA5\n"
+      "MjQxNzAyNDFaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw\n"
+      "HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggIiMA0GCSqGSIb3DQEB\n"
+      "AQUAA4ICDwAwggIKAoICAQDNfCrlXNeGKpF0PHzjkG5UfsSYvwfNUTqnzC3AkTMY\n"
+      "AZyyqDCA780TPZH48aZ/QFegFdIBUkEijFLuRKUqAv5jHxaVhMQcr5ujdCAJWT+e\n"
+      "5jc0cvukdWnFFqZwJWur4/3RsUnaWXY+oDk0pGuZD7VeNm9PTi1pQogwAivhSynM\n"
+      "YxCq0cO0JPM0Dr7ks99V1gDWrEOqjJGeEzvRlwdx+GPkvMvmrSHxWOphN/ji2MRx\n"
+      "tZ0T5FrrrGEtfp8gtTe5q5V+di1GvbuE6Y+MVYGIJeu3yqHkoh/TTS9Ex+QRm9nh\n"
+      "QM1Pm4hi2PofSSEdj15cUw6vfPJWewZiytcVJFTt2in1YuYufZMwPLP/ylnAQLkM\n"
+      "dq3TIF1g4ym9xLgQ/ZgnMX6g6ReOqG/1Au5InPUXMo3n56N959gQD1K8J2C4xtQP\n"
+      "MxrDAbGuYOmCterPAmW4aIVgbxIXwEK7lzTZyHUOvwjNaEfu0fuVOd9NC2B+g8So\n"
+      "I188ty96/BVwQO5bAzGekJn9xHVcTUU067b5zNfCpo4XGKaKVNGGR+AXhtjRXbrX\n"
+      "N9/BOHdABlV5W32HkhT4fr/BSSp/UyCnBZRPvLcI3Nvraok8snn/eGt6IW3y171O\n"
+      "3tYx4Gz7+M2K/T1rMuujVXOx6srtZ8oQIqFgZTR0sKKsim1umHAmoTJrG3wEOlUs\n"
+      "awIDAQABo1MwUTAdBgNVHQ4EFgQUzTOEhm+P6rWyBkKAkctA9FvheC8wHwYDVR0j\n"
+      "BBgwFoAUzTOEhm+P6rWyBkKAkctA9FvheC8wDwYDVR0TAQH/BAUwAwEB/zANBgkq\n"
+      "hkiG9w0BAQsFAAOCAgEABYYIBheuGRbmRhsS39zy0jDhqmDbsyIFd3/NoMZ+WvW4\n"
+      "NFcVRATalIX6ScXl7RGs1p855OiqOHij1tCzBClZXZ1zWD2v0KfWMFjR/S79HJOI\n"
+      "w3RGaMvALUJtOCz5in5Odryuo3GBkxKNonS+HAjnrWosqBCorerjn/TdIscTbA6h\n"
+      "7Iwy5umyyY63E69ehD7aANc/mxk++BWdAs3kPSXMI7PDpWUW5WV0hPUpe3sf0eY8\n"
+      "skfXa+UJ2qDmVkMmHUIOhi92zTRv6ROQXGY52JhHZOFSFxvqjWkk1M8q6Vm2ln2s\n"
+      "2GUa2j4emp+zti2JuFAwDgEK8wyqlq14hA8hTHL27mxpht990QGAU+qmcfhUf/qd\n"
+      "cIPkbz53Dpezzd96SuHQyjALaTbEw2vis9WpsejOKiaAp8264t0DgtLUndj4wVfC\n"
+      "3xti1jubmouUEdbNh7bnDfXxdxuAECFzhEG9mrosnTemuUVQSXIyrNfHRKDEaGv1\n"
+      "zh2Jij4HI+OKnJuao/9vsbNPib7k8tR0JKbXZD3HvOfQi5wMtlCUedu9eZ3Cq9Mu\n"
+      "1NwIwFoSU5pwO4PopiYL2hAEJXd0SN6TnWZThU28qTulrCb8enNU6BfkokTlkmYs\n"
+      "HUzvFarVyhKbQkyD/P3ckC/p2mg9aE7iLO5wTY1gegcSDF4R4479t/aDWMmevis=\n"
+      "-----END CERTIFICATE-----\n";
+  size_t len = strlen(valid_before_2021);
+  BIO* cert_bio = BIO_new(BIO_s_mem());
+  BIO_write(cert_bio, valid_before_2021, len);
+  X509* cert_X509 = PEM_read_bio_X509(cert_bio, NULL, NULL, NULL);
+  EXPECT(cert_X509 != nullptr);
+  EXPECT(!SecureSocketUtils::IsCurrentTimeInsideCertValidDateRange(cert_X509));
+  BIO_free(cert_bio);
+  X509_free(cert_X509);
+}
+
+}  // namespace bin
+}  // namespace dart
+
+#endif  // !defined(DART_IO_SECURE_SOCKET_DISABLED)
diff --git a/runtime/bin/security_context_win.cc b/runtime/bin/security_context_win.cc
index f61ae55..2be09d4 100644
--- a/runtime/bin/security_context_win.cc
+++ b/runtime/bin/security_context_win.cc
@@ -111,6 +111,14 @@
       Syslog::Print("\n");
     }
 
+    if (!SecureSocketUtils::IsCurrentTimeInsideCertValidDateRange(root_cert)) {
+      if (SSL_LOG_STATUS) {
+        Syslog::Print("...certificate is outside of its valid date range\n");
+      }
+      X509_free(root_cert);
+      continue;
+    }
+
     int status = X509_STORE_add_cert(store, root_cert);
     if (status == 0) {
       int error = ERR_get_error();
diff --git a/runtime/observatory/tests/service/service_kernel.status b/runtime/observatory/tests/service/service_kernel.status
index db0c8fc..14d202d 100644
--- a/runtime/observatory/tests/service/service_kernel.status
+++ b/runtime/observatory/tests/service/service_kernel.status
@@ -212,6 +212,9 @@
 [ $arch != simarm && $arch != simarm64 && $arch != simarm64c && $compiler == dartk ]
 complex_reload_test: RuntimeError
 
+[ $compiler == app_jitk && $system == linux ]
+get_vm_timeline_rpc_test: Skip # Timeout.
+
 [ $compiler == dartk && $mode == debug ]
 isolate_lifecycle_test: Skip # Flaky.
 pause_idle_isolate_test: Skip # Flaky
diff --git a/runtime/observatory_2/tests/service_2/service_2_kernel.status b/runtime/observatory_2/tests/service_2/service_2_kernel.status
index d0bfe512..6b1b364 100644
--- a/runtime/observatory_2/tests/service_2/service_2_kernel.status
+++ b/runtime/observatory_2/tests/service_2/service_2_kernel.status
@@ -212,6 +212,9 @@
 [ $arch != simarm && $arch != simarm64 && $arch != simarm64c && $compiler == dartk ]
 complex_reload_test: RuntimeError
 
+[ $compiler == app_jitk && $system == linux ]
+get_vm_timeline_rpc_test: Skip # Timeout.
+
 [ $compiler == dartk && $mode == debug ]
 isolate_lifecycle_test: Skip # Flaky.
 pause_idle_isolate_test: Skip # Flaky
diff --git a/runtime/vm/compiler/stub_code_compiler_arm64.cc b/runtime/vm/compiler/stub_code_compiler_arm64.cc
index 916604b..128d968 100644
--- a/runtime/vm/compiler/stub_code_compiler_arm64.cc
+++ b/runtime/vm/compiler/stub_code_compiler_arm64.cc
@@ -3175,15 +3175,14 @@
 }
 
 // Does identical check (object references are equal or not equal) with special
-// checks for boxed numbers.
-// Left and right are pushed on stack.
-// Return Zero condition flag set if equal.
-// Note: A Mint cannot contain a value that would fit in Smi.
+// checks for boxed numbers and returns with ZF set iff left and right are
+// identical.
 static void GenerateIdenticalWithNumberCheckStub(Assembler* assembler,
                                                  const Register left,
                                                  const Register right) {
-  Label reference_compare, done, check_mint;
+  Label reference_compare, check_mint;
   // If any of the arguments is Smi do reference compare.
+  // Note: A Mint cannot contain a value that would fit in Smi.
   __ BranchIfSmi(left, &reference_compare);
   __ BranchIfSmi(right, &reference_compare);
 
@@ -3191,27 +3190,31 @@
   __ CompareClassId(left, kDoubleCid);
   __ b(&check_mint, NE);
   __ CompareClassId(right, kDoubleCid);
-  __ b(&done, NE);
+  __ b(&reference_compare, NE);  // Do not branch directly to ret! See below.
 
   // Double values bitwise compare.
   __ LoadFieldFromOffset(left, left, target::Double::value_offset());
   __ LoadFieldFromOffset(right, right, target::Double::value_offset());
   __ CompareRegisters(left, right);
-  __ b(&done);
+  __ ret();
 
   __ Bind(&check_mint);
   __ CompareClassId(left, kMintCid);
   __ b(&reference_compare, NE);
   __ CompareClassId(right, kMintCid);
-  __ b(&done, NE);
+  __ b(&reference_compare, NE);  // Do not branch directly to ret! See below.
   __ LoadFieldFromOffset(left, left, target::Mint::value_offset());
   __ LoadFieldFromOffset(right, right, target::Mint::value_offset());
   __ CompareRegisters(left, right);
-  __ b(&done);
+  __ ret();
 
   __ Bind(&reference_compare);
   __ CompareObjectRegisters(left, right);
-  __ Bind(&done);
+  // None of the branches above go directly here to avoid generating a conditional 
+  // branch to a ret instruction.
+  // This is an attempt to work-around a possible CPU on Exynos 2100 SoC.
+  // See https://github.com/flutter/flutter/issues/88261
+  __ ret();
 }
 
 // Called only from unoptimized code. All relevant registers have been saved.
@@ -3237,7 +3240,6 @@
   __ LoadFromOffset(left, SP, 1 * target::kWordSize);
   __ LoadFromOffset(right, SP, 0 * target::kWordSize);
   GenerateIdenticalWithNumberCheckStub(assembler, left, right);
-  __ ret();
 
 #if !defined(PRODUCT)
   __ Bind(&stepping);
@@ -3261,7 +3263,6 @@
   __ LoadFromOffset(left, SP, 1 * target::kWordSize);
   __ LoadFromOffset(right, SP, 0 * target::kWordSize);
   GenerateIdenticalWithNumberCheckStub(assembler, left, right);
-  __ ret();
 }
 
 // Called from megamorphic call sites.
diff --git a/tests/language/constructor/named_constructor_test.dart b/tests/language/constructor/named_constructor_test.dart
index 033b3d8..5b37427 100644
--- a/tests/language/constructor/named_constructor_test.dart
+++ b/tests/language/constructor/named_constructor_test.dart
@@ -37,25 +37,26 @@
   new prefix<int>.Class().value;
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
+  //              ^
   // [cfe] Couldn't find constructor 'prefix.Class'.
   new prefix.Class<int>().value;
   // 'prefix<int>.Class<int>' doesn't fit the grammar syntax T.id:
   new prefix<int>.Class<int>().value;
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Couldn't find constructor 'prefix.Class'.
   //              ^^^^^
   // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
   // [cfe] A constructor invocation can't have type arguments after the constructor name.
+  // [cfe] Couldn't find constructor 'prefix.Class'.
 
   new prefix.Class.named().value;
   // 'prefix<int>.Class.named' doesn't fit the grammar syntax T.id:
   new prefix<int>.Class.named().value;
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Couldn't find constructor 'prefix.Class'.
   //              ^^^^^
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
+  // [cfe] Couldn't find constructor 'prefix.Class'.
   // [cfe] Expected '(' after this.
 
 
@@ -71,19 +72,19 @@
   new prefix<int>.Class<int>.named().value;
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Couldn't find constructor 'prefix.Class'.
   //              ^^^^^
   // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
   // [cfe] A constructor invocation can't have type arguments after the constructor name.
+  // [cfe] Couldn't find constructor 'prefix.Class'.
 
 
   // 'prefix<int>.Class.named<int>' doesn't fit the grammar syntax T.id:
   new prefix<int>.Class.named<int>().value;
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Couldn't find constructor 'prefix.Class'.
   //              ^^^^^
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
+  // [cfe] Couldn't find constructor 'prefix.Class'.
   // [cfe] Expected '(' after this.
 
 
@@ -97,8 +98,8 @@
   new prefix<int>.Class<int>.named<int>().value;
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Couldn't find constructor 'prefix.Class'.
   //              ^^^^^
   // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
   // [cfe] A constructor invocation can't have type arguments after the constructor name.
+  // [cfe] Couldn't find constructor 'prefix.Class'.
 }
diff --git a/tests/language/constructor/reference_test.dart b/tests/language/constructor/reference_test.dart
index 55c1f01..0a7cb37 100644
--- a/tests/language/constructor/reference_test.dart
+++ b/tests/language/constructor/reference_test.dart
@@ -33,8 +33,6 @@
   new Foo.bar<int>.baz();
   //  ^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  //      ^
-  // [cfe] A constructor invocation can't have type arguments after the constructor name.
   //               ^
   // [cfe] Couldn't find constructor 'Foo.bar.baz'.
   new Foo.bar.baz<int>();
@@ -69,8 +67,6 @@
   const Foo.bar<int>.baz();
   //    ^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  //        ^
-  // [cfe] A constructor invocation can't have type arguments after the constructor name.
   //                 ^
   // [cfe] Couldn't find constructor 'Foo.bar.baz'.
   const Foo.bar.baz<int>();
@@ -107,10 +103,9 @@
 //^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.DISALLOWED_TYPE_INSTANTIATION_EXPRESSION
 //    ^
-// [cfe] A constructor invocation can't have type arguments after the constructor name.
+// [cfe] Couldn't find constructor 'bar'.
 //             ^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
-// [cfe] Couldn't find constructor 'Foo.bar.baz'.
   Foo.bar.baz<int>();
 //    ^
 // [cfe] Member not found: 'bar'.
diff --git a/tests/language_2/constructor/named_constructor_test.dart b/tests/language_2/constructor/named_constructor_test.dart
index c69961f..0cad797 100644
--- a/tests/language_2/constructor/named_constructor_test.dart
+++ b/tests/language_2/constructor/named_constructor_test.dart
@@ -39,25 +39,26 @@
   new prefix<int>.Class().value;
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
+  //              ^
   // [cfe] Couldn't find constructor 'prefix.Class'.
   new prefix.Class<int>().value;
   // 'prefix<int>.Class<int>' doesn't fit the grammar syntax T.id:
   new prefix<int>.Class<int>().value;
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Couldn't find constructor 'prefix.Class'.
   //              ^^^^^
   // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
   // [cfe] A constructor invocation can't have type arguments after the constructor name.
+  // [cfe] Couldn't find constructor 'prefix.Class'.
 
   new prefix.Class.named().value;
   // 'prefix<int>.Class.named' doesn't fit the grammar syntax T.id:
   new prefix<int>.Class.named().value;
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Couldn't find constructor 'prefix.Class'.
   //              ^^^^^
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
+  // [cfe] Couldn't find constructor 'prefix.Class'.
   // [cfe] Expected '(' after this.
 
 
@@ -73,19 +74,19 @@
   new prefix<int>.Class<int>.named().value;
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Couldn't find constructor 'prefix.Class'.
   //              ^^^^^
   // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
   // [cfe] A constructor invocation can't have type arguments after the constructor name.
+  // [cfe] Couldn't find constructor 'prefix.Class'.
 
 
   // 'prefix<int>.Class.named<int>' doesn't fit the grammar syntax T.id:
   new prefix<int>.Class.named<int>().value;
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Couldn't find constructor 'prefix.Class'.
   //              ^^^^^
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
+  // [cfe] Couldn't find constructor 'prefix.Class'.
   // [cfe] Expected '(' after this.
 
 
@@ -99,8 +100,8 @@
   new prefix<int>.Class<int>.named<int>().value;
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Couldn't find constructor 'prefix.Class'.
   //              ^^^^^
   // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
   // [cfe] A constructor invocation can't have type arguments after the constructor name.
+  // [cfe] Couldn't find constructor 'prefix.Class'.
 }
diff --git a/tests/language_2/constructor/reference_test.dart b/tests/language_2/constructor/reference_test.dart
index b371419..776fe8b 100644
--- a/tests/language_2/constructor/reference_test.dart
+++ b/tests/language_2/constructor/reference_test.dart
@@ -35,8 +35,6 @@
   new Foo.bar<int>.baz();
   //  ^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  //      ^
-  // [cfe] A constructor invocation can't have type arguments after the constructor name.
   //               ^
   // [cfe] Couldn't find constructor 'Foo.bar.baz'.
   new Foo.bar.baz<int>();
@@ -71,8 +69,6 @@
   const Foo.bar<int>.baz();
   //    ^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  //        ^
-  // [cfe] A constructor invocation can't have type arguments after the constructor name.
   //                 ^
   // [cfe] Couldn't find constructor 'Foo.bar.baz'.
   const Foo.bar.baz<int>();
@@ -109,10 +105,9 @@
 //^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.DISALLOWED_TYPE_INSTANTIATION_EXPRESSION
 //    ^
-// [cfe] A constructor invocation can't have type arguments after the constructor name.
+// [cfe] Couldn't find constructor 'bar'.
 //             ^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
-// [cfe] Couldn't find constructor 'Foo.bar.baz'.
   Foo.bar.baz<int>();
 //    ^
 // [cfe] Member not found: 'bar'.
diff --git a/tools/VERSION b/tools/VERSION
index f2a156c..d596d4b 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 15
 PATCH 0
-PRERELEASE 59
+PRERELEASE 60
 PRERELEASE_PATCH 0
\ No newline at end of file