diff --git a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
index 2e1545f..4d5f23b 100644
--- a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
@@ -6727,6 +6727,25 @@
     message: r"""A map literal requires exactly two type arguments.""");
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Template<Message Function(String name)> templateMemberNotFound =
+    const Template<Message Function(String name)>(
+        messageTemplate: r"""Member not found: '#name'.""",
+        withArguments: _withArgumentsMemberNotFound);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Message Function(String name)> codeMemberNotFound =
+    const Code<Message Function(String name)>("MemberNotFound",
+        analyzerCodes: <String>["UNDEFINED_GETTER"]);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+Message _withArgumentsMemberNotFound(String name) {
+  if (name.isEmpty) throw 'No name provided';
+  name = demangleMixinApplicationName(name);
+  return new Message(codeMemberNotFound,
+      message: """Member not found: '${name}'.""", arguments: {'name': name});
+}
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Code<Null> codeMemberWithSameNameAsClass =
     messageMemberWithSameNameAsClass;
 
@@ -7130,6 +7149,25 @@
     tip: r"""Try combining all of the with clauses into a single clause.""");
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Template<Message Function(String name)> templateNameNotFound =
+    const Template<Message Function(String name)>(
+        messageTemplate: r"""Undefined name '#name'.""",
+        withArguments: _withArgumentsNameNotFound);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Message Function(String name)> codeNameNotFound =
+    const Code<Message Function(String name)>("NameNotFound",
+        analyzerCodes: <String>["UNDEFINED_NAME"]);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+Message _withArgumentsNameNotFound(String name) {
+  if (name.isEmpty) throw 'No name provided';
+  name = demangleMixinApplicationName(name);
+  return new Message(codeNameNotFound,
+      message: """Undefined name '${name}'.""", arguments: {'name': name});
+}
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Code<Null> codeNamedFunctionExpression = messageNamedFunctionExpression;
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
@@ -9171,6 +9209,26 @@
 }
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Template<Message Function(String name)> templateSuperclassHasNoMember =
+    const Template<Message Function(String name)>(
+        messageTemplate: r"""Superclass has no member named '#name'.""",
+        withArguments: _withArgumentsSuperclassHasNoMember);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Message Function(String name)> codeSuperclassHasNoMember =
+    const Code<Message Function(String name)>("SuperclassHasNoMember",
+        analyzerCodes: <String>["UNDEFINED_SUPER_GETTER"]);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+Message _withArgumentsSuperclassHasNoMember(String name) {
+  if (name.isEmpty) throw 'No name provided';
+  name = demangleMixinApplicationName(name);
+  return new Message(codeSuperclassHasNoMember,
+      message: """Superclass has no member named '${name}'.""",
+      arguments: {'name': name});
+}
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Template<Message Function(String name)> templateSuperclassHasNoMethod =
     const Template<Message Function(String name)>(
         messageTemplate: r"""Superclass has no method named '#name'.""",
diff --git a/pkg/dev_compiler/test/expression_compiler/expression_compiler_e2e_shared.dart b/pkg/dev_compiler/test/expression_compiler/expression_compiler_e2e_shared.dart
index 18526d1..be6d857 100644
--- a/pkg/dev_compiler/test/expression_compiler/expression_compiler_e2e_shared.dart
+++ b/pkg/dev_compiler/test/expression_compiler/expression_compiler_e2e_shared.dart
@@ -181,7 +181,7 @@
       await driver.check(
           breakpointId: 'bp',
           expression: 'typo',
-          expectedError: "Error: Getter not found: 'typo'");
+          expectedError: "Error: Undefined name 'typo'");
     });
 
     test('local (trimmed scope)', () async {
@@ -223,7 +223,7 @@
       await driver.check(
           breakpointId: 'bp',
           expression: 'typo',
-          expectedError: "Getter not found: \'typo\'");
+          expectedError: "Undefined name \'typo\'");
     });
 
     test('local', () async {
@@ -374,7 +374,7 @@
       await driver.check(
           breakpointId: 'globalFunctionBP',
           expression: 'typo',
-          expectedError: "Getter not found: 'typo'.");
+          expectedError: "Undefined name 'typo'.");
     });
 
     test('local with primitive type', () async {
@@ -720,7 +720,7 @@
       await driver.check(
           breakpointId: 'bp',
           expression: 'typo',
-          expectedError: "Getter not found: 'typo'.");
+          expectedError: "Undefined name 'typo'.");
     });
 
     test('expression using captured variables', () async {
@@ -894,7 +894,7 @@
       await driver.check(
           breakpointId: 'thenBP',
           expression: 'z',
-          expectedError: "Error: Getter not found: 'z'");
+          expectedError: "Error: Undefined name 'z'");
     });
 
     test('(else) expression using local', () async {
@@ -906,7 +906,7 @@
       await driver.check(
           breakpointId: 'elseBP',
           expression: 'y',
-          expectedError: "Error: Getter not found: 'y'");
+          expectedError: "Error: Undefined name 'y'");
     });
 
     test('(post) expression using local', () async {
@@ -918,14 +918,14 @@
       await driver.check(
           breakpointId: 'postBP',
           expression: 'z',
-          expectedError: "Error: Getter not found: 'z'");
+          expectedError: "Error: Undefined name 'z'");
     });
 
     test('(post) expression using local out of scope', () async {
       await driver.check(
           breakpointId: 'postBP',
           expression: 'y',
-          expectedError: "Error: Getter not found: 'y'");
+          expectedError: "Error: Undefined name 'y'");
     });
   });
 
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 2b6b569..5a8daa1 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -127,7 +127,7 @@
 
 import 'expression_generator.dart';
 
-import 'expression_generator_helper.dart' show ExpressionGeneratorHelper;
+import 'expression_generator_helper.dart';
 
 import 'forest.dart' show Forest;
 
@@ -667,7 +667,8 @@
       if (expression is Identifier) {
         Identifier identifier = expression;
         expression = new UnresolvedNameGenerator(this, identifier.token,
-            new Name(identifier.name, libraryBuilder.nameOrigin));
+            new Name(identifier.name, libraryBuilder.nameOrigin),
+            unresolvedReadKind: UnresolvedKind.Unknown);
       }
       if (name?.isNotEmpty ?? false) {
         Token period = periodBeforeName ?? beginToken.next!.next!;
@@ -952,7 +953,11 @@
 
   DartType _computeReturnTypeContext(MemberBuilder member) {
     if (member is ProcedureBuilder) {
-      return member.function.returnType;
+      final bool isReturnTypeUndeclared = member.returnType == null &&
+          member.function.returnType is DynamicType;
+      return isReturnTypeUndeclared && libraryBuilder.isNonNullableByDefault
+          ? const UnknownType()
+          : member.function.returnType;
     } else if (member is SourceFactoryBuilder) {
       return member.function.returnType;
     } else {
@@ -1926,12 +1931,11 @@
   }
 
   @override
-  Expression throwNoSuchMethodError(
+  Expression buildUnresolvedError(
       Expression receiver, String name, Arguments arguments, int charOffset,
       {Member? candidate,
       bool isSuper: false,
-      bool isGetter: false,
-      bool isSetter: false,
+      required UnresolvedKind kind,
       bool isStatic: false,
       LocatedMessage? message}) {
     int length = name.length;
@@ -1967,18 +1971,37 @@
       context = [contextMessage.withLocation(uri, offset, length)];
     }
     if (message == null) {
-      if (isGetter) {
-        message = warnUnresolvedGet(kernelName, charOffset,
-                isSuper: isSuper, reportWarning: false, context: context)
-            .withLocation(uri, charOffset, length);
-      } else if (isSetter) {
-        message = warnUnresolvedSet(kernelName, charOffset,
-                isSuper: isSuper, reportWarning: false, context: context)
-            .withLocation(uri, charOffset, length);
-      } else {
-        message = warnUnresolvedMethod(kernelName, charOffset,
-                isSuper: isSuper, reportWarning: false, context: context)
-            .withLocation(uri, charOffset, length);
+      switch (kind) {
+        case UnresolvedKind.Unknown:
+          assert(!isSuper);
+          message = fasta.templateNameNotFound
+              .withArguments(name)
+              .withLocation(uri, charOffset, length);
+          break;
+        case UnresolvedKind.Member:
+          message = warnUnresolvedMember(kernelName, charOffset,
+                  isSuper: isSuper, reportWarning: false, context: context)
+              .withLocation(uri, charOffset, length);
+          break;
+        case UnresolvedKind.Getter:
+          message = warnUnresolvedGet(kernelName, charOffset,
+                  isSuper: isSuper, reportWarning: false, context: context)
+              .withLocation(uri, charOffset, length);
+          break;
+        case UnresolvedKind.Setter:
+          message = warnUnresolvedSet(kernelName, charOffset,
+                  isSuper: isSuper, reportWarning: false, context: context)
+              .withLocation(uri, charOffset, length);
+          break;
+        case UnresolvedKind.Method:
+          message = warnUnresolvedMethod(kernelName, charOffset,
+                  isSuper: isSuper, reportWarning: false, context: context)
+              .withLocation(uri, charOffset, length);
+          break;
+        case UnresolvedKind.Constructor:
+          message = warnUnresolvedConstructor(kernelName, isSuper: isSuper)
+              .withLocation(uri, charOffset, length);
+          break;
       }
     }
     return buildProblem(
@@ -1986,6 +2009,20 @@
         context: context);
   }
 
+  Message warnUnresolvedMember(Name name, int charOffset,
+      {bool isSuper: false,
+      bool reportWarning: true,
+      List<LocatedMessage>? context}) {
+    Message message = isSuper
+        ? fasta.templateSuperclassHasNoMember.withArguments(name.text)
+        : fasta.templateMemberNotFound.withArguments(name.text);
+    if (reportWarning) {
+      addProblemErrorIfConst(message, charOffset, name.text.length,
+          context: context);
+    }
+    return message;
+  }
+
   @override
   Message warnUnresolvedGet(Name name, int charOffset,
       {bool isSuper: false,
@@ -2022,6 +2059,7 @@
       bool reportWarning: true,
       List<LocatedMessage>? context}) {
     String plainName = name.text;
+
     int dotIndex = plainName.lastIndexOf(".");
     if (dotIndex != -1) {
       plainName = plainName.substring(dotIndex + 1);
@@ -2041,6 +2079,13 @@
     return message;
   }
 
+  Message warnUnresolvedConstructor(Name name, {bool isSuper: false}) {
+    Message message = isSuper
+        ? fasta.templateSuperclassHasNoConstructor.withArguments(name.text)
+        : fasta.templateConstructorNotFound.withArguments(name.text);
+    return message;
+  }
+
   @override
   void warnTypeArgumentsMismatch(String name, int expected, int charOffset) {
     addProblemErrorIfConst(
@@ -2170,7 +2215,8 @@
         assert(declaration == null);
         if (constantContext != ConstantContext.none ||
             (inFieldInitializer && !inLateFieldInitializer) && !inInitializer) {
-          return new UnresolvedNameGenerator(this, token, n);
+          return new UnresolvedNameGenerator(this, token, n,
+              unresolvedReadKind: UnresolvedKind.Unknown);
         }
         if (extensionThis != null) {
           // If we are in an extension instance member we interpret this as an
@@ -2186,7 +2232,8 @@
           member.name == "_getMainClosure") {
         return forest.createNullLiteral(charOffset);
       } else {
-        return new UnresolvedNameGenerator(this, token, n);
+        return new UnresolvedNameGenerator(this, token, n,
+            unresolvedReadKind: UnresolvedKind.Unknown);
       }
     } else if (declaration.isTypeDeclaration) {
       if (declaration is AccessErrorBuilder) {
@@ -2245,7 +2292,8 @@
       }
       if (declaration == null && setterBuilder == null) {
         return new UnresolvedNameGenerator(
-            this, token, new Name(name, libraryBuilder.nameOrigin));
+            this, token, new Name(name, libraryBuilder.nameOrigin),
+            unresolvedReadKind: UnresolvedKind.Unknown);
       }
       MemberBuilder? getterBuilder =
           declaration is MemberBuilder ? declaration : null;
@@ -4172,9 +4220,9 @@
     LocatedMessage? argMessage = checkArgumentsForFunction(
         target.function!, arguments, charOffset, typeParameters);
     if (argMessage != null) {
-      return throwNoSuchMethodError(forest.createNullLiteral(charOffset),
+      return buildUnresolvedError(forest.createNullLiteral(charOffset),
           target.name.text, arguments, charOffset,
-          candidate: target, message: argMessage);
+          candidate: target, message: argMessage, kind: UnresolvedKind.Method);
     }
 
     bool isConst = constness == Constness.explicitConst ||
@@ -4252,9 +4300,9 @@
         target.function, arguments, fileOffset, typeParameters,
         isExtensionMemberInvocation: true);
     if (argMessage != null) {
-      return throwNoSuchMethodError(forest.createNullLiteral(fileOffset),
+      return buildUnresolvedError(forest.createNullLiteral(fileOffset),
           target.name.text, arguments, fileOffset,
-          candidate: target, message: argMessage);
+          candidate: target, message: argMessage, kind: UnresolvedKind.Method);
     }
 
     Expression node;
@@ -4495,8 +4543,9 @@
       if (type is ProblemBuilder) {
         typeName = type.fullNameForErrors;
       }
-      push(throwNoSuchMethodError(forest.createNullLiteral(offset),
-          debugName(typeName!, name), arguments, nameToken.charOffset));
+      push(buildUnresolvedError(forest.createNullLiteral(offset),
+          debugName(typeName!, name), arguments, nameToken.charOffset,
+          kind: UnresolvedKind.Constructor));
     }
     constantContext = savedConstantContext;
   }
@@ -4520,7 +4569,8 @@
       int charOffset,
       Constness constness,
       {bool isTypeArgumentsInForest = false,
-      TypeDeclarationBuilder? typeAliasBuilder}) {
+      TypeDeclarationBuilder? typeAliasBuilder,
+      required UnresolvedKind unresolvedKind}) {
     if (arguments == null) {
       return buildProblem(fasta.messageMissingArgumentList,
           nameToken.charOffset, nameToken.length);
@@ -4574,9 +4624,9 @@
                       nameToken.lexeme.length));
             }
 
-            return throwNoSuchMethodError(forest.createNullLiteral(charOffset),
+            return buildUnresolvedError(forest.createNullLiteral(charOffset),
                 errorName, arguments, nameLastToken.charOffset,
-                message: message);
+                message: message, kind: UnresolvedKind.Constructor);
           }
           MemberBuilder? b = classBuilder.findConstructorOrFactory(
               name, charOffset, uri, libraryBuilder);
@@ -4606,9 +4656,9 @@
                 charLength: nameToken.length);
             return invocation;
           } else {
-            return throwNoSuchMethodError(forest.createNullLiteral(charOffset),
+            return buildUnresolvedError(forest.createNullLiteral(charOffset),
                 errorName, arguments, nameLastToken.charOffset,
-                message: message);
+                message: message, kind: UnresolvedKind.Constructor);
           }
         } else {
           // Empty `typeArguments` and `aliasBuilder``is non-generic, but it
@@ -4768,9 +4818,9 @@
       errorName ??= debugName(type!.fullNameForErrors, name);
     }
 
-    return throwNoSuchMethodError(forest.createNullLiteral(charOffset),
-        errorName, arguments, nameLastToken.charOffset,
-        message: message);
+    return buildUnresolvedError(forest.createNullLiteral(charOffset), errorName,
+        arguments, nameLastToken.charOffset,
+        message: message, kind: unresolvedKind);
   }
 
   @override
@@ -6404,12 +6454,8 @@
           allowPotentiallyConstantType: allowPotentiallyConstantType);
       if (message == null) return unresolved;
       return new UnresolvedType(
-          new NamedTypeBuilder(
-              typeParameter.name!,
-              builder.nullabilityBuilder,
-              /* arguments = */ null,
-              unresolved.fileUri,
-              unresolved.charOffset)
+          new NamedTypeBuilder(typeParameter.name!, builder.nullabilityBuilder,
+              /* arguments = */ null, unresolved.fileUri, unresolved.charOffset)
             ..bind(new InvalidTypeDeclarationBuilder(
                 typeParameter.name!, message)),
           unresolved.charOffset,
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 44e0227..2e0d7b0 100644
--- a/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
@@ -63,8 +63,7 @@
 
 import 'constness.dart' show Constness;
 
-import 'expression_generator_helper.dart'
-    show ExpressionGeneratorHelper, isProperRenameForClass;
+import 'expression_generator_helper.dart';
 
 import 'forest.dart';
 
@@ -171,10 +170,10 @@
   /// Returns a [Expression] representing a compile-time error.
   ///
   /// At runtime, an exception will be thrown.
-  Expression _makeInvalidRead() {
-    return _helper.throwNoSuchMethodError(_forest.createNullLiteral(fileOffset),
+  Expression _makeInvalidRead(UnresolvedKind unresolvedKind) {
+    return _helper.buildUnresolvedError(_forest.createNullLiteral(fileOffset),
         _plainNameForRead, _forest.createArgumentsEmpty(noLocation), fileOffset,
-        isGetter: true);
+        kind: unresolvedKind);
   }
 
   /// Returns a [Expression] representing a compile-time error wrapping
@@ -182,12 +181,12 @@
   ///
   /// At runtime, [value] will be evaluated before throwing an exception.
   Expression _makeInvalidWrite(Expression value) {
-    return _helper.throwNoSuchMethodError(
+    return _helper.buildUnresolvedError(
         _forest.createNullLiteral(fileOffset),
         _plainNameForRead,
         _forest.createArguments(noLocation, <Expression>[value]),
         fileOffset,
-        isSetter: true);
+        kind: UnresolvedKind.Setter);
   }
 
   Expression buildForEffect() => buildSimpleRead();
@@ -302,12 +301,13 @@
       _forest.argumentsSetTypeArguments(
           arguments, _helper.buildDartTypeArguments(typeArguments));
     }
-    return _helper.throwNoSuchMethodError(
+    return _helper.buildUnresolvedError(
         _forest.createNullLiteral(fileOffset),
         _helper.constructorNameForDiagnostics(name,
             className: _plainNameForRead),
         arguments,
-        nameToken.charOffset);
+        nameToken.charOffset,
+        kind: UnresolvedKind.Constructor);
   }
 
   void printOn(StringSink sink);
@@ -1431,7 +1431,7 @@
   Expression _createRead() {
     Expression read;
     if (readTarget == null) {
-      read = _makeInvalidRead();
+      read = _makeInvalidRead(UnresolvedKind.Getter);
     } else {
       _reportNonNullableInNullAwareWarningIfNeeded();
       read = _helper.makeStaticGet(readTarget!, token);
@@ -1689,7 +1689,7 @@
   Expression _createRead() {
     Expression read;
     if (readTarget == null) {
-      read = _makeInvalidRead();
+      read = _makeInvalidRead(UnresolvedKind.Getter);
     } else {
       read = _helper.buildExtensionMethodInvocation(
           fileOffset,
@@ -2014,7 +2014,7 @@
   Expression _createRead(Expression receiver) {
     Expression read;
     if (readTarget == null) {
-      read = _makeInvalidRead();
+      read = _makeInvalidRead(UnresolvedKind.Getter);
     } else {
       read = _helper.buildExtensionMethodInvocation(
           fileOffset,
@@ -2345,7 +2345,7 @@
   @override
   Expression buildSimpleRead() {
     if (readTarget == null) {
-      return _makeInvalidRead();
+      return _makeInvalidRead(UnresolvedKind.Method);
     }
     VariableDeclarationImpl? variable;
     Expression receiverValue;
@@ -2599,7 +2599,8 @@
       setter = null;
     }
     if (getter == null && setter == null) {
-      return new UnresolvedNameGenerator(_helper, token, name);
+      return new UnresolvedNameGenerator(_helper, token, name,
+          unresolvedReadKind: UnresolvedKind.Member);
     }
     return new ExplicitExtensionInstanceAccessGenerator.fromBuilder(
         _helper,
@@ -2661,7 +2662,7 @@
   }
 
   @override
-  Expression _makeInvalidRead() {
+  Expression _makeInvalidRead([UnresolvedKind? unresolvedKind]) {
     return _helper.buildProblem(messageExplicitExtensionAsExpression,
         fileOffset, lengthForToken(token));
   }
@@ -2680,7 +2681,8 @@
     Builder? getter = extensionBuilder.lookupLocalMemberByName(indexGetName);
     Builder? setter = extensionBuilder.lookupLocalMemberByName(indexSetName);
     if (getter == null && setter == null) {
-      return new UnresolvedNameGenerator(_helper, token, indexGetName);
+      return new UnresolvedNameGenerator(_helper, token, indexGetName,
+          unresolvedReadKind: UnresolvedKind.Method);
     }
 
     return new ExplicitExtensionIndexedAccessGenerator.fromBuilder(
@@ -3057,7 +3059,8 @@
         name,
         typeArguments,
         offsetForToken(nameToken),
-        constness);
+        constness,
+        unresolvedKind: UnresolvedKind.Constructor);
   }
 
   @override
@@ -3255,7 +3258,8 @@
               return tearOffExpression;
             }
           }
-          generator = new UnresolvedNameGenerator(_helper, send.token, name);
+          generator = new UnresolvedNameGenerator(_helper, send.token, name,
+              unresolvedReadKind: UnresolvedKind.Member);
         } else {
           return _helper.buildConstructorInvocation(
               declaration,
@@ -3267,7 +3271,9 @@
               token.charOffset,
               Constness.implicit,
               isTypeArgumentsInForest: send.isTypeArgumentsInForest,
-              typeAliasBuilder: aliasBuilder);
+              typeAliasBuilder: aliasBuilder,
+              unresolvedKind:
+                  isNullAware ? UnresolvedKind.Method : UnresolvedKind.Member);
         }
       } else if (member is AmbiguousBuilder) {
         return _helper.buildProblem(
@@ -3350,7 +3356,8 @@
     } else {
       return _helper.buildConstructorInvocation(declaration, token, token,
           arguments, "", typeArguments, token.charOffset, Constness.implicit,
-          isTypeArgumentsInForest: isTypeArgumentsInForest);
+          isTypeArgumentsInForest: isTypeArgumentsInForest,
+          unresolvedKind: UnresolvedKind.Constructor);
     }
   }
 
@@ -3534,9 +3541,9 @@
 
   /// Pass [arguments] that must be evaluated before throwing an error.  At
   /// most one of [isGetter] and [isSetter] should be true and they're passed
-  /// to [ExpressionGeneratorHelper.throwNoSuchMethodError] if it is used.
+  /// to [ExpressionGeneratorHelper.buildUnresolvedError] if it is used.
   Expression buildError(Arguments arguments,
-      {bool isGetter: false, bool isSetter: false, int offset});
+      {required UnresolvedKind kind, int? charOffset});
 
   Name get name => unsupported("name", fileOffset, _uri);
 
@@ -3550,8 +3557,9 @@
   @override
   List<Initializer> buildFieldInitializer(Map<String, int>? initializedFields) {
     return <Initializer>[
-      _helper.buildInvalidInitializer(
-          buildError(_forest.createArgumentsEmpty(fileOffset), isSetter: true))
+      _helper.buildInvalidInitializer(buildError(
+          _forest.createArgumentsEmpty(fileOffset),
+          kind: UnresolvedKind.Setter))
     ];
   }
 
@@ -3559,7 +3567,8 @@
   doInvocation(
       int offset, List<UnresolvedType>? typeArguments, Arguments arguments,
       {bool isTypeArgumentsInForest = false}) {
-    return buildError(arguments, offset: offset);
+    return buildError(arguments,
+        charOffset: offset, kind: UnresolvedKind.Method);
   }
 
   @override
@@ -3572,7 +3581,7 @@
   @override
   Expression buildAssignment(Expression value, {bool voidContext: false}) {
     return buildError(_forest.createArguments(fileOffset, <Expression>[value]),
-        isSetter: true);
+        kind: UnresolvedKind.Setter);
   }
 
   @override
@@ -3582,7 +3591,7 @@
       bool isPreIncDec: false,
       bool isPostIncDec: false}) {
     return buildError(_forest.createArguments(fileOffset, <Expression>[value]),
-        isGetter: true);
+        kind: UnresolvedKind.Getter);
   }
 
   @override
@@ -3591,7 +3600,7 @@
     return buildError(
         _forest.createArguments(
             fileOffset, <Expression>[_forest.createIntLiteral(offset, 1)]),
-        isGetter: true)
+        kind: UnresolvedKind.Getter)
       ..fileOffset = offset;
   }
 
@@ -3601,7 +3610,7 @@
     return buildError(
         _forest.createArguments(
             fileOffset, <Expression>[_forest.createIntLiteral(offset, 1)]),
-        isGetter: true)
+        kind: UnresolvedKind.Getter)
       ..fileOffset = offset;
   }
 
@@ -3609,23 +3618,25 @@
   Expression buildIfNullAssignment(Expression value, DartType type, int offset,
       {bool voidContext: false}) {
     return buildError(_forest.createArguments(fileOffset, <Expression>[value]),
-        isSetter: true);
+        kind: UnresolvedKind.Setter);
   }
 
   @override
   Expression buildSimpleRead() {
-    return buildError(_forest.createArgumentsEmpty(fileOffset), isGetter: true);
+    return buildError(_forest.createArgumentsEmpty(fileOffset),
+        kind: UnresolvedKind.Member);
   }
 
   @override
-  Expression _makeInvalidRead() {
-    return buildError(_forest.createArgumentsEmpty(fileOffset), isGetter: true);
+  Expression _makeInvalidRead(UnresolvedKind unresolvedKind) {
+    return buildError(_forest.createArgumentsEmpty(fileOffset),
+        kind: unresolvedKind);
   }
 
   @override
   Expression _makeInvalidWrite(Expression value) {
     return buildError(_forest.createArguments(fileOffset, <Expression>[value]),
-        isSetter: true);
+        kind: UnresolvedKind.Setter);
   }
 
   @override
@@ -3641,7 +3652,7 @@
       _forest.argumentsSetTypeArguments(
           arguments, _helper.buildDartTypeArguments(typeArguments));
     }
-    return buildError(arguments);
+    return buildError(arguments, kind: UnresolvedKind.Constructor);
   }
 
   @override
@@ -3658,16 +3669,20 @@
   @override
   final Name name;
 
+  final UnresolvedKind unresolvedReadKind;
+
   factory UnresolvedNameGenerator(
-      ExpressionGeneratorHelper helper, Token token, Name name) {
+      ExpressionGeneratorHelper helper, Token token, Name name,
+      {required UnresolvedKind unresolvedReadKind}) {
     if (name.text.isEmpty) {
       unhandled("empty", "name", offsetForToken(token), helper.uri);
     }
-    return new UnresolvedNameGenerator.internal(helper, token, name);
+    return new UnresolvedNameGenerator.internal(
+        helper, token, name, unresolvedReadKind);
   }
 
-  UnresolvedNameGenerator.internal(
-      ExpressionGeneratorHelper helper, Token token, this.name)
+  UnresolvedNameGenerator.internal(ExpressionGeneratorHelper helper,
+      Token token, this.name, this.unresolvedReadKind)
       : super(helper, token);
 
   @override
@@ -3677,16 +3692,17 @@
   Expression doInvocation(
       int charOffset, List<UnresolvedType>? typeArguments, Arguments arguments,
       {bool isTypeArgumentsInForest = false}) {
-    return buildError(arguments, offset: charOffset);
+    return buildError(arguments,
+        charOffset: charOffset, kind: UnresolvedKind.Method);
   }
 
   @override
   Expression buildError(Arguments arguments,
-      {bool isGetter: false, bool isSetter: false, int? offset}) {
-    offset ??= fileOffset;
-    return _helper.throwNoSuchMethodError(
-        _forest.createNullLiteral(offset), _plainNameForRead, arguments, offset,
-        isGetter: isGetter, isSetter: isSetter);
+      {required UnresolvedKind kind, int? charOffset}) {
+    charOffset ??= fileOffset;
+    return _helper.buildUnresolvedError(_forest.createNullLiteral(charOffset),
+        _plainNameForRead, arguments, charOffset,
+        kind: kind);
   }
 
   @override
@@ -3710,7 +3726,8 @@
 
   @override
   Expression buildSimpleRead() {
-    return buildError(_forest.createArgumentsEmpty(fileOffset), isGetter: true)
+    return buildError(_forest.createArgumentsEmpty(fileOffset),
+        kind: unresolvedReadKind)
       ..fileOffset = fileOffset;
   }
 
@@ -3723,7 +3740,7 @@
   Expression _buildUnresolvedVariableAssignment(
       bool isCompound, Expression value) {
     return buildError(_forest.createArguments(fileOffset, <Expression>[value]),
-        isSetter: true);
+        kind: UnresolvedKind.Setter);
   }
 
   @override
@@ -3788,7 +3805,7 @@
   }
 
   @override
-  _makeInvalidRead() {
+  _makeInvalidRead([UnresolvedKind? unresolvedKind]) {
     return unsupported("makeInvalidRead", token.charOffset, _helper.uri);
   }
 
@@ -4030,7 +4047,7 @@
   }
 
   @override
-  Expression _makeInvalidRead() {
+  Expression _makeInvalidRead([UnresolvedKind? unresolvedKind]) {
     return _helper.buildProblem(
         messageCantUsePrefixAsExpression, fileOffset, lengthForToken(token));
   }
@@ -4073,7 +4090,7 @@
   String get _debugName => "UnexpectedQualifiedUseGenerator";
 
   @override
-  Expression buildSimpleRead() => _makeInvalidRead();
+  Expression buildSimpleRead() => _makeInvalidRead(UnresolvedKind.Member);
 
   @override
   Expression buildAssignment(Expression value, {bool voidContext: false}) {
@@ -4083,7 +4100,7 @@
   @override
   Expression buildIfNullAssignment(Expression value, DartType type, int offset,
       {bool voidContext: false}) {
-    return _makeInvalidRead();
+    return _makeInvalidRead(UnresolvedKind.Member);
   }
 
   @override
@@ -4092,21 +4109,22 @@
       bool voidContext: false,
       bool isPreIncDec: false,
       bool isPostIncDec: false}) {
-    return _makeInvalidRead();
+    return _makeInvalidRead(UnresolvedKind.Member);
   }
 
   @override
   Expression buildPostfixIncrement(Name binaryOperator,
       {int offset = TreeNode.noOffset, bool voidContext = false}) {
-    return _makeInvalidRead();
+    return _makeInvalidRead(UnresolvedKind.Member);
   }
 
   @override
   Expression doInvocation(
       int offset, List<UnresolvedType>? typeArguments, Arguments arguments,
       {bool isTypeArgumentsInForest = false}) {
-    return _helper.throwNoSuchMethodError(_forest.createNullLiteral(offset),
-        _plainNameForRead, arguments, fileOffset);
+    return _helper.buildUnresolvedError(_forest.createNullLiteral(offset),
+        _plainNameForRead, arguments, fileOffset,
+        kind: UnresolvedKind.Method);
   }
 
   @override
@@ -4202,7 +4220,8 @@
     return buildProblem();
   }
 
-  Expression _makeInvalidRead() => buildProblem();
+  Expression _makeInvalidRead([UnresolvedKind? unresolvedKind]) =>
+      buildProblem();
 
   Expression _makeInvalidWrite(Expression value) => buildProblem();
 
@@ -4499,14 +4518,15 @@
     }
     if (message != null) {
       return _helper.buildInvalidInitializer(
-          _helper.throwNoSuchMethodError(
+          _helper.buildUnresolvedError(
               _forest.createNullLiteral(offset),
               _helper.constructorNameForDiagnostics(name.text,
                   isSuper: isSuper),
               arguments,
               offset,
               isSuper: isSuper,
-              message: message),
+              message: message,
+              kind: UnresolvedKind.Constructor),
           offset);
     } else if (isSuper) {
       return _helper.buildSuperInitializer(
@@ -4610,13 +4630,16 @@
 
   @override
   Expression buildError(Arguments arguments,
-      {bool isGetter: false, bool isSetter: false, int? offset}) {
-    int length = noLength;
-    if (offset == null) {
-      offset = fileOffset;
-      length = lengthForToken(token);
+      {required UnresolvedKind kind,
+      String? name,
+      int? charOffset,
+      int? charLength}) {
+    if (charOffset == null) {
+      charOffset = fileOffset;
+      charLength ??= lengthForToken(token);
     }
-    return _helper.buildProblem(message, offset, length);
+    charLength ??= noLength;
+    return _helper.buildProblem(message, charOffset, charLength);
   }
 
   @override
@@ -4627,7 +4650,8 @@
 
   @override
   Expression buildSimpleRead() {
-    return buildError(_forest.createArgumentsEmpty(fileOffset), isGetter: true)
+    return buildError(_forest.createArgumentsEmpty(fileOffset),
+        kind: UnresolvedKind.Member)
       ..fileOffset = fileOffset;
   }
 
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 2a2bf65..c6be249 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
@@ -97,12 +97,12 @@
       int fileOffset, Procedure target, Arguments arguments,
       {required bool isTearOff});
 
-  Expression throwNoSuchMethodError(
-      Expression receiver, String name, Arguments arguments, int offset,
-      {Member candidate,
+  Expression buildUnresolvedError(
+      Expression receiver, String name, Arguments arguments, int charOffset,
+      {
+      Member candidate,
       bool isSuper,
-      bool isGetter,
-      bool isSetter,
+      required UnresolvedKind kind,
       bool isStatic,
       LocatedMessage message});
 
@@ -132,7 +132,8 @@
       int charOffset,
       Constness constness,
       {bool isTypeArgumentsInForest = false,
-      TypeDeclarationBuilder? typeAliasBuilder});
+      TypeDeclarationBuilder? typeAliasBuilder,
+        required UnresolvedKind unresolvedKind});
 
   UnresolvedType validateTypeUse(UnresolvedType unresolved,
       {required bool nonInstanceAccessIsError,
@@ -143,9 +144,11 @@
   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});
@@ -225,3 +228,12 @@
 
   return true;
 }
+
+enum UnresolvedKind {
+  Unknown,
+  Member,
+  Method,
+  Getter,
+  Setter,
+  Constructor,
+}
diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
index 1332a26..ff7e4aa 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
@@ -2502,7 +2502,8 @@
     bool hasImplicitReturnType = false;
     if (returnContext == null) {
       hasImplicitReturnType = true;
-      returnContext = const DynamicType();
+      returnContext =
+          isNonNullableByDefault ? const UnknownType() : const DynamicType();
     }
     if (!isTopLevel) {
       List<VariableDeclaration> positionalParameters =
diff --git a/pkg/front_end/messages.status b/pkg/front_end/messages.status
index 67c3c4f..7348fe6 100644
--- a/pkg/front_end/messages.status
+++ b/pkg/front_end/messages.status
@@ -564,6 +564,7 @@
 MainWrongParameterTypeExported/analyzerCode: Fail
 MainWrongParameterTypeExported/part_wrapped_script: Fail
 MapLiteralTypeArgumentMismatch/example: Fail
+MemberNotFound/example: Fail
 MetadataTypeArguments/example: Fail
 MethodNotFound/example: Fail
 MissingArgumentList/analyzerCode: Fail
@@ -592,6 +593,7 @@
 MultipleVarianceModifiers/example: Fail # All trigger multiple errors for variance experiment
 MultipleWith/part_wrapped_script: Fail
 MultipleWith/script: Fail
+NameNotFound/example: Fail
 NamedFunctionExpression/example: Fail
 NamedMixinOverride/analyzerCode: Fail
 NamedMixinOverride/example: Fail
@@ -769,6 +771,7 @@
 SuperNullAware/example: Fail
 SuperclassHasNoDefaultConstructor/example: Fail
 SuperclassHasNoGetter/example: Fail
+SuperclassHasNoMember/example: Fail
 SuperclassHasNoMethod/example: Fail
 SuperclassHasNoSetter/example: Fail
 SuperclassMethodArgumentMismatch/analyzerCode: Fail
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index e6c77d0..8e4c7f0 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -1688,6 +1688,14 @@
   template: "Can only use type variables in instance methods."
   analyzerCode: TYPE_PARAMETER_REFERENCED_BY_STATIC
 
+NameNotFound:
+  template: "Undefined name '#name'."
+  analyzerCode: UNDEFINED_NAME
+
+MemberNotFound:
+  template: "Member not found: '#name'."
+  analyzerCode: UNDEFINED_GETTER
+
 GetterNotFound:
   template: "Getter not found: '#name'."
   analyzerCode: UNDEFINED_GETTER
@@ -3260,6 +3268,10 @@
 SuperclassMethodArgumentMismatch:
   template: "Superclass doesn't have a method named '#name' with matching arguments."
 
+SuperclassHasNoMember:
+  template: "Superclass has no member named '#name'."
+  analyzerCode: UNDEFINED_SUPER_GETTER
+
 SuperclassHasNoGetter:
   template: "Superclass has no getter named '#name'."
   analyzerCode: UNDEFINED_SUPER_GETTER
diff --git a/pkg/front_end/test/explicit_creation_git_test.dart b/pkg/front_end/test/explicit_creation_git_test.dart
index 0b6b6e0..bd44d6f 100644
--- a/pkg/front_end/test/explicit_creation_git_test.dart
+++ b/pkg/front_end/test/explicit_creation_git_test.dart
@@ -24,6 +24,7 @@
 import 'package:front_end/src/fasta/fasta_codes.dart' as fasta;
 import 'package:front_end/src/fasta/kernel/body_builder.dart';
 import 'package:front_end/src/fasta/kernel/constness.dart';
+import 'package:front_end/src/fasta/kernel/expression_generator_helper.dart';
 import 'package:front_end/src/fasta/kernel/kernel_target.dart';
 import 'package:front_end/src/fasta/scope.dart';
 import 'package:front_end/src/fasta/source/diet_listener.dart';
@@ -237,7 +238,8 @@
       int charOffset,
       Constness constness,
       {bool isTypeArgumentsInForest = false,
-      TypeDeclarationBuilder typeAliasBuilder}) {
+      TypeDeclarationBuilder typeAliasBuilder,
+      UnresolvedKind unresolvedKind}) {
     Token maybeNewOrConst = nameToken.previous;
     bool doReport = true;
     if (maybeNewOrConst is KeywordToken) {
@@ -270,7 +272,8 @@
     }
     return super.buildConstructorInvocation(type, nameToken, nameLastToken,
         arguments, name, typeArguments, charOffset, constness,
-        isTypeArgumentsInForest: isTypeArgumentsInForest);
+        isTypeArgumentsInForest: isTypeArgumentsInForest,
+        unresolvedKind: unresolvedKind);
   }
 }
 
diff --git a/pkg/front_end/test/extensions/data/prefix/main.dart b/pkg/front_end/test/extensions/data/prefix/main.dart
index db772d9..3d5a192 100644
--- a/pkg/front_end/test/extensions/data/prefix/main.dart
+++ b/pkg/front_end/test/extensions/data/prefix/main.dart
@@ -16,10 +16,10 @@
 
 main() {
   lib1.ShownExtension1.staticMethod();
-  lib1. /*error: errors=[Getter not found: 'HiddenExtension1'.]*/
+  lib1. /*error: errors=[Undefined name 'HiddenExtension1'.]*/
       HiddenExtension1.staticMethod();
   lib2.ShownExtension2.staticMethod();
-  lib2. /*error: errors=[Getter not found: 'HiddenExtension2'.]*/
+  lib2. /*error: errors=[Undefined name 'HiddenExtension2'.]*/
       HiddenExtension2.staticMethod();
   lib3.ShownExtension3.staticMethod();
 }
diff --git a/pkg/front_end/test/extensions/data/show_hide/main.dart b/pkg/front_end/test/extensions/data/show_hide/main.dart
index 60ba8f4..3846220 100644
--- a/pkg/front_end/test/extensions/data/show_hide/main.dart
+++ b/pkg/front_end/test/extensions/data/show_hide/main.dart
@@ -14,9 +14,9 @@
 
 main() {
   ShownExtension1.staticMethod();
-  /*error: errors=[Getter not found: 'HiddenExtension1'.]*/
+  /*error: errors=[Undefined name 'HiddenExtension1'.]*/
   HiddenExtension1.staticMethod();
   ShownExtension2.staticMethod();
-  /*error: errors=[Getter not found: 'HiddenExtension2'.]*/
+  /*error: errors=[Undefined name 'HiddenExtension2'.]*/
   HiddenExtension2.staticMethod();
 }
diff --git a/pkg/front_end/test/fasta/generator_to_string_test.dart b/pkg/front_end/test/fasta/generator_to_string_test.dart
index 506d663..78de966 100644
--- a/pkg/front_end/test/fasta/generator_to_string_test.dart
+++ b/pkg/front_end/test/fasta/generator_to_string_test.dart
@@ -10,6 +10,7 @@
     show Token, scanString;
 
 import 'package:expect/expect.dart' show Expect;
+import 'package:front_end/src/fasta/kernel/expression_generator_helper.dart';
 import 'package:front_end/src/fasta/scope.dart';
 import 'package:front_end/src/fasta/type_inference/type_inference_engine.dart';
 import 'package:front_end/src/fasta/uri_translator.dart';
@@ -222,8 +223,10 @@
         new ParenthesizedExpressionGenerator(helper, token, expression));
     check("TypeUseGenerator(offset: 4, declaration: T, plainNameForRead: foo)",
         new TypeUseGenerator(helper, token, declaration, "foo"));
-    check("UnresolvedNameGenerator(offset: 4, name: bar)",
-        new UnresolvedNameGenerator.internal(helper, token, name));
+    check(
+        "UnresolvedNameGenerator(offset: 4, name: bar)",
+        new UnresolvedNameGenerator.internal(
+            helper, token, name, UnresolvedKind.Unknown));
     check("PrefixUseGenerator(offset: 4, prefix: myPrefix, deferred: false)",
         prefixUseGenerator);
     check(
diff --git a/pkg/front_end/test/spell_checking_list_tests.txt b/pkg/front_end/test/spell_checking_list_tests.txt
index 373ae97..598e576 100644
--- a/pkg/front_end/test/spell_checking_list_tests.txt
+++ b/pkg/front_end/test/spell_checking_list_tests.txt
@@ -38,6 +38,7 @@
 anon
 aoo
 aot
+applier
 approval
 approximation
 arbitrarily
@@ -455,6 +456,7 @@
 frozen
 fulfill
 func
+futu
 futures
 fuzz
 fuzzing
@@ -713,6 +715,7 @@
 outlined
 overhead
 overlay
+overly
 ox
 pack
 paging
diff --git a/pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart.strong.expect
index 7435151..98579c4 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart.strong.expect
@@ -6,7 +6,7 @@
 //   AbstractClass.new; // error
 //                 ^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:15:9: Error: Getter not found: 'new'.
+// pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:15:9: Error: Member not found: 'new'.
 //   Mixin.new; // error
 //         ^^^
 //
@@ -14,7 +14,7 @@
 //   AbstractNamedMixinApplication.new; // error
 //                                 ^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:18:13: Error: Getter not found: 'new'.
+// pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:18:13: Error: Member not found: 'new'.
 //   Extension.new; // error
 //             ^^^
 //
@@ -50,14 +50,14 @@
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:14:17: Error: Constructors on abstract classes can't be torn off.
   AbstractClass.new; // error
                 ^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:15:9: Error: Getter not found: 'new'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:15:9: Error: Member not found: 'new'.
   Mixin.new; // error
         ^^^";
   #C2;
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:17:33: Error: Constructors on abstract classes can't be torn off.
   AbstractNamedMixinApplication.new; // error
                                 ^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:18:13: Error: Getter not found: 'new'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:18:13: Error: Member not found: 'new'.
   Extension.new; // error
             ^^^";
 }
diff --git a/pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart.strong.transformed.expect
index 2b7289e..0d16a80 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart.strong.transformed.expect
@@ -6,7 +6,7 @@
 //   AbstractClass.new; // error
 //                 ^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:15:9: Error: Getter not found: 'new'.
+// pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:15:9: Error: Member not found: 'new'.
 //   Mixin.new; // error
 //         ^^^
 //
@@ -14,7 +14,7 @@
 //   AbstractNamedMixinApplication.new; // error
 //                                 ^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:18:13: Error: Getter not found: 'new'.
+// pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:18:13: Error: Member not found: 'new'.
 //   Extension.new; // error
 //             ^^^
 //
@@ -50,14 +50,14 @@
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:14:17: Error: Constructors on abstract classes can't be torn off.
   AbstractClass.new; // error
                 ^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:15:9: Error: Getter not found: 'new'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:15:9: Error: Member not found: 'new'.
   Mixin.new; // error
         ^^^";
   #C2;
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:17:33: Error: Constructors on abstract classes can't be torn off.
   AbstractNamedMixinApplication.new; // error
                                 ^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:18:13: Error: Getter not found: 'new'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:18:13: Error: Member not found: 'new'.
   Extension.new; // error
             ^^^";
 }
diff --git a/pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart.weak.expect
index 7435151..98579c4 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart.weak.expect
@@ -6,7 +6,7 @@
 //   AbstractClass.new; // error
 //                 ^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:15:9: Error: Getter not found: 'new'.
+// pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:15:9: Error: Member not found: 'new'.
 //   Mixin.new; // error
 //         ^^^
 //
@@ -14,7 +14,7 @@
 //   AbstractNamedMixinApplication.new; // error
 //                                 ^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:18:13: Error: Getter not found: 'new'.
+// pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:18:13: Error: Member not found: 'new'.
 //   Extension.new; // error
 //             ^^^
 //
@@ -50,14 +50,14 @@
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:14:17: Error: Constructors on abstract classes can't be torn off.
   AbstractClass.new; // error
                 ^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:15:9: Error: Getter not found: 'new'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:15:9: Error: Member not found: 'new'.
   Mixin.new; // error
         ^^^";
   #C2;
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:17:33: Error: Constructors on abstract classes can't be torn off.
   AbstractNamedMixinApplication.new; // error
                                 ^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:18:13: Error: Getter not found: 'new'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:18:13: Error: Member not found: 'new'.
   Extension.new; // error
             ^^^";
 }
diff --git a/pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart.weak.transformed.expect
index 2b7289e..0d16a80 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart.weak.transformed.expect
@@ -6,7 +6,7 @@
 //   AbstractClass.new; // error
 //                 ^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:15:9: Error: Getter not found: 'new'.
+// pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:15:9: Error: Member not found: 'new'.
 //   Mixin.new; // error
 //         ^^^
 //
@@ -14,7 +14,7 @@
 //   AbstractNamedMixinApplication.new; // error
 //                                 ^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:18:13: Error: Getter not found: 'new'.
+// pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:18:13: Error: Member not found: 'new'.
 //   Extension.new; // error
 //             ^^^
 //
@@ -50,14 +50,14 @@
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:14:17: Error: Constructors on abstract classes can't be torn off.
   AbstractClass.new; // error
                 ^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:15:9: Error: Getter not found: 'new'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:15:9: Error: Member not found: 'new'.
   Mixin.new; // error
         ^^^";
   #C2;
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:17:33: Error: Constructors on abstract classes can't be torn off.
   AbstractNamedMixinApplication.new; // error
                                 ^^^";
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:18:13: Error: Getter not found: 'new'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:18:13: Error: Member not found: 'new'.
   Extension.new; // error
             ^^^";
 }
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart
new file mode 100644
index 0000000..efe748f
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart
@@ -0,0 +1,39 @@
+// 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 'issue46719.dart' as self;
+
+class A<T> {
+  A();
+  A.named();
+
+  List<X> m<X>(X x) => [x];
+
+  static List<X> n<X>(X x) => [x];
+}
+
+List<X> m<X>(X x) => [x];
+
+extension FunctionApplier on Function {
+  void applyAndPrint(List<Object?> positionalArguments) =>
+      print(Function.apply(this, positionalArguments, const {}));
+}
+
+test() {
+  A.named<int>.toString();
+}
+
+void main() {
+  var a = A();
+  a.m<int>.applyAndPrint([2]);
+  a.m<String>.applyAndPrint(['three']);
+  A.n<int>.applyAndPrint([2]);
+  A.n<String>.applyAndPrint(['three']);
+  self.m<int>.applyAndPrint([2]);
+  self.m<String>.applyAndPrint(['three']);
+  self.A.n<int>.applyAndPrint([2]);
+  self.A.n<String>.applyAndPrint(['three']);
+  A.named.toString();
+  A<int>.named.toString();
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.expect
new file mode 100644
index 0000000..100d155
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.expect
@@ -0,0 +1,114 @@
+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;
+
+import "org-dartlang-testcase:///issue46719.dart" as self;
+
+class A<T extends core::Object? = dynamic> extends core::Object {
+  constructor •() → self::A<self::A::T%>
+    : super core::Object::•()
+    ;
+  constructor named() → self::A<self::A::T%>
+    : super core::Object::•()
+    ;
+  method m<X extends core::Object? = dynamic>(self::A::m::X% x) → core::List<self::A::m::X%>
+    return <self::A::m::X%>[x];
+  static method n<X extends core::Object? = dynamic>(self::A::n::X% x) → core::List<self::A::n::X%>
+    return <self::A::n::X%>[x];
+}
+extension FunctionApplier on core::Function {
+  method applyAndPrint = self::FunctionApplier|applyAndPrint;
+  tearoff applyAndPrint = self::FunctionApplier|get#applyAndPrint;
+}
+static method m<X extends core::Object? = dynamic>(self::m::X% x) → core::List<self::m::X%>
+  return <self::m::X%>[x];
+static method FunctionApplier|applyAndPrint(lowered final core::Function #this, core::List<core::Object?> positionalArguments) → void
+  return core::print(core::Function::apply(#this, positionalArguments, #C2));
+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();
+               ^^^^^^^^";
+}
+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};
+}
+
+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>
+}
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
new file mode 100644
index 0000000..c514b30
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.transformed.expect
@@ -0,0 +1,114 @@
+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;
+
+import "org-dartlang-testcase:///issue46719.dart" as self;
+
+class A<T extends core::Object? = dynamic> extends core::Object {
+  constructor •() → self::A<self::A::T%>
+    : super core::Object::•()
+    ;
+  constructor named() → self::A<self::A::T%>
+    : super core::Object::•()
+    ;
+  method m<X extends core::Object? = dynamic>(self::A::m::X% x) → core::List<self::A::m::X%>
+    return core::_GrowableList::_literal1<self::A::m::X%>(x);
+  static method n<X extends core::Object? = dynamic>(self::A::n::X% x) → core::List<self::A::n::X%>
+    return core::_GrowableList::_literal1<self::A::n::X%>(x);
+}
+extension FunctionApplier on core::Function {
+  method applyAndPrint = self::FunctionApplier|applyAndPrint;
+  tearoff applyAndPrint = self::FunctionApplier|get#applyAndPrint;
+}
+static method m<X extends core::Object? = dynamic>(self::m::X% x) → core::List<self::m::X%>
+  return core::_GrowableList::_literal1<self::m::X%>(x);
+static method FunctionApplier|applyAndPrint(lowered final core::Function #this, core::List<core::Object?> positionalArguments) → void
+  return core::print(core::Function::apply(#this, positionalArguments, #C2));
+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();
+               ^^^^^^^^";
+}
+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};
+}
+
+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>
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.textual_outline.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.textual_outline.expect
new file mode 100644
index 0000000..9bf5384
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.textual_outline.expect
@@ -0,0 +1,18 @@
+import 'issue46719.dart' as self;
+
+class A<T> {
+  A();
+  A.named();
+  List<X> m<X>(X x) => [x];
+  static List<X> n<X>(X x) => [x];
+}
+
+List<X> m<X>(X x) => [x];
+
+extension FunctionApplier on Function {
+  void applyAndPrint(List<Object?> positionalArguments) =>
+      print(Function.apply(this, positionalArguments, const {}));
+}
+
+test() {}
+void main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..7d3a93d
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.textual_outline_modelled.expect
@@ -0,0 +1,18 @@
+import 'issue46719.dart' as self;
+
+List<X> m<X>(X x) => [x];
+
+class A<T> {
+  A();
+  A.named();
+  List<X> m<X>(X x) => [x];
+  static List<X> n<X>(X x) => [x];
+}
+
+extension FunctionApplier on Function {
+  void applyAndPrint(List<Object?> positionalArguments) =>
+      print(Function.apply(this, positionalArguments, const {}));
+}
+
+test() {}
+void main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.expect
new file mode 100644
index 0000000..d900242
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.expect
@@ -0,0 +1,114 @@
+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;
+
+import "org-dartlang-testcase:///issue46719.dart" as self;
+
+class A<T extends core::Object? = dynamic> extends core::Object {
+  constructor •() → self::A<self::A::T%>
+    : super core::Object::•()
+    ;
+  constructor named() → self::A<self::A::T%>
+    : super core::Object::•()
+    ;
+  method m<X extends core::Object? = dynamic>(self::A::m::X% x) → core::List<self::A::m::X%>
+    return <self::A::m::X%>[x];
+  static method n<X extends core::Object? = dynamic>(self::A::n::X% x) → core::List<self::A::n::X%>
+    return <self::A::n::X%>[x];
+}
+extension FunctionApplier on core::Function {
+  method applyAndPrint = self::FunctionApplier|applyAndPrint;
+  tearoff applyAndPrint = self::FunctionApplier|get#applyAndPrint;
+}
+static method m<X extends core::Object? = dynamic>(self::m::X% x) → core::List<self::m::X%>
+  return <self::m::X%>[x];
+static method FunctionApplier|applyAndPrint(lowered final core::Function #this, core::List<core::Object?> positionalArguments) → void
+  return core::print(core::Function::apply(#this, positionalArguments, #C2));
+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();
+               ^^^^^^^^";
+}
+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};
+}
+
+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*>
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.outline.expect
new file mode 100644
index 0000000..3e96d18
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.outline.expect
@@ -0,0 +1,30 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///issue46719.dart" as self;
+
+class A<T extends core::Object? = dynamic> extends core::Object {
+  constructor •() → self::A<self::A::T%>
+    ;
+  constructor named() → self::A<self::A::T%>
+    ;
+  method m<X extends core::Object? = dynamic>(self::A::m::X% x) → core::List<self::A::m::X%>
+    ;
+  static method n<X extends core::Object? = dynamic>(self::A::n::X% x) → core::List<self::A::n::X%>
+    ;
+}
+extension FunctionApplier on core::Function {
+  method applyAndPrint = self::FunctionApplier|applyAndPrint;
+  tearoff applyAndPrint = self::FunctionApplier|get#applyAndPrint;
+}
+static method m<X extends core::Object? = dynamic>(self::m::X% x) → core::List<self::m::X%>
+  ;
+static method FunctionApplier|applyAndPrint(lowered final core::Function #this, core::List<core::Object?> positionalArguments) → void
+  ;
+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
+  ;
+static method main() → void
+  ;
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
new file mode 100644
index 0000000..c7d67d3
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.transformed.expect
@@ -0,0 +1,114 @@
+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;
+
+import "org-dartlang-testcase:///issue46719.dart" as self;
+
+class A<T extends core::Object? = dynamic> extends core::Object {
+  constructor •() → self::A<self::A::T%>
+    : super core::Object::•()
+    ;
+  constructor named() → self::A<self::A::T%>
+    : super core::Object::•()
+    ;
+  method m<X extends core::Object? = dynamic>(self::A::m::X% x) → core::List<self::A::m::X%>
+    return core::_GrowableList::_literal1<self::A::m::X%>(x);
+  static method n<X extends core::Object? = dynamic>(self::A::n::X% x) → core::List<self::A::n::X%>
+    return core::_GrowableList::_literal1<self::A::n::X%>(x);
+}
+extension FunctionApplier on core::Function {
+  method applyAndPrint = self::FunctionApplier|applyAndPrint;
+  tearoff applyAndPrint = self::FunctionApplier|get#applyAndPrint;
+}
+static method m<X extends core::Object? = dynamic>(self::m::X% x) → core::List<self::m::X%>
+  return core::_GrowableList::_literal1<self::m::X%>(x);
+static method FunctionApplier|applyAndPrint(lowered final core::Function #this, core::List<core::Object?> positionalArguments) → void
+  return core::print(core::Function::apply(#this, positionalArguments, #C2));
+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();
+               ^^^^^^^^";
+}
+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};
+}
+
+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*>
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart
new file mode 100644
index 0000000..35367c0
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart
@@ -0,0 +1,20 @@
+// 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.
+
+String f(a, [b]) => "$a, $b";
+
+String a<T1, T2>(int x) {
+  return "a<$T1, $T2>($x)";
+}
+
+typedef b = int;
+typedef c = String;
+
+main() {
+  expect("${a<b, c>}, null", f(a<b, c>.toString()));
+}
+
+expect(expected, actual) {
+  if (expected != actual) throw 'Expected $expected, actual $actual';
+}
\ No newline at end of file
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.expect
new file mode 100644
index 0000000..92ee53e
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.expect
@@ -0,0 +1,33 @@
+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;
+
+typedef b = core::int;
+typedef c = core::String;
+static method f(dynamic a, [dynamic b = #C1]) → core::String
+  return "${a}, ${b}";
+static method a<T1 extends core::Object? = dynamic, T2 extends core::Object? = dynamic>(core::int x) → core::String {
+  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()));
+                               ^^^^^^^^"));
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+
+constants  {
+  #C1 = null
+  #C2 = static-tearoff self::a
+  #C3 = instantiation self::a <core::int, core::String>
+}
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
new file mode 100644
index 0000000..92ee53e
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.transformed.expect
@@ -0,0 +1,33 @@
+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;
+
+typedef b = core::int;
+typedef c = core::String;
+static method f(dynamic a, [dynamic b = #C1]) → core::String
+  return "${a}, ${b}";
+static method a<T1 extends core::Object? = dynamic, T2 extends core::Object? = dynamic>(core::int x) → core::String {
+  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()));
+                               ^^^^^^^^"));
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+
+constants  {
+  #C1 = null
+  #C2 = static-tearoff self::a
+  #C3 = instantiation self::a <core::int, core::String>
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.textual_outline.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.textual_outline.expect
new file mode 100644
index 0000000..322b20b
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.textual_outline.expect
@@ -0,0 +1,6 @@
+String f(a, [b]) => "$a, $b";
+String a<T1, T2>(int x) {}
+typedef b = int;
+typedef c = String;
+main() {}
+expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..72b49f6
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.textual_outline_modelled.expect
@@ -0,0 +1,6 @@
+String a<T1, T2>(int x) {}
+String f(a, [b]) => "$a, $b";
+expect(expected, actual) {}
+main() {}
+typedef b = int;
+typedef c = String;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.expect
new file mode 100644
index 0000000..a8a4b37
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.expect
@@ -0,0 +1,33 @@
+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;
+
+typedef b = core::int;
+typedef c = core::String;
+static method f(dynamic a, [dynamic b = #C1]) → core::String
+  return "${a}, ${b}";
+static method a<T1 extends core::Object? = dynamic, T2 extends core::Object? = dynamic>(core::int x) → core::String {
+  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()));
+                               ^^^^^^^^"));
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+
+constants  {
+  #C1 = null
+  #C2 = static-tearoff self::a
+  #C3 = instantiation self::a <core::int*, core::String*>
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.outline.expect
new file mode 100644
index 0000000..fe18f37
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.outline.expect
@@ -0,0 +1,14 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+typedef b = core::int;
+typedef c = core::String;
+static method f(dynamic a, [dynamic b]) → core::String
+  ;
+static method a<T1 extends core::Object? = dynamic, T2 extends core::Object? = dynamic>(core::int x) → core::String
+  ;
+static method main() → dynamic
+  ;
+static method expect(dynamic expected, dynamic actual) → dynamic
+  ;
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
new file mode 100644
index 0000000..a8a4b37
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.transformed.expect
@@ -0,0 +1,33 @@
+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;
+
+typedef b = core::int;
+typedef c = core::String;
+static method f(dynamic a, [dynamic b = #C1]) → core::String
+  return "${a}, ${b}";
+static method a<T1 extends core::Object? = dynamic, T2 extends core::Object? = dynamic>(core::int x) → core::String {
+  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()));
+                               ^^^^^^^^"));
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+
+constants  {
+  #C1 = null
+  #C2 = static-tearoff self::a
+  #C3 = instantiation self::a <core::int*, core::String*>
+}
diff --git a/pkg/front_end/testcases/expression/class_invalid_static_capture.expression.yaml.expect b/pkg/front_end/testcases/expression/class_invalid_static_capture.expression.yaml.expect
index 0b78207..6638921 100644
--- a/pkg/front_end/testcases/expression/class_invalid_static_capture.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_invalid_static_capture.expression.yaml.expect
@@ -1,12 +1,12 @@
 Errors: {
-  org-dartlang-debug:synthetic_debug_expression:1:17: Error: Getter not found: 'y'.
+  org-dartlang-debug:synthetic_debug_expression:1:17: Error: Undefined name 'y'.
   () { return x + y; }
                   ^
-  org-dartlang-debug:synthetic_debug_expression:1:13: Error: Getter not found: 'x'.
+  org-dartlang-debug:synthetic_debug_expression:1:13: Error: Undefined name 'x'.
   () { return x + y; }
               ^
 }
 static method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
   return () → invalid-type {
-    return invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:13: Error: Getter not found: 'x'.\n() { return x + y; }\n            ^"{<invalid>}.+(invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:17: Error: Getter not found: 'y'.\n() { return x + y; }\n                ^");
+    return invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:13: Error: Undefined name 'x'.\n() { return x + y; }\n            ^"{<invalid>}.+(invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:17: Error: Undefined name 'y'.\n() { return x + y; }\n                ^");
   };
diff --git a/pkg/front_end/testcases/expression/class_invalid_static_getter.expression.yaml.expect b/pkg/front_end/testcases/expression/class_invalid_static_getter.expression.yaml.expect
index 76636ce..074e981 100644
--- a/pkg/front_end/testcases/expression/class_invalid_static_getter.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_invalid_static_getter.expression.yaml.expect
@@ -1,7 +1,7 @@
 Errors: {
-  org-dartlang-debug:synthetic_debug_expression:1:1: Error: Getter not found: 'z'.
+  org-dartlang-debug:synthetic_debug_expression:1:1: Error: Undefined name 'z'.
   z
   ^
 }
 static method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
-  return invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:1: Error: Getter not found: 'z'.\nz\n^";
+  return invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:1: Error: Undefined name 'z'.\nz\n^";
diff --git a/pkg/front_end/testcases/expression/class_static3.expression.yaml.expect b/pkg/front_end/testcases/expression/class_static3.expression.yaml.expect
index 18654e51..b682d78 100644
--- a/pkg/front_end/testcases/expression/class_static3.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_static3.expression.yaml.expect
@@ -1,10 +1,10 @@
 Errors: {
-  org-dartlang-debug:synthetic_debug_expression:1:13: Error: Getter not found: 'staticVar'.
+  org-dartlang-debug:synthetic_debug_expression:1:13: Error: Undefined name 'staticVar'.
   globalVar + staticVar + 5
               ^^^^^^^^^
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
-  return #lib1::globalVar.{dart.core::num::+}(invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:13: Error: Getter not found: 'staticVar'.\nglobalVar + staticVar + 5\n            ^^^^^^^^^"){(dart.core::num*) →* dart.core::num*}.{dart.core::num::+}(5){(dart.core::num*) →* dart.core::num*};
+  return #lib1::globalVar.{dart.core::num::+}(invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:13: Error: Undefined name 'staticVar'.\nglobalVar + staticVar + 5\n            ^^^^^^^^^"){(dart.core::num*) →* dart.core::num*}.{dart.core::num::+}(5){(dart.core::num*) →* dart.core::num*};
 Errors: {
 }
 static method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
diff --git a/pkg/front_end/testcases/expression/lib_nonctor.expression.yaml.expect b/pkg/front_end/testcases/expression/lib_nonctor.expression.yaml.expect
index aa22db0..9000160 100644
--- a/pkg/front_end/testcases/expression/lib_nonctor.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/lib_nonctor.expression.yaml.expect
@@ -1,7 +1,7 @@
 Errors: {
-  org-dartlang-debug:synthetic_debug_expression:1:5: Error: Method not found: 'Random'.
+  org-dartlang-debug:synthetic_debug_expression:1:5: Error: Couldn't find constructor 'Random'.
   new Random()
       ^^^^^^
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
-  return invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:5: Error: Method not found: 'Random'.\nnew Random()\n    ^^^^^^";
+  return invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:5: Error: Couldn't find constructor 'Random'.\nnew Random()\n    ^^^^^^";
diff --git a/pkg/front_end/testcases/expression/lib_nonshown_ctor.expression.yaml.expect b/pkg/front_end/testcases/expression/lib_nonshown_ctor.expression.yaml.expect
index e7333cd..d8025303 100644
--- a/pkg/front_end/testcases/expression/lib_nonshown_ctor.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/lib_nonshown_ctor.expression.yaml.expect
@@ -1,7 +1,7 @@
 Errors: {
-  org-dartlang-debug:synthetic_debug_expression:1:5: Error: Method not found: 'Directory'.
+  org-dartlang-debug:synthetic_debug_expression:1:5: Error: Couldn't find constructor 'Directory'.
   new Directory("test")
       ^^^^^^^^^
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
-  return invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:5: Error: Method not found: 'Directory'.\nnew Directory(\"test\")\n    ^^^^^^^^^";
+  return invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:5: Error: Couldn't find constructor 'Directory'.\nnew Directory(\"test\")\n    ^^^^^^^^^";
diff --git a/pkg/front_end/testcases/extension_types/simple_setter_resolution.dart.strong.expect b/pkg/front_end/testcases/extension_types/simple_setter_resolution.dart.strong.expect
index f9edfa5..c9c618e 100644
--- a/pkg/front_end/testcases/extension_types/simple_setter_resolution.dart.strong.expect
+++ b/pkg/front_end/testcases/extension_types/simple_setter_resolution.dart.strong.expect
@@ -2,15 +2,15 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:26:3: Error: Getter not found: 'et'.
+// pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:26:3: Error: Undefined name 'et'.
 //   et.foo = 42; // Error.
 //   ^^
 //
-// pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:27:3: Error: Getter not found: 'et'.
+// pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:27:3: Error: Undefined name 'et'.
 //   et.bar = 42; // Error.
 //   ^^
 //
-// pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:28:3: Error: Getter not found: 'et'.
+// pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:28:3: Error: Undefined name 'et'.
 //   et.baz = 42; // Ok.
 //   ^^
 //
@@ -64,13 +64,13 @@
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'baz'.
   e.baz = 42; // Error.
     ^^^" in e{<unresolved>}.baz = 42;
-  invalid-expression "pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:26:3: Error: Getter not found: 'et'.
+  invalid-expression "pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:26:3: Error: Undefined name 'et'.
   et.foo = 42; // Error.
   ^^"{<invalid>}.foo = 42;
-  invalid-expression "pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:27:3: Error: Getter not found: 'et'.
+  invalid-expression "pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:27:3: Error: Undefined name 'et'.
   et.bar = 42; // Error.
   ^^"{<invalid>}.bar = 42;
-  invalid-expression "pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:28:3: Error: Getter not found: 'et'.
+  invalid-expression "pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:28:3: Error: Undefined name 'et'.
   et.baz = 42; // Ok.
   ^^"{<invalid>}.baz = 42;
 }
diff --git a/pkg/front_end/testcases/extension_types/simple_setter_resolution.dart.weak.expect b/pkg/front_end/testcases/extension_types/simple_setter_resolution.dart.weak.expect
index f9edfa5..c9c618e 100644
--- a/pkg/front_end/testcases/extension_types/simple_setter_resolution.dart.weak.expect
+++ b/pkg/front_end/testcases/extension_types/simple_setter_resolution.dart.weak.expect
@@ -2,15 +2,15 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:26:3: Error: Getter not found: 'et'.
+// pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:26:3: Error: Undefined name 'et'.
 //   et.foo = 42; // Error.
 //   ^^
 //
-// pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:27:3: Error: Getter not found: 'et'.
+// pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:27:3: Error: Undefined name 'et'.
 //   et.bar = 42; // Error.
 //   ^^
 //
-// pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:28:3: Error: Getter not found: 'et'.
+// pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:28:3: Error: Undefined name 'et'.
 //   et.baz = 42; // Ok.
 //   ^^
 //
@@ -64,13 +64,13 @@
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'baz'.
   e.baz = 42; // Error.
     ^^^" in e{<unresolved>}.baz = 42;
-  invalid-expression "pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:26:3: Error: Getter not found: 'et'.
+  invalid-expression "pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:26:3: Error: Undefined name 'et'.
   et.foo = 42; // Error.
   ^^"{<invalid>}.foo = 42;
-  invalid-expression "pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:27:3: Error: Getter not found: 'et'.
+  invalid-expression "pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:27:3: Error: Undefined name 'et'.
   et.bar = 42; // Error.
   ^^"{<invalid>}.bar = 42;
-  invalid-expression "pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:28:3: Error: Getter not found: 'et'.
+  invalid-expression "pkg/front_end/testcases/extension_types/simple_setter_resolution.dart:28:3: Error: Undefined name 'et'.
   et.baz = 42; // Ok.
   ^^"{<invalid>}.baz = 42;
 }
diff --git a/pkg/front_end/testcases/extension_types/simple_show_hide.dart.strong.expect b/pkg/front_end/testcases/extension_types/simple_show_hide.dart.strong.expect
index 47d4185..cfd32eb 100644
--- a/pkg/front_end/testcases/extension_types/simple_show_hide.dart.strong.expect
+++ b/pkg/front_end/testcases/extension_types/simple_show_hide.dart.strong.expect
@@ -95,7 +95,7 @@
 // extension type MyInt on int show num, isEven hide floor {
 //                                              ^^^^
 //
-// pkg/front_end/testcases/extension_types/simple_show_hide.dart:9:3: Error: Getter not found: 'e2'.
+// pkg/front_end/testcases/extension_types/simple_show_hide.dart:9:3: Error: Undefined name 'e2'.
 //   e2.floor(); // Ok.
 //   ^^
 //
@@ -192,7 +192,7 @@
 Try correcting the name to the name of an existing method, or defining a method name 'ceil'.
   e1.ceil(); // Ok.
      ^^^^" in e1{<unresolved>}.ceil();
-  invalid-expression "pkg/front_end/testcases/extension_types/simple_show_hide.dart:9:3: Error: Getter not found: 'e2'.
+  invalid-expression "pkg/front_end/testcases/extension_types/simple_show_hide.dart:9:3: Error: Undefined name 'e2'.
   e2.floor(); // Ok.
   ^^"{dynamic}.floor();
   invalid-expression "pkg/front_end/testcases/extension_types/simple_show_hide.dart:10:6: Error: The getter 'isEven' isn't defined for the extension 'E1'.
diff --git a/pkg/front_end/testcases/extension_types/simple_show_hide.dart.weak.expect b/pkg/front_end/testcases/extension_types/simple_show_hide.dart.weak.expect
index 47d4185..cfd32eb 100644
--- a/pkg/front_end/testcases/extension_types/simple_show_hide.dart.weak.expect
+++ b/pkg/front_end/testcases/extension_types/simple_show_hide.dart.weak.expect
@@ -95,7 +95,7 @@
 // extension type MyInt on int show num, isEven hide floor {
 //                                              ^^^^
 //
-// pkg/front_end/testcases/extension_types/simple_show_hide.dart:9:3: Error: Getter not found: 'e2'.
+// pkg/front_end/testcases/extension_types/simple_show_hide.dart:9:3: Error: Undefined name 'e2'.
 //   e2.floor(); // Ok.
 //   ^^
 //
@@ -192,7 +192,7 @@
 Try correcting the name to the name of an existing method, or defining a method name 'ceil'.
   e1.ceil(); // Ok.
      ^^^^" in e1{<unresolved>}.ceil();
-  invalid-expression "pkg/front_end/testcases/extension_types/simple_show_hide.dart:9:3: Error: Getter not found: 'e2'.
+  invalid-expression "pkg/front_end/testcases/extension_types/simple_show_hide.dart:9:3: Error: Undefined name 'e2'.
   e2.floor(); // Ok.
   ^^"{dynamic}.floor();
   invalid-expression "pkg/front_end/testcases/extension_types/simple_show_hide.dart:10:6: Error: The getter 'isEven' isn't defined for the extension 'E1'.
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.expect b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.expect
index dd8a12d..0dd6942 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.expect
@@ -22,7 +22,7 @@
 //   Extension<int>(c1).method(null);
 //   ^^^^^^^^^
 //
-// pkg/front_end/testcases/extensions/invalid_explicit_access.dart:29:17: Error: Getter not found: 'foo'.
+// pkg/front_end/testcases/extensions/invalid_explicit_access.dart:29:17: Error: Member not found: 'foo'.
 //   Extension(c1).foo;
 //                 ^^^
 //
@@ -190,7 +190,7 @@
  - 'Class' is from 'pkg/front_end/testcases/extensions/invalid_explicit_access.dart'.
   Extension(s).method(null);
             ^" in s as{TypeError} self::Class*, null);
-  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:29:17: Error: Getter not found: 'foo'.
+  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:29:17: Error: Member not found: 'foo'.
   Extension(c1).foo;
                 ^^^";
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:30:17: Error: Setter not found: 'foo'.
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.transformed.expect
index dd8a12d..0dd6942 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.transformed.expect
@@ -22,7 +22,7 @@
 //   Extension<int>(c1).method(null);
 //   ^^^^^^^^^
 //
-// pkg/front_end/testcases/extensions/invalid_explicit_access.dart:29:17: Error: Getter not found: 'foo'.
+// pkg/front_end/testcases/extensions/invalid_explicit_access.dart:29:17: Error: Member not found: 'foo'.
 //   Extension(c1).foo;
 //                 ^^^
 //
@@ -190,7 +190,7 @@
  - 'Class' is from 'pkg/front_end/testcases/extensions/invalid_explicit_access.dart'.
   Extension(s).method(null);
             ^" in s as{TypeError} self::Class*, null);
-  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:29:17: Error: Getter not found: 'foo'.
+  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:29:17: Error: Member not found: 'foo'.
   Extension(c1).foo;
                 ^^^";
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:30:17: Error: Setter not found: 'foo'.
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.expect b/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.expect
index 6317f7b..94d05b9 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.expect
@@ -6,7 +6,7 @@
 //   Extension(s).method();
 //                ^^^^^^
 //
-// pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:19:16: Error: Getter not found: 'method'.
+// pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:19:16: Error: Member not found: 'method'.
 //   Extension(s).method;
 //                ^^^^^^
 //
@@ -14,7 +14,7 @@
 //   Extension(s).method = 42;
 //                ^^^^^^
 //
-// pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:21:16: Error: Getter not found: 'getter'.
+// pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:21:16: Error: Member not found: 'getter'.
 //   Extension(s).getter;
 //                ^^^^^^
 //
@@ -22,7 +22,7 @@
 //   Extension(s).getter = 42;
 //                ^^^^^^
 //
-// pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:23:16: Error: Getter not found: 'setter'.
+// pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:23:16: Error: Member not found: 'setter'.
 //   Extension(s).setter;
 //                ^^^^^^
 //
@@ -30,7 +30,7 @@
 //   Extension(s).setter = 42;
 //                ^^^^^^
 //
-// pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:25:16: Error: Getter not found: 'property'.
+// pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:25:16: Error: Member not found: 'property'.
 //   Extension(s).property;
 //                ^^^^^^^^
 //
@@ -38,7 +38,7 @@
 //   Extension(s).property = 42;
 //                ^^^^^^^^
 //
-// pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:27:16: Error: Getter not found: 'field'.
+// pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:27:16: Error: Member not found: 'field'.
 //   Extension(s).field;
 //                ^^^^^
 //
@@ -71,31 +71,31 @@
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:18:16: Error: Method not found: 'method'.
   Extension(s).method();
                ^^^^^^";
-  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:19:16: Error: Getter not found: 'method'.
+  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:19:16: Error: Member not found: 'method'.
   Extension(s).method;
                ^^^^^^";
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:20:16: Error: Setter not found: 'method'.
   Extension(s).method = 42;
                ^^^^^^";
-  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:21:16: Error: Getter not found: 'getter'.
+  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:21:16: Error: Member not found: 'getter'.
   Extension(s).getter;
                ^^^^^^";
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:22:16: Error: Setter not found: 'getter'.
   Extension(s).getter = 42;
                ^^^^^^";
-  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:23:16: Error: Getter not found: 'setter'.
+  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:23:16: Error: Member not found: 'setter'.
   Extension(s).setter;
                ^^^^^^";
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:24:16: Error: Setter not found: 'setter'.
   Extension(s).setter = 42;
                ^^^^^^";
-  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:25:16: Error: Getter not found: 'property'.
+  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:25:16: Error: Member not found: 'property'.
   Extension(s).property;
                ^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:26:16: Error: Setter not found: 'property'.
   Extension(s).property = 42;
                ^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:27:16: Error: Getter not found: 'field'.
+  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:27:16: Error: Member not found: 'field'.
   Extension(s).field;
                ^^^^^";
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:28:16: Error: Setter not found: 'field'.
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.transformed.expect
index 6317f7b..94d05b9 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.transformed.expect
@@ -6,7 +6,7 @@
 //   Extension(s).method();
 //                ^^^^^^
 //
-// pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:19:16: Error: Getter not found: 'method'.
+// pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:19:16: Error: Member not found: 'method'.
 //   Extension(s).method;
 //                ^^^^^^
 //
@@ -14,7 +14,7 @@
 //   Extension(s).method = 42;
 //                ^^^^^^
 //
-// pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:21:16: Error: Getter not found: 'getter'.
+// pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:21:16: Error: Member not found: 'getter'.
 //   Extension(s).getter;
 //                ^^^^^^
 //
@@ -22,7 +22,7 @@
 //   Extension(s).getter = 42;
 //                ^^^^^^
 //
-// pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:23:16: Error: Getter not found: 'setter'.
+// pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:23:16: Error: Member not found: 'setter'.
 //   Extension(s).setter;
 //                ^^^^^^
 //
@@ -30,7 +30,7 @@
 //   Extension(s).setter = 42;
 //                ^^^^^^
 //
-// pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:25:16: Error: Getter not found: 'property'.
+// pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:25:16: Error: Member not found: 'property'.
 //   Extension(s).property;
 //                ^^^^^^^^
 //
@@ -38,7 +38,7 @@
 //   Extension(s).property = 42;
 //                ^^^^^^^^
 //
-// pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:27:16: Error: Getter not found: 'field'.
+// pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:27:16: Error: Member not found: 'field'.
 //   Extension(s).field;
 //                ^^^^^
 //
@@ -71,31 +71,31 @@
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:18:16: Error: Method not found: 'method'.
   Extension(s).method();
                ^^^^^^";
-  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:19:16: Error: Getter not found: 'method'.
+  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:19:16: Error: Member not found: 'method'.
   Extension(s).method;
                ^^^^^^";
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:20:16: Error: Setter not found: 'method'.
   Extension(s).method = 42;
                ^^^^^^";
-  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:21:16: Error: Getter not found: 'getter'.
+  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:21:16: Error: Member not found: 'getter'.
   Extension(s).getter;
                ^^^^^^";
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:22:16: Error: Setter not found: 'getter'.
   Extension(s).getter = 42;
                ^^^^^^";
-  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:23:16: Error: Getter not found: 'setter'.
+  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:23:16: Error: Member not found: 'setter'.
   Extension(s).setter;
                ^^^^^^";
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:24:16: Error: Setter not found: 'setter'.
   Extension(s).setter = 42;
                ^^^^^^";
-  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:25:16: Error: Getter not found: 'property'.
+  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:25:16: Error: Member not found: 'property'.
   Extension(s).property;
                ^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:26:16: Error: Setter not found: 'property'.
   Extension(s).property = 42;
                ^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:27:16: Error: Getter not found: 'field'.
+  invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:27:16: Error: Member not found: 'field'.
   Extension(s).field;
                ^^^^^";
   invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:28:16: Error: Setter not found: 'field'.
diff --git a/pkg/front_end/testcases/extensions/issue38745.dart.weak.expect b/pkg/front_end/testcases/extensions/issue38745.dart.weak.expect
index fc38e42..aa7f4d8 100644
--- a/pkg/front_end/testcases/extensions/issue38745.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue38745.dart.weak.expect
@@ -25,7 +25,7 @@
 //   final int property2 = 42;
 //             ^
 //
-// pkg/front_end/testcases/extensions/issue38745.dart:20:5: Error: Getter not found: 'field'.
+// pkg/front_end/testcases/extensions/issue38745.dart:20:5: Error: Undefined name 'field'.
 //     field;
 //     ^^^^^
 //
@@ -37,7 +37,7 @@
 //     property;
 //     ^^^^^^^^
 //
-// pkg/front_end/testcases/extensions/issue38745.dart:24:5: Error: Getter not found: 'property2'.
+// pkg/front_end/testcases/extensions/issue38745.dart:24:5: Error: Undefined name 'property2'.
 //     property2;
 //     ^^^^^^^^^
 //
@@ -45,7 +45,7 @@
 //     property2 = 23;
 //     ^^^^^^^^^
 //
-// pkg/front_end/testcases/extensions/issue38745.dart:40:10: Error: Getter not found: 'field'.
+// pkg/front_end/testcases/extensions/issue38745.dart:40:10: Error: Member not found: 'field'.
 //   ext(c).field;
 //          ^^^^^
 //
@@ -57,7 +57,7 @@
 //   ext(c).property;
 //          ^^^^^^^^
 //
-// pkg/front_end/testcases/extensions/issue38745.dart:44:10: Error: Getter not found: 'property2'.
+// pkg/front_end/testcases/extensions/issue38745.dart:44:10: Error: Member not found: 'property2'.
 //   ext(c).property2;
 //          ^^^^^^^^^
 //
@@ -128,7 +128,7 @@
 static method ext|set#property<T extends core::Object* = dynamic>(lowered final self::C<self::ext|set#property::T*>* #this, core::int* value) → void {}
 static set ext|property2(core::int* value) → void {}
 static method ext|method<T extends core::Object* = dynamic>(lowered final self::C<self::ext|method::T*>* #this) → dynamic {
-  invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:20:5: Error: Getter not found: 'field'.
+  invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:20:5: Error: Undefined name 'field'.
     field;
     ^^^^^";
   invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:21:5: Error: Setter not found: 'field'.
@@ -138,7 +138,7 @@
     property;
     ^^^^^^^^";
   self::ext|set#property<self::ext|method::T*>(#this, 23);
-  invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:24:5: Error: Getter not found: 'property2'.
+  invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:24:5: Error: Undefined name 'property2'.
     property2;
     ^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:25:5: Error: Setter not found: 'property2'.
@@ -176,7 +176,7 @@
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'property2'.
   c.property2 = 23;
     ^^^^^^^^^" in c{<unresolved>}.property2 = 23;
-  invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:40:10: Error: Getter not found: 'field'.
+  invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:40:10: Error: Member not found: 'field'.
   ext(c).field;
          ^^^^^";
   invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:41:10: Error: Setter not found: 'field'.
@@ -186,7 +186,7 @@
   ext(c).property;
          ^^^^^^^^";
   self::ext|set#property<core::int*>(c, 23);
-  invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:44:10: Error: Getter not found: 'property2'.
+  invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:44:10: Error: Member not found: 'property2'.
   ext(c).property2;
          ^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:45:10: Error: Setter not found: 'property2'.
diff --git a/pkg/front_end/testcases/extensions/issue38745.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue38745.dart.weak.transformed.expect
index fc38e42..aa7f4d8 100644
--- a/pkg/front_end/testcases/extensions/issue38745.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue38745.dart.weak.transformed.expect
@@ -25,7 +25,7 @@
 //   final int property2 = 42;
 //             ^
 //
-// pkg/front_end/testcases/extensions/issue38745.dart:20:5: Error: Getter not found: 'field'.
+// pkg/front_end/testcases/extensions/issue38745.dart:20:5: Error: Undefined name 'field'.
 //     field;
 //     ^^^^^
 //
@@ -37,7 +37,7 @@
 //     property;
 //     ^^^^^^^^
 //
-// pkg/front_end/testcases/extensions/issue38745.dart:24:5: Error: Getter not found: 'property2'.
+// pkg/front_end/testcases/extensions/issue38745.dart:24:5: Error: Undefined name 'property2'.
 //     property2;
 //     ^^^^^^^^^
 //
@@ -45,7 +45,7 @@
 //     property2 = 23;
 //     ^^^^^^^^^
 //
-// pkg/front_end/testcases/extensions/issue38745.dart:40:10: Error: Getter not found: 'field'.
+// pkg/front_end/testcases/extensions/issue38745.dart:40:10: Error: Member not found: 'field'.
 //   ext(c).field;
 //          ^^^^^
 //
@@ -57,7 +57,7 @@
 //   ext(c).property;
 //          ^^^^^^^^
 //
-// pkg/front_end/testcases/extensions/issue38745.dart:44:10: Error: Getter not found: 'property2'.
+// pkg/front_end/testcases/extensions/issue38745.dart:44:10: Error: Member not found: 'property2'.
 //   ext(c).property2;
 //          ^^^^^^^^^
 //
@@ -128,7 +128,7 @@
 static method ext|set#property<T extends core::Object* = dynamic>(lowered final self::C<self::ext|set#property::T*>* #this, core::int* value) → void {}
 static set ext|property2(core::int* value) → void {}
 static method ext|method<T extends core::Object* = dynamic>(lowered final self::C<self::ext|method::T*>* #this) → dynamic {
-  invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:20:5: Error: Getter not found: 'field'.
+  invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:20:5: Error: Undefined name 'field'.
     field;
     ^^^^^";
   invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:21:5: Error: Setter not found: 'field'.
@@ -138,7 +138,7 @@
     property;
     ^^^^^^^^";
   self::ext|set#property<self::ext|method::T*>(#this, 23);
-  invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:24:5: Error: Getter not found: 'property2'.
+  invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:24:5: Error: Undefined name 'property2'.
     property2;
     ^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:25:5: Error: Setter not found: 'property2'.
@@ -176,7 +176,7 @@
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'property2'.
   c.property2 = 23;
     ^^^^^^^^^" in c{<unresolved>}.property2 = 23;
-  invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:40:10: Error: Getter not found: 'field'.
+  invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:40:10: Error: Member not found: 'field'.
   ext(c).field;
          ^^^^^";
   invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:41:10: Error: Setter not found: 'field'.
@@ -186,7 +186,7 @@
   ext(c).property;
          ^^^^^^^^";
   self::ext|set#property<core::int*>(c, 23);
-  invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:44:10: Error: Getter not found: 'property2'.
+  invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:44:10: Error: Member not found: 'property2'.
   ext(c).property2;
          ^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:45:10: Error: Setter not found: 'property2'.
diff --git a/pkg/front_end/testcases/extensions/issue38750.dart.weak.expect b/pkg/front_end/testcases/extensions/issue38750.dart.weak.expect
index f72ca64..4dbcce1 100644
--- a/pkg/front_end/testcases/extensions/issue38750.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue38750.dart.weak.expect
@@ -2,7 +2,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/extensions/issue38750.dart:13:5: Error: Method not found: 'C._staticFoo'.
+// pkg/front_end/testcases/extensions/issue38750.dart:13:5: Error: Member not found: 'C._staticFoo'.
 //   C._staticFoo();
 //     ^^^^^^^^^^
 //
@@ -32,7 +32,7 @@
 Try correcting the name to the name of an existing method, or defining a method named '_foo'.
   c._foo();
     ^^^^" in c{<unresolved>}._foo();
-  invalid-expression "pkg/front_end/testcases/extensions/issue38750.dart:13:5: Error: Method not found: 'C._staticFoo'.
+  invalid-expression "pkg/front_end/testcases/extensions/issue38750.dart:13:5: Error: Member not found: 'C._staticFoo'.
   C._staticFoo();
     ^^^^^^^^^^";
   c.{iss::C::foo}(){() →* dynamic};
diff --git a/pkg/front_end/testcases/extensions/issue38750.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue38750.dart.weak.transformed.expect
index f72ca64..4dbcce1 100644
--- a/pkg/front_end/testcases/extensions/issue38750.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue38750.dart.weak.transformed.expect
@@ -2,7 +2,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/extensions/issue38750.dart:13:5: Error: Method not found: 'C._staticFoo'.
+// pkg/front_end/testcases/extensions/issue38750.dart:13:5: Error: Member not found: 'C._staticFoo'.
 //   C._staticFoo();
 //     ^^^^^^^^^^
 //
@@ -32,7 +32,7 @@
 Try correcting the name to the name of an existing method, or defining a method named '_foo'.
   c._foo();
     ^^^^" in c{<unresolved>}._foo();
-  invalid-expression "pkg/front_end/testcases/extensions/issue38750.dart:13:5: Error: Method not found: 'C._staticFoo'.
+  invalid-expression "pkg/front_end/testcases/extensions/issue38750.dart:13:5: Error: Member not found: 'C._staticFoo'.
   C._staticFoo();
     ^^^^^^^^^^";
   c.{iss::C::foo}(){() →* dynamic};
diff --git a/pkg/front_end/testcases/extensions/private_members.dart.weak.expect b/pkg/front_end/testcases/extensions/private_members.dart.weak.expect
index 477337e..1e4a440 100644
--- a/pkg/front_end/testcases/extensions/private_members.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/private_members.dart.weak.expect
@@ -14,15 +14,15 @@
 //   expect(237, PublicExtension("")._privateMethod2());
 //                                   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/extensions/private_members.dart:27:14: Error: Getter not found: '_PrivateExtension'.
+// pkg/front_end/testcases/extensions/private_members.dart:27:14: Error: Undefined name '_PrivateExtension'.
 //   expect(24, _PrivateExtension.publicStaticMethod1());
 //              ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/extensions/private_members.dart:28:14: Error: Getter not found: '_PrivateExtension'.
+// pkg/front_end/testcases/extensions/private_members.dart:28:14: Error: Undefined name '_PrivateExtension'.
 //   expect(78, _PrivateExtension._privateStaticMethod1());
 //              ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/extensions/private_members.dart:29:31: Error: Method not found: 'PublicExtension._privateStaticMethod2'.
+// pkg/front_end/testcases/extensions/private_members.dart:29:31: Error: Member not found: 'PublicExtension._privateStaticMethod2'.
 //   expect(732, PublicExtension._privateStaticMethod2());
 //                               ^^^^^^^^^^^^^^^^^^^^^
 //
@@ -92,13 +92,13 @@
   pri::expect(237, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:25:35: Error: Method not found: '_privateMethod2'.
   expect(237, PublicExtension(\"\")._privateMethod2());
                                   ^^^^^^^^^^^^^^^");
-  pri::expect(24, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:27:14: Error: Getter not found: '_PrivateExtension'.
+  pri::expect(24, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:27:14: Error: Undefined name '_PrivateExtension'.
   expect(24, _PrivateExtension.publicStaticMethod1());
              ^^^^^^^^^^^^^^^^^"{dynamic}.publicStaticMethod1());
-  pri::expect(78, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:28:14: Error: Getter not found: '_PrivateExtension'.
+  pri::expect(78, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:28:14: Error: Undefined name '_PrivateExtension'.
   expect(78, _PrivateExtension._privateStaticMethod1());
              ^^^^^^^^^^^^^^^^^"{dynamic}._privateStaticMethod1());
-  pri::expect(732, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:29:31: Error: Method not found: 'PublicExtension._privateStaticMethod2'.
+  pri::expect(732, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:29:31: Error: Member not found: 'PublicExtension._privateStaticMethod2'.
   expect(732, PublicExtension._privateStaticMethod2());
                               ^^^^^^^^^^^^^^^^^^^^^");
 }
diff --git a/pkg/front_end/testcases/extensions/private_members.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/private_members.dart.weak.transformed.expect
index 477337e..1e4a440 100644
--- a/pkg/front_end/testcases/extensions/private_members.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/private_members.dart.weak.transformed.expect
@@ -14,15 +14,15 @@
 //   expect(237, PublicExtension("")._privateMethod2());
 //                                   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/extensions/private_members.dart:27:14: Error: Getter not found: '_PrivateExtension'.
+// pkg/front_end/testcases/extensions/private_members.dart:27:14: Error: Undefined name '_PrivateExtension'.
 //   expect(24, _PrivateExtension.publicStaticMethod1());
 //              ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/extensions/private_members.dart:28:14: Error: Getter not found: '_PrivateExtension'.
+// pkg/front_end/testcases/extensions/private_members.dart:28:14: Error: Undefined name '_PrivateExtension'.
 //   expect(78, _PrivateExtension._privateStaticMethod1());
 //              ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/extensions/private_members.dart:29:31: Error: Method not found: 'PublicExtension._privateStaticMethod2'.
+// pkg/front_end/testcases/extensions/private_members.dart:29:31: Error: Member not found: 'PublicExtension._privateStaticMethod2'.
 //   expect(732, PublicExtension._privateStaticMethod2());
 //                               ^^^^^^^^^^^^^^^^^^^^^
 //
@@ -92,13 +92,13 @@
   pri::expect(237, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:25:35: Error: Method not found: '_privateMethod2'.
   expect(237, PublicExtension(\"\")._privateMethod2());
                                   ^^^^^^^^^^^^^^^");
-  pri::expect(24, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:27:14: Error: Getter not found: '_PrivateExtension'.
+  pri::expect(24, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:27:14: Error: Undefined name '_PrivateExtension'.
   expect(24, _PrivateExtension.publicStaticMethod1());
              ^^^^^^^^^^^^^^^^^"{dynamic}.publicStaticMethod1());
-  pri::expect(78, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:28:14: Error: Getter not found: '_PrivateExtension'.
+  pri::expect(78, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:28:14: Error: Undefined name '_PrivateExtension'.
   expect(78, _PrivateExtension._privateStaticMethod1());
              ^^^^^^^^^^^^^^^^^"{dynamic}._privateStaticMethod1());
-  pri::expect(732, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:29:31: Error: Method not found: 'PublicExtension._privateStaticMethod2'.
+  pri::expect(732, invalid-expression "pkg/front_end/testcases/extensions/private_members.dart:29:31: Error: Member not found: 'PublicExtension._privateStaticMethod2'.
   expect(732, PublicExtension._privateStaticMethod2());
                               ^^^^^^^^^^^^^^^^^^^^^");
 }
diff --git a/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.expect b/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.expect
index 09b420f..b6e0e94 100644
--- a/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.expect
@@ -2,15 +2,15 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/extensions/static_access_of_instance.dart:14:13: Error: Method not found: 'Extension.instanceMethod'.
+// pkg/front_end/testcases/extensions/static_access_of_instance.dart:14:13: Error: Member not found: 'Extension.instanceMethod'.
 //   Extension.instanceMethod();
 //             ^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/extensions/static_access_of_instance.dart:15:13: Error: Getter not found: 'instanceMethod'.
+// pkg/front_end/testcases/extensions/static_access_of_instance.dart:15:13: Error: Member not found: 'instanceMethod'.
 //   Extension.instanceMethod;
 //             ^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/extensions/static_access_of_instance.dart:16:13: Error: Getter not found: 'instanceProperty'.
+// pkg/front_end/testcases/extensions/static_access_of_instance.dart:16:13: Error: Member not found: 'instanceProperty'.
 //   Extension.instanceProperty;
 //             ^^^^^^^^^^^^^^^^
 //
@@ -49,13 +49,13 @@
   return 42;
 static method Extension|set#instanceProperty(lowered final self::Class* #this, dynamic value) → void {}
 static method main() → dynamic {
-  invalid-expression "pkg/front_end/testcases/extensions/static_access_of_instance.dart:14:13: Error: Method not found: 'Extension.instanceMethod'.
+  invalid-expression "pkg/front_end/testcases/extensions/static_access_of_instance.dart:14:13: Error: Member not found: 'Extension.instanceMethod'.
   Extension.instanceMethod();
             ^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/extensions/static_access_of_instance.dart:15:13: Error: Getter not found: 'instanceMethod'.
+  invalid-expression "pkg/front_end/testcases/extensions/static_access_of_instance.dart:15:13: Error: Member not found: 'instanceMethod'.
   Extension.instanceMethod;
             ^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/extensions/static_access_of_instance.dart:16:13: Error: Getter not found: 'instanceProperty'.
+  invalid-expression "pkg/front_end/testcases/extensions/static_access_of_instance.dart:16:13: Error: Member not found: 'instanceProperty'.
   Extension.instanceProperty;
             ^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/extensions/static_access_of_instance.dart:17:13: Error: Setter not found: 'instanceProperty'.
diff --git a/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.transformed.expect
index 09b420f..b6e0e94 100644
--- a/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.transformed.expect
@@ -2,15 +2,15 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/extensions/static_access_of_instance.dart:14:13: Error: Method not found: 'Extension.instanceMethod'.
+// pkg/front_end/testcases/extensions/static_access_of_instance.dart:14:13: Error: Member not found: 'Extension.instanceMethod'.
 //   Extension.instanceMethod();
 //             ^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/extensions/static_access_of_instance.dart:15:13: Error: Getter not found: 'instanceMethod'.
+// pkg/front_end/testcases/extensions/static_access_of_instance.dart:15:13: Error: Member not found: 'instanceMethod'.
 //   Extension.instanceMethod;
 //             ^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/extensions/static_access_of_instance.dart:16:13: Error: Getter not found: 'instanceProperty'.
+// pkg/front_end/testcases/extensions/static_access_of_instance.dart:16:13: Error: Member not found: 'instanceProperty'.
 //   Extension.instanceProperty;
 //             ^^^^^^^^^^^^^^^^
 //
@@ -49,13 +49,13 @@
   return 42;
 static method Extension|set#instanceProperty(lowered final self::Class* #this, dynamic value) → void {}
 static method main() → dynamic {
-  invalid-expression "pkg/front_end/testcases/extensions/static_access_of_instance.dart:14:13: Error: Method not found: 'Extension.instanceMethod'.
+  invalid-expression "pkg/front_end/testcases/extensions/static_access_of_instance.dart:14:13: Error: Member not found: 'Extension.instanceMethod'.
   Extension.instanceMethod();
             ^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/extensions/static_access_of_instance.dart:15:13: Error: Getter not found: 'instanceMethod'.
+  invalid-expression "pkg/front_end/testcases/extensions/static_access_of_instance.dart:15:13: Error: Member not found: 'instanceMethod'.
   Extension.instanceMethod;
             ^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/extensions/static_access_of_instance.dart:16:13: Error: Getter not found: 'instanceProperty'.
+  invalid-expression "pkg/front_end/testcases/extensions/static_access_of_instance.dart:16:13: Error: Member not found: 'instanceProperty'.
   Extension.instanceProperty;
             ^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/extensions/static_access_of_instance.dart:17:13: Error: Setter not found: 'instanceProperty'.
diff --git a/pkg/front_end/testcases/general/constants/issue46925.dart.weak.expect b/pkg/front_end/testcases/general/constants/issue46925.dart.weak.expect
index d03ca9a..5e64344 100644
--- a/pkg/front_end/testcases/general/constants/issue46925.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/issue46925.dart.weak.expect
@@ -12,7 +12,7 @@
 //   const v1 = MyClass<String>.new;
 //                              ^^^
 //
-// pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Getter not found: 'new'.
+// pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Member not found: 'new'.
 //   const v1 = MyClass<String>.new;
 //                              ^^^
 //
@@ -21,7 +21,7 @@
 //   const v2 = MyClass<int>.constr;
 //                     ^
 //
-// pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Getter not found: 'constr'.
+// pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Member not found: 'constr'.
 //   const v2 = MyClass<int>.constr;
 //                           ^^^^^^
 //
@@ -35,7 +35,7 @@
 //   const v3 = MyClass<int>.new;
 //                           ^^^
 //
-// pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Getter not found: 'new'.
+// pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Member not found: 'new'.
 //   const v3 = MyClass<int>.new;
 //                           ^^^
 //
@@ -44,7 +44,7 @@
 //   const v4 = MyClass<String>.constr;
 //                     ^
 //
-// pkg/front_end/testcases/general/constants/issue46925.dart:16:30: Error: Getter not found: 'constr'.
+// pkg/front_end/testcases/general/constants/issue46925.dart:16:30: Error: Member not found: 'constr'.
 //   const v4 = MyClass<String>.constr;
 //                              ^^^^^^
 //
@@ -61,34 +61,34 @@
     ;
 }
 static method test() → dynamic {
-  const invalid-type v1 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Getter not found: 'new'.
+  const invalid-type v1 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Member not found: 'new'.
   const v1 = MyClass<String>.new;
                              ^^^";
-  const invalid-type v2 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Getter not found: 'constr'.
+  const invalid-type v2 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Member not found: 'constr'.
   const v2 = MyClass<int>.constr;
                           ^^^^^^";
-  const invalid-type v3 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Getter not found: 'new'.
+  const invalid-type v3 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Member not found: 'new'.
   const v3 = MyClass<int>.new;
                           ^^^";
-  const invalid-type v4 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:16:30: Error: Getter not found: 'constr'.
+  const invalid-type v4 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:16:30: Error: Member not found: 'constr'.
   const v4 = MyClass<String>.constr;
                              ^^^^^^";
-  const dynamic c1 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Getter not found: 'new'.
+  const dynamic c1 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Member not found: 'new'.
   const v1 = MyClass<String>.new;
                              ^^^";
-  const dynamic c2 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Getter not found: 'new'.
+  const dynamic c2 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Member not found: 'new'.
   const v1 = MyClass<String>.new;
                              ^^^";
-  const dynamic c3 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Getter not found: 'constr'.
+  const dynamic c3 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Member not found: 'constr'.
   const v2 = MyClass<int>.constr;
                           ^^^^^^";
-  const dynamic c4 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Getter not found: 'constr'.
+  const dynamic c4 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Member not found: 'constr'.
   const v2 = MyClass<int>.constr;
                           ^^^^^^";
-  const dynamic c5 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Getter not found: 'new'.
+  const dynamic c5 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Member not found: 'new'.
   const v3 = MyClass<int>.new;
                           ^^^";
-  const dynamic c6 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:16:30: Error: Getter not found: 'constr'.
+  const dynamic c6 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:16:30: Error: Member not found: 'constr'.
   const v4 = MyClass<String>.constr;
                              ^^^^^^";
 }
diff --git a/pkg/front_end/testcases/general/constants/issue46925.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/issue46925.dart.weak.transformed.expect
index d03ca9a..5e64344 100644
--- a/pkg/front_end/testcases/general/constants/issue46925.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/issue46925.dart.weak.transformed.expect
@@ -12,7 +12,7 @@
 //   const v1 = MyClass<String>.new;
 //                              ^^^
 //
-// pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Getter not found: 'new'.
+// pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Member not found: 'new'.
 //   const v1 = MyClass<String>.new;
 //                              ^^^
 //
@@ -21,7 +21,7 @@
 //   const v2 = MyClass<int>.constr;
 //                     ^
 //
-// pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Getter not found: 'constr'.
+// pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Member not found: 'constr'.
 //   const v2 = MyClass<int>.constr;
 //                           ^^^^^^
 //
@@ -35,7 +35,7 @@
 //   const v3 = MyClass<int>.new;
 //                           ^^^
 //
-// pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Getter not found: 'new'.
+// pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Member not found: 'new'.
 //   const v3 = MyClass<int>.new;
 //                           ^^^
 //
@@ -44,7 +44,7 @@
 //   const v4 = MyClass<String>.constr;
 //                     ^
 //
-// pkg/front_end/testcases/general/constants/issue46925.dart:16:30: Error: Getter not found: 'constr'.
+// pkg/front_end/testcases/general/constants/issue46925.dart:16:30: Error: Member not found: 'constr'.
 //   const v4 = MyClass<String>.constr;
 //                              ^^^^^^
 //
@@ -61,34 +61,34 @@
     ;
 }
 static method test() → dynamic {
-  const invalid-type v1 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Getter not found: 'new'.
+  const invalid-type v1 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Member not found: 'new'.
   const v1 = MyClass<String>.new;
                              ^^^";
-  const invalid-type v2 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Getter not found: 'constr'.
+  const invalid-type v2 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Member not found: 'constr'.
   const v2 = MyClass<int>.constr;
                           ^^^^^^";
-  const invalid-type v3 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Getter not found: 'new'.
+  const invalid-type v3 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Member not found: 'new'.
   const v3 = MyClass<int>.new;
                           ^^^";
-  const invalid-type v4 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:16:30: Error: Getter not found: 'constr'.
+  const invalid-type v4 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:16:30: Error: Member not found: 'constr'.
   const v4 = MyClass<String>.constr;
                              ^^^^^^";
-  const dynamic c1 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Getter not found: 'new'.
+  const dynamic c1 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Member not found: 'new'.
   const v1 = MyClass<String>.new;
                              ^^^";
-  const dynamic c2 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Getter not found: 'new'.
+  const dynamic c2 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Member not found: 'new'.
   const v1 = MyClass<String>.new;
                              ^^^";
-  const dynamic c3 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Getter not found: 'constr'.
+  const dynamic c3 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Member not found: 'constr'.
   const v2 = MyClass<int>.constr;
                           ^^^^^^";
-  const dynamic c4 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Getter not found: 'constr'.
+  const dynamic c4 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Member not found: 'constr'.
   const v2 = MyClass<int>.constr;
                           ^^^^^^";
-  const dynamic c5 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Getter not found: 'new'.
+  const dynamic c5 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Member not found: 'new'.
   const v3 = MyClass<int>.new;
                           ^^^";
-  const dynamic c6 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:16:30: Error: Getter not found: 'constr'.
+  const dynamic c6 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:16:30: Error: Member not found: 'constr'.
   const v4 = MyClass<String>.constr;
                              ^^^^^^";
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_38415.crash_dart.weak.expect b/pkg/front_end/testcases/general/error_recovery/issue_38415.crash_dart.weak.expect
index 090d771..75defa5 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_38415.crash_dart.weak.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_38415.crash_dart.weak.expect
@@ -30,7 +30,7 @@
 // f() { m(T<R(<Z
 //           ^
 //
-// pkg/front_end/testcases/general/error_recovery/issue_38415.crash_dart:1:9: Error: Getter not found: 'T'.
+// pkg/front_end/testcases/general/error_recovery/issue_38415.crash_dart:1:9: Error: Undefined name 'T'.
 // f() { m(T<R(<Z
 //         ^
 //
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_38415.crash_dart.weak.transformed.expect b/pkg/front_end/testcases/general/error_recovery/issue_38415.crash_dart.weak.transformed.expect
index 090d771..75defa5 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_38415.crash_dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_38415.crash_dart.weak.transformed.expect
@@ -30,7 +30,7 @@
 // f() { m(T<R(<Z
 //           ^
 //
-// pkg/front_end/testcases/general/error_recovery/issue_38415.crash_dart:1:9: Error: Getter not found: 'T'.
+// pkg/front_end/testcases/general/error_recovery/issue_38415.crash_dart:1:9: Error: Undefined name 'T'.
 // f() { m(T<R(<Z
 //         ^
 //
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart.weak.expect b/pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart.weak.expect
index f95db15..c1350db 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart.weak.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart.weak.expect
@@ -44,7 +44,7 @@
 // () async => a b < c $? >
 //             ^
 //
-// pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart:1:13: Error: Getter not found: 'a'.
+// pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart:1:13: Error: Undefined name 'a'.
 // () async => a b < c $? >
 //             ^
 //
@@ -55,6 +55,6 @@
 import self as self;
 
 static method async() → dynamic
-  return invalid-expression "pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart:1:13: Error: Getter not found: 'a'.
+  return invalid-expression "pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart:1:13: Error: Undefined name 'a'.
 () async => a b < c \$? >
             ^";
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart.weak.transformed.expect b/pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart.weak.transformed.expect
index f95db15..c1350db 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart.weak.transformed.expect
@@ -44,7 +44,7 @@
 // () async => a b < c $? >
 //             ^
 //
-// pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart:1:13: Error: Getter not found: 'a'.
+// pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart:1:13: Error: Undefined name 'a'.
 // () async => a b < c $? >
 //             ^
 //
@@ -55,6 +55,6 @@
 import self as self;
 
 static method async() → dynamic
-  return invalid-expression "pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart:1:13: Error: Getter not found: 'a'.
+  return invalid-expression "pkg/front_end/testcases/general/error_recovery/issue_39202.crash_dart:1:13: Error: Undefined name 'a'.
 () async => a b < c \$? >
             ^";
diff --git a/pkg/front_end/testcases/general/implicit_new.dart.weak.expect b/pkg/front_end/testcases/general/implicit_new.dart.weak.expect
index e9f09b2..908fc59 100644
--- a/pkg/front_end/testcases/general/implicit_new.dart.weak.expect
+++ b/pkg/front_end/testcases/general/implicit_new.dart.weak.expect
@@ -2,11 +2,11 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/implicit_new.dart:18:18: Error: Method not found: 'Bar'.
+// pkg/front_end/testcases/general/implicit_new.dart:18:18: Error: Couldn't find constructor 'Bar'.
 //   var y = prefix.Bar();
 //                  ^^^
 //
-// pkg/front_end/testcases/general/implicit_new.dart:19:10: Error: Method not found: 'Bar'.
+// pkg/front_end/testcases/general/implicit_new.dart:19:10: Error: Couldn't find constructor 'Bar'.
 //   prefix.Bar();
 //          ^^^
 //
@@ -68,10 +68,10 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method testNSM() → dynamic {
-  invalid-type y = invalid-expression "pkg/front_end/testcases/general/implicit_new.dart:18:18: Error: Method not found: 'Bar'.
+  invalid-type y = invalid-expression "pkg/front_end/testcases/general/implicit_new.dart:18:18: Error: Couldn't find constructor 'Bar'.
   var y = prefix.Bar();
                  ^^^";
-  invalid-expression "pkg/front_end/testcases/general/implicit_new.dart:19:10: Error: Method not found: 'Bar'.
+  invalid-expression "pkg/front_end/testcases/general/implicit_new.dart:19:10: Error: Couldn't find constructor 'Bar'.
   prefix.Bar();
          ^^^";
 }
diff --git a/pkg/front_end/testcases/general/implicit_new.dart.weak.transformed.expect b/pkg/front_end/testcases/general/implicit_new.dart.weak.transformed.expect
index c30eb58..3e77916 100644
--- a/pkg/front_end/testcases/general/implicit_new.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/implicit_new.dart.weak.transformed.expect
@@ -2,11 +2,11 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/implicit_new.dart:18:18: Error: Method not found: 'Bar'.
+// pkg/front_end/testcases/general/implicit_new.dart:18:18: Error: Couldn't find constructor 'Bar'.
 //   var y = prefix.Bar();
 //                  ^^^
 //
-// pkg/front_end/testcases/general/implicit_new.dart:19:10: Error: Method not found: 'Bar'.
+// pkg/front_end/testcases/general/implicit_new.dart:19:10: Error: Couldn't find constructor 'Bar'.
 //   prefix.Bar();
 //          ^^^
 //
@@ -68,10 +68,10 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method testNSM() → dynamic {
-  invalid-type y = invalid-expression "pkg/front_end/testcases/general/implicit_new.dart:18:18: Error: Method not found: 'Bar'.
+  invalid-type y = invalid-expression "pkg/front_end/testcases/general/implicit_new.dart:18:18: Error: Couldn't find constructor 'Bar'.
   var y = prefix.Bar();
                  ^^^";
-  invalid-expression "pkg/front_end/testcases/general/implicit_new.dart:19:10: Error: Method not found: 'Bar'.
+  invalid-expression "pkg/front_end/testcases/general/implicit_new.dart:19:10: Error: Couldn't find constructor 'Bar'.
   prefix.Bar();
          ^^^";
 }
diff --git a/pkg/front_end/testcases/general/implicit_new2.dart b/pkg/front_end/testcases/general/implicit_new2.dart
new file mode 100644
index 0000000..4693379
--- /dev/null
+++ b/pkg/front_end/testcases/general/implicit_new2.dart
@@ -0,0 +1,51 @@
+// 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 'dart:async';
+
+void voidValue = null;
+
+void main() {
+  test1();
+  test2();
+  test3();
+  test4();
+  test5();
+  test6();
+}
+
+// Testing that a block bodied function may have no return
+FutureOr<FutureOr<void>> test1() {}
+
+// Testing that a block bodied function may return Future<void>
+FutureOr<FutureOr<void>> test2() {
+  return Future<void>.value(0);
+}
+
+// Testing that a block bodied function may return FutureOr<void>
+FutureOr<FutureOr<void>> test3() {
+  return null as FutureOr<void>;
+}
+
+// Testing that a block bodied function may return Futu``re<void>
+FutureOr<FutureOr<void>> test4() {
+  return Future<Future<void>>.value(Future<void>.value(null));
+}
+
+// Testing that a block bodied function may return non-void values
+FutureOr<FutureOr<void>> test5() {
+  return 42;
+}
+
+// Testing that a block bodied function may return non-void Future values
+FutureOr<FutureOr<void>> test6() {
+  return new Future.value(42);
+}
+
+// Testing that a block bodied function may return overly nested Future
+// values, because `Future` is a subtype of `void`.
+FutureOr<FutureOr<void>> test() {
+  return Future<Future<Future<void>>>.value(
+      Future<Future<void>>.value(Future<void>.value(null)));
+}
diff --git a/pkg/front_end/testcases/general/implicit_new2.dart.textual_outline.expect b/pkg/front_end/testcases/general/implicit_new2.dart.textual_outline.expect
new file mode 100644
index 0000000..9d731c3
--- /dev/null
+++ b/pkg/front_end/testcases/general/implicit_new2.dart.textual_outline.expect
@@ -0,0 +1,11 @@
+import 'dart:async';
+
+void voidValue = null;
+void main() {}
+FutureOr<FutureOr<void>> test1() {}
+FutureOr<FutureOr<void>> test2() {}
+FutureOr<FutureOr<void>> test3() {}
+FutureOr<FutureOr<void>> test4() {}
+FutureOr<FutureOr<void>> test5() {}
+FutureOr<FutureOr<void>> test6() {}
+FutureOr<FutureOr<void>> test() {}
diff --git a/pkg/front_end/testcases/general/implicit_new2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/implicit_new2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..a271d02
--- /dev/null
+++ b/pkg/front_end/testcases/general/implicit_new2.dart.textual_outline_modelled.expect
@@ -0,0 +1,11 @@
+import 'dart:async';
+
+FutureOr<FutureOr<void>> test() {}
+FutureOr<FutureOr<void>> test1() {}
+FutureOr<FutureOr<void>> test2() {}
+FutureOr<FutureOr<void>> test3() {}
+FutureOr<FutureOr<void>> test4() {}
+FutureOr<FutureOr<void>> test5() {}
+FutureOr<FutureOr<void>> test6() {}
+void main() {}
+void voidValue = null;
diff --git a/pkg/front_end/testcases/general/implicit_new2.dart.weak.expect b/pkg/front_end/testcases/general/implicit_new2.dart.weak.expect
new file mode 100644
index 0000000..8602f0b
--- /dev/null
+++ b/pkg/front_end/testcases/general/implicit_new2.dart.weak.expect
@@ -0,0 +1,34 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:async" as asy;
+
+import "dart:async";
+
+static field void voidValue = null;
+static method main() → void {
+  self::test1();
+  self::test2();
+  self::test3();
+  self::test4();
+  self::test5();
+  self::test6();
+}
+static method test1() → FutureOr<FutureOr<void>> {}
+static method test2() → FutureOr<FutureOr<void>> {
+  return asy::Future::value<void>(0);
+}
+static method test3() → FutureOr<FutureOr<void>> {
+  return null as{ForNonNullableByDefault} FutureOr<void>;
+}
+static method test4() → FutureOr<FutureOr<void>> {
+  return asy::Future::value<asy::Future<void>>(asy::Future::value<void>(null));
+}
+static method test5() → FutureOr<FutureOr<void>> {
+  return 42;
+}
+static method test6() → FutureOr<FutureOr<void>> {
+  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.outline.expect b/pkg/front_end/testcases/general/implicit_new2.dart.weak.outline.expect
new file mode 100644
index 0000000..9cf43ff
--- /dev/null
+++ b/pkg/front_end/testcases/general/implicit_new2.dart.weak.outline.expect
@@ -0,0 +1,22 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+
+import "dart:async";
+
+static field void voidValue;
+static method main() → void
+  ;
+static method test1() → FutureOr<FutureOr<void>>
+  ;
+static method test2() → FutureOr<FutureOr<void>>
+  ;
+static method test3() → FutureOr<FutureOr<void>>
+  ;
+static method test4() → FutureOr<FutureOr<void>>
+  ;
+static method test5() → FutureOr<FutureOr<void>>
+  ;
+static method test6() → FutureOr<FutureOr<void>>
+  ;
+static method test() → FutureOr<FutureOr<void>>
+  ;
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
new file mode 100644
index 0000000..c8bea67
--- /dev/null
+++ b/pkg/front_end/testcases/general/implicit_new2.dart.weak.transformed.expect
@@ -0,0 +1,34 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:async" as asy;
+
+import "dart:async";
+
+static field void voidValue = null;
+static method main() → void {
+  self::test1();
+  self::test2();
+  self::test3();
+  self::test4();
+  self::test5();
+  self::test6();
+}
+static method test1() → FutureOr<FutureOr<void>> {}
+static method test2() → FutureOr<FutureOr<void>> {
+  return asy::Future::value<void>(0);
+}
+static method test3() → FutureOr<FutureOr<void>> {
+  return null;
+}
+static method test4() → FutureOr<FutureOr<void>> {
+  return asy::Future::value<asy::Future<void>>(asy::Future::value<void>(null));
+}
+static method test5() → FutureOr<FutureOr<void>> {
+  return 42;
+}
+static method test6() → FutureOr<FutureOr<void>> {
+  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/invocations.dart.weak.expect b/pkg/front_end/testcases/general/invocations.dart.weak.expect
index 8e76167..64be843 100644
--- a/pkg/front_end/testcases/general/invocations.dart.weak.expect
+++ b/pkg/front_end/testcases/general/invocations.dart.weak.expect
@@ -6,15 +6,15 @@
 //   z("Hello, World!");
 //   ^
 //
-// pkg/front_end/testcases/general/invocations.dart:8:3: Error: Getter not found: 'z'.
+// pkg/front_end/testcases/general/invocations.dart:8:3: Error: Undefined name 'z'.
 //   z.print("Hello, World!");
 //   ^
 //
-// pkg/front_end/testcases/general/invocations.dart:9:3: Error: Getter not found: 'y'.
+// pkg/front_end/testcases/general/invocations.dart:9:3: Error: Undefined name 'y'.
 //   y.z.print("Hello, World!");
 //   ^
 //
-// pkg/front_end/testcases/general/invocations.dart:10:3: Error: Getter not found: 'x'.
+// pkg/front_end/testcases/general/invocations.dart:10:3: Error: Undefined name 'x'.
 //   x.y.z.print("Hello, World!");
 //   ^
 //
@@ -22,15 +22,15 @@
 //       z("Hello, World!") +
 //       ^
 //
-// pkg/front_end/testcases/general/invocations.dart:15:7: Error: Getter not found: 'z'.
+// pkg/front_end/testcases/general/invocations.dart:15:7: Error: Undefined name 'z'.
 //       z.print("Hello, World!") +
 //       ^
 //
-// pkg/front_end/testcases/general/invocations.dart:16:7: Error: Getter not found: 'y'.
+// pkg/front_end/testcases/general/invocations.dart:16:7: Error: Undefined name 'y'.
 //       y.z.print("Hello, World!") +
 //       ^
 //
-// pkg/front_end/testcases/general/invocations.dart:17:7: Error: Getter not found: 'x'.
+// pkg/front_end/testcases/general/invocations.dart:17:7: Error: Undefined name 'x'.
 //       x.y.z.print("Hello, World!");
 //       ^
 //
@@ -46,24 +46,24 @@
   invalid-expression "pkg/front_end/testcases/general/invocations.dart:7:3: Error: Method not found: 'z'.
   z(\"Hello, World!\");
   ^";
-  invalid-expression "pkg/front_end/testcases/general/invocations.dart:8:3: Error: Getter not found: 'z'.
+  invalid-expression "pkg/front_end/testcases/general/invocations.dart:8:3: Error: Undefined name 'z'.
   z.print(\"Hello, World!\");
   ^"{dynamic}.print("Hello, World!");
-  invalid-expression "pkg/front_end/testcases/general/invocations.dart:9:3: Error: Getter not found: 'y'.
+  invalid-expression "pkg/front_end/testcases/general/invocations.dart:9:3: Error: Undefined name 'y'.
   y.z.print(\"Hello, World!\");
   ^"{<invalid>}.z{dynamic}.print("Hello, World!");
-  invalid-expression "pkg/front_end/testcases/general/invocations.dart:10:3: Error: Getter not found: 'x'.
+  invalid-expression "pkg/front_end/testcases/general/invocations.dart:10:3: Error: Undefined name 'x'.
   x.y.z.print(\"Hello, World!\");
   ^"{<invalid>}.y{<invalid>}.z{dynamic}.print("Hello, World!");
   1.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:13:7: Error: This expression has type 'void' and can't be used.
       print(\"Hello, World!\") +
       ^" in core::print("Hello, World!")){(core::num*) →* core::num*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:14:7: Error: Method not found: 'z'.
       z(\"Hello, World!\") +
-      ^"){(core::num*) →* core::num*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:15:7: Error: Getter not found: 'z'.
+      ^"){(core::num*) →* core::num*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:15:7: Error: Undefined name 'z'.
       z.print(\"Hello, World!\") +
-      ^"{dynamic}.print("Hello, World!") as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:16:7: Error: Getter not found: 'y'.
+      ^"{dynamic}.print("Hello, World!") as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:16:7: Error: Undefined name 'y'.
       y.z.print(\"Hello, World!\") +
-      ^"{<invalid>}.z{dynamic}.print("Hello, World!") as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:17:7: Error: Getter not found: 'x'.
+      ^"{<invalid>}.z{dynamic}.print("Hello, World!") as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:17:7: Error: Undefined name 'x'.
       x.y.z.print(\"Hello, World!\");
       ^"{<invalid>}.y{<invalid>}.z{dynamic}.print("Hello, World!") as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
 }
diff --git a/pkg/front_end/testcases/general/invocations.dart.weak.transformed.expect b/pkg/front_end/testcases/general/invocations.dart.weak.transformed.expect
index 8e76167..64be843 100644
--- a/pkg/front_end/testcases/general/invocations.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/invocations.dart.weak.transformed.expect
@@ -6,15 +6,15 @@
 //   z("Hello, World!");
 //   ^
 //
-// pkg/front_end/testcases/general/invocations.dart:8:3: Error: Getter not found: 'z'.
+// pkg/front_end/testcases/general/invocations.dart:8:3: Error: Undefined name 'z'.
 //   z.print("Hello, World!");
 //   ^
 //
-// pkg/front_end/testcases/general/invocations.dart:9:3: Error: Getter not found: 'y'.
+// pkg/front_end/testcases/general/invocations.dart:9:3: Error: Undefined name 'y'.
 //   y.z.print("Hello, World!");
 //   ^
 //
-// pkg/front_end/testcases/general/invocations.dart:10:3: Error: Getter not found: 'x'.
+// pkg/front_end/testcases/general/invocations.dart:10:3: Error: Undefined name 'x'.
 //   x.y.z.print("Hello, World!");
 //   ^
 //
@@ -22,15 +22,15 @@
 //       z("Hello, World!") +
 //       ^
 //
-// pkg/front_end/testcases/general/invocations.dart:15:7: Error: Getter not found: 'z'.
+// pkg/front_end/testcases/general/invocations.dart:15:7: Error: Undefined name 'z'.
 //       z.print("Hello, World!") +
 //       ^
 //
-// pkg/front_end/testcases/general/invocations.dart:16:7: Error: Getter not found: 'y'.
+// pkg/front_end/testcases/general/invocations.dart:16:7: Error: Undefined name 'y'.
 //       y.z.print("Hello, World!") +
 //       ^
 //
-// pkg/front_end/testcases/general/invocations.dart:17:7: Error: Getter not found: 'x'.
+// pkg/front_end/testcases/general/invocations.dart:17:7: Error: Undefined name 'x'.
 //       x.y.z.print("Hello, World!");
 //       ^
 //
@@ -46,24 +46,24 @@
   invalid-expression "pkg/front_end/testcases/general/invocations.dart:7:3: Error: Method not found: 'z'.
   z(\"Hello, World!\");
   ^";
-  invalid-expression "pkg/front_end/testcases/general/invocations.dart:8:3: Error: Getter not found: 'z'.
+  invalid-expression "pkg/front_end/testcases/general/invocations.dart:8:3: Error: Undefined name 'z'.
   z.print(\"Hello, World!\");
   ^"{dynamic}.print("Hello, World!");
-  invalid-expression "pkg/front_end/testcases/general/invocations.dart:9:3: Error: Getter not found: 'y'.
+  invalid-expression "pkg/front_end/testcases/general/invocations.dart:9:3: Error: Undefined name 'y'.
   y.z.print(\"Hello, World!\");
   ^"{<invalid>}.z{dynamic}.print("Hello, World!");
-  invalid-expression "pkg/front_end/testcases/general/invocations.dart:10:3: Error: Getter not found: 'x'.
+  invalid-expression "pkg/front_end/testcases/general/invocations.dart:10:3: Error: Undefined name 'x'.
   x.y.z.print(\"Hello, World!\");
   ^"{<invalid>}.y{<invalid>}.z{dynamic}.print("Hello, World!");
   1.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:13:7: Error: This expression has type 'void' and can't be used.
       print(\"Hello, World!\") +
       ^" in core::print("Hello, World!")){(core::num*) →* core::num*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:14:7: Error: Method not found: 'z'.
       z(\"Hello, World!\") +
-      ^"){(core::num*) →* core::num*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:15:7: Error: Getter not found: 'z'.
+      ^"){(core::num*) →* core::num*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:15:7: Error: Undefined name 'z'.
       z.print(\"Hello, World!\") +
-      ^"{dynamic}.print("Hello, World!") as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:16:7: Error: Getter not found: 'y'.
+      ^"{dynamic}.print("Hello, World!") as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:16:7: Error: Undefined name 'y'.
       y.z.print(\"Hello, World!\") +
-      ^"{<invalid>}.z{dynamic}.print("Hello, World!") as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:17:7: Error: Getter not found: 'x'.
+      ^"{<invalid>}.z{dynamic}.print("Hello, World!") as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:17:7: Error: Undefined name 'x'.
       x.y.z.print(\"Hello, World!\");
       ^"{<invalid>}.y{<invalid>}.z{dynamic}.print("Hello, World!") as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
 }
diff --git a/pkg/front_end/testcases/general/issue37776.dart.weak.expect b/pkg/front_end/testcases/general/issue37776.dart.weak.expect
index 4e2c5cc..7840a4b 100644
--- a/pkg/front_end/testcases/general/issue37776.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue37776.dart.weak.expect
@@ -9,7 +9,7 @@
 // class X {
 //       ^
 //
-// pkg/front_end/testcases/general/issue37776.dart:16:9: Error: Method not found: 'X.foo'.
+// pkg/front_end/testcases/general/issue37776.dart:16:9: Error: Couldn't find constructor 'X.foo'.
 //   const X.foo();
 //         ^^^
 //
@@ -47,7 +47,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → void {
-  invalid-expression "pkg/front_end/testcases/general/issue37776.dart:16:9: Error: Method not found: 'X.foo'.
+  invalid-expression "pkg/front_end/testcases/general/issue37776.dart:16:9: Error: Couldn't find constructor 'X.foo'.
   const X.foo();
         ^^^";
 }
diff --git a/pkg/front_end/testcases/general/issue37776.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue37776.dart.weak.transformed.expect
index 4e2c5cc..7840a4b 100644
--- a/pkg/front_end/testcases/general/issue37776.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue37776.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
 // class X {
 //       ^
 //
-// pkg/front_end/testcases/general/issue37776.dart:16:9: Error: Method not found: 'X.foo'.
+// pkg/front_end/testcases/general/issue37776.dart:16:9: Error: Couldn't find constructor 'X.foo'.
 //   const X.foo();
 //         ^^^
 //
@@ -47,7 +47,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → void {
-  invalid-expression "pkg/front_end/testcases/general/issue37776.dart:16:9: Error: Method not found: 'X.foo'.
+  invalid-expression "pkg/front_end/testcases/general/issue37776.dart:16:9: Error: Couldn't find constructor 'X.foo'.
   const X.foo();
         ^^^";
 }
diff --git a/pkg/front_end/testcases/general/issue46719.dart b/pkg/front_end/testcases/general/issue46719.dart
new file mode 100644
index 0000000..8d0a6b9
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46719.dart
@@ -0,0 +1,38 @@
+// 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 'issue46719.dart' as self;
+
+class A<T> {
+  A();
+  A.named();
+
+  List<X> m<X>(X x) => [x];
+
+  static List<X> n<X>(X x) => [x];
+}
+
+List<X> m<X>(X x) => [x];
+
+extension FunctionApplier on Function {
+  void applyAndPrint(List<Object?> positionalArguments) =>
+      print(Function.apply(this, positionalArguments, const {}));
+}
+
+test() {
+  var a = A();
+  a.m<int>.applyAndPrint([2]);
+  a.m<String>.applyAndPrint(['three']);
+  A.n<int>.applyAndPrint([2]);
+  A.n<String>.applyAndPrint(['three']);
+  self.m<int>.applyAndPrint([2]);
+  self.m<String>.applyAndPrint(['three']);
+  self.A.n<int>.applyAndPrint([2]);
+  self.A.n<String>.applyAndPrint(['three']);
+  A.named.toString();
+  A<int>.named.toString();
+  A.named<int>.toString();
+}
+
+void main() {}
\ No newline at end of file
diff --git a/pkg/front_end/testcases/general/issue46719.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue46719.dart.textual_outline.expect
new file mode 100644
index 0000000..9bf5384
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46719.dart.textual_outline.expect
@@ -0,0 +1,18 @@
+import 'issue46719.dart' as self;
+
+class A<T> {
+  A();
+  A.named();
+  List<X> m<X>(X x) => [x];
+  static List<X> n<X>(X x) => [x];
+}
+
+List<X> m<X>(X x) => [x];
+
+extension FunctionApplier on Function {
+  void applyAndPrint(List<Object?> positionalArguments) =>
+      print(Function.apply(this, positionalArguments, const {}));
+}
+
+test() {}
+void main() {}
diff --git a/pkg/front_end/testcases/general/issue46719.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue46719.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..7d3a93d
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46719.dart.textual_outline_modelled.expect
@@ -0,0 +1,18 @@
+import 'issue46719.dart' as self;
+
+List<X> m<X>(X x) => [x];
+
+class A<T> {
+  A();
+  A.named();
+  List<X> m<X>(X x) => [x];
+  static List<X> n<X>(X x) => [x];
+}
+
+extension FunctionApplier on Function {
+  void applyAndPrint(List<Object?> positionalArguments) =>
+      print(Function.apply(this, positionalArguments, const {}));
+}
+
+test() {}
+void main() {}
diff --git a/pkg/front_end/testcases/general/issue46719.dart.weak.expect b/pkg/front_end/testcases/general/issue46719.dart.weak.expect
new file mode 100644
index 0000000..c76f68a
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46719.dart.weak.expect
@@ -0,0 +1,136 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue46719.dart:25:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
+//   a.m<int>.applyAndPrint([2]);
+//   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/issue46719.dart:26:3: Error: Couldn't find constructor 'a.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'.
+//   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'.
+//   A.n<String>.applyAndPrint(['three']);
+//               ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/issue46719.dart:29:3: 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'.
+//   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'.
+//   self.A.n<int>.applyAndPrint([2]);
+//           ^
+//
+// pkg/front_end/testcases/general/issue46719.dart:32: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'.
+//   self.A.n<String>.applyAndPrint(['three']);
+//           ^
+//
+// pkg/front_end/testcases/general/issue46719.dart:33:5: Error: Member not found: 'named'.
+//   A.named.toString();
+//     ^^^^^
+//
+// pkg/front_end/testcases/general/issue46719.dart:34:4: 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'.
+//   A<int>.named.toString();
+//    ^
+//
+// pkg/front_end/testcases/general/issue46719.dart:34:10: Error: Member not found: 'named'.
+//   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.
+//   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;
+
+import "org-dartlang-testcase:///issue46719.dart" as self;
+
+class A<T extends core::Object? = dynamic> extends core::Object {
+  constructor •() → self::A<self::A::T%>
+    : super core::Object::•()
+    ;
+  constructor named() → self::A<self::A::T%>
+    : super core::Object::•()
+    ;
+  method m<X extends core::Object? = dynamic>(self::A::m::X% x) → core::List<self::A::m::X%>
+    return <self::A::m::X%>[x];
+  static method n<X extends core::Object? = dynamic>(self::A::n::X% x) → core::List<self::A::n::X%>
+    return <self::A::n::X%>[x];
+}
+extension FunctionApplier on core::Function {
+  method applyAndPrint = self::FunctionApplier|applyAndPrint;
+  tearoff applyAndPrint = self::FunctionApplier|get#applyAndPrint;
+}
+static method m<X extends core::Object? = dynamic>(self::m::X% x) → core::List<self::m::X%>
+  return <self::m::X%>[x];
+static method FunctionApplier|applyAndPrint(lowered final core::Function #this, core::List<core::Object?> positionalArguments) → void
+  return core::print(core::Function::apply(#this, positionalArguments, #C2));
+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 {
+  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'.
+  a.m<int>.applyAndPrint([2]);
+  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:26:3: Error: Couldn't find constructor 'a.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'.
+  A.n<int>.applyAndPrint([2]);
+           ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'A.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'.
+  self.m<int>.applyAndPrint([2]);
+  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:30:3: 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'.
+  A.named.toString();
+    ^^^^^".{core::Object::toString}(){() → core::String};
+  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'.
+  A.named<int>.toString();
+               ^^^^^^^^";
+}
+static method main() → void {}
+
+constants  {
+  #C1 = <dynamic>[]
+  #C2 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C1}
+  #C3 = static-tearoff self::A::n
+}
diff --git a/pkg/front_end/testcases/general/issue46719.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue46719.dart.weak.outline.expect
new file mode 100644
index 0000000..3e96d18
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46719.dart.weak.outline.expect
@@ -0,0 +1,30 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///issue46719.dart" as self;
+
+class A<T extends core::Object? = dynamic> extends core::Object {
+  constructor •() → self::A<self::A::T%>
+    ;
+  constructor named() → self::A<self::A::T%>
+    ;
+  method m<X extends core::Object? = dynamic>(self::A::m::X% x) → core::List<self::A::m::X%>
+    ;
+  static method n<X extends core::Object? = dynamic>(self::A::n::X% x) → core::List<self::A::n::X%>
+    ;
+}
+extension FunctionApplier on core::Function {
+  method applyAndPrint = self::FunctionApplier|applyAndPrint;
+  tearoff applyAndPrint = self::FunctionApplier|get#applyAndPrint;
+}
+static method m<X extends core::Object? = dynamic>(self::m::X% x) → core::List<self::m::X%>
+  ;
+static method FunctionApplier|applyAndPrint(lowered final core::Function #this, core::List<core::Object?> positionalArguments) → void
+  ;
+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
+  ;
+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
new file mode 100644
index 0000000..f0fc296
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46719.dart.weak.transformed.expect
@@ -0,0 +1,136 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue46719.dart:25:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
+//   a.m<int>.applyAndPrint([2]);
+//   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/issue46719.dart:26:3: Error: Couldn't find constructor 'a.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'.
+//   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'.
+//   A.n<String>.applyAndPrint(['three']);
+//               ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/issue46719.dart:29:3: 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'.
+//   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'.
+//   self.A.n<int>.applyAndPrint([2]);
+//           ^
+//
+// pkg/front_end/testcases/general/issue46719.dart:32: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'.
+//   self.A.n<String>.applyAndPrint(['three']);
+//           ^
+//
+// pkg/front_end/testcases/general/issue46719.dart:33:5: Error: Member not found: 'named'.
+//   A.named.toString();
+//     ^^^^^
+//
+// pkg/front_end/testcases/general/issue46719.dart:34:4: 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'.
+//   A<int>.named.toString();
+//    ^
+//
+// pkg/front_end/testcases/general/issue46719.dart:34:10: Error: Member not found: 'named'.
+//   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.
+//   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;
+
+import "org-dartlang-testcase:///issue46719.dart" as self;
+
+class A<T extends core::Object? = dynamic> extends core::Object {
+  constructor •() → self::A<self::A::T%>
+    : super core::Object::•()
+    ;
+  constructor named() → self::A<self::A::T%>
+    : super core::Object::•()
+    ;
+  method m<X extends core::Object? = dynamic>(self::A::m::X% x) → core::List<self::A::m::X%>
+    return core::_GrowableList::_literal1<self::A::m::X%>(x);
+  static method n<X extends core::Object? = dynamic>(self::A::n::X% x) → core::List<self::A::n::X%>
+    return core::_GrowableList::_literal1<self::A::n::X%>(x);
+}
+extension FunctionApplier on core::Function {
+  method applyAndPrint = self::FunctionApplier|applyAndPrint;
+  tearoff applyAndPrint = self::FunctionApplier|get#applyAndPrint;
+}
+static method m<X extends core::Object? = dynamic>(self::m::X% x) → core::List<self::m::X%>
+  return core::_GrowableList::_literal1<self::m::X%>(x);
+static method FunctionApplier|applyAndPrint(lowered final core::Function #this, core::List<core::Object?> positionalArguments) → void
+  return core::print(core::Function::apply(#this, positionalArguments, #C2));
+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 {
+  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'.
+  a.m<int>.applyAndPrint([2]);
+  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:26:3: Error: Couldn't find constructor 'a.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'.
+  A.n<int>.applyAndPrint([2]);
+           ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'A.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'.
+  self.m<int>.applyAndPrint([2]);
+  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:30:3: 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'.
+  A.named.toString();
+    ^^^^^".{core::Object::toString}(){() → core::String};
+  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'.
+  A.named<int>.toString();
+               ^^^^^^^^";
+}
+static method main() → void {}
+
+constants  {
+  #C1 = <dynamic>[]
+  #C2 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C1}
+  #C3 = static-tearoff self::A::n
+}
diff --git a/pkg/front_end/testcases/general/issue46956.dart b/pkg/front_end/testcases/general/issue46956.dart
new file mode 100644
index 0000000..4211b23
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46956.dart
@@ -0,0 +1,28 @@
+// 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 'dart:async';
+
+class A<X> {}
+
+Future<X?> foo<X extends Object?>(A<X> x) => throw 42;
+
+bar(String? y) {}
+
+test(A<String> a) async {
+  final x = await () async {
+    return foo(a);
+  }();
+  bar(x); // Ok.
+}
+
+test2(A<String> a) async {
+  return /*@typeArgs=String*/ foo(a);
+}
+
+test3(A<String> a) {
+  return /*@typeArgs=String*/ foo(a);
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/issue46956.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue46956.dart.textual_outline.expect
new file mode 100644
index 0000000..c1dd88b
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46956.dart.textual_outline.expect
@@ -0,0 +1,10 @@
+import 'dart:async';
+
+class A<X> {}
+
+Future<X?> foo<X extends Object?>(A<X> x) => throw 42;
+bar(String? y) {}
+test(A<String> a) async {}
+test2(A<String> a) async {}
+test3(A<String> a) {}
+main() {}
diff --git a/pkg/front_end/testcases/general/issue46956.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue46956.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..1c9542b
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46956.dart.textual_outline_modelled.expect
@@ -0,0 +1,11 @@
+import 'dart:async';
+
+Future<X?> foo<X extends Object?>(A<X> x) => throw 42;
+bar(String? y) {}
+
+class A<X> {}
+
+main() {}
+test(A<String> a) async {}
+test2(A<String> a) async {}
+test3(A<String> a) {}
diff --git a/pkg/front_end/testcases/general/issue46956.dart.weak.expect b/pkg/front_end/testcases/general/issue46956.dart.weak.expect
new file mode 100644
index 0000000..eb4a9a3
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46956.dart.weak.expect
@@ -0,0 +1,28 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+import "dart:async" as asy;
+
+import "dart:async";
+
+class A<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X%>
+    : super core::Object::•()
+    ;
+}
+static method foo<X extends core::Object?>(self::A<self::foo::X%> x) → asy::Future<self::foo::X?>
+  return throw 42;
+static method bar(core::String? y) → dynamic {}
+static method test(self::A<core::String> a) → dynamic async {
+  final core::String? x = await(() → asy::Future<core::String?> async {
+    return self::foo<core::String>(a);
+  })(){() → asy::Future<core::String?>};
+  self::bar(x);
+}
+static method test2(self::A<core::String> a) → dynamic async {
+  return self::foo<core::String>(a);
+}
+static method test3(self::A<core::String> a) → dynamic {
+  return self::foo<core::String>(a);
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue46956.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue46956.dart.weak.outline.expect
new file mode 100644
index 0000000..8c2c744
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46956.dart.weak.outline.expect
@@ -0,0 +1,23 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+import "dart:async" as asy;
+
+import "dart:async";
+
+class A<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X%>
+    ;
+}
+static method foo<X extends core::Object?>(self::A<self::foo::X%> x) → asy::Future<self::foo::X?>
+  ;
+static method bar(core::String? y) → dynamic
+  ;
+static method test(self::A<core::String> a) → dynamic async 
+  ;
+static method test2(self::A<core::String> a) → dynamic async 
+  ;
+static method test3(self::A<core::String> a) → dynamic
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/issue46956.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue46956.dart.weak.transformed.expect
new file mode 100644
index 0000000..ba98fca
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46956.dart.weak.transformed.expect
@@ -0,0 +1,102 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+import "dart:async" as asy;
+import "dart:_internal" as _in;
+
+import "dart:async";
+
+class A<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X%>
+    : super core::Object::•()
+    ;
+}
+static method foo<X extends core::Object?>(self::A<self::foo::X%> x) → asy::Future<self::foo::X?>
+  return throw 42;
+static method bar(core::String? y) → dynamic {}
+static method test(self::A<core::String> a) → dynamic /* originally async */ {
+  final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
+  core::bool* :is_sync = false;
+  FutureOr<dynamic>? :return_value;
+  (dynamic) → dynamic :async_op_then;
+  (core::Object, core::StackTrace) → dynamic :async_op_error;
+  core::int :await_jump_var = 0;
+  dynamic :await_ctx_var;
+  dynamic :saved_try_context_var0;
+  function :async_op([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding 
+    try {
+      #L1:
+      {
+        [yield] let dynamic #t1 = asy::_awaitHelper((() → asy::Future<core::String?> /* originally async */ {
+          final asy::_Future<core::String?> :async_future = new asy::_Future::•<core::String?>();
+          core::bool* :is_sync = false;
+          FutureOr<core::String?>? :return_value;
+          (dynamic) → dynamic :async_op_then;
+          (core::Object, core::StackTrace) → dynamic :async_op_error;
+          core::int :await_jump_var = 0;
+          dynamic :await_ctx_var;
+          function :async_op([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding 
+            try {
+              #L2:
+              {
+                :return_value = self::foo<core::String>(a);
+                break #L2;
+              }
+              asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
+              return;
+            }
+            on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+              asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
+            }
+          :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
+          :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
+          :async_op(){() → dynamic};
+          :is_sync = true;
+          return :async_future;
+        })(){() → asy::Future<core::String?>}, :async_op_then, :async_op_error, :async_op) in null;
+        final core::String? x = _in::unsafeCast<core::String?>(:result);
+        self::bar(x);
+      }
+      asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
+      return;
+    }
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
+    }
+  :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
+  :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
+  :async_op(){() → dynamic};
+  :is_sync = true;
+  return :async_future;
+}
+static method test2(self::A<core::String> a) → dynamic /* originally async */ {
+  final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
+  core::bool* :is_sync = false;
+  FutureOr<dynamic>? :return_value;
+  (dynamic) → dynamic :async_op_then;
+  (core::Object, core::StackTrace) → dynamic :async_op_error;
+  core::int :await_jump_var = 0;
+  dynamic :await_ctx_var;
+  function :async_op([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding 
+    try {
+      #L3:
+      {
+        :return_value = self::foo<core::String>(a);
+        break #L3;
+      }
+      asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
+      return;
+    }
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
+    }
+  :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
+  :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
+  :async_op(){() → dynamic};
+  :is_sync = true;
+  return :async_future;
+}
+static method test3(self::A<core::String> a) → dynamic {
+  return self::foo<core::String>(a);
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.expect b/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.expect
index 57f7ead..651a9c4 100644
--- a/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.expect
@@ -2,19 +2,19 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/super_access_in_initializer.dart:15:16: Error: Getter not found: 'property'.
+// pkg/front_end/testcases/general/super_access_in_initializer.dart:15:16: Error: Undefined name 'property'.
 //       : assert(property),
 //                ^^^^^^^^
 //
-// pkg/front_end/testcases/general/super_access_in_initializer.dart:16:22: Error: Getter not found: 'property'.
+// pkg/front_end/testcases/general/super_access_in_initializer.dart:16:22: Error: Undefined name 'property'.
 //         this.field = property,
 //                      ^^^^^^^^
 //
-// pkg/front_end/testcases/general/super_access_in_initializer.dart:17:15: Error: Getter not found: 'property'.
+// pkg/front_end/testcases/general/super_access_in_initializer.dart:17:15: Error: Undefined name 'property'.
 //         super(property);
 //               ^^^^^^^^
 //
-// pkg/front_end/testcases/general/super_access_in_initializer.dart:19:27: Error: Getter not found: 'property'.
+// pkg/front_end/testcases/general/super_access_in_initializer.dart:19:27: Error: Undefined name 'property'.
 //   Class.redirect() : this(property);
 //                           ^^^^^^^^
 //
@@ -41,16 +41,16 @@
 class Class extends self::Super {
   field core::bool* field;
   constructor •(core::bool* value) → self::Class*
-    : assert(invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:15:16: Error: Getter not found: 'property'.
+    : assert(invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:15:16: Error: Undefined name 'property'.
       : assert(property),
-               ^^^^^^^^"), self::Class::field = invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:16:22: Error: Getter not found: 'property'.
+               ^^^^^^^^"), self::Class::field = invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:16:22: Error: Undefined name 'property'.
         this.field = property,
-                     ^^^^^^^^", super self::Super::•(invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:17:15: Error: Getter not found: 'property'.
+                     ^^^^^^^^", super self::Super::•(invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:17:15: Error: Undefined name 'property'.
         super(property);
               ^^^^^^^^")
     ;
   constructor redirect() → self::Class*
-    : this self::Class::•(invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:19:27: Error: Getter not found: 'property'.
+    : this self::Class::•(invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:19:27: Error: Undefined name 'property'.
   Class.redirect() : this(property);
                           ^^^^^^^^")
     ;
diff --git a/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.transformed.expect
index 57f7ead..651a9c4 100644
--- a/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.transformed.expect
@@ -2,19 +2,19 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/super_access_in_initializer.dart:15:16: Error: Getter not found: 'property'.
+// pkg/front_end/testcases/general/super_access_in_initializer.dart:15:16: Error: Undefined name 'property'.
 //       : assert(property),
 //                ^^^^^^^^
 //
-// pkg/front_end/testcases/general/super_access_in_initializer.dart:16:22: Error: Getter not found: 'property'.
+// pkg/front_end/testcases/general/super_access_in_initializer.dart:16:22: Error: Undefined name 'property'.
 //         this.field = property,
 //                      ^^^^^^^^
 //
-// pkg/front_end/testcases/general/super_access_in_initializer.dart:17:15: Error: Getter not found: 'property'.
+// pkg/front_end/testcases/general/super_access_in_initializer.dart:17:15: Error: Undefined name 'property'.
 //         super(property);
 //               ^^^^^^^^
 //
-// pkg/front_end/testcases/general/super_access_in_initializer.dart:19:27: Error: Getter not found: 'property'.
+// pkg/front_end/testcases/general/super_access_in_initializer.dart:19:27: Error: Undefined name 'property'.
 //   Class.redirect() : this(property);
 //                           ^^^^^^^^
 //
@@ -41,16 +41,16 @@
 class Class extends self::Super {
   field core::bool* field;
   constructor •(core::bool* value) → self::Class*
-    : assert(invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:15:16: Error: Getter not found: 'property'.
+    : assert(invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:15:16: Error: Undefined name 'property'.
       : assert(property),
-               ^^^^^^^^"), self::Class::field = invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:16:22: Error: Getter not found: 'property'.
+               ^^^^^^^^"), self::Class::field = invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:16:22: Error: Undefined name 'property'.
         this.field = property,
-                     ^^^^^^^^", super self::Super::•(invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:17:15: Error: Getter not found: 'property'.
+                     ^^^^^^^^", super self::Super::•(invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:17:15: Error: Undefined name 'property'.
         super(property);
               ^^^^^^^^")
     ;
   constructor redirect() → self::Class*
-    : this self::Class::•(invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:19:27: Error: Getter not found: 'property'.
+    : this self::Class::•(invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:19:27: Error: Undefined name 'property'.
   Class.redirect() : this(property);
                           ^^^^^^^^")
     ;
diff --git a/pkg/front_end/testcases/general/tabs.dart.weak.expect b/pkg/front_end/testcases/general/tabs.dart.weak.expect
index 217aa32..c69fb6b 100644
--- a/pkg/front_end/testcases/general/tabs.dart.weak.expect
+++ b/pkg/front_end/testcases/general/tabs.dart.weak.expect
@@ -2,23 +2,23 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/tabs.dart:9:9: Error: Getter not found: 'one'.
+// pkg/front_end/testcases/general/tabs.dart:9:9: Error: Undefined name 'one'.
 //   print(one);
 //         ^^^
 //
-// pkg/front_end/testcases/general/tabs.dart:10:9: Error: Getter not found: 'two'.
+// pkg/front_end/testcases/general/tabs.dart:10:9: Error: Undefined name 'two'.
 //   print(two);
 //         ^^^
 //
-// pkg/front_end/testcases/general/tabs.dart:11:9: Error: Getter not found: 'three'.
+// pkg/front_end/testcases/general/tabs.dart:11:9: Error: Undefined name 'three'.
 //   print(three);
 //         ^^^^^
 //
-// pkg/front_end/testcases/general/tabs.dart:12:9: Error: Getter not found: 'four'.
+// pkg/front_end/testcases/general/tabs.dart:12:9: Error: Undefined name 'four'.
 //   print(four);
 //         ^^^^
 //
-// pkg/front_end/testcases/general/tabs.dart:13:9: Error: Getter not found: 'five'.
+// pkg/front_end/testcases/general/tabs.dart:13:9: Error: Undefined name 'five'.
 //   print(five);
 //         ^^^^
 //
@@ -26,19 +26,19 @@
 import "dart:core" as core;
 
 static method test() → dynamic {
-  core::print(invalid-expression "pkg/front_end/testcases/general/tabs.dart:9:9: Error: Getter not found: 'one'.
+  core::print(invalid-expression "pkg/front_end/testcases/general/tabs.dart:9:9: Error: Undefined name 'one'.
   print(one);
         ^^^");
-  core::print(invalid-expression "pkg/front_end/testcases/general/tabs.dart:10:9: Error: Getter not found: 'two'.
+  core::print(invalid-expression "pkg/front_end/testcases/general/tabs.dart:10:9: Error: Undefined name 'two'.
   print(two);
         ^^^");
-  core::print(invalid-expression "pkg/front_end/testcases/general/tabs.dart:11:9: Error: Getter not found: 'three'.
+  core::print(invalid-expression "pkg/front_end/testcases/general/tabs.dart:11:9: Error: Undefined name 'three'.
   print(three);
         ^^^^^");
-  core::print(invalid-expression "pkg/front_end/testcases/general/tabs.dart:12:9: Error: Getter not found: 'four'.
+  core::print(invalid-expression "pkg/front_end/testcases/general/tabs.dart:12:9: Error: Undefined name 'four'.
   print(four);
         ^^^^");
-  core::print(invalid-expression "pkg/front_end/testcases/general/tabs.dart:13:9: Error: Getter not found: 'five'.
+  core::print(invalid-expression "pkg/front_end/testcases/general/tabs.dart:13:9: Error: Undefined name 'five'.
   print(five);
         ^^^^");
 }
diff --git a/pkg/front_end/testcases/general/tabs.dart.weak.transformed.expect b/pkg/front_end/testcases/general/tabs.dart.weak.transformed.expect
index 217aa32..c69fb6b 100644
--- a/pkg/front_end/testcases/general/tabs.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/tabs.dart.weak.transformed.expect
@@ -2,23 +2,23 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/tabs.dart:9:9: Error: Getter not found: 'one'.
+// pkg/front_end/testcases/general/tabs.dart:9:9: Error: Undefined name 'one'.
 //   print(one);
 //         ^^^
 //
-// pkg/front_end/testcases/general/tabs.dart:10:9: Error: Getter not found: 'two'.
+// pkg/front_end/testcases/general/tabs.dart:10:9: Error: Undefined name 'two'.
 //   print(two);
 //         ^^^
 //
-// pkg/front_end/testcases/general/tabs.dart:11:9: Error: Getter not found: 'three'.
+// pkg/front_end/testcases/general/tabs.dart:11:9: Error: Undefined name 'three'.
 //   print(three);
 //         ^^^^^
 //
-// pkg/front_end/testcases/general/tabs.dart:12:9: Error: Getter not found: 'four'.
+// pkg/front_end/testcases/general/tabs.dart:12:9: Error: Undefined name 'four'.
 //   print(four);
 //         ^^^^
 //
-// pkg/front_end/testcases/general/tabs.dart:13:9: Error: Getter not found: 'five'.
+// pkg/front_end/testcases/general/tabs.dart:13:9: Error: Undefined name 'five'.
 //   print(five);
 //         ^^^^
 //
@@ -26,19 +26,19 @@
 import "dart:core" as core;
 
 static method test() → dynamic {
-  core::print(invalid-expression "pkg/front_end/testcases/general/tabs.dart:9:9: Error: Getter not found: 'one'.
+  core::print(invalid-expression "pkg/front_end/testcases/general/tabs.dart:9:9: Error: Undefined name 'one'.
   print(one);
         ^^^");
-  core::print(invalid-expression "pkg/front_end/testcases/general/tabs.dart:10:9: Error: Getter not found: 'two'.
+  core::print(invalid-expression "pkg/front_end/testcases/general/tabs.dart:10:9: Error: Undefined name 'two'.
   print(two);
         ^^^");
-  core::print(invalid-expression "pkg/front_end/testcases/general/tabs.dart:11:9: Error: Getter not found: 'three'.
+  core::print(invalid-expression "pkg/front_end/testcases/general/tabs.dart:11:9: Error: Undefined name 'three'.
   print(three);
         ^^^^^");
-  core::print(invalid-expression "pkg/front_end/testcases/general/tabs.dart:12:9: Error: Getter not found: 'four'.
+  core::print(invalid-expression "pkg/front_end/testcases/general/tabs.dart:12:9: Error: Undefined name 'four'.
   print(four);
         ^^^^");
-  core::print(invalid-expression "pkg/front_end/testcases/general/tabs.dart:13:9: Error: Getter not found: 'five'.
+  core::print(invalid-expression "pkg/front_end/testcases/general/tabs.dart:13:9: Error: Undefined name 'five'.
   print(five);
         ^^^^");
 }
diff --git a/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart
new file mode 100644
index 0000000..96a42a8
--- /dev/null
+++ b/pkg/front_end/testcases/general/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/general/unresolved_constructor_invocation.dart.textual_outline.expect b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.textual_outline.expect
new file mode 100644
index 0000000..1981b9a
--- /dev/null
+++ b/pkg/front_end/testcases/general/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/general/unresolved_constructor_invocation.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..a8ffa5d
--- /dev/null
+++ b/pkg/front_end/testcases/general/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/general/unresolved_constructor_invocation.dart.weak.expect b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.expect
new file mode 100644
index 0000000..a155bab
--- /dev/null
+++ b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.expect
@@ -0,0 +1,858 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:12:26: Error: Superclass has no constructor named 'Super'.
+//   Class.constructor1() : super();
+//                          ^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:13:26: Error: Superclass has no constructor named 'Super.unresolved'.
+//   Class.constructor2() : super.unresolved();
+//                          ^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:14:26: Error: Couldn't find constructor 'Class'.
+//   Class.constructor3() : this();
+//                          ^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:15:26: Error: Couldn't find constructor 'Class.unresolved'.
+//   Class.constructor4() : this.unresolved();
+//                          ^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+//   UnresolvedClass();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+//   UnresolvedClass.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:28:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+//   new UnresolvedClass.unresolvedConstructor();
+//       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:29:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+//   const UnresolvedClass.unresolvedConstructor();
+//         ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+//   UnresolvedClass /**/ .unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:31:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+//   new UnresolvedClass. /**/ unresolvedConstructor();
+//       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:32:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+//   const UnresolvedClass /**/ .unresolvedConstructor();
+//         ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix.UnresolvedClass();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:35:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:36:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix. /**/ UnresolvedClass();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:38:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix /**/ .UnresolvedClass();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:39:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix. /**/ UnresolvedClass();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:42:7: 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'.
+//   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'.
+//   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'.
+//   const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+//         ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
+//   UnresolvedClass<int>();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int>();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass<int>();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+//   UnresolvedClass /**/ <int>();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int> /**/ ();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass /**/ <int>();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+//   UnresolvedClass<int>.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int>.unresolvedConstructor();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass<int>.unresolvedConstructor();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+//   UnresolvedClass /**/ <int>.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int> /**/ .unresolvedConstructor();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass<int>. /**/ unresolvedConstructor();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix.UnresolvedClass<int>();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:63:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass<int>();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:64:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass<int>();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix /**/ .UnresolvedClass<int>();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:66:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass /**/ <int>();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:67:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+//   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'.
+//   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'.
+//   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'.
+//   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'.
+//   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'.
+//   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'.
+//   const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
+//         ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
+//   ResolvedClass();
+//   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new ResolvedClass();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const ResolvedClass();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass.unresolvedConstructor();
+//                 ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass.unresolvedConstructor();
+//                     ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass.unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass /**/ .unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass. /**/ unresolvedConstructor();
+//                           ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass /**/ .unresolvedConstructor();
+//                             ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix. /**/ UnresolvedClass();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix /**/ .UnresolvedClass();
+//                             ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix. /**/ UnresolvedClass();
+//                               ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix.ResolvedClass();
+//                   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix.ResolvedClass();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix.ResolvedClass();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix. /**/ ResolvedClass();
+//                         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix /**/ .ResolvedClass();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix. /**/ ResolvedClass();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+//   resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+//                               ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix.ResolvedClass.unresolvedConstructor();
+//                                 ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass.unresolvedConstructor();
+//                                     ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const resolved_prefix.ResolvedClass.unresolvedConstructor();
+//                                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
+//                                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
+//                                           ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
+//                                                   ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+//   ResolvedClass<int>();
+//   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new ResolvedClass<int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const ResolvedClass<int>();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+//   ResolvedClass /**/ <int>();
+//   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new ResolvedClass /**/ <int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const ResolvedClass /**/ <int>();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass<int>.unresolvedConstructor();
+//                      ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass<int>.unresolvedConstructor();
+//                          ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass<int>.unresolvedConstructor();
+//                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass<int> /**/ .unresolvedConstructor();
+//                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass<int>. /**/ unresolvedConstructor();
+//                                ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass /**/ <int>.unresolvedConstructor();
+//                                  ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass<int>();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass<int>();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass<int>();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix. /**/ UnresolvedClass<int>();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass /**/ <int>();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass<int> /**/ ();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix.ResolvedClass<int>();
+//                   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix.ResolvedClass<int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix.ResolvedClass<int>();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix. /**/ ResolvedClass<int>();
+//                         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix.ResolvedClass /**/ <int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix.ResolvedClass<int> /**/ ();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+//       . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
+//              ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+//                                      ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:152:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+//                                          ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:153:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+//                                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
+//                                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:155:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
+//                                                ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/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/general/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/general/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/general/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/general/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/general/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+  UnresolvedClass();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+  UnresolvedClass.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:28:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+  new UnresolvedClass.unresolvedConstructor();
+      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:29:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+  const UnresolvedClass.unresolvedConstructor();
+        ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+  UnresolvedClass /**/ .unresolvedConstructor();
+  ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:31:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+  new UnresolvedClass. /**/ unresolvedConstructor();
+      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:32:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+  const UnresolvedClass /**/ .unresolvedConstructor();
+        ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix.UnresolvedClass();
+  ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:35:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:36:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix. /**/ UnresolvedClass();
+  ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:38:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix /**/ .UnresolvedClass();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:39:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix. /**/ UnresolvedClass();
+        ^^^^^^^^^^^^^^^";
+  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'.
+  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'.
+  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'.
+  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'.
+  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>();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int>();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass<int>();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+  UnresolvedClass /**/ <int>();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int> /**/ ();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass /**/ <int>();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+  UnresolvedClass<int>.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int>.unresolvedConstructor();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass<int>.unresolvedConstructor();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+  UnresolvedClass /**/ <int>.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int> /**/ .unresolvedConstructor();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass<int>. /**/ unresolvedConstructor();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/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/general/unresolved_constructor_invocation.dart:63:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass<int>();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:64: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:65:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix /**/ .UnresolvedClass<int>();
+  ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:66:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass /**/ <int>();
+      ^^^^^^^^^^^^^^^";
+  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'.
+  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'.
+  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'.
+  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'.
+  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'.
+  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'.
+  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();
+  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new ResolvedClass();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const ResolvedClass();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass.unresolvedConstructor();
+                ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass.unresolvedConstructor();
+                    ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass.unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass /**/ .unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass. /**/ unresolvedConstructor();
+                          ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass /**/ .unresolvedConstructor();
+                            ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass();
+                  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix. /**/ UnresolvedClass();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix /**/ .UnresolvedClass();
+                            ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix. /**/ UnresolvedClass();
+                              ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix.ResolvedClass();
+                  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix.ResolvedClass();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix.ResolvedClass();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix. /**/ ResolvedClass();
+                        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix /**/ .ResolvedClass();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix. /**/ ResolvedClass();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass.unresolvedConstructor();
+                  ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass.unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+  resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+                              ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix.ResolvedClass.unresolvedConstructor();
+                                ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new resolved_prefix.ResolvedClass.unresolvedConstructor();
+                                    ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const resolved_prefix.ResolvedClass.unresolvedConstructor();
+                                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
+                                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
+                                          ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
+                                                  ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+  ResolvedClass<int>();
+  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new ResolvedClass<int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const ResolvedClass<int>();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+  ResolvedClass /**/ <int>();
+  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new ResolvedClass /**/ <int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const ResolvedClass /**/ <int>();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass<int>.unresolvedConstructor();
+                     ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass<int>.unresolvedConstructor();
+                         ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass<int>.unresolvedConstructor();
+                           ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass<int> /**/ .unresolvedConstructor();
+                           ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass<int>. /**/ unresolvedConstructor();
+                               ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass /**/ <int>.unresolvedConstructor();
+                                 ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass<int>();
+                  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass<int>();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass<int>();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix. /**/ UnresolvedClass<int>();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass /**/ <int>();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass<int> /**/ ();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix.ResolvedClass<int>();
+                  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix.ResolvedClass<int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix.ResolvedClass<int>();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix. /**/ ResolvedClass<int>();
+                        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix.ResolvedClass /**/ <int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix.ResolvedClass<int> /**/ ();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+      . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
+             ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+                                     ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/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/general/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/general/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
+                                           ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/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/general/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/unresolved_constructor_invocation.dart.weak.outline.expect b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.outline.expect
new file mode 100644
index 0000000..1532807
--- /dev/null
+++ b/pkg/front_end/testcases/general/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/general/unresolved_constructor_invocation.dart.weak.transformed.expect b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.transformed.expect
new file mode 100644
index 0000000..a155bab
--- /dev/null
+++ b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.transformed.expect
@@ -0,0 +1,858 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:12:26: Error: Superclass has no constructor named 'Super'.
+//   Class.constructor1() : super();
+//                          ^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:13:26: Error: Superclass has no constructor named 'Super.unresolved'.
+//   Class.constructor2() : super.unresolved();
+//                          ^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:14:26: Error: Couldn't find constructor 'Class'.
+//   Class.constructor3() : this();
+//                          ^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:15:26: Error: Couldn't find constructor 'Class.unresolved'.
+//   Class.constructor4() : this.unresolved();
+//                          ^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+//   UnresolvedClass();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+//   UnresolvedClass.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:28:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+//   new UnresolvedClass.unresolvedConstructor();
+//       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:29:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+//   const UnresolvedClass.unresolvedConstructor();
+//         ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+//   UnresolvedClass /**/ .unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:31:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+//   new UnresolvedClass. /**/ unresolvedConstructor();
+//       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:32:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+//   const UnresolvedClass /**/ .unresolvedConstructor();
+//         ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix.UnresolvedClass();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:35:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:36:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix. /**/ UnresolvedClass();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:38:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix /**/ .UnresolvedClass();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:39:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix. /**/ UnresolvedClass();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:42:7: 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'.
+//   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'.
+//   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'.
+//   const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+//         ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
+//   UnresolvedClass<int>();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int>();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass<int>();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+//   UnresolvedClass /**/ <int>();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int> /**/ ();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass /**/ <int>();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+//   UnresolvedClass<int>.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int>.unresolvedConstructor();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass<int>.unresolvedConstructor();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+//   UnresolvedClass /**/ <int>.unresolvedConstructor();
+//   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new UnresolvedClass<int> /**/ .unresolvedConstructor();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const UnresolvedClass<int>. /**/ unresolvedConstructor();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix.UnresolvedClass<int>();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:63:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass<int>();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:64:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+//   const unresolved_prefix.UnresolvedClass<int>();
+//         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
+//   unresolved_prefix /**/ .UnresolvedClass<int>();
+//   ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:66:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+//   new unresolved_prefix.UnresolvedClass /**/ <int>();
+//       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:67:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+//   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'.
+//   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'.
+//   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'.
+//   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'.
+//   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'.
+//   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'.
+//   const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
+//         ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
+//   ResolvedClass();
+//   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new ResolvedClass();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const ResolvedClass();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass.unresolvedConstructor();
+//                 ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass.unresolvedConstructor();
+//                     ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass.unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass /**/ .unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass. /**/ unresolvedConstructor();
+//                           ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass /**/ .unresolvedConstructor();
+//                             ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix. /**/ UnresolvedClass();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix /**/ .UnresolvedClass();
+//                             ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix. /**/ UnresolvedClass();
+//                               ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix.ResolvedClass();
+//                   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix.ResolvedClass();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix.ResolvedClass();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix. /**/ ResolvedClass();
+//                         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix /**/ .ResolvedClass();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix. /**/ ResolvedClass();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+//   resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+//                               ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix.ResolvedClass.unresolvedConstructor();
+//                                 ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass.unresolvedConstructor();
+//                                     ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const resolved_prefix.ResolvedClass.unresolvedConstructor();
+//                                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
+//                                       ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
+//                                           ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
+//                                                   ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+//   ResolvedClass<int>();
+//   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new ResolvedClass<int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const ResolvedClass<int>();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+//   ResolvedClass /**/ <int>();
+//   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new ResolvedClass /**/ <int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const ResolvedClass /**/ <int>();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass<int>.unresolvedConstructor();
+//                      ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass<int>.unresolvedConstructor();
+//                          ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass<int>.unresolvedConstructor();
+//                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   ResolvedClass<int> /**/ .unresolvedConstructor();
+//                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new ResolvedClass<int>. /**/ unresolvedConstructor();
+//                                ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const ResolvedClass /**/ <int>.unresolvedConstructor();
+//                                  ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass<int>();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass<int>();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass<int>();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+//   resolved_prefix. /**/ UnresolvedClass<int>();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass /**/ <int>();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass<int> /**/ ();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix.ResolvedClass<int>();
+//                   ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix.ResolvedClass<int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix.ResolvedClass<int>();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+//   resolved_prefix. /**/ ResolvedClass<int>();
+//                         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+//   new resolved_prefix.ResolvedClass /**/ <int>();
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+//   const resolved_prefix.ResolvedClass<int> /**/ ();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+//   resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                   ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+//   resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+//                         ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+//   new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
+//                       ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+//       . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
+//              ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+//                                      ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:152:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+//                                          ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:153:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+//                                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
+//                                            ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:155:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+//   new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
+//                                                ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/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/general/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/general/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/general/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/general/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/general/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+  UnresolvedClass();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+  UnresolvedClass.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:28:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+  new UnresolvedClass.unresolvedConstructor();
+      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:29:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+  const UnresolvedClass.unresolvedConstructor();
+        ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+  UnresolvedClass /**/ .unresolvedConstructor();
+  ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:31:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+  new UnresolvedClass. /**/ unresolvedConstructor();
+      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:32:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+  const UnresolvedClass /**/ .unresolvedConstructor();
+        ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix.UnresolvedClass();
+  ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:35:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:36:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix.UnresolvedClass();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix. /**/ UnresolvedClass();
+  ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:38:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix /**/ .UnresolvedClass();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:39:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  const unresolved_prefix. /**/ UnresolvedClass();
+        ^^^^^^^^^^^^^^^";
+  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'.
+  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'.
+  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'.
+  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'.
+  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>();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int>();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass<int>();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+  UnresolvedClass /**/ <int>();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int> /**/ ();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass /**/ <int>();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+  UnresolvedClass<int>.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int>.unresolvedConstructor();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass<int>.unresolvedConstructor();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+  UnresolvedClass /**/ <int>.unresolvedConstructor();
+  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  new UnresolvedClass<int> /**/ .unresolvedConstructor();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  const UnresolvedClass<int>. /**/ unresolvedConstructor();
+        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/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/general/unresolved_constructor_invocation.dart:63:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass<int>();
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:64: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:65:3: Error: Undefined name 'unresolved_prefix'.
+  unresolved_prefix /**/ .UnresolvedClass<int>();
+  ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:66:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  new unresolved_prefix.UnresolvedClass /**/ <int>();
+      ^^^^^^^^^^^^^^^";
+  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'.
+  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'.
+  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'.
+  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'.
+  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'.
+  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'.
+  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();
+  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new ResolvedClass();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const ResolvedClass();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass.unresolvedConstructor();
+                ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass.unresolvedConstructor();
+                    ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass.unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass /**/ .unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass. /**/ unresolvedConstructor();
+                          ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass /**/ .unresolvedConstructor();
+                            ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass();
+                  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix. /**/ UnresolvedClass();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix /**/ .UnresolvedClass();
+                            ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix. /**/ UnresolvedClass();
+                              ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix.ResolvedClass();
+                  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix.ResolvedClass();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix.ResolvedClass();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix. /**/ ResolvedClass();
+                        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix /**/ .ResolvedClass();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix. /**/ ResolvedClass();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass.unresolvedConstructor();
+                  ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass.unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+  resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+                              ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix.ResolvedClass.unresolvedConstructor();
+                                ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new resolved_prefix.ResolvedClass.unresolvedConstructor();
+                                    ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const resolved_prefix.ResolvedClass.unresolvedConstructor();
+                                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
+                                      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
+                                          ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
+                                                  ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+  ResolvedClass<int>();
+  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new ResolvedClass<int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const ResolvedClass<int>();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+  ResolvedClass /**/ <int>();
+  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new ResolvedClass /**/ <int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const ResolvedClass /**/ <int>();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass<int>.unresolvedConstructor();
+                     ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass<int>.unresolvedConstructor();
+                         ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass<int>.unresolvedConstructor();
+                           ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  ResolvedClass<int> /**/ .unresolvedConstructor();
+                           ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  new ResolvedClass<int>. /**/ unresolvedConstructor();
+                               ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  const ResolvedClass /**/ <int>.unresolvedConstructor();
+                                 ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass<int>();
+                  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass<int>();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass<int>();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+  resolved_prefix. /**/ UnresolvedClass<int>();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass /**/ <int>();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass<int> /**/ ();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix.ResolvedClass<int>();
+                  ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix.ResolvedClass<int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix.ResolvedClass<int>();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+  resolved_prefix. /**/ ResolvedClass<int>();
+                        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+  new resolved_prefix.ResolvedClass /**/ <int>();
+      ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+  const resolved_prefix.ResolvedClass<int> /**/ ();
+        ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+  resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                  ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+                        ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
+                      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+      . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
+             ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+                                     ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/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/general/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/general/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
+                                           ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/general/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/general/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/with_dependencies/issue_43084/issue_43084.dart.weak.expect b/pkg/front_end/testcases/general/with_dependencies/issue_43084/issue_43084.dart.weak.expect
index b1470cf..a408b7e 100644
--- a/pkg/front_end/testcases/general/with_dependencies/issue_43084/issue_43084.dart.weak.expect
+++ b/pkg/front_end/testcases/general/with_dependencies/issue_43084/issue_43084.dart.weak.expect
@@ -2,7 +2,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/with_dependencies/issue_43084/issue_43084.dart:8:20: Error: Method not found: 'Bar'.
+// pkg/front_end/testcases/general/with_dependencies/issue_43084/issue_43084.dart:8:20: Error: Couldn't find constructor 'Bar'.
 //   Bar<int> x = new Bar<int>();
 //                    ^^^
 //
@@ -12,7 +12,7 @@
 import "org-dartlang-testcase:///issue_43084_lib.dart";
 
 static method main() → dynamic {
-  invalid-type x = invalid-expression "pkg/front_end/testcases/general/with_dependencies/issue_43084/issue_43084.dart:8:20: Error: Method not found: 'Bar'.
+  invalid-type x = invalid-expression "pkg/front_end/testcases/general/with_dependencies/issue_43084/issue_43084.dart:8:20: Error: Couldn't find constructor 'Bar'.
   Bar<int> x = new Bar<int>();
                    ^^^";
   core::print(x);
diff --git a/pkg/front_end/testcases/general/with_dependencies/issue_43084/issue_43084.dart.weak.transformed.expect b/pkg/front_end/testcases/general/with_dependencies/issue_43084/issue_43084.dart.weak.transformed.expect
index b1470cf..a408b7e 100644
--- a/pkg/front_end/testcases/general/with_dependencies/issue_43084/issue_43084.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/with_dependencies/issue_43084/issue_43084.dart.weak.transformed.expect
@@ -2,7 +2,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/with_dependencies/issue_43084/issue_43084.dart:8:20: Error: Method not found: 'Bar'.
+// pkg/front_end/testcases/general/with_dependencies/issue_43084/issue_43084.dart:8:20: Error: Couldn't find constructor 'Bar'.
 //   Bar<int> x = new Bar<int>();
 //                    ^^^
 //
@@ -12,7 +12,7 @@
 import "org-dartlang-testcase:///issue_43084_lib.dart";
 
 static method main() → dynamic {
-  invalid-type x = invalid-expression "pkg/front_end/testcases/general/with_dependencies/issue_43084/issue_43084.dart:8:20: Error: Method not found: 'Bar'.
+  invalid-type x = invalid-expression "pkg/front_end/testcases/general/with_dependencies/issue_43084/issue_43084.dart:8:20: Error: Couldn't find constructor 'Bar'.
   Bar<int> x = new Bar<int>();
                    ^^^";
   core::print(x);
diff --git a/pkg/front_end/testcases/general/with_dependencies/issue_43084_2/issue_43084.dart.weak.expect b/pkg/front_end/testcases/general/with_dependencies/issue_43084_2/issue_43084.dart.weak.expect
index 89ab050..6ce7aaa 100644
--- a/pkg/front_end/testcases/general/with_dependencies/issue_43084_2/issue_43084.dart.weak.expect
+++ b/pkg/front_end/testcases/general/with_dependencies/issue_43084_2/issue_43084.dart.weak.expect
@@ -2,7 +2,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/with_dependencies/issue_43084_2/issue_43084.dart:8:3: Error: Method not found: 'F'.
+// pkg/front_end/testcases/general/with_dependencies/issue_43084_2/issue_43084.dart:8:3: Error: Couldn't find constructor 'F'.
 //   F();
 //   ^
 //
@@ -11,7 +11,7 @@
 import "org-dartlang-testcase:///issue_43084_lib.dart";
 
 static method test() → dynamic {
-  invalid-expression "pkg/front_end/testcases/general/with_dependencies/issue_43084_2/issue_43084.dart:8:3: Error: Method not found: 'F'.
+  invalid-expression "pkg/front_end/testcases/general/with_dependencies/issue_43084_2/issue_43084.dart:8:3: Error: Couldn't find constructor 'F'.
   F();
   ^";
 }
diff --git a/pkg/front_end/testcases/general/with_dependencies/issue_43084_2/issue_43084.dart.weak.transformed.expect b/pkg/front_end/testcases/general/with_dependencies/issue_43084_2/issue_43084.dart.weak.transformed.expect
index 89ab050..6ce7aaa 100644
--- a/pkg/front_end/testcases/general/with_dependencies/issue_43084_2/issue_43084.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/with_dependencies/issue_43084_2/issue_43084.dart.weak.transformed.expect
@@ -2,7 +2,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/with_dependencies/issue_43084_2/issue_43084.dart:8:3: Error: Method not found: 'F'.
+// pkg/front_end/testcases/general/with_dependencies/issue_43084_2/issue_43084.dart:8:3: Error: Couldn't find constructor 'F'.
 //   F();
 //   ^
 //
@@ -11,7 +11,7 @@
 import "org-dartlang-testcase:///issue_43084_lib.dart";
 
 static method test() → dynamic {
-  invalid-expression "pkg/front_end/testcases/general/with_dependencies/issue_43084_2/issue_43084.dart:8:3: Error: Method not found: 'F'.
+  invalid-expression "pkg/front_end/testcases/general/with_dependencies/issue_43084_2/issue_43084.dart:8:3: Error: Couldn't find constructor 'F'.
   F();
   ^";
 }
diff --git a/pkg/front_end/testcases/incremental/entry_not_package_url_main_with_errors.yaml.world.1.expect b/pkg/front_end/testcases/incremental/entry_not_package_url_main_with_errors.yaml.world.1.expect
index 2c0a19b..c3623d7 100644
--- a/pkg/front_end/testcases/incremental/entry_not_package_url_main_with_errors.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/entry_not_package_url_main_with_errors.yaml.world.1.expect
@@ -8,12 +8,12 @@
 //
 // Problems in library:
 //
-// org-dartlang-test:///main.dart:2:3: Error: Getter not found: 'asdf'.
+// org-dartlang-test:///main.dart:2:3: Error: Undefined name 'asdf'.
 //   asdf;
 //   ^^^^
 //
 
   static method main() → dynamic {
-    invalid-expression "org-dartlang-test:///main.dart:2:3: Error: Getter not found: 'asdf'.\n  asdf;\n  ^^^^";
+    invalid-expression "org-dartlang-test:///main.dart:2:3: Error: Undefined name 'asdf'.\n  asdf;\n  ^^^^";
   }
 }
diff --git a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.expect b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.expect
index 49b6b6e..a18d682 100644
--- a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.expect
@@ -2,11 +2,11 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:19:46: Error: Getter not found: 'x'.
+// pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:19:46: Error: Undefined name 'x'.
 // var b = new B(/*error:UNDEFINED_IDENTIFIER*/ x); // allocations
 //                                              ^
 //
-// pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:21:34: Error: Getter not found: 'x'.
+// pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:21:34: Error: Undefined name 'x'.
 //   /*error:UNDEFINED_IDENTIFIER*/ x
 //                                  ^
 //
@@ -101,10 +101,10 @@
     ;
 }
 static field self::A* a = new self::A::•();
-static field self::B* b = new self::B::•(invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:19:46: Error: Getter not found: 'x'.
+static field self::B* b = new self::B::•(invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:19:46: Error: Undefined name 'x'.
 var b = new B(/*error:UNDEFINED_IDENTIFIER*/ x); // allocations
                                              ^");
-static field core::List<invalid-type>* c1 = <invalid-type>[invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:21:34: Error: Getter not found: 'x'.
+static field core::List<invalid-type>* c1 = <invalid-type>[invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:21:34: Error: Undefined name 'x'.
   /*error:UNDEFINED_IDENTIFIER*/ x
                                  ^"];
 static field core::List<dynamic>* c2 = #C1;
diff --git a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.outline.expect b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.outline.expect
index d754ff8..413000a 100644
--- a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.outline.expect
@@ -2,11 +2,11 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:19:46: Error: Getter not found: 'x'.
+// pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:19:46: Error: Undefined name 'x'.
 // var b = new B(/*error:UNDEFINED_IDENTIFIER*/ x); // allocations
 //                                              ^
 //
-// pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:21:34: Error: Getter not found: 'x'.
+// pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:21:34: Error: Undefined name 'x'.
 //   /*error:UNDEFINED_IDENTIFIER*/ x
 //                                  ^
 //
diff --git a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.transformed.expect
index 00ceaa4..be878a0 100644
--- a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.transformed.expect
@@ -2,11 +2,11 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:19:46: Error: Getter not found: 'x'.
+// pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:19:46: Error: Undefined name 'x'.
 // var b = new B(/*error:UNDEFINED_IDENTIFIER*/ x); // allocations
 //                                              ^
 //
-// pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:21:34: Error: Getter not found: 'x'.
+// pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:21:34: Error: Undefined name 'x'.
 //   /*error:UNDEFINED_IDENTIFIER*/ x
 //                                  ^
 //
@@ -101,10 +101,10 @@
     ;
 }
 static field self::A* a = new self::A::•();
-static field self::B* b = new self::B::•(invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:19:46: Error: Getter not found: 'x'.
+static field self::B* b = new self::B::•(invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:19:46: Error: Undefined name 'x'.
 var b = new B(/*error:UNDEFINED_IDENTIFIER*/ x); // allocations
                                              ^");
-static field core::List<invalid-type>* c1 = core::_GrowableList::_literal1<invalid-type>(invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:21:34: Error: Getter not found: 'x'.
+static field core::List<invalid-type>* c1 = core::_GrowableList::_literal1<invalid-type>(invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:21:34: Error: Undefined name 'x'.
   /*error:UNDEFINED_IDENTIFIER*/ x
                                  ^");
 static field core::List<dynamic>* c2 = #C1;
diff --git a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.expect b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.expect
index d1dc216..abcb54d 100644
--- a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.expect
@@ -100,7 +100,7 @@
 //   topLevelMethodAndSetter = topLevelMethodAndSetter();
 //   ^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:48:22: Error: Method not found: 'typedefAndSetter'.
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:48:22: Error: Couldn't find constructor 'typedefAndSetter'.
 //   typedefAndSetter = typedefAndSetter();
 //                      ^^^^^^^^^^^^^^^^
 //
diff --git a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.transformed.expect
index d1dc216..abcb54d 100644
--- a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.transformed.expect
@@ -100,7 +100,7 @@
 //   topLevelMethodAndSetter = topLevelMethodAndSetter();
 //   ^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:48:22: Error: Method not found: 'typedefAndSetter'.
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:48:22: Error: Couldn't find constructor 'typedefAndSetter'.
 //   typedefAndSetter = typedefAndSetter();
 //                      ^^^^^^^^^^^^^^^^
 //
diff --git a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.expect b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.expect
index d1dc216..abcb54d 100644
--- a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.expect
@@ -100,7 +100,7 @@
 //   topLevelMethodAndSetter = topLevelMethodAndSetter();
 //   ^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:48:22: Error: Method not found: 'typedefAndSetter'.
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:48:22: Error: Couldn't find constructor 'typedefAndSetter'.
 //   typedefAndSetter = typedefAndSetter();
 //                      ^^^^^^^^^^^^^^^^
 //
diff --git a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.transformed.expect
index d1dc216..abcb54d 100644
--- a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.transformed.expect
@@ -100,7 +100,7 @@
 //   topLevelMethodAndSetter = topLevelMethodAndSetter();
 //   ^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:48:22: Error: Method not found: 'typedefAndSetter'.
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:48:22: Error: Couldn't find constructor 'typedefAndSetter'.
 //   typedefAndSetter = typedefAndSetter();
 //                      ^^^^^^^^^^^^^^^^
 //
diff --git a/pkg/front_end/testcases/none/operator.dart.strong.expect b/pkg/front_end/testcases/none/operator.dart.strong.expect
index 1e2adde..670534d 100644
--- a/pkg/front_end/testcases/none/operator.dart.strong.expect
+++ b/pkg/front_end/testcases/none/operator.dart.strong.expect
@@ -20,7 +20,7 @@
 //   c.method()[0];
 //           ^
 //
-// pkg/front_end/testcases/none/operator.dart:109:3: Error: Getter not found: 'string'.
+// pkg/front_end/testcases/none/operator.dart:109:3: Error: Undefined name 'string'.
 //   string[0] = 42;
 //   ^^^^^^
 //
@@ -28,7 +28,7 @@
 //   c.method()[0] = 42;
 //           ^
 //
-// pkg/front_end/testcases/none/operator.dart:129:3: Error: Getter not found: 'string'.
+// pkg/front_end/testcases/none/operator.dart:129:3: Error: Undefined name 'string'.
 //   string[0] += 42;
 //   ^^^^^^
 //
@@ -136,7 +136,7 @@
   c.method()[0] = 42;
           ^" in c.{self::Class::method}{<inapplicable>}.(){() → invalid-type}{<invalid>}.[]=(0, 42);
   core::print("DynamicInvocation (Unresolved)");
-  invalid-expression "pkg/front_end/testcases/none/operator.dart:109:3: Error: Getter not found: 'string'.
+  invalid-expression "pkg/front_end/testcases/none/operator.dart:109:3: Error: Undefined name 'string'.
   string[0] = 42;
   ^^^^^^"{<invalid>}.[]=(0, 42);
 }
@@ -156,7 +156,7 @@
   c.method()[0] += 42;
           ^" in c.{self::Class::method}{<inapplicable>}.(){() → invalid-type} in let final core::int #t12 = 0 in #t11{<invalid>}.[]=(#t12, #t11{<invalid>}.[](#t12){<invalid>}.+(42));
   core::print("DynamicInvocation (Unresolved)");
-  let final invalid-type #t13 = invalid-expression "pkg/front_end/testcases/none/operator.dart:129:3: Error: Getter not found: 'string'.
+  let final invalid-type #t13 = invalid-expression "pkg/front_end/testcases/none/operator.dart:129:3: Error: Undefined name 'string'.
   string[0] += 42;
   ^^^^^^" in let final core::int #t14 = 0 in #t13{<invalid>}.[]=(#t14, #t13{<invalid>}.[](#t14){<invalid>}.+(42));
 }
diff --git a/pkg/front_end/testcases/none/operator.dart.strong.transformed.expect b/pkg/front_end/testcases/none/operator.dart.strong.transformed.expect
index ca3dc30..8e6c707 100644
--- a/pkg/front_end/testcases/none/operator.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/none/operator.dart.strong.transformed.expect
@@ -20,7 +20,7 @@
 //   c.method()[0];
 //           ^
 //
-// pkg/front_end/testcases/none/operator.dart:109:3: Error: Getter not found: 'string'.
+// pkg/front_end/testcases/none/operator.dart:109:3: Error: Undefined name 'string'.
 //   string[0] = 42;
 //   ^^^^^^
 //
@@ -28,7 +28,7 @@
 //   c.method()[0] = 42;
 //           ^
 //
-// pkg/front_end/testcases/none/operator.dart:129:3: Error: Getter not found: 'string'.
+// pkg/front_end/testcases/none/operator.dart:129:3: Error: Undefined name 'string'.
 //   string[0] += 42;
 //   ^^^^^^
 //
@@ -136,7 +136,7 @@
   c.method()[0] = 42;
           ^" in c.{self::Class::method}{<inapplicable>}.(){() → invalid-type}{<invalid>}.[]=(0, 42);
   core::print("DynamicInvocation (Unresolved)");
-  invalid-expression "pkg/front_end/testcases/none/operator.dart:109:3: Error: Getter not found: 'string'.
+  invalid-expression "pkg/front_end/testcases/none/operator.dart:109:3: Error: Undefined name 'string'.
   string[0] = 42;
   ^^^^^^"{<invalid>}.[]=(0, 42);
 }
@@ -156,7 +156,7 @@
   c.method()[0] += 42;
           ^" in c.{self::Class::method}{<inapplicable>}.(){() → invalid-type} in let final core::int #t12 = 0 in #t11{<invalid>}.[]=(#t12, #t11{<invalid>}.[](#t12){<invalid>}.+(42));
   core::print("DynamicInvocation (Unresolved)");
-  let final invalid-type #t13 = invalid-expression "pkg/front_end/testcases/none/operator.dart:129:3: Error: Getter not found: 'string'.
+  let final invalid-type #t13 = invalid-expression "pkg/front_end/testcases/none/operator.dart:129:3: Error: Undefined name 'string'.
   string[0] += 42;
   ^^^^^^" in let final core::int #t14 = 0 in #t13{<invalid>}.[]=(#t14, #t13{<invalid>}.[](#t14){<invalid>}.+(42));
 }
diff --git a/pkg/front_end/testcases/none/operator.dart.weak.expect b/pkg/front_end/testcases/none/operator.dart.weak.expect
index 43baa9d..712a616 100644
--- a/pkg/front_end/testcases/none/operator.dart.weak.expect
+++ b/pkg/front_end/testcases/none/operator.dart.weak.expect
@@ -20,7 +20,7 @@
 //   c.method()[0];
 //           ^
 //
-// pkg/front_end/testcases/none/operator.dart:109:3: Error: Getter not found: 'string'.
+// pkg/front_end/testcases/none/operator.dart:109:3: Error: Undefined name 'string'.
 //   string[0] = 42;
 //   ^^^^^^
 //
@@ -28,7 +28,7 @@
 //   c.method()[0] = 42;
 //           ^
 //
-// pkg/front_end/testcases/none/operator.dart:129:3: Error: Getter not found: 'string'.
+// pkg/front_end/testcases/none/operator.dart:129:3: Error: Undefined name 'string'.
 //   string[0] += 42;
 //   ^^^^^^
 //
@@ -137,7 +137,7 @@
   c.method()[0] = 42;
           ^" in c.{self::Class::method}{<inapplicable>}.(){() → invalid-type}{<invalid>}.[]=(0, 42);
   core::print("DynamicInvocation (Unresolved)");
-  invalid-expression "pkg/front_end/testcases/none/operator.dart:109:3: Error: Getter not found: 'string'.
+  invalid-expression "pkg/front_end/testcases/none/operator.dart:109:3: Error: Undefined name 'string'.
   string[0] = 42;
   ^^^^^^"{<invalid>}.[]=(0, 42);
 }
@@ -157,7 +157,7 @@
   c.method()[0] += 42;
           ^" in c.{self::Class::method}{<inapplicable>}.(){() → invalid-type} in let final core::int #t21 = 0 in #t20{<invalid>}.[]=(#t21, #t20{<invalid>}.[](#t21){<invalid>}.+(42));
   core::print("DynamicInvocation (Unresolved)");
-  let final invalid-type #t22 = invalid-expression "pkg/front_end/testcases/none/operator.dart:129:3: Error: Getter not found: 'string'.
+  let final invalid-type #t22 = invalid-expression "pkg/front_end/testcases/none/operator.dart:129:3: Error: Undefined name 'string'.
   string[0] += 42;
   ^^^^^^" in let final core::int #t23 = 0 in #t22{<invalid>}.[]=(#t23, #t22{<invalid>}.[](#t23){<invalid>}.+(42));
 }
diff --git a/pkg/front_end/testcases/none/operator.dart.weak.transformed.expect b/pkg/front_end/testcases/none/operator.dart.weak.transformed.expect
index 9cd0d1d..059550b 100644
--- a/pkg/front_end/testcases/none/operator.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/none/operator.dart.weak.transformed.expect
@@ -20,7 +20,7 @@
 //   c.method()[0];
 //           ^
 //
-// pkg/front_end/testcases/none/operator.dart:109:3: Error: Getter not found: 'string'.
+// pkg/front_end/testcases/none/operator.dart:109:3: Error: Undefined name 'string'.
 //   string[0] = 42;
 //   ^^^^^^
 //
@@ -28,7 +28,7 @@
 //   c.method()[0] = 42;
 //           ^
 //
-// pkg/front_end/testcases/none/operator.dart:129:3: Error: Getter not found: 'string'.
+// pkg/front_end/testcases/none/operator.dart:129:3: Error: Undefined name 'string'.
 //   string[0] += 42;
 //   ^^^^^^
 //
@@ -137,7 +137,7 @@
   c.method()[0] = 42;
           ^" in c.{self::Class::method}{<inapplicable>}.(){() → invalid-type}{<invalid>}.[]=(0, 42);
   core::print("DynamicInvocation (Unresolved)");
-  invalid-expression "pkg/front_end/testcases/none/operator.dart:109:3: Error: Getter not found: 'string'.
+  invalid-expression "pkg/front_end/testcases/none/operator.dart:109:3: Error: Undefined name 'string'.
   string[0] = 42;
   ^^^^^^"{<invalid>}.[]=(0, 42);
 }
@@ -157,7 +157,7 @@
   c.method()[0] += 42;
           ^" in c.{self::Class::method}{<inapplicable>}.(){() → invalid-type} in let final core::int #t21 = 0 in #t20{<invalid>}.[]=(#t21, #t20{<invalid>}.[](#t21){<invalid>}.+(42));
   core::print("DynamicInvocation (Unresolved)");
-  let final invalid-type #t22 = invalid-expression "pkg/front_end/testcases/none/operator.dart:129:3: Error: Getter not found: 'string'.
+  let final invalid-type #t22 = invalid-expression "pkg/front_end/testcases/none/operator.dart:129:3: Error: Undefined name 'string'.
   string[0] += 42;
   ^^^^^^" in let final core::int #t23 = 0 in #t22{<invalid>}.[]=(#t23, #t22{<invalid>}.[](#t23){<invalid>}.+(42));
 }
diff --git a/pkg/front_end/testcases/rasta/bad_interpolation.dart.weak.expect b/pkg/front_end/testcases/rasta/bad_interpolation.dart.weak.expect
index 9e8cbc2..e09a8ab 100644
--- a/pkg/front_end/testcases/rasta/bad_interpolation.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/bad_interpolation.dart.weak.expect
@@ -10,7 +10,7 @@
 //   print(" $x.);
 //        ^
 //
-// pkg/front_end/testcases/rasta/bad_interpolation.dart:6:12: Error: Getter not found: 'x'.
+// pkg/front_end/testcases/rasta/bad_interpolation.dart:6:12: Error: Undefined name 'x'.
 //   print(" $x.);
 //            ^
 //
@@ -22,7 +22,7 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::print(" ${invalid-expression "pkg/front_end/testcases/rasta/bad_interpolation.dart:6:12: Error: Getter not found: 'x'.
+  core::print(" ${invalid-expression "pkg/front_end/testcases/rasta/bad_interpolation.dart:6:12: Error: Undefined name 'x'.
   print(\" \$x.);
            ^"}.);\"");
 }
diff --git a/pkg/front_end/testcases/rasta/bad_interpolation.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/bad_interpolation.dart.weak.transformed.expect
index 9e8cbc2..e09a8ab 100644
--- a/pkg/front_end/testcases/rasta/bad_interpolation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/bad_interpolation.dart.weak.transformed.expect
@@ -10,7 +10,7 @@
 //   print(" $x.);
 //        ^
 //
-// pkg/front_end/testcases/rasta/bad_interpolation.dart:6:12: Error: Getter not found: 'x'.
+// pkg/front_end/testcases/rasta/bad_interpolation.dart:6:12: Error: Undefined name 'x'.
 //   print(" $x.);
 //            ^
 //
@@ -22,7 +22,7 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::print(" ${invalid-expression "pkg/front_end/testcases/rasta/bad_interpolation.dart:6:12: Error: Getter not found: 'x'.
+  core::print(" ${invalid-expression "pkg/front_end/testcases/rasta/bad_interpolation.dart:6:12: Error: Undefined name 'x'.
   print(\" \$x.);
            ^"}.);\"");
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000033.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000033.dart.weak.expect
index 7774711..e288dc4 100644
--- a/pkg/front_end/testcases/rasta/issue_000033.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000033.dart.weak.expect
@@ -2,13 +2,13 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/rasta/issue_000033.dart:5:2: Error: Method not found: 'JS'.
+// pkg/front_end/testcases/rasta/issue_000033.dart:5:2: Error: Couldn't find constructor 'JS'.
 // @JS()
 //  ^^
 //
 import self as self;
 
-@invalid-expression "pkg/front_end/testcases/rasta/issue_000033.dart:5:2: Error: Method not found: 'JS'.
+@invalid-expression "pkg/front_end/testcases/rasta/issue_000033.dart:5:2: Error: Couldn't find constructor 'JS'.
 @JS()
  ^^"
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/rasta/issue_000033.dart.weak.outline.expect b/pkg/front_end/testcases/rasta/issue_000033.dart.weak.outline.expect
index feabb09..e0207cf 100644
--- a/pkg/front_end/testcases/rasta/issue_000033.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000033.dart.weak.outline.expect
@@ -2,13 +2,13 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/rasta/issue_000033.dart:5:2: Error: Method not found: 'JS'.
+// pkg/front_end/testcases/rasta/issue_000033.dart:5:2: Error: Couldn't find constructor 'JS'.
 // @JS()
 //  ^^
 //
 import self as self;
 
-@invalid-expression "pkg/front_end/testcases/rasta/issue_000033.dart:5:2: Error: Method not found: 'JS'.
+@invalid-expression "pkg/front_end/testcases/rasta/issue_000033.dart:5:2: Error: Couldn't find constructor 'JS'.
 @JS()
  ^^"
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/rasta/issue_000033.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000033.dart.weak.transformed.expect
index 7774711..e288dc4 100644
--- a/pkg/front_end/testcases/rasta/issue_000033.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000033.dart.weak.transformed.expect
@@ -2,13 +2,13 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/rasta/issue_000033.dart:5:2: Error: Method not found: 'JS'.
+// pkg/front_end/testcases/rasta/issue_000033.dart:5:2: Error: Couldn't find constructor 'JS'.
 // @JS()
 //  ^^
 //
 import self as self;
 
-@invalid-expression "pkg/front_end/testcases/rasta/issue_000033.dart:5:2: Error: Method not found: 'JS'.
+@invalid-expression "pkg/front_end/testcases/rasta/issue_000033.dart:5:2: Error: Couldn't find constructor 'JS'.
 @JS()
  ^^"
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/rasta/issue_000044.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000044.dart.weak.expect
index 1ba20e7..58f3e10 100644
--- a/pkg/front_end/testcases/rasta/issue_000044.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000044.dart.weak.expect
@@ -25,7 +25,7 @@
 //   C notEvenAConstructor(a) = h;
 //                              ^
 //
-// pkg/front_end/testcases/rasta/issue_000044.dart:7:10: Error: Getter not found: 'd'.
+// pkg/front_end/testcases/rasta/issue_000044.dart:7:10: Error: Undefined name 'd'.
 // a b(c) = d;
 //          ^
 //
@@ -34,7 +34,7 @@
 //   C.missingFactoryKeyword() = C.constant;
 //                             ^
 //
-// pkg/front_end/testcases/rasta/issue_000044.dart:14:33: Error: Getter not found: 'constant'.
+// pkg/front_end/testcases/rasta/issue_000044.dart:14:33: Error: Member not found: 'constant'.
 //   C.missingFactoryKeyword() = C.constant;
 //                                 ^^^^^^^^
 //
@@ -93,7 +93,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method b(dynamic c) → invalid-type
-  return invalid-expression "pkg/front_end/testcases/rasta/issue_000044.dart:7:10: Error: Getter not found: 'd'.
+  return invalid-expression "pkg/front_end/testcases/rasta/issue_000044.dart:7:10: Error: Undefined name 'd'.
 a b(c) = d;
          ^";
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/rasta/issue_000044.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000044.dart.weak.transformed.expect
index b3609c5..41ab0dd 100644
--- a/pkg/front_end/testcases/rasta/issue_000044.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000044.dart.weak.transformed.expect
@@ -25,7 +25,7 @@
 //   C notEvenAConstructor(a) = h;
 //                              ^
 //
-// pkg/front_end/testcases/rasta/issue_000044.dart:7:10: Error: Getter not found: 'd'.
+// pkg/front_end/testcases/rasta/issue_000044.dart:7:10: Error: Undefined name 'd'.
 // a b(c) = d;
 //          ^
 //
@@ -34,7 +34,7 @@
 //   C.missingFactoryKeyword() = C.constant;
 //                             ^
 //
-// pkg/front_end/testcases/rasta/issue_000044.dart:14:33: Error: Getter not found: 'constant'.
+// pkg/front_end/testcases/rasta/issue_000044.dart:14:33: Error: Member not found: 'constant'.
 //   C.missingFactoryKeyword() = C.constant;
 //                                 ^^^^^^^^
 //
@@ -93,7 +93,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method b(dynamic c) → invalid-type
-  return invalid-expression "pkg/front_end/testcases/rasta/issue_000044.dart:7:10: Error: Getter not found: 'd'.
+  return invalid-expression "pkg/front_end/testcases/rasta/issue_000044.dart:7:10: Error: Undefined name 'd'.
 a b(c) = d;
          ^";
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart.weak.expect b/pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart.weak.expect
index 900813e..ac6a230 100644
--- a/pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart.weak.expect
@@ -12,7 +12,7 @@
 // main(arguments = [x]) {
 //                  ^
 //
-// pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart:5:19: Error: Getter not found: 'x'.
+// pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart:5:19: Error: Undefined name 'x'.
 // main(arguments = [x]) {
 //                   ^
 //
diff --git a/pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart.weak.transformed.expect
index 900813e..ac6a230 100644
--- a/pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart.weak.transformed.expect
@@ -12,7 +12,7 @@
 // main(arguments = [x]) {
 //                  ^
 //
-// pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart:5:19: Error: Getter not found: 'x'.
+// pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart:5:19: Error: Undefined name 'x'.
 // main(arguments = [x]) {
 //                   ^
 //
diff --git a/pkg/front_end/testcases/rasta/type_literals.dart.weak.expect b/pkg/front_end/testcases/rasta/type_literals.dart.weak.expect
index f3bac68..b3cd230 100644
--- a/pkg/front_end/testcases/rasta/type_literals.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/type_literals.dart.weak.expect
@@ -2,27 +2,27 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/rasta/type_literals.dart:22:5: Error: Method not found: 'dynamic'.
+// pkg/front_end/testcases/rasta/type_literals.dart:22:5: Error: Couldn't find constructor 'dynamic'.
 //     dynamic();
 //     ^^^^^^^
 //
-// pkg/front_end/testcases/rasta/type_literals.dart:23:9: Error: Method not found: 'dynamic'.
+// pkg/front_end/testcases/rasta/type_literals.dart:23:9: Error: Couldn't find constructor 'dynamic'.
 //     use(dynamic());
 //         ^^^^^^^
 //
-// pkg/front_end/testcases/rasta/type_literals.dart:24:5: Error: Method not found: 'T'.
+// pkg/front_end/testcases/rasta/type_literals.dart:24:5: Error: Couldn't find constructor 'T'.
 //     T();
 //     ^
 //
-// pkg/front_end/testcases/rasta/type_literals.dart:25:9: Error: Method not found: 'T'.
+// pkg/front_end/testcases/rasta/type_literals.dart:25:9: Error: Couldn't find constructor 'T'.
 //     use(T());
 //         ^
 //
-// pkg/front_end/testcases/rasta/type_literals.dart:26:5: Error: Method not found: 'Func'.
+// pkg/front_end/testcases/rasta/type_literals.dart:26:5: Error: Couldn't find constructor 'Func'.
 //     Func();
 //     ^^^^
 //
-// pkg/front_end/testcases/rasta/type_literals.dart:27:9: Error: Method not found: 'Func'.
+// pkg/front_end/testcases/rasta/type_literals.dart:27:9: Error: Couldn't find constructor 'Func'.
 //     use(Func());
 //         ^^^^
 //
@@ -301,22 +301,22 @@
     self::use(#C3);
     new self::C::•<dynamic>();
     self::use(new self::C::•<dynamic>());
-    invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:22:5: Error: Method not found: 'dynamic'.
+    invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:22:5: Error: Couldn't find constructor 'dynamic'.
     dynamic();
     ^^^^^^^";
-    self::use(invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:23:9: Error: Method not found: 'dynamic'.
+    self::use(invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:23:9: Error: Couldn't find constructor 'dynamic'.
     use(dynamic());
         ^^^^^^^");
-    invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:24:5: Error: Method not found: 'T'.
+    invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:24:5: Error: Couldn't find constructor 'T'.
     T();
     ^";
-    self::use(invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:25:9: Error: Method not found: 'T'.
+    self::use(invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:25:9: Error: Couldn't find constructor 'T'.
     use(T());
         ^");
-    invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:26:5: Error: Method not found: 'Func'.
+    invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:26:5: Error: Couldn't find constructor 'Func'.
     Func();
     ^^^^";
-    self::use(invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:27:9: Error: Method not found: 'Func'.
+    self::use(invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:27:9: Error: Couldn't find constructor 'Func'.
     use(Func());
         ^^^^");
     invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:29:5: Error: Can't assign to a type literal.
diff --git a/pkg/front_end/testcases/rasta/type_literals.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/type_literals.dart.weak.transformed.expect
index 787b528..2d68132 100644
--- a/pkg/front_end/testcases/rasta/type_literals.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/type_literals.dart.weak.transformed.expect
@@ -2,27 +2,27 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/rasta/type_literals.dart:22:5: Error: Method not found: 'dynamic'.
+// pkg/front_end/testcases/rasta/type_literals.dart:22:5: Error: Couldn't find constructor 'dynamic'.
 //     dynamic();
 //     ^^^^^^^
 //
-// pkg/front_end/testcases/rasta/type_literals.dart:23:9: Error: Method not found: 'dynamic'.
+// pkg/front_end/testcases/rasta/type_literals.dart:23:9: Error: Couldn't find constructor 'dynamic'.
 //     use(dynamic());
 //         ^^^^^^^
 //
-// pkg/front_end/testcases/rasta/type_literals.dart:24:5: Error: Method not found: 'T'.
+// pkg/front_end/testcases/rasta/type_literals.dart:24:5: Error: Couldn't find constructor 'T'.
 //     T();
 //     ^
 //
-// pkg/front_end/testcases/rasta/type_literals.dart:25:9: Error: Method not found: 'T'.
+// pkg/front_end/testcases/rasta/type_literals.dart:25:9: Error: Couldn't find constructor 'T'.
 //     use(T());
 //         ^
 //
-// pkg/front_end/testcases/rasta/type_literals.dart:26:5: Error: Method not found: 'Func'.
+// pkg/front_end/testcases/rasta/type_literals.dart:26:5: Error: Couldn't find constructor 'Func'.
 //     Func();
 //     ^^^^
 //
-// pkg/front_end/testcases/rasta/type_literals.dart:27:9: Error: Method not found: 'Func'.
+// pkg/front_end/testcases/rasta/type_literals.dart:27:9: Error: Couldn't find constructor 'Func'.
 //     use(Func());
 //         ^^^^
 //
@@ -301,22 +301,22 @@
     self::use(#C3);
     new self::C::•<dynamic>();
     self::use(new self::C::•<dynamic>());
-    invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:22:5: Error: Method not found: 'dynamic'.
+    invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:22:5: Error: Couldn't find constructor 'dynamic'.
     dynamic();
     ^^^^^^^";
-    self::use(invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:23:9: Error: Method not found: 'dynamic'.
+    self::use(invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:23:9: Error: Couldn't find constructor 'dynamic'.
     use(dynamic());
         ^^^^^^^");
-    invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:24:5: Error: Method not found: 'T'.
+    invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:24:5: Error: Couldn't find constructor 'T'.
     T();
     ^";
-    self::use(invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:25:9: Error: Method not found: 'T'.
+    self::use(invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:25:9: Error: Couldn't find constructor 'T'.
     use(T());
         ^");
-    invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:26:5: Error: Method not found: 'Func'.
+    invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:26:5: Error: Couldn't find constructor 'Func'.
     Func();
     ^^^^";
-    self::use(invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:27:9: Error: Method not found: 'Func'.
+    self::use(invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:27:9: Error: Couldn't find constructor 'Func'.
     use(Func());
         ^^^^");
     invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:29:5: Error: Can't assign to a type literal.
diff --git a/pkg/front_end/testcases/rasta/typedef.dart.weak.expect b/pkg/front_end/testcases/rasta/typedef.dart.weak.expect
index 45de744..3020e18 100644
--- a/pkg/front_end/testcases/rasta/typedef.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/typedef.dart.weak.expect
@@ -10,7 +10,7 @@
 //   Foo ??= null;
 //   ^^^
 //
-// pkg/front_end/testcases/rasta/typedef.dart:11:3: Error: Method not found: 'Foo'.
+// pkg/front_end/testcases/rasta/typedef.dart:11:3: Error: Couldn't find constructor 'Foo'.
 //   Foo();
 //   ^^^
 //
@@ -26,7 +26,7 @@
   (#C1) == null ?{invalid-type} invalid-expression "pkg/front_end/testcases/rasta/typedef.dart:10:3: Error: Can't assign to a type literal.
   Foo ??= null;
   ^^^" : null;
-  invalid-expression "pkg/front_end/testcases/rasta/typedef.dart:11:3: Error: Method not found: 'Foo'.
+  invalid-expression "pkg/front_end/testcases/rasta/typedef.dart:11:3: Error: Couldn't find constructor 'Foo'.
   Foo();
   ^^^";
 }
diff --git a/pkg/front_end/testcases/rasta/typedef.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/typedef.dart.weak.transformed.expect
index a260f4d..fa1d089 100644
--- a/pkg/front_end/testcases/rasta/typedef.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/typedef.dart.weak.transformed.expect
@@ -10,7 +10,7 @@
 //   Foo ??= null;
 //   ^^^
 //
-// pkg/front_end/testcases/rasta/typedef.dart:11:3: Error: Method not found: 'Foo'.
+// pkg/front_end/testcases/rasta/typedef.dart:11:3: Error: Couldn't find constructor 'Foo'.
 //   Foo();
 //   ^^^
 //
@@ -26,7 +26,7 @@
   (#C1) == null ?{invalid-type} invalid-expression "pkg/front_end/testcases/rasta/typedef.dart:10:3: Error: Can't assign to a type literal.
   Foo ??= null;
   ^^^" : null;
-  invalid-expression "pkg/front_end/testcases/rasta/typedef.dart:11:3: Error: Method not found: 'Foo'.
+  invalid-expression "pkg/front_end/testcases/rasta/typedef.dart:11:3: Error: Couldn't find constructor 'Foo'.
   Foo();
   ^^^";
 }
diff --git a/pkg/front_end/testcases/rasta/unresolved.dart.weak.expect b/pkg/front_end/testcases/rasta/unresolved.dart.weak.expect
index bc52a62..39e56f4 100644
--- a/pkg/front_end/testcases/rasta/unresolved.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/unresolved.dart.weak.expect
@@ -2,14 +2,14 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/rasta/unresolved.dart:6:7: Error: Method not found: 'Missing'.
+// pkg/front_end/testcases/rasta/unresolved.dart:6:7: Error: Couldn't find constructor 'Missing'.
 //   new Missing();
 //       ^^^^^^^
 //
 import self as self;
 
 static method main() → dynamic {
-  invalid-expression "pkg/front_end/testcases/rasta/unresolved.dart:6:7: Error: Method not found: 'Missing'.
+  invalid-expression "pkg/front_end/testcases/rasta/unresolved.dart:6:7: Error: Couldn't find constructor 'Missing'.
   new Missing();
       ^^^^^^^";
 }
diff --git a/pkg/front_end/testcases/rasta/unresolved.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/unresolved.dart.weak.transformed.expect
index bc52a62..39e56f4 100644
--- a/pkg/front_end/testcases/rasta/unresolved.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/unresolved.dart.weak.transformed.expect
@@ -2,14 +2,14 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/rasta/unresolved.dart:6:7: Error: Method not found: 'Missing'.
+// pkg/front_end/testcases/rasta/unresolved.dart:6:7: Error: Couldn't find constructor 'Missing'.
 //   new Missing();
 //       ^^^^^^^
 //
 import self as self;
 
 static method main() → dynamic {
-  invalid-expression "pkg/front_end/testcases/rasta/unresolved.dart:6:7: Error: Method not found: 'Missing'.
+  invalid-expression "pkg/front_end/testcases/rasta/unresolved.dart:6:7: Error: Couldn't find constructor 'Missing'.
   new Missing();
       ^^^^^^^";
 }
diff --git a/pkg/front_end/testcases/rasta/unresolved_constructor.dart.weak.expect b/pkg/front_end/testcases/rasta/unresolved_constructor.dart.weak.expect
index 9b5f481..fc47b33 100644
--- a/pkg/front_end/testcases/rasta/unresolved_constructor.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/unresolved_constructor.dart.weak.expect
@@ -9,7 +9,7 @@
 //   Foo(x, y);
 //   ^^^
 //
-// pkg/front_end/testcases/rasta/unresolved_constructor.dart:11:11: Error: Method not found: 'Foo.notHere'.
+// pkg/front_end/testcases/rasta/unresolved_constructor.dart:11:11: Error: Couldn't find constructor 'Foo.notHere'.
 //   new Foo.notHere();
 //           ^^^^^^^
 //
@@ -35,7 +35,7 @@
   invalid-expression "pkg/front_end/testcases/rasta/unresolved_constructor.dart:10:10: Error: Too few positional arguments: 2 required, 0 given.
   new Foo();
          ^";
-  invalid-expression "pkg/front_end/testcases/rasta/unresolved_constructor.dart:11:11: Error: Method not found: 'Foo.notHere'.
+  invalid-expression "pkg/front_end/testcases/rasta/unresolved_constructor.dart:11:11: Error: Couldn't find constructor 'Foo.notHere'.
   new Foo.notHere();
           ^^^^^^^";
 }
diff --git a/pkg/front_end/testcases/rasta/unresolved_constructor.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/unresolved_constructor.dart.weak.transformed.expect
index 9b5f481..fc47b33 100644
--- a/pkg/front_end/testcases/rasta/unresolved_constructor.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/unresolved_constructor.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
 //   Foo(x, y);
 //   ^^^
 //
-// pkg/front_end/testcases/rasta/unresolved_constructor.dart:11:11: Error: Method not found: 'Foo.notHere'.
+// pkg/front_end/testcases/rasta/unresolved_constructor.dart:11:11: Error: Couldn't find constructor 'Foo.notHere'.
 //   new Foo.notHere();
 //           ^^^^^^^
 //
@@ -35,7 +35,7 @@
   invalid-expression "pkg/front_end/testcases/rasta/unresolved_constructor.dart:10:10: Error: Too few positional arguments: 2 required, 0 given.
   new Foo();
          ^";
-  invalid-expression "pkg/front_end/testcases/rasta/unresolved_constructor.dart:11:11: Error: Method not found: 'Foo.notHere'.
+  invalid-expression "pkg/front_end/testcases/rasta/unresolved_constructor.dart:11:11: Error: Couldn't find constructor 'Foo.notHere'.
   new Foo.notHere();
           ^^^^^^^";
 }
diff --git a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.weak.expect b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.weak.expect
index 1735d2a..1600ec3 100644
--- a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.weak.expect
@@ -45,7 +45,7 @@
 //       print(key);
 //             ^^^
 //
-// pkg/front_end/testcases/rasta/unresolved_for_in.dart:32:11: Error: Getter not found: 'key'.
+// pkg/front_end/testcases/rasta/unresolved_for_in.dart:32:11: Error: Undefined name 'key'.
 //     print(key);
 //           ^^^
 //
@@ -74,7 +74,7 @@
 //   for (1 in arguments) {
 //        ^
 //
-// pkg/front_end/testcases/rasta/unresolved_for_in.dart:44:11: Error: Getter not found: 'key'.
+// pkg/front_end/testcases/rasta/unresolved_for_in.dart:44:11: Error: Undefined name 'key'.
 //     print(key);
 //           ^^^
 //
@@ -163,7 +163,7 @@
     invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:31:8: Error: Setter not found: 'key'.
   for (key in arguments) {
        ^^^";
-    core::print(invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:32:11: Error: Getter not found: 'key'.
+    core::print(invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:32:11: Error: Undefined name 'key'.
     print(key);
           ^^^");
   }
@@ -196,7 +196,7 @@
   for (1 in arguments) {
        ^";
       1;
-      core::print(invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:44:11: Error: Getter not found: 'key'.
+      core::print(invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:44:11: Error: Undefined name 'key'.
     print(key);
           ^^^");
     }
diff --git a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.weak.transformed.expect
index 540c81f..f07fe0b 100644
--- a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.weak.transformed.expect
@@ -45,7 +45,7 @@
 //       print(key);
 //             ^^^
 //
-// pkg/front_end/testcases/rasta/unresolved_for_in.dart:32:11: Error: Getter not found: 'key'.
+// pkg/front_end/testcases/rasta/unresolved_for_in.dart:32:11: Error: Undefined name 'key'.
 //     print(key);
 //           ^^^
 //
@@ -74,7 +74,7 @@
 //   for (1 in arguments) {
 //        ^
 //
-// pkg/front_end/testcases/rasta/unresolved_for_in.dart:44:11: Error: Getter not found: 'key'.
+// pkg/front_end/testcases/rasta/unresolved_for_in.dart:44:11: Error: Undefined name 'key'.
 //     print(key);
 //           ^^^
 //
@@ -197,7 +197,7 @@
         invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:31:8: Error: Setter not found: 'key'.
   for (key in arguments) {
        ^^^";
-        core::print(invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:32:11: Error: Getter not found: 'key'.
+        core::print(invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:32:11: Error: Undefined name 'key'.
     print(key);
           ^^^");
       }
@@ -254,7 +254,7 @@
   for (1 in arguments) {
        ^";
           1;
-          core::print(invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:44:11: Error: Getter not found: 'key'.
+          core::print(invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:44:11: Error: Undefined name 'key'.
     print(key);
           ^^^");
         }
diff --git a/pkg/front_end/testcases/rasta/unresolved_recovery.dart.weak.expect b/pkg/front_end/testcases/rasta/unresolved_recovery.dart.weak.expect
index 85bcb06..8bd61ac 100644
--- a/pkg/front_end/testcases/rasta/unresolved_recovery.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/unresolved_recovery.dart.weak.expect
@@ -31,7 +31,7 @@
 //   on Exception catch (e) { }
 //                ^^^^^
 //
-// pkg/front_end/testcases/rasta/unresolved_recovery.dart:20:23: Error: Getter not found: 'e'.
+// pkg/front_end/testcases/rasta/unresolved_recovery.dart:20:23: Error: Undefined name 'e'.
 //   on Exception catch (e) { }
 //                       ^
 //
diff --git a/pkg/front_end/testcases/regress/issue_29982.dart.weak.expect b/pkg/front_end/testcases/regress/issue_29982.dart.weak.expect
index 32136e8..382c715 100644
--- a/pkg/front_end/testcases/regress/issue_29982.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_29982.dart.weak.expect
@@ -25,7 +25,7 @@
 //   print('${eh[éh']}');
 //                 ^^^^
 //
-// pkg/front_end/testcases/regress/issue_29982.dart:7:15: Error: Getter not found: 'éh'.
+// pkg/front_end/testcases/regress/issue_29982.dart:7:15: Error: Undefined name 'éh'.
 //   print('${eh[éh']}');
 //               ^^
 //
@@ -42,7 +42,7 @@
 
 static method main() → dynamic {
   core::Map<core::String*, core::String*>* eh = <core::String*, core::String*>{"\u0233h": "\u0233h"};
-  core::print("${eh.{core::Map::[]}(invalid-expression "pkg/front_end/testcases/regress/issue_29982.dart:7:15: Error: Getter not found: '\u0233h'.
+  core::print("${eh.{core::Map::[]}(invalid-expression "pkg/front_end/testcases/regress/issue_29982.dart:7:15: Error: Undefined name '\u0233h'.
   print('\${eh[\u0233h']}');
               ^^"){(core::Object*) →* core::String*}}");
 }
diff --git a/pkg/front_end/testcases/regress/issue_29982.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_29982.dart.weak.transformed.expect
index 32136e8..382c715 100644
--- a/pkg/front_end/testcases/regress/issue_29982.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_29982.dart.weak.transformed.expect
@@ -25,7 +25,7 @@
 //   print('${eh[éh']}');
 //                 ^^^^
 //
-// pkg/front_end/testcases/regress/issue_29982.dart:7:15: Error: Getter not found: 'éh'.
+// pkg/front_end/testcases/regress/issue_29982.dart:7:15: Error: Undefined name 'éh'.
 //   print('${eh[éh']}');
 //               ^^
 //
@@ -42,7 +42,7 @@
 
 static method main() → dynamic {
   core::Map<core::String*, core::String*>* eh = <core::String*, core::String*>{"\u0233h": "\u0233h"};
-  core::print("${eh.{core::Map::[]}(invalid-expression "pkg/front_end/testcases/regress/issue_29982.dart:7:15: Error: Getter not found: '\u0233h'.
+  core::print("${eh.{core::Map::[]}(invalid-expression "pkg/front_end/testcases/regress/issue_29982.dart:7:15: Error: Undefined name '\u0233h'.
   print('\${eh[\u0233h']}');
               ^^"){(core::Object*) →* core::String*}}");
 }
diff --git a/pkg/front_end/testcases/regress/issue_29983.dart.weak.expect b/pkg/front_end/testcases/regress/issue_29983.dart.weak.expect
index 37906e0..990d69c 100644
--- a/pkg/front_end/testcases/regress/issue_29983.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_29983.dart.weak.expect
@@ -2,7 +2,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/regress/issue_29983.dart:7:10: Error: Getter not found: 'missing'.
+// pkg/front_end/testcases/regress/issue_29983.dart:7:10: Error: Undefined name 'missing'.
 //   return missing;
 //          ^^^^^^^
 //
@@ -10,7 +10,7 @@
 //   return missing;
 //   ^
 //
-// pkg/front_end/testcases/regress/issue_29983.dart:11:14: Error: Getter not found: 'dummy'.
+// pkg/front_end/testcases/regress/issue_29983.dart:11:14: Error: Undefined name 'dummy'.
 // g() sync* => dummy;
 //              ^^^^^
 //
diff --git a/pkg/front_end/testcases/regress/issue_29983.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_29983.dart.weak.transformed.expect
index fedb52d..38371ce 100644
--- a/pkg/front_end/testcases/regress/issue_29983.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_29983.dart.weak.transformed.expect
@@ -2,7 +2,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/regress/issue_29983.dart:7:10: Error: Getter not found: 'missing'.
+// pkg/front_end/testcases/regress/issue_29983.dart:7:10: Error: Undefined name 'missing'.
 //   return missing;
 //          ^^^^^^^
 //
@@ -10,7 +10,7 @@
 //   return missing;
 //   ^
 //
-// pkg/front_end/testcases/regress/issue_29983.dart:11:14: Error: Getter not found: 'dummy'.
+// pkg/front_end/testcases/regress/issue_29983.dart:11:14: Error: Undefined name 'dummy'.
 // g() sync* => dummy;
 //              ^^^^^
 //
diff --git a/pkg/front_end/testcases/regress/issue_29984.dart.weak.expect b/pkg/front_end/testcases/regress/issue_29984.dart.weak.expect
index 9ca173e..0c71c56 100644
--- a/pkg/front_end/testcases/regress/issue_29984.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_29984.dart.weak.expect
@@ -2,7 +2,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/regress/issue_29984.dart:6:16: Error: Getter not found: 'i'.
+// pkg/front_end/testcases/regress/issue_29984.dart:6:16: Error: Undefined name 'i'.
 //   for (int i = i;; false) {}
 //                ^
 //
@@ -19,7 +19,7 @@
 static method bad() → dynamic {
   for (core::int* i = invalid-expression "pkg/front_end/testcases/regress/issue_29984.dart:6:12: Error: Can't declare 'i' because it was already used in this scope.
   for (int i = i;; false) {}
-           ^" in invalid-expression "pkg/front_end/testcases/regress/issue_29984.dart:6:16: Error: Getter not found: 'i'.
+           ^" in invalid-expression "pkg/front_end/testcases/regress/issue_29984.dart:6:16: Error: Undefined name 'i'.
   for (int i = i;; false) {}
                ^"; ; false) {
   }
diff --git a/pkg/front_end/testcases/regress/issue_29984.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_29984.dart.weak.transformed.expect
index 9ca173e..0c71c56 100644
--- a/pkg/front_end/testcases/regress/issue_29984.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_29984.dart.weak.transformed.expect
@@ -2,7 +2,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/regress/issue_29984.dart:6:16: Error: Getter not found: 'i'.
+// pkg/front_end/testcases/regress/issue_29984.dart:6:16: Error: Undefined name 'i'.
 //   for (int i = i;; false) {}
 //                ^
 //
@@ -19,7 +19,7 @@
 static method bad() → dynamic {
   for (core::int* i = invalid-expression "pkg/front_end/testcases/regress/issue_29984.dart:6:12: Error: Can't declare 'i' because it was already used in this scope.
   for (int i = i;; false) {}
-           ^" in invalid-expression "pkg/front_end/testcases/regress/issue_29984.dart:6:16: Error: Getter not found: 'i'.
+           ^" in invalid-expression "pkg/front_end/testcases/regress/issue_29984.dart:6:16: Error: Undefined name 'i'.
   for (int i = i;; false) {}
                ^"; ; false) {
   }
diff --git a/pkg/front_end/testcases/regress/issue_29985.dart.weak.expect b/pkg/front_end/testcases/regress/issue_29985.dart.weak.expect
index eff9615..ca444a5 100644
--- a/pkg/front_end/testcases/regress/issue_29985.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_29985.dart.weak.expect
@@ -11,14 +11,14 @@
 //   🔛
 //   ^^
 //
-// pkg/front_end/testcases/regress/issue_29985.dart:6:3: Error: Getter not found: '🔛'.
+// pkg/front_end/testcases/regress/issue_29985.dart:6:3: Error: Undefined name '🔛'.
 //   🔛
 //   ^^
 //
 import self as self;
 
 static method bad() → dynamic {
-  invalid-expression "pkg/front_end/testcases/regress/issue_29985.dart:6:3: Error: Getter not found: '\u55357\u56603'.
+  invalid-expression "pkg/front_end/testcases/regress/issue_29985.dart:6:3: Error: Undefined name '\u55357\u56603'.
   \u55357\u56603
   ^^";
 }
diff --git a/pkg/front_end/testcases/regress/issue_29985.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_29985.dart.weak.transformed.expect
index eff9615..ca444a5 100644
--- a/pkg/front_end/testcases/regress/issue_29985.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_29985.dart.weak.transformed.expect
@@ -11,14 +11,14 @@
 //   🔛
 //   ^^
 //
-// pkg/front_end/testcases/regress/issue_29985.dart:6:3: Error: Getter not found: '🔛'.
+// pkg/front_end/testcases/regress/issue_29985.dart:6:3: Error: Undefined name '🔛'.
 //   🔛
 //   ^^
 //
 import self as self;
 
 static method bad() → dynamic {
-  invalid-expression "pkg/front_end/testcases/regress/issue_29985.dart:6:3: Error: Getter not found: '\u55357\u56603'.
+  invalid-expression "pkg/front_end/testcases/regress/issue_29985.dart:6:3: Error: Undefined name '\u55357\u56603'.
   \u55357\u56603
   ^^";
 }
diff --git a/pkg/front_end/testcases/regress/issue_33452.dart.weak.expect b/pkg/front_end/testcases/regress/issue_33452.dart.weak.expect
index f8b0ff2..0f3ef8d 100644
--- a/pkg/front_end/testcases/regress/issue_33452.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_33452.dart.weak.expect
@@ -2,27 +2,27 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/regress/issue_33452.dart:10:29: Error: Method not found: 'ExistingClass.nonExistingConstructor'.
+// pkg/front_end/testcases/regress/issue_33452.dart:10:29: Error: Couldn't find constructor 'ExistingClass.nonExistingConstructor'.
 //   var x = new ExistingClass.nonExistingConstructor();
 //                             ^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/regress/issue_33452.dart:11:11: Error: Method not found: 'ExistingClass'.
+// pkg/front_end/testcases/regress/issue_33452.dart:11:11: Error: Couldn't find constructor 'ExistingClass'.
 //   x = new ExistingClass();
 //           ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/regress/issue_33452.dart:12:11: Error: Method not found: 'ExistingClass'.
+// pkg/front_end/testcases/regress/issue_33452.dart:12:11: Error: Couldn't find constructor 'ExistingClass'.
 //   x = new ExistingClass<String>();
 //           ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/regress/issue_33452.dart:13:33: Error: Method not found: 'ExistingClass.nonExistingConstructor'.
+// pkg/front_end/testcases/regress/issue_33452.dart:13:33: Error: Couldn't find constructor 'ExistingClass.nonExistingConstructor'.
 //   x = new ExistingClass<String>.nonExistingConstructor();
 //                                 ^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/regress/issue_33452.dart:14:41: Error: Method not found: 'ExistingClass.nonExistingConstructor'.
+// pkg/front_end/testcases/regress/issue_33452.dart:14:41: Error: Couldn't find constructor 'ExistingClass.nonExistingConstructor'.
 //   x = new ExistingClass<String, String>.nonExistingConstructor();
 //                                         ^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/regress/issue_33452.dart:15:11: Error: Method not found: 'NonExistingClass'.
+// pkg/front_end/testcases/regress/issue_33452.dart:15:11: Error: Couldn't find constructor 'NonExistingClass'.
 //   x = new NonExistingClass();
 //           ^^^^^^^^^^^^^^^^
 //
@@ -45,22 +45,22 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  invalid-type x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:10:29: Error: Method not found: 'ExistingClass.nonExistingConstructor'.
+  invalid-type x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:10:29: Error: Couldn't find constructor 'ExistingClass.nonExistingConstructor'.
   var x = new ExistingClass.nonExistingConstructor();
                             ^^^^^^^^^^^^^^^^^^^^^^";
-  x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:11:11: Error: Method not found: 'ExistingClass'.
+  x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:11:11: Error: Couldn't find constructor 'ExistingClass'.
   x = new ExistingClass();
           ^^^^^^^^^^^^^";
-  x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:12:11: Error: Method not found: 'ExistingClass'.
+  x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:12:11: Error: Couldn't find constructor 'ExistingClass'.
   x = new ExistingClass<String>();
           ^^^^^^^^^^^^^";
-  x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:13:33: Error: Method not found: 'ExistingClass.nonExistingConstructor'.
+  x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:13:33: Error: Couldn't find constructor 'ExistingClass.nonExistingConstructor'.
   x = new ExistingClass<String>.nonExistingConstructor();
                                 ^^^^^^^^^^^^^^^^^^^^^^";
-  x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:14:41: Error: Method not found: 'ExistingClass.nonExistingConstructor'.
+  x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:14:41: Error: Couldn't find constructor 'ExistingClass.nonExistingConstructor'.
   x = new ExistingClass<String, String>.nonExistingConstructor();
                                         ^^^^^^^^^^^^^^^^^^^^^^";
-  x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:15:11: Error: Method not found: 'NonExistingClass'.
+  x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:15:11: Error: Couldn't find constructor 'NonExistingClass'.
   x = new NonExistingClass();
           ^^^^^^^^^^^^^^^^";
 }
diff --git a/pkg/front_end/testcases/regress/issue_33452.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_33452.dart.weak.transformed.expect
index f8b0ff2..0f3ef8d 100644
--- a/pkg/front_end/testcases/regress/issue_33452.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_33452.dart.weak.transformed.expect
@@ -2,27 +2,27 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/regress/issue_33452.dart:10:29: Error: Method not found: 'ExistingClass.nonExistingConstructor'.
+// pkg/front_end/testcases/regress/issue_33452.dart:10:29: Error: Couldn't find constructor 'ExistingClass.nonExistingConstructor'.
 //   var x = new ExistingClass.nonExistingConstructor();
 //                             ^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/regress/issue_33452.dart:11:11: Error: Method not found: 'ExistingClass'.
+// pkg/front_end/testcases/regress/issue_33452.dart:11:11: Error: Couldn't find constructor 'ExistingClass'.
 //   x = new ExistingClass();
 //           ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/regress/issue_33452.dart:12:11: Error: Method not found: 'ExistingClass'.
+// pkg/front_end/testcases/regress/issue_33452.dart:12:11: Error: Couldn't find constructor 'ExistingClass'.
 //   x = new ExistingClass<String>();
 //           ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/regress/issue_33452.dart:13:33: Error: Method not found: 'ExistingClass.nonExistingConstructor'.
+// pkg/front_end/testcases/regress/issue_33452.dart:13:33: Error: Couldn't find constructor 'ExistingClass.nonExistingConstructor'.
 //   x = new ExistingClass<String>.nonExistingConstructor();
 //                                 ^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/regress/issue_33452.dart:14:41: Error: Method not found: 'ExistingClass.nonExistingConstructor'.
+// pkg/front_end/testcases/regress/issue_33452.dart:14:41: Error: Couldn't find constructor 'ExistingClass.nonExistingConstructor'.
 //   x = new ExistingClass<String, String>.nonExistingConstructor();
 //                                         ^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/regress/issue_33452.dart:15:11: Error: Method not found: 'NonExistingClass'.
+// pkg/front_end/testcases/regress/issue_33452.dart:15:11: Error: Couldn't find constructor 'NonExistingClass'.
 //   x = new NonExistingClass();
 //           ^^^^^^^^^^^^^^^^
 //
@@ -45,22 +45,22 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  invalid-type x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:10:29: Error: Method not found: 'ExistingClass.nonExistingConstructor'.
+  invalid-type x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:10:29: Error: Couldn't find constructor 'ExistingClass.nonExistingConstructor'.
   var x = new ExistingClass.nonExistingConstructor();
                             ^^^^^^^^^^^^^^^^^^^^^^";
-  x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:11:11: Error: Method not found: 'ExistingClass'.
+  x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:11:11: Error: Couldn't find constructor 'ExistingClass'.
   x = new ExistingClass();
           ^^^^^^^^^^^^^";
-  x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:12:11: Error: Method not found: 'ExistingClass'.
+  x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:12:11: Error: Couldn't find constructor 'ExistingClass'.
   x = new ExistingClass<String>();
           ^^^^^^^^^^^^^";
-  x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:13:33: Error: Method not found: 'ExistingClass.nonExistingConstructor'.
+  x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:13:33: Error: Couldn't find constructor 'ExistingClass.nonExistingConstructor'.
   x = new ExistingClass<String>.nonExistingConstructor();
                                 ^^^^^^^^^^^^^^^^^^^^^^";
-  x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:14:41: Error: Method not found: 'ExistingClass.nonExistingConstructor'.
+  x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:14:41: Error: Couldn't find constructor 'ExistingClass.nonExistingConstructor'.
   x = new ExistingClass<String, String>.nonExistingConstructor();
                                         ^^^^^^^^^^^^^^^^^^^^^^";
-  x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:15:11: Error: Method not found: 'NonExistingClass'.
+  x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:15:11: Error: Couldn't find constructor 'NonExistingClass'.
   x = new NonExistingClass();
           ^^^^^^^^^^^^^^^^";
 }
diff --git a/pkg/front_end/testcases/regress/issue_39091_2.dart.weak.expect b/pkg/front_end/testcases/regress/issue_39091_2.dart.weak.expect
index baaeba50..0ebcc72 100644
--- a/pkg/front_end/testcases/regress/issue_39091_2.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_39091_2.dart.weak.expect
@@ -14,7 +14,7 @@
 // "﻿";
 //    ^
 //
-// pkg/front_end/testcases/regress/issue_39091_2.dart:11:11: Error: Getter not found: 'hello'.
+// pkg/front_end/testcases/regress/issue_39091_2.dart:11:11: Error: Undefined name 'hello'.
 // "﻿";/*æ*/ hello; /*æ*/
 //           ^^^^^
 //
@@ -28,7 +28,7 @@
   "A";
   "\u65279";
   "\u65279";
-  invalid-expression "pkg/front_end/testcases/regress/issue_39091_2.dart:11:11: Error: Getter not found: 'hello'.
+  invalid-expression "pkg/front_end/testcases/regress/issue_39091_2.dart:11:11: Error: Undefined name 'hello'.
 \"\u65279\";/*\u0230*/ hello; /*\u0230*/
           ^^^^^";
 }
diff --git a/pkg/front_end/testcases/regress/issue_39091_2.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_39091_2.dart.weak.transformed.expect
index baaeba50..0ebcc72 100644
--- a/pkg/front_end/testcases/regress/issue_39091_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_39091_2.dart.weak.transformed.expect
@@ -14,7 +14,7 @@
 // "﻿";
 //    ^
 //
-// pkg/front_end/testcases/regress/issue_39091_2.dart:11:11: Error: Getter not found: 'hello'.
+// pkg/front_end/testcases/regress/issue_39091_2.dart:11:11: Error: Undefined name 'hello'.
 // "﻿";/*æ*/ hello; /*æ*/
 //           ^^^^^
 //
@@ -28,7 +28,7 @@
   "A";
   "\u65279";
   "\u65279";
-  invalid-expression "pkg/front_end/testcases/regress/issue_39091_2.dart:11:11: Error: Getter not found: 'hello'.
+  invalid-expression "pkg/front_end/testcases/regress/issue_39091_2.dart:11:11: Error: Undefined name 'hello'.
 \"\u65279\";/*\u0230*/ hello; /*\u0230*/
           ^^^^^";
 }
diff --git a/pkg/front_end/testcases/regress/utf_16_le_content.crash_dart.weak.expect b/pkg/front_end/testcases/regress/utf_16_le_content.crash_dart.weak.expect
index 459497a..bfc33bf 100644
--- a/pkg/front_end/testcases/regress/utf_16_le_content.crash_dart.weak.expect
+++ b/pkg/front_end/testcases/regress/utf_16_le_content.crash_dart.weak.expect
Binary files differ
diff --git a/pkg/front_end/testcases/regress/utf_16_le_content.crash_dart.weak.transformed.expect b/pkg/front_end/testcases/regress/utf_16_le_content.crash_dart.weak.transformed.expect
index 459497a..bfc33bf 100644
--- a/pkg/front_end/testcases/regress/utf_16_le_content.crash_dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/utf_16_le_content.crash_dart.weak.transformed.expect
Binary files differ
diff --git a/pkg/front_end/testcases/strong.status b/pkg/front_end/testcases/strong.status
index 47b80dd..42c7fc9 100644
--- a/pkg/front_end/testcases/strong.status
+++ b/pkg/front_end/testcases/strong.status
@@ -9,6 +9,8 @@
 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 dc74759..4fdbf7c 100644
--- a/pkg/front_end/testcases/text_serialization.status
+++ b/pkg/front_end/testcases/text_serialization.status
@@ -7,6 +7,8 @@
 # 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/weak.status b/pkg/front_end/testcases/weak.status
index 7263971..a641ff3 100644
--- a/pkg/front_end/testcases/weak.status
+++ b/pkg/front_end/testcases/weak.status
@@ -12,6 +12,8 @@
 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/kernel/bin/dill_forensic.dart b/pkg/kernel/bin/dill_forensic.dart
new file mode 100755
index 0000000..54c1bab
--- /dev/null
+++ b/pkg/kernel/bin/dill_forensic.dart
@@ -0,0 +1,106 @@
+#!/usr/bin/env 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 'dart:io';
+import 'dart:typed_data';
+
+import 'package:kernel/kernel.dart'
+    show Component, Source, loadComponentFromBytes;
+import 'package:kernel/binary/tag.dart' show Tag;
+
+main(List<String> args) {
+  if (args.length != 1) {
+    throw "Usage: dart <script> <dillfile>";
+  }
+  File file = new File(args.single);
+  if (!file.existsSync()) {
+    throw "Given file doesn't exist.\n"
+        "Usage: dart <script> <dillfile>";
+  }
+  Uint8List bytes = file.readAsBytesSync();
+  List<Component> components = splitAndRead(bytes);
+  print("Sucessfully read ${components.length} sub-components.");
+
+  for (int i = 0; i < components.length; i++) {
+    Component component = components[i];
+    print("Component #${i + 1}:");
+    for (MapEntry<Uri, Source> entry in component.uriToSource.entries) {
+      String importUri = entry.value.importUri.toString();
+      String fileUri = entry.key.toString();
+      if (importUri != fileUri) {
+        print(" - $importUri ($fileUri)");
+      } else {
+        print(" - $fileUri");
+      }
+    }
+  }
+
+  // TODO(jensj): Could we read _some_ (useful) data from a partial component
+  // (e.g. one that stops after the first few libraries)?
+}
+
+List<Component> splitAndRead(Uint8List bytes) {
+  List<Component> components = [];
+
+  // Search for magic component file tag.
+  List<int> magicTagBytes = [
+    (Tag.ComponentFile >> 24) & 0XFF,
+    (Tag.ComponentFile >> 16) & 0XFF,
+    (Tag.ComponentFile >> 8) & 0XFF,
+    (Tag.ComponentFile >> 0) & 0XFF,
+  ];
+  List<int> tagOffsets = [];
+  for (int index = 0; index < bytes.length - 7; index++) {
+    if (bytes[index] == magicTagBytes[0] &&
+        bytes[index + 1] == magicTagBytes[1] &&
+        bytes[index + 2] == magicTagBytes[2] &&
+        bytes[index + 3] == magicTagBytes[3]) {
+      // Try to read binary version too and see if it matches.
+      int version = (bytes[index + 4] << 24) |
+          (bytes[index + 5] << 16) |
+          (bytes[index + 6] << 8) |
+          bytes[index + 7];
+      if (version != Tag.BinaryFormatVersion) {
+        print("Found tag, but version mismatches "
+            "('$version' vs readable version '${Tag.BinaryFormatVersion}'). "
+            "Try again in a different checkout.");
+      } else {
+        tagOffsets.add(index);
+      }
+    }
+  }
+  print("Found ${tagOffsets.length} possible tag offsets.");
+
+  // Add fake file tag after end of bytes to also attempt "last component".
+  tagOffsets.add(bytes.length);
+
+  // Warning: O(n²) algorithm (though, as the tag is assumed to be rather unique
+  // in normal cases it will probably much better in practise
+  // (and n will be low)).
+  int fromIndex = 0;
+  while (fromIndex < tagOffsets.length - 1) {
+    int toIndex = fromIndex + 1;
+    while (toIndex < tagOffsets.length) {
+      // Cut bytes and try to load.
+      int fromOffset = tagOffsets[fromIndex];
+      int toOffset = tagOffsets[toIndex];
+      Uint8List bytesView =
+          new Uint8List.sublistView(bytes, fromOffset, toOffset);
+      try {
+        Component loaded = loadComponentFromBytes(bytesView);
+        components.add(loaded);
+        print("Loaded from tag ${fromIndex} to ${toIndex}.");
+        break;
+      } catch (e) {
+        print("Failed loading from tag ${fromIndex} to ${toIndex}"
+            " (${toOffset - fromOffset} bytes).");
+        toIndex++;
+      }
+    }
+    fromIndex++;
+  }
+
+  return components;
+}
diff --git a/runtime/vm/heap/scavenger.cc b/runtime/vm/heap/scavenger.cc
index 616c214..cf52ef4 100644
--- a/runtime/vm/heap/scavenger.cc
+++ b/runtime/vm/heap/scavenger.cc
@@ -288,12 +288,11 @@
   void UpdateStoreBuffer(ObjectPtr obj) {
     ASSERT(obj->IsHeapObject());
     // If the newly written object is not a new object, drop it immediately.
-    if (!obj->IsNewObject()) {
+    if (!obj->IsNewObject() || visiting_old_object_->untag()->IsRemembered()) {
       return;
     }
-    if (visiting_old_object_->untag()->TryAcquireRememberedBit()) {
-      thread_->StoreBufferAddObjectGC(visiting_old_object_);
-    }
+    visiting_old_object_->untag()->SetRememberedBit();
+    thread_->StoreBufferAddObjectGC(visiting_old_object_);
   }
 
   DART_FORCE_INLINE
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index c27f8e8..f99afbe 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -317,9 +317,10 @@
     ASSERT(IsOldObject());
     return !tags_.Read<OldAndNotRememberedBit>();
   }
-  bool TryAcquireRememberedBit() {
+  void SetRememberedBit() {
+    ASSERT(!IsRemembered());
     ASSERT(!IsCardRemembered());
-    return tags_.TryClear<OldAndNotRememberedBit>();
+    tags_.UpdateBool<OldAndNotRememberedBit>(false);
   }
   void ClearRememberedBit() {
     ASSERT(IsOldObject());
@@ -327,10 +328,10 @@
   }
 
   DART_FORCE_INLINE
-  void EnsureInRememberedSet(Thread* thread) {
-    if (TryAcquireRememberedBit()) {
-      thread->StoreBufferAddObject(ObjectPtr(this));
-    }
+  void AddToRememberedSet(Thread* thread) {
+    ASSERT(!this->IsRemembered());
+    this->SetRememberedBit();
+    thread->StoreBufferAddObject(ObjectPtr(this));
   }
 
   bool IsCardRemembered() const { return tags_.Read<CardRememberedBit>(); }
@@ -664,7 +665,7 @@
       if (value->IsNewObject()) {
         // Generational barrier: record when a store creates an
         // old-and-not-remembered -> new reference.
-        EnsureInRememberedSet(thread);
+        AddToRememberedSet(thread);
       } else {
         // Incremental barrier: record when a store creates an
         // old -> old-and-not-marked reference.
@@ -694,9 +695,11 @@
       if (value->IsNewObject()) {
         // Generational barrier: record when a store creates an
         // old-and-not-remembered -> new reference.
+        ASSERT(!this->IsRemembered());
         if (this->IsCardRemembered()) {
           RememberCard(addr);
-        } else if (this->TryAcquireRememberedBit()) {
+        } else {
+          this->SetRememberedBit();
           thread->StoreBufferAddObject(static_cast<ObjectPtr>(this));
         }
       } else {
diff --git a/runtime/vm/runtime_entry.cc b/runtime/vm/runtime_entry.cc
index d6c3ad6..a545c0e 100644
--- a/runtime/vm/runtime_entry.cc
+++ b/runtime/vm/runtime_entry.cc
@@ -483,7 +483,7 @@
   }
 
   if (add_to_remembered_set) {
-    object->untag()->EnsureInRememberedSet(thread);
+    object->untag()->AddToRememberedSet(thread);
   }
 
   // For incremental write barrier elimination, we need to ensure that the
diff --git a/runtime/vm/thread.cc b/runtime/vm/thread.cc
index f026c1d..2b8bf43 100644
--- a/runtime/vm/thread.cc
+++ b/runtime/vm/thread.cc
@@ -692,7 +692,9 @@
 
       switch (op_) {
         case Thread::RestoreWriteBarrierInvariantOp::kAddToRememberedSet:
-          obj->untag()->EnsureInRememberedSet(current_);
+          if (!obj->untag()->IsRemembered()) {
+            obj->untag()->AddToRememberedSet(current_);
+          }
           if (current_->is_marking()) {
             current_->DeferredMarkingStackAddObject(obj);
           }
diff --git a/tests/language/call/constructor_on_unresolvable_class_test.dart b/tests/language/call/constructor_on_unresolvable_class_test.dart
index 6db90ed..6b9012b 100644
--- a/tests/language/call/constructor_on_unresolvable_class_test.dart
+++ b/tests/language/call/constructor_on_unresolvable_class_test.dart
@@ -12,13 +12,13 @@
   new A();
   //  ^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'A'.
+  // [cfe] Couldn't find constructor 'A'.
   new A.foo();
   //  ^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'A.foo'.
+  // [cfe] Couldn't find constructor 'A.foo'.
   new lib.A();
   //  ^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'lib.A'.
+  // [cfe] Couldn't find constructor 'lib.A'.
 }
diff --git a/tests/language/call/nonexistent_constructor_test.dart b/tests/language/call/nonexistent_constructor_test.dart
index 4c129d0..6ef4f94 100644
--- a/tests/language/call/nonexistent_constructor_test.dart
+++ b/tests/language/call/nonexistent_constructor_test.dart
@@ -20,9 +20,9 @@
   new A.bar(foo());
   //    ^^^
   // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR
-  // [cfe] Method not found: 'A.bar'.
+  // [cfe] Couldn't find constructor 'A.bar'.
   new A();
   //  ^
   // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT
-  // [cfe] Method not found: 'A'.
+  // [cfe] Couldn't find constructor 'A'.
 }
diff --git a/tests/language/class/keyword_test.dart b/tests/language/class/keyword_test.dart
index 8b07fec..1620ca5 100644
--- a/tests/language/class/keyword_test.dart
+++ b/tests/language/class/keyword_test.dart
@@ -13,15 +13,13 @@
 // [cfe] Expected ';' after this.
 //    ^^^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] 'class' can't be used as an identifier because it's a keyword.
-//    ^^^^^
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_IDENTIFIER_BUT_GOT_KEYWORD
+// [cfe] 'class' can't be used as an identifier because it's a keyword.
 // [cfe] Setter not found: 'class'.
   print("$class");
   //      ^^^^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-  // [cfe] 'class' can't be used as an identifier because it's a keyword.
-  //      ^^^^^
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_IDENTIFIER_BUT_GOT_KEYWORD
-  // [cfe] Getter not found: 'class'.
+  // [cfe] 'class' can't be used as an identifier because it's a keyword.
+  // [cfe] Undefined name 'class'.
 }
diff --git a/tests/language/class/variable_shadow_class_test.dart b/tests/language/class/variable_shadow_class_test.dart
index 3fc29e4..065a0df 100644
--- a/tests/language/class/variable_shadow_class_test.dart
+++ b/tests/language/class/variable_shadow_class_test.dart
@@ -17,7 +17,7 @@
     var i = new Test.named(10);
     //          ^^^^
     // [analyzer] COMPILE_TIME_ERROR.PREFIX_SHADOWED_BY_LOCAL_DECLARATION
-    // [cfe] Method not found: 'Test.named'.
+    // [cfe] Couldn't find constructor 'Test.named'.
     Expect.equals(10, i.field);
   }
 
diff --git a/tests/language/compile_time_constant/compile_time_constant_test.dart b/tests/language/compile_time_constant/compile_time_constant_test.dart
index 7a06543..a3167813 100644
--- a/tests/language/compile_time_constant/compile_time_constant_test.dart
+++ b/tests/language/compile_time_constant/compile_time_constant_test.dart
@@ -14,10 +14,9 @@
       bar
 //    ^^^
 // [analyzer] COMPILE_TIME_ERROR.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE
-// [cfe] Can't access 'this' in a field initializer to read 'bar'.
-//    ^^^
 // [analyzer] COMPILE_TIME_ERROR.IMPLICIT_THIS_REFERENCE_IN_INITIALIZER
-// [cfe] Getter not found: 'bar'.
+// [cfe] Can't access 'this' in a field initializer to read 'bar'.
+// [cfe] Undefined name 'bar'.
       -3;
 }
 
diff --git a/tests/language/constructor/named_constructor_test.dart b/tests/language/constructor/named_constructor_test.dart
index dec22c8..033b3d8 100644
--- a/tests/language/constructor/named_constructor_test.dart
+++ b/tests/language/constructor/named_constructor_test.dart
@@ -37,13 +37,13 @@
   new prefix<int>.Class().value;
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'prefix.Class'.
+  // [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] Method not found: 'prefix.Class'.
+  // [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.
@@ -53,7 +53,7 @@
   new prefix<int>.Class.named().value;
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'prefix.Class'.
+  // [cfe] Couldn't find constructor 'prefix.Class'.
   //              ^^^^^
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
   // [cfe] Expected '(' after this.
@@ -71,7 +71,7 @@
   new prefix<int>.Class<int>.named().value;
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'prefix.Class'.
+  // [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.
@@ -81,7 +81,7 @@
   new prefix<int>.Class.named<int>().value;
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'prefix.Class'.
+  // [cfe] Couldn't find constructor 'prefix.Class'.
   //              ^^^^^
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
   // [cfe] Expected '(' after this.
@@ -97,7 +97,7 @@
   new prefix<int>.Class<int>.named<int>().value;
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'prefix.Class'.
+  // [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.
diff --git a/tests/language/constructor/reference_test.dart b/tests/language/constructor/reference_test.dart
index ddbd57d..55c1f01 100644
--- a/tests/language/constructor/reference_test.dart
+++ b/tests/language/constructor/reference_test.dart
@@ -15,7 +15,7 @@
   //  ^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   //          ^
-  // [cfe] Method not found: 'Foo.bar.baz'.
+  // [cfe] Couldn't find constructor 'Foo.bar.baz'.
   new Foo<int>();
   new Foo<int>.bar();
   new Foo<int>.bar.baz();
@@ -36,14 +36,14 @@
   //      ^
   // [cfe] A constructor invocation can't have type arguments after the constructor name.
   //               ^
-  // [cfe] Method not found: 'Foo.bar.baz'.
+  // [cfe] Couldn't find constructor 'Foo.bar.baz'.
   new Foo.bar.baz<int>();
   //  ^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   //          ^^^
   // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
   // [cfe] A constructor invocation can't have type arguments after the constructor name.
-  // [cfe] Method not found: 'Foo.bar.baz'.
+  // [cfe] Couldn't find constructor 'Foo.bar.baz'.
 
   const Foo();
   const Foo.bar();
@@ -51,7 +51,7 @@
   //    ^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   //            ^
-  // [cfe] Method not found: 'Foo.bar.baz'.
+  // [cfe] Couldn't find constructor 'Foo.bar.baz'.
   const Foo<int>();
   const Foo<int>.bar();
   const Foo<int>.bar.baz();
@@ -72,20 +72,20 @@
   //        ^
   // [cfe] A constructor invocation can't have type arguments after the constructor name.
   //                 ^
-  // [cfe] Method not found: 'Foo.bar.baz'.
+  // [cfe] Couldn't find constructor 'Foo.bar.baz'.
   const Foo.bar.baz<int>();
   //    ^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   //            ^^^
   // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
   // [cfe] A constructor invocation can't have type arguments after the constructor name.
-  // [cfe] Method not found: 'Foo.bar.baz'.
+  // [cfe] Couldn't find constructor 'Foo.bar.baz'.
 
   Foo();
   Foo.bar();
   Foo.bar.baz();
 //    ^
-// [cfe] Getter not found: 'bar'.
+// [cfe] Member not found: 'bar'.
 //        ^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
   Foo<int>();
@@ -95,7 +95,7 @@
   // [analyzer] SYNTACTIC_ERROR.EXPERIMENT_NOT_ENABLED
   // [cfe] This requires the 'constructor-tearoffs' language feature to be enabled.
   //       ^
-  // [cfe] Getter not found: 'bar'.
+  // [cfe] Member not found: 'bar'.
   //           ^^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
   Foo.bar<int>();
@@ -108,13 +108,12 @@
 // [analyzer] COMPILE_TIME_ERROR.DISALLOWED_TYPE_INSTANTIATION_EXPRESSION
 //    ^
 // [cfe] A constructor invocation can't have type arguments after the constructor name.
-//             ^
-// [cfe] Method not found: 'Foo.bar.baz'.
-  //           ^^^
-  // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
+//             ^^^
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
+// [cfe] Couldn't find constructor 'Foo.bar.baz'.
   Foo.bar.baz<int>();
 //    ^
-// [cfe] Getter not found: 'bar'.
+// [cfe] Member not found: 'bar'.
 //        ^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
 }
diff --git a/tests/language/constructor/unresolved_default_constructor_test.dart b/tests/language/constructor/unresolved_default_constructor_test.dart
index b8b5338..a82b346 100644
--- a/tests/language/constructor/unresolved_default_constructor_test.dart
+++ b/tests/language/constructor/unresolved_default_constructor_test.dart
@@ -16,5 +16,5 @@
   Expect.throws(() => new A());
   //                      ^
   // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT
-  // [cfe] Method not found: 'A'.
+  // [cfe] Couldn't find constructor 'A'.
 }
diff --git a/tests/language/enum/private_test.dart b/tests/language/enum/private_test.dart
index a24fec3..7a8dfa3 100644
--- a/tests/language/enum/private_test.dart
+++ b/tests/language/enum/private_test.dart
@@ -21,5 +21,5 @@
   Expect.throwsNoSuchMethodError(() => Enum2._A);
   //                                         ^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_ENUM_CONSTANT
-  // [cfe] Getter not found: '_A'.
+  // [cfe] Member not found: '_A'.
 }
diff --git a/tests/language/extension_methods/static_extension_getter_setter_conflicts_test.dart b/tests/language/extension_methods/static_extension_getter_setter_conflicts_test.dart
index abb4bb3..db533d6 100644
--- a/tests/language/extension_methods/static_extension_getter_setter_conflicts_test.dart
+++ b/tests/language/extension_methods/static_extension_getter_setter_conflicts_test.dart
@@ -65,7 +65,7 @@
   E0(c0)[0];
   //    ^^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_EXTENSION_OPERATOR
-  // [cfe] Getter not found: '[]'.
+  // [cfe] Method not found: '[]'.
   E0(c0)[0] = 0;
 
   c0[0] += 0;
@@ -180,7 +180,6 @@
 // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_EXTENSION_MEMBER_ACCESS
 //   ^
 // [cfe] The operator '[]' is defined in multiple extensions for 'C1<Object?>' and neither is more specific.
-//   ^
 // [cfe] The operator '[]=' is defined in multiple extensions for 'C1<Object?>' and neither is more specific.
 
   c1b[0]++;
@@ -188,7 +187,6 @@
 // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_EXTENSION_MEMBER_ACCESS
 //   ^
 // [cfe] The operator '[]' is defined in multiple extensions for 'C1<Object?>' and neither is more specific.
-//   ^
 // [cfe] The operator '[]=' is defined in multiple extensions for 'C1<Object?>' and neither is more specific.
 
   C1<Object> c1c = C1<Object>(); // E1A is more specific.
diff --git a/tests/language/factory/and_instance_variable_test.dart b/tests/language/factory/and_instance_variable_test.dart
index b35c290..408cd60 100644
--- a/tests/language/factory/and_instance_variable_test.dart
+++ b/tests/language/factory/and_instance_variable_test.dart
@@ -10,7 +10,7 @@
   static get baz => bar;
   //                ^^^
   // [analyzer] COMPILE_TIME_ERROR.INSTANCE_MEMBER_ACCESS_FROM_STATIC
-  // [cfe] Getter not found: 'bar'.
+  // [cfe] Undefined name 'bar'.
 }
 
 class B implements A {
@@ -21,7 +21,7 @@
   static get baz => bar;
   //                ^^^
   // [analyzer] COMPILE_TIME_ERROR.INSTANCE_MEMBER_ACCESS_FROM_STATIC
-  // [cfe] Getter not found: 'bar'.
+  // [cfe] Undefined name 'bar'.
 
   B() {}
 }
@@ -34,7 +34,7 @@
   static get baz => bar;
   //                ^^^
   // [analyzer] COMPILE_TIME_ERROR.INSTANCE_MEMBER_ACCESS_FROM_STATIC
-  // [cfe] Getter not found: 'bar'.
+  // [cfe] Undefined name 'bar'.
 }
 
 main() {
diff --git a/tests/language/generic/instantiate_type_variable_test.dart b/tests/language/generic/instantiate_type_variable_test.dart
index 486a95b..d69d8a4 100644
--- a/tests/language/generic/instantiate_type_variable_test.dart
+++ b/tests/language/generic/instantiate_type_variable_test.dart
@@ -10,7 +10,7 @@
     return new T();
     //         ^
     // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-    // [cfe] Method not found: 'T'.
+    // [cfe] Couldn't find constructor 'T'.
   }
 }
 
diff --git a/tests/language/if_null/assignment_behavior_test.dart b/tests/language/if_null/assignment_behavior_test.dart
index 144ff7d..ab3f20c 100644
--- a/tests/language/if_null/assignment_behavior_test.dart
+++ b/tests/language/if_null/assignment_behavior_test.dart
@@ -126,7 +126,6 @@
 //  ^^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL
 // [cfe] Operand of null-aware operation '??=' has type 'int' which excludes null.
-//  ^
 // [cfe] The setter 'finalOne' isn't defined for the class 'C'.
 //               ^^^^
 // [analyzer] STATIC_WARNING.DEAD_NULL_AWARE_EXPRESSION
@@ -191,18 +190,15 @@
 //  ^
 // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_LOCAL
 // [cfe] Can't assign to the final variable 'l'.
-//  ^
 // [cfe] Operand of null-aware operation '??=' has type 'int' which excludes null.
-    //    ^^^^
-    // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
-    //    ^^^^
-    // [analyzer] STATIC_WARNING.DEAD_NULL_AWARE_EXPRESSION
+//        ^^^^
+// [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
+// [analyzer] STATIC_WARNING.DEAD_NULL_AWARE_EXPRESSION
   }
   C ??= null;
 //^
 // [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_TYPE
 // [cfe] Can't assign to a type literal.
-//^
 // [cfe] Operand of null-aware operation '??=' has type 'Type' which excludes null.
   h ??= null;
 //^
@@ -270,7 +266,7 @@
   check(1, () => h.c?.x ??= bad(), ['h.C.x']);
   //               ^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_PREFIXED_NAME
-  // [cfe] Getter not found: 'c'.
+  // [cfe] Undefined name 'c'.
   yGetValue = 1;
   check(1, () => C?.x ??= y, ['C.x', 'y', 'C.x=1']);
   //             ^
diff --git a/tests/language/import/combinators2_test.dart b/tests/language/import/combinators2_test.dart
index c1ee2fb..00972fe 100644
--- a/tests/language/import/combinators2_test.dart
+++ b/tests/language/import/combinators2_test.dart
@@ -15,5 +15,5 @@
   print(ugly);
   //    ^^^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-  // [cfe] Getter not found: 'ugly'.
+  // [cfe] Undefined name 'ugly'.
 }
diff --git a/tests/language/import/self_test.dart b/tests/language/import/self_test.dart
index f724a60..8c10105 100644
--- a/tests/language/import/self_test.dart
+++ b/tests/language/import/self_test.dart
@@ -19,5 +19,5 @@
   p._x;
   //^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_PREFIXED_NAME
-  // [cfe] Getter not found: '_x'.
+  // [cfe] Undefined name '_x'.
 }
diff --git a/tests/language/instance/method2_test.dart b/tests/language/instance/method2_test.dart
index de92967..91e5df0 100644
--- a/tests/language/instance/method2_test.dart
+++ b/tests/language/instance/method2_test.dart
@@ -14,7 +14,7 @@
     return instMethod;
     //     ^^^^^^^^^^
     // [analyzer] COMPILE_TIME_ERROR.INSTANCE_MEMBER_ACCESS_FROM_STATIC
-    // [cfe] Getter not found: 'instMethod'.
+    // [cfe] Undefined name 'instMethod'.
   }
 }
 
diff --git a/tests/language/interface/injection2_test.dart b/tests/language/interface/injection2_test.dart
index e49d5bd..dfe39f6 100644
--- a/tests/language/interface/injection2_test.dart
+++ b/tests/language/interface/injection2_test.dart
@@ -22,5 +22,5 @@
 main() {
   Expect.isFalse(new C() is S);
   //                 ^
-  // [cfe] Method not found: 'C'.
+  // [cfe] Couldn't find constructor 'C'.
 }
diff --git a/tests/language/label/label8_test.dart b/tests/language/label/label8_test.dart
index 5d37693..c59bad2 100644
--- a/tests/language/label/label8_test.dart
+++ b/tests/language/label/label8_test.dart
@@ -14,26 +14,21 @@
     case 111:
 //  ^^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] 'case' can't be used as an identifier because it's a keyword.
-//  ^^^^
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_IDENTIFIER_BUT_GOT_KEYWORD
-// [cfe] Expected ';' after this.
-//  ^^^^
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-// [cfe] Getter not found: 'case'.
-//  ^^^^
 // [analyzer] SYNTACTIC_ERROR.MISSING_STATEMENT
+// [cfe] 'case' can't be used as an identifier because it's a keyword.
+// [cfe] Expected ';' after this.
+// [cfe] Undefined name 'case'.
 //       ^^^
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
 // [cfe] Expected ';' after this.
 //          ^
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-// [cfe] Expected ';' after this.
-//          ^
 // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
-// [cfe] Expected an identifier, but got ':'.
-//          ^
 // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
+// [cfe] Expected ';' after this.
+// [cfe] Expected an identifier, but got ':'.
 // [cfe] Unexpected token ':'.
       while (false) {
         break L;
diff --git a/tests/language/malformed/malformed_test.dart b/tests/language/malformed/malformed_test.dart
index e4b59a9..eabe11f 100644
--- a/tests/language/malformed/malformed_test.dart
+++ b/tests/language/malformed/malformed_test.dart
@@ -106,11 +106,11 @@
   new undeclared_prefix.Unresolved();
   //  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'undeclared_prefix.Unresolved'.
+  // [cfe] Couldn't find constructor 'undeclared_prefix.Unresolved'.
   new undeclared_prefix.Unresolved<int>();
   //  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'undeclared_prefix.Unresolved'.
+  // [cfe] Couldn't find constructor 'undeclared_prefix.Unresolved'.
 
   try {
     throw 'foo';
diff --git a/tests/language/metadata/type_parameter_scope_inner_test.dart b/tests/language/metadata/type_parameter_scope_inner_test.dart
index ecbb4a2..d88c124 100644
--- a/tests/language/metadata/type_parameter_scope_inner_test.dart
+++ b/tests/language/metadata/type_parameter_scope_inner_test.dart
@@ -13,7 +13,7 @@
 //                      ^^^
 // [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONSTANT_ARGUMENT
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'foo'.
+// [cfe] Undefined name 'foo'.
   static void foo() {}
 }
 
@@ -21,7 +21,7 @@
 //                        ^^^
 // [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONSTANT_ARGUMENT
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'foo'.
+// [cfe] Undefined name 'foo'.
   dynamic foo;
 }
 
@@ -29,14 +29,14 @@
 //                              ^^^
 // [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONSTANT_ARGUMENT
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'foo'.
+// [cfe] Undefined name 'foo'.
   static void foo() {}
 
   void extensionMethod<@Annotation(foo) T, @Annotation(bar) U>() {}
   //                                                   ^^^
   // [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONSTANT_ARGUMENT
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-  // [cfe] Getter not found: 'bar'.
+  // [cfe] Undefined name 'bar'.
 }
 
 class C {
@@ -44,7 +44,7 @@
   //                      ^^^
   // [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONSTANT_ARGUMENT
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-  // [cfe] Getter not found: 'foo'.
+  // [cfe] Undefined name 'foo'.
     dynamic foo;
   }
 
@@ -55,7 +55,7 @@
 //                      ^^^
 // [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONSTANT_ARGUMENT
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'foo'.
+// [cfe] Undefined name 'foo'.
   static void foo() {}
 }
 
@@ -63,4 +63,4 @@
 //                          ^^^
 // [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONSTANT_ARGUMENT
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'foo'.
+// [cfe] Undefined name 'foo'.
diff --git a/tests/language/method/not_found_test.dart b/tests/language/method/not_found_test.dart
index 883cd6f..3da919c 100644
--- a/tests/language/method/not_found_test.dart
+++ b/tests/language/method/not_found_test.dart
@@ -10,11 +10,10 @@
 // [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
   static const field = const B();
   //                         ^
-  // [analyzer] COMPILE_TIME_ERROR.IMPLICIT_THIS_REFERENCE_IN_INITIALIZER
-  // [cfe] Method not found: 'B'.
-  //                         ^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.IMPLICIT_THIS_REFERENCE_IN_INITIALIZER
   // [cfe] Can't access 'this' in a field initializer to read 'B'.
+  // [cfe] Couldn't find constructor 'B'.
 }
 
 class B {
diff --git a/tests/language/mixin/illegal_constructor_test.dart b/tests/language/mixin/illegal_constructor_test.dart
index a4a8723..5b7306d 100644
--- a/tests/language/mixin/illegal_constructor_test.dart
+++ b/tests/language/mixin/illegal_constructor_test.dart
@@ -97,21 +97,21 @@
   new D6();
 
   new C0(1,2,3);
+  //    ^
+  // [cfe] Too many positional arguments: 0 allowed, but 3 found.
   //     ^
   // [analyzer] COMPILE_TIME_ERROR.EXTRA_POSITIONAL_ARGUMENTS
-  //    ^^^^^^^
-  // [cfe] Too many positional arguments: 0 allowed, but 3 found.
   new C0.named();
   //     ^^^^^
   // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR
-  // [cfe] Method not found: 'C0.named'.
+  // [cfe] Couldn't find constructor 'C0.named'.
   new D0(1,2,3);
+  //    ^
+  // [cfe] Too many positional arguments: 0 allowed, but 3 found.
   //     ^
   // [analyzer] COMPILE_TIME_ERROR.EXTRA_POSITIONAL_ARGUMENTS
-  //    ^^^^^^^
-  // [cfe] Too many positional arguments: 0 allowed, but 3 found.
   new D0.named();
   //     ^^^^^
   // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR
-  // [cfe] Method not found: 'D0.named'.
+  // [cfe] Couldn't find constructor 'D0.named'.
 }
diff --git a/tests/language/mixin/illegal_static_access_test.dart b/tests/language/mixin/illegal_static_access_test.dart
index 8cd792d..6523d32 100644
--- a/tests/language/mixin/illegal_static_access_test.dart
+++ b/tests/language/mixin/illegal_static_access_test.dart
@@ -21,9 +21,9 @@
   Expect.throwsNoSuchMethodError(() => C.foo());
   //                                     ^^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
-  // [cfe] Method not found: 'C.foo'.
+  // [cfe] Member not found: 'C.foo'.
   Expect.throwsNoSuchMethodError(() => C.bar());
   //                                     ^^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
-  // [cfe] Method not found: 'C.bar'.
+  // [cfe] Member not found: 'C.bar'.
 }
diff --git a/tests/language/new/create_unresolved_type_test.dart b/tests/language/new/create_unresolved_type_test.dart
index 16fb7a6..d908816 100644
--- a/tests/language/new/create_unresolved_type_test.dart
+++ b/tests/language/new/create_unresolved_type_test.dart
@@ -6,5 +6,5 @@
   new F<int>();
   //  ^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'F'.
+  // [cfe] Couldn't find constructor 'F'.
 }
diff --git a/tests/language/new/expression_type_args_test.dart b/tests/language/new/expression_type_args_test.dart
index da303e3..ca4459e 100644
--- a/tests/language/new/expression_type_args_test.dart
+++ b/tests/language/new/expression_type_args_test.dart
@@ -8,13 +8,12 @@
   m1() => new T();
   //          ^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'T'.
+  // [cfe] Couldn't find constructor 'T'.
   static m2() => new T();
   //                 ^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'T'.
-  //                 ^
   // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [cfe] Couldn't find constructor 'T'.
 
   // OK when used within instance method, but not in static method.
   m3() => new A<T>();
diff --git a/tests/language/new/prefix_test.dart b/tests/language/new/prefix_test.dart
index 8e5c7bc..064f8d9 100644
--- a/tests/language/new/prefix_test.dart
+++ b/tests/language/new/prefix_test.dart
@@ -8,5 +8,5 @@
   return new prefix();
   //         ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'prefix'.
+  // [cfe] Couldn't find constructor 'prefix'.
 }
diff --git a/tests/language/nonfunction_type_aliases/mixed/usage_object_error_test.dart b/tests/language/nonfunction_type_aliases/mixed/usage_object_error_test.dart
index 505ab32..686039f 100644
--- a/tests/language/nonfunction_type_aliases/mixed/usage_object_error_test.dart
+++ b/tests/language/nonfunction_type_aliases/mixed/usage_object_error_test.dart
@@ -44,11 +44,11 @@
   T.named();
 //  ^^^^^
 // [analyzer] unspecified
-// [cfe] Method not found: 'Object.named'.
+// [cfe] Member not found: 'Object.named'.
 
   T.staticMethod<T>();
 //  ^^^^^^^^^^^^
 // [analyzer] unspecified
 // [cfe] A constructor invocation can't have type arguments after the constructor name.
-// [cfe] Method not found: 'Object.staticMethod'.
+// [cfe] Member not found: 'Object.staticMethod'.
 }
diff --git a/tests/language/nonfunction_type_aliases/private_names/private_name_static_methods_error_test.dart b/tests/language/nonfunction_type_aliases/private_names/private_name_static_methods_error_test.dart
index 0e77c92..8a10020 100644
--- a/tests/language/nonfunction_type_aliases/private_names/private_name_static_methods_error_test.dart
+++ b/tests/language/nonfunction_type_aliases/private_names/private_name_static_methods_error_test.dart
@@ -14,15 +14,15 @@
     PublicClass._privateStaticMethod();
 //              ^^^^^^^^^^^^^^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
-// [cfe] Method not found: '_PrivateClass._privateStaticMethod'.
+// [cfe] Member not found: '_PrivateClass._privateStaticMethod'.
     AlsoPublicClass._privateStaticMethod();
 //                  ^^^^^^^^^^^^^^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
-// [cfe] Method not found: '_PrivateClass._privateStaticMethod'.
+// [cfe] Member not found: '_PrivateClass._privateStaticMethod'.
     PublicGenericClassOfInt._privateStaticMethod();
 //                          ^^^^^^^^^^^^^^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
-// [cfe] Method not found: '_PrivateGenericClass._privateStaticMethod'.
+// [cfe] Member not found: '_PrivateGenericClass._privateStaticMethod'.
   }
 }
 
diff --git a/tests/language/nonfunction_type_aliases/usage_object_error_test.dart b/tests/language/nonfunction_type_aliases/usage_object_error_test.dart
index 1046f6e..373466c 100644
--- a/tests/language/nonfunction_type_aliases/usage_object_error_test.dart
+++ b/tests/language/nonfunction_type_aliases/usage_object_error_test.dart
@@ -41,11 +41,11 @@
   T.named();
 //  ^^^^^
 // [analyzer] unspecified
-// [cfe] Method not found: 'Object.named'.
+// [cfe] Member not found: 'Object.named'.
 
   T.staticMethod<T>();
 //  ^^^^^^^^^^^^
 // [analyzer] unspecified
 // [cfe] A constructor invocation can't have type arguments after the constructor name.
-// [cfe] Method not found: 'Object.staticMethod'.
+// [cfe] Member not found: 'Object.staticMethod'.
 }
diff --git a/tests/language/null_aware/access_test.dart b/tests/language/null_aware/access_test.dart
index b5e4b17..3307440 100644
--- a/tests/language/null_aware/access_test.dart
+++ b/tests/language/null_aware/access_test.dart
@@ -60,7 +60,6 @@
     // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
     //              ^
     // [cfe] A value of type 'int?' can't be assigned to a variable of type 'String?'.
-    //              ^
     // [cfe] Operand of null-aware operation '?.' has type 'C' which excludes null.
     //                     ^^
     // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
@@ -128,9 +127,9 @@
   Expect.throwsNoSuchMethodError(() => C?.hashCode);
   //                                      ^^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_GETTER
-  // [cfe] Getter not found: 'hashCode'.
+  // [cfe] Member not found: 'hashCode'.
   Expect.throwsNoSuchMethodError(() => h.C?.hashCode);
   //                                        ^^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_GETTER
-  // [cfe] Getter not found: 'hashCode'.
+  // [cfe] Member not found: 'hashCode'.
 }
diff --git a/tests/language/number/identifier_test.dart b/tests/language/number/identifier_test.dart
index d66bf6b..94105ea 100644
--- a/tests/language/number/identifier_test.dart
+++ b/tests/language/number/identifier_test.dart
@@ -9,32 +9,26 @@
   Expect.isTrue(2 is int);
   //                 ^^^
   // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
-  //                 ^^^
   // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_NON_TYPE
   Expect.equals(2, 2 as int);
   //                    ^^^
-  // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
-  //                    ^^^
   // [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
   Expect.isTrue(-2 is int);
   //                  ^^^
   // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
-  //                  ^^^
   // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_NON_TYPE
   Expect.equals(-2, -2 as int);
   //                      ^^^
-  // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
-  //                      ^^^
   // [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
   Expect.isTrue(0x10 is int);
   //                    ^^^
   // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
-  //                    ^^^
   // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_NON_TYPE
   Expect.isTrue(-0x10 is int);
   //                     ^^^
   // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
-  //                     ^^^
   // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_NON_TYPE
 
   // "a" will be part of hex literal, the following "s" is an error.
@@ -76,14 +70,14 @@
 // [cfe] Expected ';' after this.
 // ^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'd'.
+// [cfe] Undefined name 'd'.
   1D;
 //^
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
 // [cfe] Expected ';' after this.
 // ^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'D'.
+// [cfe] Undefined name 'D'.
   Expect.throwsNoSuchMethodError(() => 1.d+2);
   //                                     ^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_GETTER
@@ -98,14 +92,14 @@
 // [cfe] Expected ';' after this.
 //   ^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'd'.
+// [cfe] Undefined name 'd'.
   1.1D;
 //^^^
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
 // [cfe] Expected ';' after this.
 //   ^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'D'.
+// [cfe] Undefined name 'D'.
   1e;
 //^
 // [cfe] Numbers in exponential notation should always contain an exponent (an integer number with an optional sign).
@@ -117,5 +111,5 @@
 // [cfe] Expected ';' after this.
 // ^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'x'.
+// [cfe] Undefined name 'x'.
 }
diff --git a/tests/language/prefix/shadow_test.dart b/tests/language/prefix/shadow_test.dart
index 1af4c58..2584165 100644
--- a/tests/language/prefix/shadow_test.dart
+++ b/tests/language/prefix/shadow_test.dart
@@ -14,7 +14,7 @@
     //  ^
     // [analyzer] COMPILE_TIME_ERROR.PREFIX_SHADOWED_BY_LOCAL_DECLARATION
     //    ^
-    // [cfe] Method not found: 'T.Library10'.
+    // [cfe] Couldn't find constructor 'T.Library10'.
   }
 }
 
diff --git a/tests/language/prefix/transitive_import_prefix_test.dart b/tests/language/prefix/transitive_import_prefix_test.dart
index 3365f2f..e0ac001 100644
--- a/tests/language/prefix/transitive_import_prefix_test.dart
+++ b/tests/language/prefix/transitive_import_prefix_test.dart
@@ -8,13 +8,13 @@
   new lib11.Library11(1);
   //  ^^^^^^^^^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'lib11.Library11'.
+  // [cfe] Couldn't find constructor 'lib11.Library11'.
   lib11.Library11.static_func();
 //^^^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'lib11'.
+// [cfe] Undefined name 'lib11'.
   lib11.Library11.static_fld;
 //^^^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'lib11'.
+// [cfe] Undefined name 'lib11'.
 }
diff --git a/tests/language/prefix/transitive_import_test.dart b/tests/language/prefix/transitive_import_test.dart
index ef53584..d17a963 100644
--- a/tests/language/prefix/transitive_import_test.dart
+++ b/tests/language/prefix/transitive_import_test.dart
@@ -11,11 +11,11 @@
   new lib12.Library11(1);
   //        ^^^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'Library11'.
+  // [cfe] Couldn't find constructor 'Library11'.
 
   // Variable should not be visible.
   lib12.top_level11;
   //    ^^^^^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_PREFIXED_NAME
-  // [cfe] Getter not found: 'top_level11'.
+  // [cfe] Undefined name 'top_level11'.
 }
diff --git a/tests/language/private/access_test.dart b/tests/language/private/access_test.dart
index 29c02fd..8d7fbc4 100644
--- a/tests/language/private/access_test.dart
+++ b/tests/language/private/access_test.dart
@@ -19,7 +19,7 @@
   new _Class();
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: '_Class'.
+  // [cfe] Couldn't find constructor '_Class'.
   private._Class();
 //        ^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_FUNCTION
@@ -27,9 +27,9 @@
   new Class._constructor();
   //        ^^^^^^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR
-  // [cfe] Method not found: 'Class._constructor'.
+  // [cfe] Couldn't find constructor 'Class._constructor'.
   new private.Class._constructor();
   //                ^^^^^^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR
-  // [cfe] Method not found: 'Class._constructor'.
+  // [cfe] Couldn't find constructor 'Class._constructor'.
 }
diff --git a/tests/language/regress/regress15606_test.dart b/tests/language/regress/regress15606_test.dart
index f367e9e..ebee1e7 100644
--- a/tests/language/regress/regress15606_test.dart
+++ b/tests/language/regress/regress15606_test.dart
@@ -16,7 +16,7 @@
       Unresolved.
 //    ^^^^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'Unresolved'.
+// [cfe] Undefined name 'Unresolved'.
         bar(
       // Make dart2js generate a call to setRuntimeTypeInfo.
       new Foo<int>(),
diff --git a/tests/language/regress/regress21793_test.dart b/tests/language/regress/regress21793_test.dart
index e4fec2e..3219387 100644
--- a/tests/language/regress/regress21793_test.dart
+++ b/tests/language/regress/regress21793_test.dart
@@ -16,5 +16,5 @@
   print(new A()(499));
   //        ^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'A'.
+  // [cfe] Couldn't find constructor 'A'.
 }
diff --git a/tests/language/regress/regress34495_test.dart b/tests/language/regress/regress34495_test.dart
index 2e69b38..822dc9d 100644
--- a/tests/language/regress/regress34495_test.dart
+++ b/tests/language/regress/regress34495_test.dart
@@ -5,7 +5,7 @@
 final foo = A<B>.foo();
 //          ^
 // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-// [cfe] Method not found: 'A'.
+// [cfe] Couldn't find constructor 'A'.
 //            ^
 // [analyzer] COMPILE_TIME_ERROR.NON_TYPE_AS_TYPE_ARGUMENT
 // [cfe] 'B' isn't a type.
diff --git a/tests/language/static/field3_test.dart b/tests/language/static/field3_test.dart
index f794e68..2c72cd2 100644
--- a/tests/language/static/field3_test.dart
+++ b/tests/language/static/field3_test.dart
@@ -14,11 +14,11 @@
     var x = Foo.x;
     //          ^
     // [analyzer] COMPILE_TIME_ERROR.STATIC_ACCESS_TO_INSTANCE_MEMBER
-    // [cfe] Getter not found: 'x'.
+    // [cfe] Member not found: 'x'.
     var m = Foo.m;
     //          ^
     // [analyzer] COMPILE_TIME_ERROR.STATIC_ACCESS_TO_INSTANCE_MEMBER
-    // [cfe] Getter not found: 'm'.
+    // [cfe] Member not found: 'm'.
     Foo.m = 1;
     //  ^
     // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_SETTER
diff --git a/tests/language/string/interpolate1_test.dart b/tests/language/string/interpolate1_test.dart
index 12bf4af..16920f6 100644
--- a/tests/language/string/interpolate1_test.dart
+++ b/tests/language/string/interpolate1_test.dart
@@ -12,5 +12,5 @@
   // [cfe] A '$' has special meaning inside a string, and must be followed by an identifier or an expression in curly braces ({}).
   //                  ^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-  // [cfe] Getter not found: 'x'.
+  // [cfe] Undefined name 'x'.
 }
diff --git a/tests/language/type_variable/conflict2_test.dart b/tests/language/type_variable/conflict2_test.dart
index f43e609..cdcf576 100644
--- a/tests/language/type_variable/conflict2_test.dart
+++ b/tests/language/type_variable/conflict2_test.dart
@@ -15,15 +15,14 @@
   foo() => T();
   //       ^
   // [analyzer] COMPILE_TIME_ERROR.INVOCATION_OF_NON_FUNCTION
-  // [cfe] Method not found: 'T'.
+  // [cfe] Couldn't find constructor 'T'.
 
   // T is in scope, even in static context. Compile-time error to call this.T().
   static bar() => T();
   //              ^
   // [analyzer] COMPILE_TIME_ERROR.INVOCATION_OF_NON_FUNCTION
-  // [cfe] Method not found: 'T'.
-  //              ^
   // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [cfe] Couldn't find constructor 'T'.
 
   // X is not in scope. NoSuchMethodError.
   static baz() => X();
@@ -35,7 +34,7 @@
   static qux() => C.T();
   //                ^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
-  // [cfe] Method not found: 'C.T'.
+  // [cfe] Member not found: 'C.T'.
 
   // Class '_Type' has no instance method 'call': NoSuchMethodError.
   quux() => (T)();
diff --git a/tests/language/variable/bad_initializer1_test.dart b/tests/language/variable/bad_initializer1_test.dart
index 0070cd8..8f49f2c 100644
--- a/tests/language/variable/bad_initializer1_test.dart
+++ b/tests/language/variable/bad_initializer1_test.dart
@@ -18,7 +18,7 @@
       elems
 //    ^^^^^
 // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
-// [cfe] Getter not found: 'elems'.
+// [cfe] Undefined name 'elems'.
     ],
     "a",
     "b"
diff --git a/tests/language/variance/syntax/variance_type_parameter_error_syntax_test.dart b/tests/language/variance/syntax/variance_type_parameter_error_syntax_test.dart
index e3e51d3..ec250c0 100644
--- a/tests/language/variance/syntax/variance_type_parameter_error_syntax_test.dart
+++ b/tests/language/variance/syntax/variance_type_parameter_error_syntax_test.dart
@@ -10,7 +10,6 @@
 //     ^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_CLASS
 // [cfe] 'out' isn't a type.
-//     ^
 // [cfe] Type 'out' not found.
 //             ^^^
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
@@ -21,23 +20,21 @@
   // [cfe] The operator '<' isn't defined for the class 'Type'.
   //   ^^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-  // [cfe] Expected ';' after this.
-  //   ^^^
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Getter not found: 'out'.
+  // [cfe] Expected ';' after this.
+  // [cfe] Undefined name 'out'.
   //             ^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_OPERATOR
   // [cfe] The operator '>' isn't defined for the class 'Type'.
   //               ^^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-  // [cfe] Getter not found: 'bar'.
+  // [cfe] Undefined name 'bar'.
 }
 
 void B(out foo) {}
 //     ^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_CLASS
 // [cfe] 'out' isn't a type.
-//     ^
 // [cfe] Type 'out' not found.
 
 class C<in out X, out out Y> {}
diff --git a/tests/language_2/call/constructor_on_unresolvable_class_test.dart b/tests/language_2/call/constructor_on_unresolvable_class_test.dart
index 5686db7..a8e2277 100644
--- a/tests/language_2/call/constructor_on_unresolvable_class_test.dart
+++ b/tests/language_2/call/constructor_on_unresolvable_class_test.dart
@@ -14,13 +14,13 @@
   new A();
   //  ^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'A'.
+  // [cfe] Couldn't find constructor 'A'.
   new A.foo();
   //  ^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'A.foo'.
+  // [cfe] Couldn't find constructor 'A.foo'.
   new lib.A();
   //  ^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'lib.A'.
+  // [cfe] Couldn't find constructor 'lib.A'.
 }
diff --git a/tests/language_2/call/nonexistent_constructor_test.dart b/tests/language_2/call/nonexistent_constructor_test.dart
index b27d76a..906b57d 100644
--- a/tests/language_2/call/nonexistent_constructor_test.dart
+++ b/tests/language_2/call/nonexistent_constructor_test.dart
@@ -22,9 +22,9 @@
   new A.bar(foo());
   //    ^^^
   // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR
-  // [cfe] Method not found: 'A.bar'.
+  // [cfe] Couldn't find constructor 'A.bar'.
   new A();
   //  ^
   // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT
-  // [cfe] Method not found: 'A'.
+  // [cfe] Couldn't find constructor 'A'.
 }
diff --git a/tests/language_2/class/keyword_test.dart b/tests/language_2/class/keyword_test.dart
index a3337a7..8676867 100644
--- a/tests/language_2/class/keyword_test.dart
+++ b/tests/language_2/class/keyword_test.dart
@@ -15,15 +15,13 @@
 // [cfe] Expected ';' after this.
 //    ^^^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] 'class' can't be used as an identifier because it's a keyword.
-//    ^^^^^
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_IDENTIFIER_BUT_GOT_KEYWORD
+// [cfe] 'class' can't be used as an identifier because it's a keyword.
 // [cfe] Setter not found: 'class'.
   print("$class");
   //      ^^^^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-  // [cfe] 'class' can't be used as an identifier because it's a keyword.
-  //      ^^^^^
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_IDENTIFIER_BUT_GOT_KEYWORD
-  // [cfe] Getter not found: 'class'.
+  // [cfe] 'class' can't be used as an identifier because it's a keyword.
+  // [cfe] Undefined name 'class'.
 }
diff --git a/tests/language_2/class/variable_shadow_class_test.dart b/tests/language_2/class/variable_shadow_class_test.dart
index 634e71a..b5b7e94 100644
--- a/tests/language_2/class/variable_shadow_class_test.dart
+++ b/tests/language_2/class/variable_shadow_class_test.dart
@@ -19,7 +19,7 @@
     var i = new Test.named(10);
     //          ^^^^
     // [analyzer] COMPILE_TIME_ERROR.PREFIX_SHADOWED_BY_LOCAL_DECLARATION
-    // [cfe] Method not found: 'Test.named'.
+    // [cfe] Couldn't find constructor 'Test.named'.
     Expect.equals(10, i.field);
   }
 
diff --git a/tests/language_2/compile_time_constant/compile_time_constant_test.dart b/tests/language_2/compile_time_constant/compile_time_constant_test.dart
index 483bf2f..c3d77be 100644
--- a/tests/language_2/compile_time_constant/compile_time_constant_test.dart
+++ b/tests/language_2/compile_time_constant/compile_time_constant_test.dart
@@ -16,10 +16,9 @@
       bar
 //    ^^^
 // [analyzer] COMPILE_TIME_ERROR.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE
-// [cfe] Can't access 'this' in a field initializer to read 'bar'.
-//    ^^^
 // [analyzer] COMPILE_TIME_ERROR.IMPLICIT_THIS_REFERENCE_IN_INITIALIZER
-// [cfe] Getter not found: 'bar'.
+// [cfe] Can't access 'this' in a field initializer to read 'bar'.
+// [cfe] Undefined name 'bar'.
       -3;
 }
 
diff --git a/tests/language_2/constructor/named_constructor_test.dart b/tests/language_2/constructor/named_constructor_test.dart
index 378c9b2..c69961f 100644
--- a/tests/language_2/constructor/named_constructor_test.dart
+++ b/tests/language_2/constructor/named_constructor_test.dart
@@ -39,13 +39,13 @@
   new prefix<int>.Class().value;
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'prefix.Class'.
+  // [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] Method not found: 'prefix.Class'.
+  // [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.
@@ -55,7 +55,7 @@
   new prefix<int>.Class.named().value;
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'prefix.Class'.
+  // [cfe] Couldn't find constructor 'prefix.Class'.
   //              ^^^^^
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
   // [cfe] Expected '(' after this.
@@ -73,7 +73,7 @@
   new prefix<int>.Class<int>.named().value;
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'prefix.Class'.
+  // [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.
@@ -83,7 +83,7 @@
   new prefix<int>.Class.named<int>().value;
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'prefix.Class'.
+  // [cfe] Couldn't find constructor 'prefix.Class'.
   //              ^^^^^
   // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
   // [cfe] Expected '(' after this.
@@ -99,7 +99,7 @@
   new prefix<int>.Class<int>.named<int>().value;
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'prefix.Class'.
+  // [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.
diff --git a/tests/language_2/constructor/reference_test.dart b/tests/language_2/constructor/reference_test.dart
index 402f266..b371419 100644
--- a/tests/language_2/constructor/reference_test.dart
+++ b/tests/language_2/constructor/reference_test.dart
@@ -17,7 +17,7 @@
   //  ^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   //          ^
-  // [cfe] Method not found: 'Foo.bar.baz'.
+  // [cfe] Couldn't find constructor 'Foo.bar.baz'.
   new Foo<int>();
   new Foo<int>.bar();
   new Foo<int>.bar.baz();
@@ -38,14 +38,14 @@
   //      ^
   // [cfe] A constructor invocation can't have type arguments after the constructor name.
   //               ^
-  // [cfe] Method not found: 'Foo.bar.baz'.
+  // [cfe] Couldn't find constructor 'Foo.bar.baz'.
   new Foo.bar.baz<int>();
   //  ^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   //          ^^^
   // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
   // [cfe] A constructor invocation can't have type arguments after the constructor name.
-  // [cfe] Method not found: 'Foo.bar.baz'.
+  // [cfe] Couldn't find constructor 'Foo.bar.baz'.
 
   const Foo();
   const Foo.bar();
@@ -53,7 +53,7 @@
   //    ^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   //            ^
-  // [cfe] Method not found: 'Foo.bar.baz'.
+  // [cfe] Couldn't find constructor 'Foo.bar.baz'.
   const Foo<int>();
   const Foo<int>.bar();
   const Foo<int>.bar.baz();
@@ -74,20 +74,20 @@
   //        ^
   // [cfe] A constructor invocation can't have type arguments after the constructor name.
   //                 ^
-  // [cfe] Method not found: 'Foo.bar.baz'.
+  // [cfe] Couldn't find constructor 'Foo.bar.baz'.
   const Foo.bar.baz<int>();
   //    ^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
   //            ^^^
   // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
   // [cfe] A constructor invocation can't have type arguments after the constructor name.
-  // [cfe] Method not found: 'Foo.bar.baz'.
+  // [cfe] Couldn't find constructor 'Foo.bar.baz'.
 
   Foo();
   Foo.bar();
   Foo.bar.baz();
 //    ^
-// [cfe] Getter not found: 'bar'.
+// [cfe] Member not found: 'bar'.
 //        ^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
   Foo<int>();
@@ -97,7 +97,7 @@
   // [analyzer] SYNTACTIC_ERROR.EXPERIMENT_NOT_ENABLED
   // [cfe] This requires the 'constructor-tearoffs' language feature to be enabled.
   //       ^
-  // [cfe] Getter not found: 'bar'.
+  // [cfe] Member not found: 'bar'.
   //           ^^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
   Foo.bar<int>();
@@ -110,13 +110,12 @@
 // [analyzer] COMPILE_TIME_ERROR.DISALLOWED_TYPE_INSTANTIATION_EXPRESSION
 //    ^
 // [cfe] A constructor invocation can't have type arguments after the constructor name.
-//             ^
-// [cfe] Method not found: 'Foo.bar.baz'.
-  //           ^^^
-  // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
+//             ^^^
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
+// [cfe] Couldn't find constructor 'Foo.bar.baz'.
   Foo.bar.baz<int>();
 //    ^
-// [cfe] Getter not found: 'bar'.
+// [cfe] Member not found: 'bar'.
 //        ^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
 }
diff --git a/tests/language_2/constructor/unresolved_default_constructor_test.dart b/tests/language_2/constructor/unresolved_default_constructor_test.dart
index 5b47440..11a019f 100644
--- a/tests/language_2/constructor/unresolved_default_constructor_test.dart
+++ b/tests/language_2/constructor/unresolved_default_constructor_test.dart
@@ -18,5 +18,5 @@
   Expect.throws(() => new A());
   //                      ^
   // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT
-  // [cfe] Method not found: 'A'.
+  // [cfe] Couldn't find constructor 'A'.
 }
diff --git a/tests/language_2/enum/private_test.dart b/tests/language_2/enum/private_test.dart
index cf6f980..ef31ea6 100644
--- a/tests/language_2/enum/private_test.dart
+++ b/tests/language_2/enum/private_test.dart
@@ -23,5 +23,5 @@
   Expect.throwsNoSuchMethodError(() => Enum2._A);
   //                                         ^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_ENUM_CONSTANT
-  // [cfe] Getter not found: '_A'.
+  // [cfe] Member not found: '_A'.
 }
diff --git a/tests/language_2/extension_methods/static_extension_getter_setter_conflicts_test.dart b/tests/language_2/extension_methods/static_extension_getter_setter_conflicts_test.dart
index 86c1f11..b3888b0 100644
--- a/tests/language_2/extension_methods/static_extension_getter_setter_conflicts_test.dart
+++ b/tests/language_2/extension_methods/static_extension_getter_setter_conflicts_test.dart
@@ -67,7 +67,7 @@
   E0(c0)[0];
   //    ^^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_EXTENSION_OPERATOR
-  // [cfe] Getter not found: '[]'.
+  // [cfe] Method not found: '[]'.
   E0(c0)[0] = 0;
 
   c0[0] += 0;
@@ -182,7 +182,6 @@
 // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_EXTENSION_MEMBER_ACCESS
 //   ^
 // [cfe] The operator '[]' is defined in multiple extensions for 'C1<Object>' and neither is more specific.
-//   ^
 // [cfe] The operator '[]=' is defined in multiple extensions for 'C1<Object>' and neither is more specific.
 
   c1b[0]++;
@@ -190,7 +189,6 @@
 // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_EXTENSION_MEMBER_ACCESS
 //   ^
 // [cfe] The operator '[]' is defined in multiple extensions for 'C1<Object>' and neither is more specific.
-//   ^
 // [cfe] The operator '[]=' is defined in multiple extensions for 'C1<Object>' and neither is more specific.
 }
 
diff --git a/tests/language_2/factory/and_instance_variable_test.dart b/tests/language_2/factory/and_instance_variable_test.dart
index c421ef6..7d1d667 100644
--- a/tests/language_2/factory/and_instance_variable_test.dart
+++ b/tests/language_2/factory/and_instance_variable_test.dart
@@ -12,7 +12,7 @@
   static get baz => bar;
   //                ^^^
   // [analyzer] COMPILE_TIME_ERROR.INSTANCE_MEMBER_ACCESS_FROM_STATIC
-  // [cfe] Getter not found: 'bar'.
+  // [cfe] Undefined name 'bar'.
 }
 
 class B implements A {
@@ -23,7 +23,7 @@
   static get baz => bar;
   //                ^^^
   // [analyzer] COMPILE_TIME_ERROR.INSTANCE_MEMBER_ACCESS_FROM_STATIC
-  // [cfe] Getter not found: 'bar'.
+  // [cfe] Undefined name 'bar'.
 
   B() {}
 }
@@ -36,7 +36,7 @@
   static get baz => bar;
   //                ^^^
   // [analyzer] COMPILE_TIME_ERROR.INSTANCE_MEMBER_ACCESS_FROM_STATIC
-  // [cfe] Getter not found: 'bar'.
+  // [cfe] Undefined name 'bar'.
 }
 
 main() {
diff --git a/tests/language_2/generic/instantiate_type_variable_test.dart b/tests/language_2/generic/instantiate_type_variable_test.dart
index 1ce7ae8..2c73da8 100644
--- a/tests/language_2/generic/instantiate_type_variable_test.dart
+++ b/tests/language_2/generic/instantiate_type_variable_test.dart
@@ -14,7 +14,7 @@
     // [analyzer] COMPILE_TIME_ERROR.INVALID_CAST_NEW_EXPR
     //         ^
     // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-    // [cfe] Method not found: 'T'.
+    // [cfe] Couldn't find constructor 'T'.
   }
 }
 
diff --git a/tests/language_2/if_null/assignment_behavior_test.dart b/tests/language_2/if_null/assignment_behavior_test.dart
index 3d517c7..17fe757 100644
--- a/tests/language_2/if_null/assignment_behavior_test.dart
+++ b/tests/language_2/if_null/assignment_behavior_test.dart
@@ -221,7 +221,7 @@
   check(1, () => h.c?.x ??= bad(), ['h.C.x']);
   //               ^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_PREFIXED_NAME
-  // [cfe] Getter not found: 'c'.
+  // [cfe] Undefined name 'c'.
   yGetValue = 1;
   check(1, () => C?.x ??= y, ['C.x', 'y', 'C.x=1']);
   yGetValue = 1;
diff --git a/tests/language_2/import/combinators2_test.dart b/tests/language_2/import/combinators2_test.dart
index 09312bc..6b2c716 100644
--- a/tests/language_2/import/combinators2_test.dart
+++ b/tests/language_2/import/combinators2_test.dart
@@ -17,5 +17,5 @@
   print(ugly);
   //    ^^^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-  // [cfe] Getter not found: 'ugly'.
+  // [cfe] Undefined name 'ugly'.
 }
diff --git a/tests/language_2/import/self_test.dart b/tests/language_2/import/self_test.dart
index e95dae1..6d76c26 100644
--- a/tests/language_2/import/self_test.dart
+++ b/tests/language_2/import/self_test.dart
@@ -21,5 +21,5 @@
   p._x;
   //^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_PREFIXED_NAME
-  // [cfe] Getter not found: '_x'.
+  // [cfe] Undefined name '_x'.
 }
diff --git a/tests/language_2/instance/method2_test.dart b/tests/language_2/instance/method2_test.dart
index 3e1f35e..620ae2b 100644
--- a/tests/language_2/instance/method2_test.dart
+++ b/tests/language_2/instance/method2_test.dart
@@ -16,7 +16,7 @@
     return instMethod;
     //     ^^^^^^^^^^
     // [analyzer] COMPILE_TIME_ERROR.INSTANCE_MEMBER_ACCESS_FROM_STATIC
-    // [cfe] Getter not found: 'instMethod'.
+    // [cfe] Undefined name 'instMethod'.
   }
 }
 
diff --git a/tests/language_2/interface/injection2_test.dart b/tests/language_2/interface/injection2_test.dart
index 2784140..606d195 100644
--- a/tests/language_2/interface/injection2_test.dart
+++ b/tests/language_2/interface/injection2_test.dart
@@ -24,5 +24,5 @@
 main() {
   Expect.isFalse(new C() is S);
   //                 ^
-  // [cfe] Method not found: 'C'.
+  // [cfe] Couldn't find constructor 'C'.
 }
diff --git a/tests/language_2/label/label8_test.dart b/tests/language_2/label/label8_test.dart
index 630c561..e490609 100644
--- a/tests/language_2/label/label8_test.dart
+++ b/tests/language_2/label/label8_test.dart
@@ -16,26 +16,21 @@
     case 111:
 //  ^^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] 'case' can't be used as an identifier because it's a keyword.
-//  ^^^^
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_IDENTIFIER_BUT_GOT_KEYWORD
-// [cfe] Expected ';' after this.
-//  ^^^^
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-// [cfe] Getter not found: 'case'.
-//  ^^^^
 // [analyzer] SYNTACTIC_ERROR.MISSING_STATEMENT
+// [cfe] 'case' can't be used as an identifier because it's a keyword.
+// [cfe] Expected ';' after this.
+// [cfe] Undefined name 'case'.
 //       ^^^
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
 // [cfe] Expected ';' after this.
 //          ^
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-// [cfe] Expected ';' after this.
-//          ^
 // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
-// [cfe] Expected an identifier, but got ':'.
-//          ^
 // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
+// [cfe] Expected ';' after this.
+// [cfe] Expected an identifier, but got ':'.
 // [cfe] Unexpected token ':'.
       while (false) {
         break L;
diff --git a/tests/language_2/malformed/malformed_test.dart b/tests/language_2/malformed/malformed_test.dart
index 68c7cd3..fdcdfd3 100644
--- a/tests/language_2/malformed/malformed_test.dart
+++ b/tests/language_2/malformed/malformed_test.dart
@@ -108,11 +108,11 @@
   new undeclared_prefix.Unresolved();
   //  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'undeclared_prefix.Unresolved'.
+  // [cfe] Couldn't find constructor 'undeclared_prefix.Unresolved'.
   new undeclared_prefix.Unresolved<int>();
   //  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'undeclared_prefix.Unresolved'.
+  // [cfe] Couldn't find constructor 'undeclared_prefix.Unresolved'.
 
   try {
     throw 'foo';
diff --git a/tests/language_2/metadata/type_parameter_scope_inner_test.dart b/tests/language_2/metadata/type_parameter_scope_inner_test.dart
index ecbb4a2..d88c124 100644
--- a/tests/language_2/metadata/type_parameter_scope_inner_test.dart
+++ b/tests/language_2/metadata/type_parameter_scope_inner_test.dart
@@ -13,7 +13,7 @@
 //                      ^^^
 // [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONSTANT_ARGUMENT
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'foo'.
+// [cfe] Undefined name 'foo'.
   static void foo() {}
 }
 
@@ -21,7 +21,7 @@
 //                        ^^^
 // [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONSTANT_ARGUMENT
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'foo'.
+// [cfe] Undefined name 'foo'.
   dynamic foo;
 }
 
@@ -29,14 +29,14 @@
 //                              ^^^
 // [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONSTANT_ARGUMENT
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'foo'.
+// [cfe] Undefined name 'foo'.
   static void foo() {}
 
   void extensionMethod<@Annotation(foo) T, @Annotation(bar) U>() {}
   //                                                   ^^^
   // [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONSTANT_ARGUMENT
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-  // [cfe] Getter not found: 'bar'.
+  // [cfe] Undefined name 'bar'.
 }
 
 class C {
@@ -44,7 +44,7 @@
   //                      ^^^
   // [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONSTANT_ARGUMENT
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-  // [cfe] Getter not found: 'foo'.
+  // [cfe] Undefined name 'foo'.
     dynamic foo;
   }
 
@@ -55,7 +55,7 @@
 //                      ^^^
 // [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONSTANT_ARGUMENT
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'foo'.
+// [cfe] Undefined name 'foo'.
   static void foo() {}
 }
 
@@ -63,4 +63,4 @@
 //                          ^^^
 // [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONSTANT_ARGUMENT
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'foo'.
+// [cfe] Undefined name 'foo'.
diff --git a/tests/language_2/method/not_found_test.dart b/tests/language_2/method/not_found_test.dart
index f064cf3..a39731d 100644
--- a/tests/language_2/method/not_found_test.dart
+++ b/tests/language_2/method/not_found_test.dart
@@ -12,11 +12,10 @@
 // [analyzer] COMPILE_TIME_ERROR.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
   static const field = const B();
   //                         ^
-  // [analyzer] COMPILE_TIME_ERROR.IMPLICIT_THIS_REFERENCE_IN_INITIALIZER
-  // [cfe] Method not found: 'B'.
-  //                         ^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.IMPLICIT_THIS_REFERENCE_IN_INITIALIZER
   // [cfe] Can't access 'this' in a field initializer to read 'B'.
+  // [cfe] Couldn't find constructor 'B'.
 }
 
 class B {
diff --git a/tests/language_2/mixin/illegal_constructor_test.dart b/tests/language_2/mixin/illegal_constructor_test.dart
index b402b1c..b2b3ac7 100644
--- a/tests/language_2/mixin/illegal_constructor_test.dart
+++ b/tests/language_2/mixin/illegal_constructor_test.dart
@@ -99,21 +99,21 @@
   new D6();
 
   new C0(1,2,3);
+  //    ^
+  // [cfe] Too many positional arguments: 0 allowed, but 3 found.
   //     ^
   // [analyzer] COMPILE_TIME_ERROR.EXTRA_POSITIONAL_ARGUMENTS
-  //    ^^^^^^^
-  // [cfe] Too many positional arguments: 0 allowed, but 3 found.
   new C0.named();
   //     ^^^^^
   // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR
-  // [cfe] Method not found: 'C0.named'.
+  // [cfe] Couldn't find constructor 'C0.named'.
   new D0(1,2,3);
+  //    ^
+  // [cfe] Too many positional arguments: 0 allowed, but 3 found.
   //     ^
   // [analyzer] COMPILE_TIME_ERROR.EXTRA_POSITIONAL_ARGUMENTS
-  //    ^^^^^^^
-  // [cfe] Too many positional arguments: 0 allowed, but 3 found.
   new D0.named();
   //     ^^^^^
   // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR
-  // [cfe] Method not found: 'D0.named'.
+  // [cfe] Couldn't find constructor 'D0.named'.
 }
diff --git a/tests/language_2/mixin/illegal_static_access_test.dart b/tests/language_2/mixin/illegal_static_access_test.dart
index 9d19c14..f07cb38 100644
--- a/tests/language_2/mixin/illegal_static_access_test.dart
+++ b/tests/language_2/mixin/illegal_static_access_test.dart
@@ -23,9 +23,9 @@
   Expect.throwsNoSuchMethodError(() => C.foo());
   //                                     ^^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
-  // [cfe] Method not found: 'C.foo'.
+  // [cfe] Member not found: 'C.foo'.
   Expect.throwsNoSuchMethodError(() => C.bar());
   //                                     ^^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
-  // [cfe] Method not found: 'C.bar'.
+  // [cfe] Member not found: 'C.bar'.
 }
diff --git a/tests/language_2/new/create_unresolved_type_test.dart b/tests/language_2/new/create_unresolved_type_test.dart
index e5e0bc7..e5362cd7 100644
--- a/tests/language_2/new/create_unresolved_type_test.dart
+++ b/tests/language_2/new/create_unresolved_type_test.dart
@@ -8,5 +8,5 @@
   new F<int>();
   //  ^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'F'.
+  // [cfe] Couldn't find constructor 'F'.
 }
diff --git a/tests/language_2/new/expression_type_args_test.dart b/tests/language_2/new/expression_type_args_test.dart
index 5d2cee2..7a82ace 100644
--- a/tests/language_2/new/expression_type_args_test.dart
+++ b/tests/language_2/new/expression_type_args_test.dart
@@ -10,13 +10,12 @@
   m1() => new T();
   //          ^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'T'.
+  // [cfe] Couldn't find constructor 'T'.
   static m2() => new T();
   //                 ^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'T'.
-  //                 ^
   // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [cfe] Couldn't find constructor 'T'.
 
   // OK when used within instance method, but not in static method.
   m3() => new A<T>();
diff --git a/tests/language_2/new/prefix_test.dart b/tests/language_2/new/prefix_test.dart
index d0672d3..4e352d1 100644
--- a/tests/language_2/new/prefix_test.dart
+++ b/tests/language_2/new/prefix_test.dart
@@ -10,5 +10,5 @@
   return new prefix();
   //         ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'prefix'.
+  // [cfe] Couldn't find constructor 'prefix'.
 }
diff --git a/tests/language_2/null_aware/access_test.dart b/tests/language_2/null_aware/access_test.dart
index be94ddc..9b5ec26 100644
--- a/tests/language_2/null_aware/access_test.dart
+++ b/tests/language_2/null_aware/access_test.dart
@@ -76,9 +76,9 @@
   Expect.throwsNoSuchMethodError(() => C?.hashCode);
   //                                      ^^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_GETTER
-  // [cfe] Getter not found: 'hashCode'.
+  // [cfe] Member not found: 'hashCode'.
   Expect.throwsNoSuchMethodError(() => h.C?.hashCode);
   //                                        ^^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_GETTER
-  // [cfe] Getter not found: 'hashCode'.
+  // [cfe] Member not found: 'hashCode'.
 }
diff --git a/tests/language_2/number/identifier_test.dart b/tests/language_2/number/identifier_test.dart
index d6ae7a4..efcf7a5 100644
--- a/tests/language_2/number/identifier_test.dart
+++ b/tests/language_2/number/identifier_test.dart
@@ -11,32 +11,26 @@
   Expect.isTrue(2 is int);
   //                 ^^^
   // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
-  //                 ^^^
   // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_NON_TYPE
   Expect.equals(2, 2 as int);
   //                    ^^^
-  // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
-  //                    ^^^
   // [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
   Expect.isTrue(-2 is int);
   //                  ^^^
   // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
-  //                  ^^^
   // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_NON_TYPE
   Expect.equals(-2, -2 as int);
   //                      ^^^
-  // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
-  //                      ^^^
   // [analyzer] COMPILE_TIME_ERROR.CAST_TO_NON_TYPE
+  // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
   Expect.isTrue(0x10 is int);
   //                    ^^^
   // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
-  //                    ^^^
   // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_NON_TYPE
   Expect.isTrue(-0x10 is int);
   //                     ^^^
   // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
-  //                     ^^^
   // [analyzer] COMPILE_TIME_ERROR.TYPE_TEST_WITH_NON_TYPE
 
   // "a" will be part of hex literal, the following "s" is an error.
@@ -78,14 +72,14 @@
 // [cfe] Expected ';' after this.
 // ^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'd'.
+// [cfe] Undefined name 'd'.
   1D;
 //^
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
 // [cfe] Expected ';' after this.
 // ^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'D'.
+// [cfe] Undefined name 'D'.
   Expect.throwsNoSuchMethodError(() => 1.d+2);
   //                                     ^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_GETTER
@@ -100,14 +94,14 @@
 // [cfe] Expected ';' after this.
 //   ^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'd'.
+// [cfe] Undefined name 'd'.
   1.1D;
 //^^^
 // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
 // [cfe] Expected ';' after this.
 //   ^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'D'.
+// [cfe] Undefined name 'D'.
   1e;
 //^
 // [cfe] Numbers in exponential notation should always contain an exponent (an integer number with an optional sign).
@@ -119,5 +113,5 @@
 // [cfe] Expected ';' after this.
 // ^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'x'.
+// [cfe] Undefined name 'x'.
 }
diff --git a/tests/language_2/prefix/shadow_test.dart b/tests/language_2/prefix/shadow_test.dart
index ef22825..118c67a 100644
--- a/tests/language_2/prefix/shadow_test.dart
+++ b/tests/language_2/prefix/shadow_test.dart
@@ -16,7 +16,7 @@
     //  ^
     // [analyzer] COMPILE_TIME_ERROR.PREFIX_SHADOWED_BY_LOCAL_DECLARATION
     //    ^
-    // [cfe] Method not found: 'T.Library10'.
+    // [cfe] Couldn't find constructor 'T.Library10'.
   }
 }
 
diff --git a/tests/language_2/prefix/transitive_import_prefix_test.dart b/tests/language_2/prefix/transitive_import_prefix_test.dart
index b9e526c..cd08fe5 100644
--- a/tests/language_2/prefix/transitive_import_prefix_test.dart
+++ b/tests/language_2/prefix/transitive_import_prefix_test.dart
@@ -10,13 +10,13 @@
   new lib11.Library11(1);
   //  ^^^^^^^^^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'lib11.Library11'.
+  // [cfe] Couldn't find constructor 'lib11.Library11'.
   lib11.Library11.static_func();
 //^^^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'lib11'.
+// [cfe] Undefined name 'lib11'.
   lib11.Library11.static_fld;
 //^^^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'lib11'.
+// [cfe] Undefined name 'lib11'.
 }
diff --git a/tests/language_2/prefix/transitive_import_test.dart b/tests/language_2/prefix/transitive_import_test.dart
index 65b7b94..ca40726 100644
--- a/tests/language_2/prefix/transitive_import_test.dart
+++ b/tests/language_2/prefix/transitive_import_test.dart
@@ -13,11 +13,11 @@
   new lib12.Library11(1);
   //        ^^^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'Library11'.
+  // [cfe] Couldn't find constructor 'Library11'.
 
   // Variable should not be visible.
   lib12.top_level11;
   //    ^^^^^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_PREFIXED_NAME
-  // [cfe] Getter not found: 'top_level11'.
+  // [cfe] Undefined name 'top_level11'.
 }
diff --git a/tests/language_2/private/access_test.dart b/tests/language_2/private/access_test.dart
index 42912ed..7bc1b6c 100644
--- a/tests/language_2/private/access_test.dart
+++ b/tests/language_2/private/access_test.dart
@@ -21,7 +21,7 @@
   new _Class();
   //  ^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: '_Class'.
+  // [cfe] Couldn't find constructor '_Class'.
   private._Class();
 //        ^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_FUNCTION
@@ -29,9 +29,9 @@
   new Class._constructor();
   //        ^^^^^^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR
-  // [cfe] Method not found: 'Class._constructor'.
+  // [cfe] Couldn't find constructor 'Class._constructor'.
   new private.Class._constructor();
   //                ^^^^^^^^^^^^
   // [analyzer] COMPILE_TIME_ERROR.NEW_WITH_UNDEFINED_CONSTRUCTOR
-  // [cfe] Method not found: 'Class._constructor'.
+  // [cfe] Couldn't find constructor 'Class._constructor'.
 }
diff --git a/tests/language_2/regress/regress15606_test.dart b/tests/language_2/regress/regress15606_test.dart
index 24604f8..740f919 100644
--- a/tests/language_2/regress/regress15606_test.dart
+++ b/tests/language_2/regress/regress15606_test.dart
@@ -18,7 +18,7 @@
       Unresolved.
 //    ^^^^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-// [cfe] Getter not found: 'Unresolved'.
+// [cfe] Undefined name 'Unresolved'.
         bar(
       // Make dart2js generate a call to setRuntimeTypeInfo.
       new Foo<int>(),
diff --git a/tests/language_2/regress/regress21793_test.dart b/tests/language_2/regress/regress21793_test.dart
index 2928280..dde0672 100644
--- a/tests/language_2/regress/regress21793_test.dart
+++ b/tests/language_2/regress/regress21793_test.dart
@@ -18,5 +18,5 @@
   print(new A()(499));
   //        ^
   // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-  // [cfe] Method not found: 'A'.
+  // [cfe] Couldn't find constructor 'A'.
 }
diff --git a/tests/language_2/regress/regress34495_test.dart b/tests/language_2/regress/regress34495_test.dart
index 9fa3ec8..85d923d 100644
--- a/tests/language_2/regress/regress34495_test.dart
+++ b/tests/language_2/regress/regress34495_test.dart
@@ -7,7 +7,7 @@
 final foo = A<B>.foo();
 //          ^
 // [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
-// [cfe] Method not found: 'A'.
+// [cfe] Couldn't find constructor 'A'.
 //            ^
 // [analyzer] COMPILE_TIME_ERROR.NON_TYPE_AS_TYPE_ARGUMENT
 // [cfe] 'B' isn't a type.
diff --git a/tests/language_2/static/field3_test.dart b/tests/language_2/static/field3_test.dart
index 3da6963..44f1f7a 100644
--- a/tests/language_2/static/field3_test.dart
+++ b/tests/language_2/static/field3_test.dart
@@ -16,11 +16,11 @@
     var x = Foo.x;
     //          ^
     // [analyzer] COMPILE_TIME_ERROR.STATIC_ACCESS_TO_INSTANCE_MEMBER
-    // [cfe] Getter not found: 'x'.
+    // [cfe] Member not found: 'x'.
     var m = Foo.m;
     //          ^
     // [analyzer] COMPILE_TIME_ERROR.STATIC_ACCESS_TO_INSTANCE_MEMBER
-    // [cfe] Getter not found: 'm'.
+    // [cfe] Member not found: 'm'.
     Foo.m = 1;
     //  ^
     // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_SETTER
diff --git a/tests/language_2/string/interpolate1_test.dart b/tests/language_2/string/interpolate1_test.dart
index 1798edb..9db9cd6 100644
--- a/tests/language_2/string/interpolate1_test.dart
+++ b/tests/language_2/string/interpolate1_test.dart
@@ -14,5 +14,5 @@
   // [cfe] A '$' has special meaning inside a string, and must be followed by an identifier or an expression in curly braces ({}).
   //                  ^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
-  // [cfe] Getter not found: 'x'.
+  // [cfe] Undefined name 'x'.
 }
diff --git a/tests/language_2/type_variable/conflict2_test.dart b/tests/language_2/type_variable/conflict2_test.dart
index c211812..40abfb9 100644
--- a/tests/language_2/type_variable/conflict2_test.dart
+++ b/tests/language_2/type_variable/conflict2_test.dart
@@ -17,15 +17,14 @@
   foo() => T();
   //       ^
   // [analyzer] COMPILE_TIME_ERROR.INVOCATION_OF_NON_FUNCTION
-  // [cfe] Method not found: 'T'.
+  // [cfe] Couldn't find constructor 'T'.
 
   // T is in scope, even in static context. Compile-time error to call this.T().
   static bar() => T();
   //              ^
   // [analyzer] COMPILE_TIME_ERROR.INVOCATION_OF_NON_FUNCTION
-  // [cfe] Method not found: 'T'.
-  //              ^
   // [analyzer] COMPILE_TIME_ERROR.TYPE_PARAMETER_REFERENCED_BY_STATIC
+  // [cfe] Couldn't find constructor 'T'.
 
   // X is not in scope. NoSuchMethodError.
   static baz() => X();
@@ -37,7 +36,7 @@
   static qux() => C.T();
   //                ^
   // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
-  // [cfe] Method not found: 'C.T'.
+  // [cfe] Member not found: 'C.T'.
 
   // Class '_Type' has no instance method 'call': NoSuchMethodError.
   quux() => (T)();
diff --git a/tests/language_2/variable/bad_initializer1_test.dart b/tests/language_2/variable/bad_initializer1_test.dart
index 10a4bfe..7e3159d 100644
--- a/tests/language_2/variable/bad_initializer1_test.dart
+++ b/tests/language_2/variable/bad_initializer1_test.dart
@@ -20,7 +20,7 @@
       elems
 //    ^^^^^
 // [analyzer] COMPILE_TIME_ERROR.REFERENCED_BEFORE_DECLARATION
-// [cfe] Getter not found: 'elems'.
+// [cfe] Undefined name 'elems'.
     ],
     "a",
     "b"
diff --git a/tests/lib/async/unawaited_error_test.dart b/tests/lib/async/unawaited_error_test.dart
index 597a9f8..c1eecb8 100644
--- a/tests/lib/async/unawaited_error_test.dart
+++ b/tests/lib/async/unawaited_error_test.dart
@@ -5,7 +5,7 @@
 void main() {
   // The `unawaited` function is not exposed by dart:core.
   unawaited;
-  // [error line 7, column 3, length 9]
-  // [cfe] Getter not found: 'unawaited'.
-  // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
+//^^^^^^^^^
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
+// [cfe] Undefined name 'unawaited'.
 }
diff --git a/tests/lib_2/async/unawaited_error_test.dart b/tests/lib_2/async/unawaited_error_test.dart
index 597a9f8..c1eecb8 100644
--- a/tests/lib_2/async/unawaited_error_test.dart
+++ b/tests/lib_2/async/unawaited_error_test.dart
@@ -5,7 +5,7 @@
 void main() {
   // The `unawaited` function is not exposed by dart:core.
   unawaited;
-  // [error line 7, column 3, length 9]
-  // [cfe] Getter not found: 'unawaited'.
-  // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
+//^^^^^^^^^
+// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_IDENTIFIER
+// [cfe] Undefined name 'unawaited'.
 }
diff --git a/tools/VERSION b/tools/VERSION
index 752efff..c29197a 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 15
 PATCH 0
-PRERELEASE 53
+PRERELEASE 54
 PRERELEASE_PATCH 0
\ No newline at end of file
