Version 2.13.0-133.0.dev

Merge commit '31acdc9d92c93742999c8fb92f2c4c051bd1fafe' into 'dev'
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
index c98702e..097e4fa 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
@@ -2377,6 +2377,16 @@
     return identifier;
   }
 
+  /// Checks whether the next token is (directly) an identifier. If this returns
+  /// true a call to [ensureIdentifier] will return the next token.
+  bool isNextIdentifier(Token token) {
+    Token identifier = token.next!;
+    if (identifier.kind != IDENTIFIER_TOKEN) {
+      return false;
+    }
+    return true;
+  }
+
   /// Parse a simple identifier at the given [token], and return the identifier
   /// that was parsed.
   ///
@@ -3790,7 +3800,13 @@
         varFinalOrConst, getOrSet, name);
 
     Token token = typeInfo.parseType(beforeType, this);
-    assert(token.next == (getOrSet ?? name));
+    assert(token.next == (getOrSet ?? name) ||
+        // [skipType] and [parseType] for something ending in `>>` is different
+        // because [`>>`] is split to [`>`, `>`] in both cases. For skip it's
+        // cached as the end but for parse a new pair is created (which is also
+        // woven into the token stream). At least for now we allow this and let
+        // the assert not fail because of it.
+        (token.next!.type == name.type && token.next!.offset == name.offset));
     token = getOrSet ?? token;
 
     bool hasQualifiedName = false;
@@ -5709,8 +5725,66 @@
   Token parseNewExpression(Token token) {
     Token newKeyword = token.next!;
     assert(optional('new', newKeyword));
+
+    TypeParamOrArgInfo? potentialTypeArg;
+
+    if (isNextIdentifier(newKeyword)) {
+      Token identifier = newKeyword.next!;
+      String value = identifier.lexeme;
+      if ((value == "Map" || value == "Set") &&
+          !optional('.', identifier.next!)) {
+        potentialTypeArg = computeTypeParamOrArg(identifier);
+        Token afterToken = potentialTypeArg.skip(identifier).next!;
+        if (optional('{', afterToken)) {
+          // Recover by ignoring both the `new` and the `Map`/`Set` and parse as
+          // a literal map/set.
+          reportRecoverableErrorWithToken(
+              newKeyword, codes.templateUnexpectedToken);
+          reportRecoverableErrorWithToken(
+              identifier, codes.templateUnexpectedToken);
+          return parsePrimary(identifier, IdentifierContext.expression);
+        }
+      } else if (value == "List" && !optional('.', identifier.next!)) {
+        potentialTypeArg = computeTypeParamOrArg(identifier);
+        Token afterToken = potentialTypeArg.skip(identifier).next!;
+        if (optional('[', afterToken) || optional('[]', afterToken)) {
+          // Recover by ignoring both the `new` and the `List` and parse as
+          // a literal list.
+          reportRecoverableErrorWithToken(
+              newKeyword, codes.templateUnexpectedToken);
+          reportRecoverableErrorWithToken(
+              identifier, codes.templateUnexpectedToken);
+          return parsePrimary(identifier, IdentifierContext.expression);
+        }
+      }
+    } else {
+      // This is probably an error. "Normal" recovery will happen in
+      // parseConstructorReference.
+      // Do special recovery for literal maps/set/list erroneously prepended
+      // with 'new'.
+      Token notIdentifier = newKeyword.next!;
+      String value = notIdentifier.lexeme;
+      if (value == "<") {
+        potentialTypeArg = computeTypeParamOrArg(newKeyword);
+        Token afterToken = potentialTypeArg.skip(newKeyword).next!;
+        if (optional('{', afterToken) ||
+            optional('[', afterToken) ||
+            optional('[]', afterToken)) {
+          // Recover by ignoring the `new` and parse as a literal map/set/list.
+          reportRecoverableErrorWithToken(
+              newKeyword, codes.templateUnexpectedToken);
+          return parsePrimary(newKeyword, IdentifierContext.expression);
+        }
+      } else if (value == "{" || value == "[" || value == "[]") {
+        // Recover by ignoring the `new` and parse as a literal map/set/list.
+        reportRecoverableErrorWithToken(
+            newKeyword, codes.templateUnexpectedToken);
+        return parsePrimary(newKeyword, IdentifierContext.expression);
+      }
+    }
+
     listener.beginNewExpression(newKeyword);
-    token = parseConstructorReference(newKeyword);
+    token = parseConstructorReference(newKeyword, potentialTypeArg);
     token = parseConstructorInvocationArguments(token);
     listener.endNewExpression(newKeyword);
     return token;
@@ -5768,8 +5842,62 @@
       listener.endConstLiteral(token.next!);
       return token;
     }
+    final String lexeme = next.lexeme;
+    Token nextNext = next.next!;
+    TypeParamOrArgInfo? potentialTypeArg;
+    if ((lexeme == "Map" || lexeme == "Set") && !optional('.', nextNext)) {
+      // Special-case-recovery for `const Map<..>?{}` and `const Set<..>?{}`.
+      potentialTypeArg = computeTypeParamOrArg(next);
+      Token afterToken = potentialTypeArg.skip(next).next!;
+      if (optional('{', afterToken)) {
+        final String? nextValue = nextNext.stringValue;
+        if (identical(nextValue, '{')) {
+          // Recover by ignoring the `Map`/`Set` and parse as a literal map/set.
+          reportRecoverableErrorWithToken(next, codes.templateUnexpectedToken);
+          listener.beginConstLiteral(nextNext);
+          listener.handleNoTypeArguments(nextNext);
+          token = parseLiteralSetOrMapSuffix(next, constKeyword);
+          listener.endConstLiteral(token.next!);
+          return token;
+        }
+        if (identical(nextValue, '<')) {
+          // Recover by ignoring the `Map`/`Set` and parse as a literal map/set.
+          reportRecoverableErrorWithToken(next, codes.templateUnexpectedToken);
+          listener.beginConstLiteral(nextNext);
+          token = parseLiteralListSetMapOrFunction(next, constKeyword);
+          listener.endConstLiteral(token.next!);
+          return token;
+        }
+        assert(false, "Expected either { or < but found neither.");
+      }
+    } else if (lexeme == "List" && !optional('.', nextNext)) {
+      // Special-case-recovery for `const List<..>?[` and `const List<..>?[]`.
+      potentialTypeArg = computeTypeParamOrArg(next);
+      Token afterToken = potentialTypeArg.skip(next).next!;
+      if (optional('[', afterToken) || optional('[]', afterToken)) {
+        final String? nextValue = nextNext.stringValue;
+        if (identical(nextValue, '[') || identical(nextValue, '[]')) {
+          // Recover by ignoring the `List` and parse as a literal list.
+          reportRecoverableErrorWithToken(next, codes.templateUnexpectedToken);
+          listener.beginConstLiteral(nextNext);
+          listener.handleNoTypeArguments(nextNext);
+          token = parseLiteralListSuffix(next, constKeyword);
+          listener.endConstLiteral(token.next!);
+          return token;
+        }
+        if (identical(nextValue, '<')) {
+          // Recover by ignoring the `List` and parse as a literal list.
+          reportRecoverableErrorWithToken(next, codes.templateUnexpectedToken);
+          listener.beginConstLiteral(nextNext);
+          token = parseLiteralListSetMapOrFunction(next, constKeyword);
+          listener.endConstLiteral(token.next!);
+          return token;
+        }
+        assert(false, "Expected either [, [] or < but found neither.");
+      }
+    }
     listener.beginConstExpression(constKeyword);
-    token = parseConstructorReference(token);
+    token = parseConstructorReference(token, potentialTypeArg);
     token = parseConstructorInvocationArguments(token);
     listener.endConstExpression(constKeyword);
     return token;
@@ -5925,6 +6053,41 @@
   }
 
   Token parseSend(Token token, IdentifierContext context) {
+    // Least-costly recovery of `Map<...>?{`, `Set<...>?{`, `List<...>[` and
+    // `List<...>?[]`.
+    // Note that we have to "peek" into the identifier because we don't want to
+    // send an `handleIdentifier` if we end up recovering.
+    TypeParamOrArgInfo? potentialTypeArg;
+    Token? afterToken;
+    if (isNextIdentifier(token)) {
+      Token identifier = token.next!;
+      String value = identifier.lexeme;
+      if (value == "Map" || value == "Set") {
+        potentialTypeArg = computeTypeParamOrArg(identifier);
+        afterToken = potentialTypeArg.skip(identifier).next!;
+        if (optional('{', afterToken)) {
+          // Recover by ignoring the `Map`/`Set` and parse as a literal map/set.
+          reportRecoverableErrorWithToken(
+              identifier, codes.templateUnexpectedToken);
+          return parsePrimary(identifier, context);
+        }
+      } else if (value == "List") {
+        potentialTypeArg = computeTypeParamOrArg(identifier);
+        afterToken = potentialTypeArg.skip(identifier).next!;
+        if ((potentialTypeArg != noTypeParamOrArg &&
+                optional('[', afterToken)) ||
+            optional('[]', afterToken)) {
+          // Recover by ignoring the `List` and parse as a literal List.
+          // Note that we here require the `<...>` for `[` as `List[` would be
+          // an indexed expression. `List[]` wouldn't though, so we don't
+          // require it there.
+          reportRecoverableErrorWithToken(
+              identifier, codes.templateUnexpectedToken);
+          return parsePrimary(identifier, context);
+        }
+      }
+    }
+
     Token beginToken = token = ensureIdentifier(token, context);
     // Notice that we don't parse the bang (!) here as we do in many other
     // instances where we call computeMethodTypeArguments.
@@ -5933,7 +6096,18 @@
     // the type arguments and the arguments.
     // By not handling bang here we don't parse any of it, and the parser will
     // parse it correctly in a different recursion step.
-    TypeParamOrArgInfo typeArg = computeMethodTypeArguments(token);
+
+    // Special-case [computeMethodTypeArguments] to re-use potentialTypeArg if
+    // already computed.
+    potentialTypeArg ??= computeTypeParamOrArg(token);
+    afterToken ??= potentialTypeArg.skip(token).next!;
+    TypeParamOrArgInfo typeArg;
+    if (optional('(', afterToken)) {
+      typeArg = potentialTypeArg;
+    } else {
+      typeArg = noTypeParamOrArg;
+    }
+
     if (typeArg != noTypeParamOrArg) {
       token = typeArg.parseArguments(token, this);
     } else {
diff --git a/pkg/analyzer/lib/src/dart/element/type.dart b/pkg/analyzer/lib/src/dart/element/type.dart
index 5611186..312a064 100644
--- a/pkg/analyzer/lib/src/dart/element/type.dart
+++ b/pkg/analyzer/lib/src/dart/element/type.dart
@@ -1885,8 +1885,9 @@
 
   @override
   DartType resolveToBound(DartType objectType) {
+    var promotedBound = this.promotedBound;
     if (promotedBound != null) {
-      return promotedBound!;
+      return promotedBound.resolveToBound(objectType);
     }
 
     var bound = element.bound;
diff --git a/pkg/analyzer/test/generated/recovery_parser_test.dart b/pkg/analyzer/test/generated/recovery_parser_test.dart
index 2c31385..b946115 100644
--- a/pkg/analyzer/test/generated/recovery_parser_test.dart
+++ b/pkg/analyzer/test/generated/recovery_parser_test.dart
@@ -1034,12 +1034,7 @@
 
   void test_invalidMapLiteral() {
     parseCompilationUnit("class C { var f = Map<A, B> {}; }", codes: [
-// TODO(danrubel): Improve error message to indicate
-// that "Map" should be removed.
-      ParserErrorCode.EXPECTED_TOKEN,
-      ParserErrorCode.MISSING_KEYWORD_OPERATOR,
-      ParserErrorCode.MISSING_METHOD_PARAMETERS,
-      ParserErrorCode.EXPECTED_CLASS_MEMBER,
+      ParserErrorCode.UNEXPECTED_TOKEN,
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/dart/element/element_test.dart b/pkg/analyzer/test/src/dart/element/element_test.dart
index 03658e3..0f8202f 100644
--- a/pkg/analyzer/test/src/dart/element/element_test.dart
+++ b/pkg/analyzer/test/src/dart/element/element_test.dart
@@ -2242,6 +2242,27 @@
     expect(typeF.resolveToBound(objectNone), interfaceTypeStar(classS));
   }
 
+  void test_resolveToBound_promotedBound_interfaceType() {
+    var A = class_(name: 'A');
+    var A_none = interfaceTypeNone(A);
+
+    var T = typeParameter('T');
+    var T_A = typeParameterTypeNone(T, promotedBound: A_none);
+    expect(T_A.resolveToBound(objectQuestion), A_none);
+  }
+
+  void test_resolveToBound_promotedBound_typeParameterType_interfaceType() {
+    var A = class_(name: 'A');
+    var A_none = interfaceTypeNone(A);
+
+    var T = typeParameter('T', bound: A_none);
+    var T_none = typeParameterTypeNone(T);
+
+    var U = typeParameter('U');
+    var U_T = typeParameterTypeNone(U, promotedBound: T_none);
+    expect(U_T.resolveToBound(objectQuestion), A_none);
+  }
+
   void test_resolveToBound_unbound() {
     TypeParameterTypeImpl type =
         typeParameterTypeStar(TypeParameterElementImpl('E', -1));
diff --git a/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart b/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
index 60d4e16..b1bc073 100644
--- a/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
@@ -2772,6 +2772,30 @@
     );
   }
 
+  test_hasReceiver_typeParameter_promotedToOtherTypeParameter() async {
+    await assertNoErrorsInCode('''
+abstract class A {}
+
+abstract class B extends A {
+  void foo();
+}
+
+void f<T extends A, U extends B>(T a) {
+  if (a is U) {
+    a.foo();
+  }
+}
+''');
+
+    assertMethodInvocation2(
+      findNode.methodInvocation('a.foo()'),
+      element: findElement.method('foo'),
+      typeArgumentTypes: [],
+      invokeType: 'void Function()',
+      type: 'void',
+    );
+  }
+
   test_nullShorting_cascade_firstMethodInvocation() async {
     await assertNoErrorsInCode(r'''
 class A {
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart
new file mode 100644
index 0000000..24d670e
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart
@@ -0,0 +1,28 @@
+class F {
+  /* notice the braces at the end instead of parenthesis! */
+  final Map<String, Undefined> foo1 = Map<String, List<int>>{};
+
+  // variation #1: OK.
+  final Map<String, Undefined> foo2 = <String, List<int>>{};
+
+  // variation #2: Bad.
+  final Map<String, Undefined> foo3 = Map{};
+
+  // variation #3: OK.
+  final Map<String, Undefined> foo4 = Map<String, List<int>>();
+
+  // variation #4: OK.
+  final Map<String, Undefined> foo5 = Map();
+
+  // variation #5: Bad.
+  final Map<String, Undefined> foo6 = Map<String, List<int>>{"a": null};
+
+  // variation #6: Bad.
+  final Map<String, Undefined> foo7 = Map{"a": null};
+
+  // variation #7: OK.
+  final Map<String, Undefined> foo8 = <String, List<int>>{"a": null};
+
+  // variation #8: OK.
+  final Map<String, Undefined> foo9 = {"a": null};
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.expect
new file mode 100644
index 0000000..898cf57
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.expect
@@ -0,0 +1,305 @@
+Problems reported:
+
+parser/error_recovery/issue_45251:3:39: Unexpected token 'Map'.
+  final Map<String, Undefined> foo1 = Map<String, List<int>>{};
+                                      ^^^
+
+parser/error_recovery/issue_45251:9:39: Unexpected token 'Map'.
+  final Map<String, Undefined> foo3 = Map{};
+                                      ^^^
+
+parser/error_recovery/issue_45251:18:39: Unexpected token 'Map'.
+  final Map<String, Undefined> foo6 = Map<String, List<int>>{"a": null};
+                                      ^^^
+
+parser/error_recovery/issue_45251:21:39: Unexpected token 'Map'.
+  final Map<String, Undefined> foo7 = Map{"a": null};
+                                      ^^^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(F, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, F)
+      handleNoType(F)
+      handleClassExtends(null, 1)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields({)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo1, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              beginTypeArguments(<)
+                handleIdentifier(String, typeReference)
+                handleNoTypeArguments(,)
+                handleType(String, null)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(2, <, >)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo2, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginTypeArguments(<)
+                handleIdentifier(String, typeReference)
+                handleNoTypeArguments(,)
+                handleType(String, null)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(2, <, >)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo3, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              handleNoTypeArguments({)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo4, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleIdentifier(Map, expression)
+              beginTypeArguments(<)
+                handleIdentifier(String, typeReference)
+                handleNoTypeArguments(,)
+                handleType(String, null)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(2, <, >)
+              beginArguments(()
+              endArguments(0, (, ))
+              handleSend(Map, ;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo5, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleIdentifier(Map, expression)
+              handleNoTypeArguments(()
+              beginArguments(()
+              endArguments(0, (, ))
+              handleSend(Map, ;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo6, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              beginTypeArguments(<)
+                handleIdentifier(String, typeReference)
+                handleNoTypeArguments(,)
+                handleType(String, null)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(2, <, >)
+              beginLiteralString("a")
+              endLiteralString(0, :)
+              handleLiteralNull(null)
+              handleLiteralMapEntry(:, })
+              handleLiteralSetOrMap(1, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo7, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              handleNoTypeArguments({)
+              beginLiteralString("a")
+              endLiteralString(0, :)
+              handleLiteralNull(null)
+              handleLiteralMapEntry(:, })
+              handleLiteralSetOrMap(1, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo8, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginTypeArguments(<)
+                handleIdentifier(String, typeReference)
+                handleNoTypeArguments(,)
+                handleType(String, null)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(2, <, >)
+              beginLiteralString("a")
+              endLiteralString(0, :)
+              handleLiteralNull(null)
+              handleLiteralMapEntry(:, })
+              handleLiteralSetOrMap(1, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo9, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleNoTypeArguments({)
+              beginLiteralString("a")
+              endLiteralString(0, :)
+              handleLiteralNull(null)
+              handleLiteralMapEntry(:, })
+              handleLiteralSetOrMap(1, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.intertwined.expect
new file mode 100644
index 0000000..3e01156
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.intertwined.expect
@@ -0,0 +1,488 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(F, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, F)
+        parseClass(F, class, class, F)
+          parseClassHeaderOpt(F, class, class)
+            parseClassExtendsOpt(F)
+              listener: handleNoType(F)
+              listener: handleClassExtends(null, 1)
+            parseWithClauseOpt(F)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(F)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
+              parseMetadataStar({)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields({, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo1, DeclarationKind.Class, F, false)
+                listener: beginFields({)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo1, fieldDeclaration)
+                parseFieldInitializerOpt(foo1, foo1, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                              parsePrimary(Map, expression)
+                                parseLiteralListSetMapOrFunction(Map, null)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(String, typeReference)
+                                  listener: handleNoTypeArguments(,)
+                                  listener: handleType(String, null)
+                                  listener: handleIdentifier(List, typeReference)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(int, typeReference)
+                                  listener: handleNoTypeArguments(>)
+                                  listener: handleType(int, null)
+                                  listener: endTypeArguments(1, <, >)
+                                  listener: handleType(List, null)
+                                  listener: endTypeArguments(2, <, >)
+                                  parseLiteralSetOrMapSuffix(>, null)
+                                    listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo2, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo2, fieldDeclaration)
+                parseFieldInitializerOpt(foo2, foo2, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralListSetMapOrFunction(=, null)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(String, typeReference)
+                            listener: handleNoTypeArguments(,)
+                            listener: handleType(String, null)
+                            listener: handleIdentifier(List, typeReference)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(int, typeReference)
+                            listener: handleNoTypeArguments(>)
+                            listener: handleType(int, null)
+                            listener: endTypeArguments(1, <, >)
+                            listener: handleType(List, null)
+                            listener: endTypeArguments(2, <, >)
+                            parseLiteralSetOrMapSuffix(>, null)
+                              listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo3, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo3, fieldDeclaration)
+                parseFieldInitializerOpt(foo3, foo3, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                              parsePrimary(Map, expression)
+                                listener: handleNoTypeArguments({)
+                                parseLiteralSetOrMapSuffix(Map, null)
+                                  listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo4, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo4, fieldDeclaration)
+                parseFieldInitializerOpt(foo4, foo4, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            looksLikeFunctionBody(;)
+                            parseSend(=, expression)
+                              ensureIdentifier(=, expression)
+                                listener: handleIdentifier(Map, expression)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(String, typeReference)
+                              listener: handleNoTypeArguments(,)
+                              listener: handleType(String, null)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(2, <, >)
+                              parseArgumentsOpt(>)
+                                parseArguments(>)
+                                  parseArgumentsRest(()
+                                    listener: beginArguments(()
+                                    listener: endArguments(0, (, ))
+                              listener: handleSend(Map, ;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo5, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo5, fieldDeclaration)
+                parseFieldInitializerOpt(foo5, foo5, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            looksLikeFunctionBody(;)
+                            parseSend(=, expression)
+                              ensureIdentifier(=, expression)
+                                listener: handleIdentifier(Map, expression)
+                              listener: handleNoTypeArguments(()
+                              parseArgumentsOpt(Map)
+                                parseArguments(Map)
+                                  parseArgumentsRest(()
+                                    listener: beginArguments(()
+                                    listener: endArguments(0, (, ))
+                              listener: handleSend(Map, ;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo6, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo6, fieldDeclaration)
+                parseFieldInitializerOpt(foo6, foo6, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                              parsePrimary(Map, expression)
+                                parseLiteralListSetMapOrFunction(Map, null)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(String, typeReference)
+                                  listener: handleNoTypeArguments(,)
+                                  listener: handleType(String, null)
+                                  listener: handleIdentifier(List, typeReference)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(int, typeReference)
+                                  listener: handleNoTypeArguments(>)
+                                  listener: handleType(int, null)
+                                  listener: endTypeArguments(1, <, >)
+                                  listener: handleType(List, null)
+                                  listener: endTypeArguments(2, <, >)
+                                  parseLiteralSetOrMapSuffix(>, null)
+                                    parseExpression({)
+                                      parsePrecedenceExpression({, 1, true)
+                                        parseUnaryExpression({, true)
+                                          parsePrimary({, expression)
+                                            parseLiteralString({)
+                                              parseSingleLiteralString({)
+                                                listener: beginLiteralString("a")
+                                                listener: endLiteralString(0, :)
+                                    parseExpression(:)
+                                      parsePrecedenceExpression(:, 1, true)
+                                        parseUnaryExpression(:, true)
+                                          parsePrimary(:, expression)
+                                            parseLiteralNull(:)
+                                              listener: handleLiteralNull(null)
+                                    listener: handleLiteralMapEntry(:, })
+                                    listener: handleLiteralSetOrMap(1, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo7, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo7, fieldDeclaration)
+                parseFieldInitializerOpt(foo7, foo7, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                              parsePrimary(Map, expression)
+                                listener: handleNoTypeArguments({)
+                                parseLiteralSetOrMapSuffix(Map, null)
+                                  parseExpression({)
+                                    parsePrecedenceExpression({, 1, true)
+                                      parseUnaryExpression({, true)
+                                        parsePrimary({, expression)
+                                          parseLiteralString({)
+                                            parseSingleLiteralString({)
+                                              listener: beginLiteralString("a")
+                                              listener: endLiteralString(0, :)
+                                  parseExpression(:)
+                                    parsePrecedenceExpression(:, 1, true)
+                                      parseUnaryExpression(:, true)
+                                        parsePrimary(:, expression)
+                                          parseLiteralNull(:)
+                                            listener: handleLiteralNull(null)
+                                  listener: handleLiteralMapEntry(:, })
+                                  listener: handleLiteralSetOrMap(1, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo8, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo8, fieldDeclaration)
+                parseFieldInitializerOpt(foo8, foo8, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralListSetMapOrFunction(=, null)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(String, typeReference)
+                            listener: handleNoTypeArguments(,)
+                            listener: handleType(String, null)
+                            listener: handleIdentifier(List, typeReference)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(int, typeReference)
+                            listener: handleNoTypeArguments(>)
+                            listener: handleType(int, null)
+                            listener: endTypeArguments(1, <, >)
+                            listener: handleType(List, null)
+                            listener: endTypeArguments(2, <, >)
+                            parseLiteralSetOrMapSuffix(>, null)
+                              parseExpression({)
+                                parsePrecedenceExpression({, 1, true)
+                                  parseUnaryExpression({, true)
+                                    parsePrimary({, expression)
+                                      parseLiteralString({)
+                                        parseSingleLiteralString({)
+                                          listener: beginLiteralString("a")
+                                          listener: endLiteralString(0, :)
+                              parseExpression(:)
+                                parsePrecedenceExpression(:, 1, true)
+                                  parseUnaryExpression(:, true)
+                                    parsePrimary(:, expression)
+                                      parseLiteralNull(:)
+                                        listener: handleLiteralNull(null)
+                              listener: handleLiteralMapEntry(:, })
+                              listener: handleLiteralSetOrMap(1, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo9, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo9, fieldDeclaration)
+                parseFieldInitializerOpt(foo9, foo9, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          listener: handleNoTypeArguments({)
+                          parseLiteralSetOrMapSuffix(=, null)
+                            parseExpression({)
+                              parsePrecedenceExpression({, 1, true)
+                                parseUnaryExpression({, true)
+                                  parsePrimary({, expression)
+                                    parseLiteralString({)
+                                      parseSingleLiteralString({)
+                                        listener: beginLiteralString("a")
+                                        listener: endLiteralString(0, :)
+                            parseExpression(:)
+                              parsePrecedenceExpression(:, 1, true)
+                                parseUnaryExpression(:, true)
+                                  parsePrimary(:, expression)
+                                    parseLiteralNull(:)
+                                      listener: handleLiteralNull(null)
+                            listener: handleLiteralMapEntry(:, })
+                            listener: handleLiteralSetOrMap(1, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.parser.expect
new file mode 100644
index 0000000..682cbcb
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.parser.expect
@@ -0,0 +1,59 @@
+NOTICE: Stream was rewritten by parser!
+
+class F {
+
+final Map<String, Undefined> foo1 = Map<String, List<int>>{};
+
+
+final Map<String, Undefined> foo2 = <String, List<int>>{};
+
+
+final Map<String, Undefined> foo3 = Map{};
+
+
+final Map<String, Undefined> foo4 = Map<String, List<int>>();
+
+
+final Map<String, Undefined> foo5 = Map();
+
+
+final Map<String, Undefined> foo6 = Map<String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo7 = Map{"a": null};
+
+
+final Map<String, Undefined> foo8 = <String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo9 = {"a": null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] Map[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] Map[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] Map[StringToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] {[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.scanner.expect
new file mode 100644
index 0000000..44dc9e8
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251.dart.scanner.expect
@@ -0,0 +1,57 @@
+class F {
+
+final Map<String, Undefined> foo1 = Map<String, List<int>>{};
+
+
+final Map<String, Undefined> foo2 = <String, List<int>>{};
+
+
+final Map<String, Undefined> foo3 = Map{};
+
+
+final Map<String, Undefined> foo4 = Map<String, List<int>>();
+
+
+final Map<String, Undefined> foo5 = Map();
+
+
+final Map<String, Undefined> foo6 = Map<String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo7 = Map{"a": null};
+
+
+final Map<String, Undefined> foo8 = <String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo9 = {"a": null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] Map[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] Map[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] Map[StringToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] {[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart
new file mode 100644
index 0000000..51c5929
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart
@@ -0,0 +1,28 @@
+class F {
+  /* notice the braces at the end instead of parenthesis! */
+  final Map<String, Undefined> foo1 = const Map<String, List<int>>{};
+
+  // variation #1: OK.
+  final Map<String, Undefined> foo2 = const <String, List<int>>{};
+
+  // variation #2: Bad.
+  final Map<String, Undefined> foo3 = const Map{};
+
+  // variation #3: OK.
+  final Map<String, Undefined> foo4 = const Map<String, List<int>>();
+
+  // variation #4: OK.
+  final Map<String, Undefined> foo5 = const Map();
+
+  // variation #5: Bad.
+  final Map<String, Undefined> foo6 = const Map<String, List<int>>{"a": null};
+
+  // variation #6: Bad.
+  final Map<String, Undefined> foo7 = const Map{"a": null};
+
+  // variation #7: OK.
+  final Map<String, Undefined> foo8 = const <String, List<int>>{"a": null};
+
+  // variation #8: OK.
+  final Map<String, Undefined> foo9 = const {"a": null};
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.expect
new file mode 100644
index 0000000..34a2a61
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.expect
@@ -0,0 +1,327 @@
+Problems reported:
+
+parser/error_recovery/issue_45251_const:3:45: Unexpected token 'Map'.
+  final Map<String, Undefined> foo1 = const Map<String, List<int>>{};
+                                            ^^^
+
+parser/error_recovery/issue_45251_const:9:45: Unexpected token 'Map'.
+  final Map<String, Undefined> foo3 = const Map{};
+                                            ^^^
+
+parser/error_recovery/issue_45251_const:18:45: Unexpected token 'Map'.
+  final Map<String, Undefined> foo6 = const Map<String, List<int>>{"a": null};
+                                            ^^^
+
+parser/error_recovery/issue_45251_const:21:45: Unexpected token 'Map'.
+  final Map<String, Undefined> foo7 = const Map{"a": null};
+                                            ^^^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(F, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, F)
+      handleNoType(F)
+      handleClassExtends(null, 1)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields({)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo1, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(String, typeReference)
+                  handleNoTypeArguments(,)
+                  handleType(String, null)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(2, <, >)
+                handleLiteralSetOrMap(0, {, const, }, false)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo2, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(String, typeReference)
+                  handleNoTypeArguments(,)
+                  handleType(String, null)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(2, <, >)
+                handleLiteralSetOrMap(0, {, const, }, false)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo3, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              beginConstLiteral({)
+                handleNoTypeArguments({)
+                handleLiteralSetOrMap(0, {, const, }, false)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo4, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstExpression(const)
+                handleIdentifier(Map, constructorReference)
+                beginConstructorReference(Map)
+                  beginTypeArguments(<)
+                    handleIdentifier(String, typeReference)
+                    handleNoTypeArguments(,)
+                    handleType(String, null)
+                    handleIdentifier(List, typeReference)
+                    beginTypeArguments(<)
+                      handleIdentifier(int, typeReference)
+                      handleNoTypeArguments(>)
+                      handleType(int, null)
+                    endTypeArguments(1, <, >)
+                    handleType(List, null)
+                  endTypeArguments(2, <, >)
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(Map, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endConstExpression(const)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo5, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstExpression(const)
+                handleIdentifier(Map, constructorReference)
+                beginConstructorReference(Map)
+                  handleNoTypeArguments(()
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(Map, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endConstExpression(const)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo6, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(String, typeReference)
+                  handleNoTypeArguments(,)
+                  handleType(String, null)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(2, <, >)
+                beginLiteralString("a")
+                endLiteralString(0, :)
+                handleLiteralNull(null)
+                handleLiteralMapEntry(:, })
+                handleLiteralSetOrMap(1, {, const, }, false)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo7, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              beginConstLiteral({)
+                handleNoTypeArguments({)
+                beginLiteralString("a")
+                endLiteralString(0, :)
+                handleLiteralNull(null)
+                handleLiteralMapEntry(:, })
+                handleLiteralSetOrMap(1, {, const, }, false)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo8, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(String, typeReference)
+                  handleNoTypeArguments(,)
+                  handleType(String, null)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(2, <, >)
+                beginLiteralString("a")
+                endLiteralString(0, :)
+                handleLiteralNull(null)
+                handleLiteralMapEntry(:, })
+                handleLiteralSetOrMap(1, {, const, }, false)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo9, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstLiteral({)
+                handleNoTypeArguments({)
+                beginLiteralString("a")
+                endLiteralString(0, :)
+                handleLiteralNull(null)
+                handleLiteralMapEntry(:, })
+                handleLiteralSetOrMap(1, {, const, }, false)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.intertwined.expect
new file mode 100644
index 0000000..7637c4b
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.intertwined.expect
@@ -0,0 +1,503 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(F, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, F)
+        parseClass(F, class, class, F)
+          parseClassHeaderOpt(F, class, class)
+            parseClassExtendsOpt(F)
+              listener: handleNoType(F)
+              listener: handleClassExtends(null, 1)
+            parseWithClauseOpt(F)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(F)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
+              parseMetadataStar({)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields({, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo1, DeclarationKind.Class, F, false)
+                listener: beginFields({)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo1, fieldDeclaration)
+                parseFieldInitializerOpt(foo1, foo1, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(Map, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(String, typeReference)
+                              listener: handleNoTypeArguments(,)
+                              listener: handleType(String, null)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(2, <, >)
+                              parseLiteralSetOrMapSuffix(>, const)
+                                listener: handleLiteralSetOrMap(0, {, const, }, false)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo2, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo2, fieldDeclaration)
+                parseFieldInitializerOpt(foo2, foo2, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(const, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(String, typeReference)
+                              listener: handleNoTypeArguments(,)
+                              listener: handleType(String, null)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(2, <, >)
+                              parseLiteralSetOrMapSuffix(>, const)
+                                listener: handleLiteralSetOrMap(0, {, const, }, false)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo3, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo3, fieldDeclaration)
+                parseFieldInitializerOpt(foo3, foo3, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                            listener: beginConstLiteral({)
+                            listener: handleNoTypeArguments({)
+                            parseLiteralSetOrMapSuffix(Map, const)
+                              listener: handleLiteralSetOrMap(0, {, const, }, false)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo4, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo4, fieldDeclaration)
+                parseFieldInitializerOpt(foo4, foo4, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstExpression(const)
+                            parseConstructorReference(const, Instance of 'ComplexTypeParamOrArgInfo')
+                              ensureIdentifier(const, constructorReference)
+                                listener: handleIdentifier(Map, constructorReference)
+                              listener: beginConstructorReference(Map)
+                              parseQualifiedRestOpt(Map, constructorReferenceContinuation)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(String, typeReference)
+                              listener: handleNoTypeArguments(,)
+                              listener: handleType(String, null)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(2, <, >)
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(Map, null, ()
+                            parseConstructorInvocationArguments(>)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endConstExpression(const)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo5, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo5, fieldDeclaration)
+                parseFieldInitializerOpt(foo5, foo5, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstExpression(const)
+                            parseConstructorReference(const, Instance of 'NoTypeParamOrArg')
+                              ensureIdentifier(const, constructorReference)
+                                listener: handleIdentifier(Map, constructorReference)
+                              listener: beginConstructorReference(Map)
+                              parseQualifiedRestOpt(Map, constructorReferenceContinuation)
+                              listener: handleNoTypeArguments(()
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(Map, null, ()
+                            parseConstructorInvocationArguments(Map)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endConstExpression(const)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo6, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo6, fieldDeclaration)
+                parseFieldInitializerOpt(foo6, foo6, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(Map, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(String, typeReference)
+                              listener: handleNoTypeArguments(,)
+                              listener: handleType(String, null)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(2, <, >)
+                              parseLiteralSetOrMapSuffix(>, const)
+                                parseExpression({)
+                                  parsePrecedenceExpression({, 1, true)
+                                    parseUnaryExpression({, true)
+                                      parsePrimary({, expression)
+                                        parseLiteralString({)
+                                          parseSingleLiteralString({)
+                                            listener: beginLiteralString("a")
+                                            listener: endLiteralString(0, :)
+                                parseExpression(:)
+                                  parsePrecedenceExpression(:, 1, true)
+                                    parseUnaryExpression(:, true)
+                                      parsePrimary(:, expression)
+                                        parseLiteralNull(:)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralMapEntry(:, })
+                                listener: handleLiteralSetOrMap(1, {, const, }, false)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo7, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo7, fieldDeclaration)
+                parseFieldInitializerOpt(foo7, foo7, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                            listener: beginConstLiteral({)
+                            listener: handleNoTypeArguments({)
+                            parseLiteralSetOrMapSuffix(Map, const)
+                              parseExpression({)
+                                parsePrecedenceExpression({, 1, true)
+                                  parseUnaryExpression({, true)
+                                    parsePrimary({, expression)
+                                      parseLiteralString({)
+                                        parseSingleLiteralString({)
+                                          listener: beginLiteralString("a")
+                                          listener: endLiteralString(0, :)
+                              parseExpression(:)
+                                parsePrecedenceExpression(:, 1, true)
+                                  parseUnaryExpression(:, true)
+                                    parsePrimary(:, expression)
+                                      parseLiteralNull(:)
+                                        listener: handleLiteralNull(null)
+                              listener: handleLiteralMapEntry(:, })
+                              listener: handleLiteralSetOrMap(1, {, const, }, false)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo8, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo8, fieldDeclaration)
+                parseFieldInitializerOpt(foo8, foo8, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(const, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(String, typeReference)
+                              listener: handleNoTypeArguments(,)
+                              listener: handleType(String, null)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(2, <, >)
+                              parseLiteralSetOrMapSuffix(>, const)
+                                parseExpression({)
+                                  parsePrecedenceExpression({, 1, true)
+                                    parseUnaryExpression({, true)
+                                      parsePrimary({, expression)
+                                        parseLiteralString({)
+                                          parseSingleLiteralString({)
+                                            listener: beginLiteralString("a")
+                                            listener: endLiteralString(0, :)
+                                parseExpression(:)
+                                  parsePrecedenceExpression(:, 1, true)
+                                    parseUnaryExpression(:, true)
+                                      parsePrimary(:, expression)
+                                        parseLiteralNull(:)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralMapEntry(:, })
+                                listener: handleLiteralSetOrMap(1, {, const, }, false)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo9, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo9, fieldDeclaration)
+                parseFieldInitializerOpt(foo9, foo9, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstLiteral({)
+                            listener: handleNoTypeArguments({)
+                            parseLiteralSetOrMapSuffix(const, const)
+                              parseExpression({)
+                                parsePrecedenceExpression({, 1, true)
+                                  parseUnaryExpression({, true)
+                                    parsePrimary({, expression)
+                                      parseLiteralString({)
+                                        parseSingleLiteralString({)
+                                          listener: beginLiteralString("a")
+                                          listener: endLiteralString(0, :)
+                              parseExpression(:)
+                                parsePrecedenceExpression(:, 1, true)
+                                  parseUnaryExpression(:, true)
+                                    parsePrimary(:, expression)
+                                      parseLiteralNull(:)
+                                        listener: handleLiteralNull(null)
+                              listener: handleLiteralMapEntry(:, })
+                              listener: handleLiteralSetOrMap(1, {, const, }, false)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.parser.expect
new file mode 100644
index 0000000..a66770f
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.parser.expect
@@ -0,0 +1,59 @@
+NOTICE: Stream was rewritten by parser!
+
+class F {
+
+final Map<String, Undefined> foo1 = const Map<String, List<int>>{};
+
+
+final Map<String, Undefined> foo2 = const <String, List<int>>{};
+
+
+final Map<String, Undefined> foo3 = const Map{};
+
+
+final Map<String, Undefined> foo4 = const Map<String, List<int>>();
+
+
+final Map<String, Undefined> foo5 = const Map();
+
+
+final Map<String, Undefined> foo6 = const Map<String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo7 = const Map{"a": null};
+
+
+final Map<String, Undefined> foo8 = const <String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo9 = const {"a": null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] const[KeywordToken] {[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.scanner.expect
new file mode 100644
index 0000000..a45fa22
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.scanner.expect
@@ -0,0 +1,57 @@
+class F {
+
+final Map<String, Undefined> foo1 = const Map<String, List<int>>{};
+
+
+final Map<String, Undefined> foo2 = const <String, List<int>>{};
+
+
+final Map<String, Undefined> foo3 = const Map{};
+
+
+final Map<String, Undefined> foo4 = const Map<String, List<int>>();
+
+
+final Map<String, Undefined> foo5 = const Map();
+
+
+final Map<String, Undefined> foo6 = const Map<String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo7 = const Map{"a": null};
+
+
+final Map<String, Undefined> foo8 = const <String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo9 = const {"a": null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] const[KeywordToken] Map[StringToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] const[KeywordToken] {[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart
new file mode 100644
index 0000000..b74b6d0
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart
@@ -0,0 +1,28 @@
+class F {
+  /* notice the bracket at the end instead of parenthesis! */
+  final List<Undefined> foo1 = List<List<int>>[];
+
+  // variation #1: OK.
+  final List<Undefined> foo2 = <List<int>>[];
+
+  // variation #2: Bad.
+  final List<Undefined> foo3 = List[];
+
+  // variation #3: OK.
+  final List<Undefined> foo4 = List<List<int>>();
+
+  // variation #4: OK.
+  final List<Undefined> foo5 = List();
+
+  // variation #5: Bad.
+  final List<Undefined> foo6 = List<List<int>>[null];
+
+  // variation #6: This is actually just an indexed expression.
+  final List<Undefined> foo7 = List[null];
+
+  // variation #7: OK.
+  final List<Undefined> foo8 = <List<int>>[null];
+
+  // variation #8: OK.
+  final List<Undefined> foo9 = [null];
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.expect
new file mode 100644
index 0000000..b044323
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.expect
@@ -0,0 +1,249 @@
+Problems reported:
+
+parser/error_recovery/issue_45251_list:3:32: Unexpected token 'List'.
+  final List<Undefined> foo1 = List<List<int>>[];
+                               ^^^^
+
+parser/error_recovery/issue_45251_list:9:32: Unexpected token 'List'.
+  final List<Undefined> foo3 = List[];
+                               ^^^^
+
+parser/error_recovery/issue_45251_list:18:32: Unexpected token 'List'.
+  final List<Undefined> foo6 = List<List<int>>[null];
+                               ^^^^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(F, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, F)
+      handleNoType(F)
+      handleClassExtends(null, 1)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields({)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo1, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralList(0, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo2, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralList(0, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo3, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+              handleNoTypeArguments([])
+              handleLiteralList(0, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo4, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleIdentifier(List, expression)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              beginArguments(()
+              endArguments(0, (, ))
+              handleSend(List, ;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo5, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleIdentifier(List, expression)
+              handleNoTypeArguments(()
+              beginArguments(()
+              endArguments(0, (, ))
+              handleSend(List, ;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo6, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralNull(null)
+              handleLiteralList(1, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo7, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleIdentifier(List, expression)
+              handleNoTypeArguments([)
+              handleNoArguments([)
+              handleSend(List, [)
+              handleLiteralNull(null)
+              handleIndexedExpression(null, [, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo8, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralNull(null)
+              handleLiteralList(1, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo9, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleNoTypeArguments([)
+              handleLiteralNull(null)
+              handleLiteralList(1, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.intertwined.expect
new file mode 100644
index 0000000..2194596
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.intertwined.expect
@@ -0,0 +1,412 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(F, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, F)
+        parseClass(F, class, class, F)
+          parseClassHeaderOpt(F, class, class)
+            parseClassExtendsOpt(F)
+              listener: handleNoType(F)
+              listener: handleClassExtends(null, 1)
+            parseWithClauseOpt(F)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(F)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
+              parseMetadataStar({)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields({, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo1, DeclarationKind.Class, F, false)
+                listener: beginFields({)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo1, fieldDeclaration)
+                parseFieldInitializerOpt(foo1, foo1, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              reportRecoverableErrorWithToken(List, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+                              parsePrimary(List, expression)
+                                parseLiteralListSetMapOrFunction(List, null)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(List, typeReference)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(int, typeReference)
+                                  listener: handleNoTypeArguments(>)
+                                  listener: handleType(int, null)
+                                  listener: endTypeArguments(1, <, >)
+                                  listener: handleType(List, null)
+                                  listener: endTypeArguments(1, <, >)
+                                  parseLiteralListSuffix(>, null)
+                                    rewriteSquareBrackets(>)
+                                      link([, ])
+                                      rewriter()
+                                    listener: handleLiteralList(0, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo2, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo2, fieldDeclaration)
+                parseFieldInitializerOpt(foo2, foo2, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralListSetMapOrFunction(=, null)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(List, typeReference)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(int, typeReference)
+                            listener: handleNoTypeArguments(>)
+                            listener: handleType(int, null)
+                            listener: endTypeArguments(1, <, >)
+                            listener: handleType(List, null)
+                            listener: endTypeArguments(1, <, >)
+                            parseLiteralListSuffix(>, null)
+                              rewriteSquareBrackets(>)
+                                link([, ])
+                                rewriter()
+                              listener: handleLiteralList(0, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo3, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo3, fieldDeclaration)
+                parseFieldInitializerOpt(foo3, foo3, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              reportRecoverableErrorWithToken(List, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+                              parsePrimary(List, expression)
+                                listener: handleNoTypeArguments([])
+                                parseLiteralListSuffix(List, null)
+                                  rewriteSquareBrackets(List)
+                                    link([, ])
+                                    rewriter()
+                                  listener: handleLiteralList(0, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo4, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo4, fieldDeclaration)
+                parseFieldInitializerOpt(foo4, foo4, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            looksLikeFunctionBody(;)
+                            parseSend(=, expression)
+                              ensureIdentifier(=, expression)
+                                listener: handleIdentifier(List, expression)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              parseArgumentsOpt(>)
+                                parseArguments(>)
+                                  parseArgumentsRest(()
+                                    listener: beginArguments(()
+                                    listener: endArguments(0, (, ))
+                              listener: handleSend(List, ;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo5, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo5, fieldDeclaration)
+                parseFieldInitializerOpt(foo5, foo5, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            looksLikeFunctionBody(;)
+                            parseSend(=, expression)
+                              ensureIdentifier(=, expression)
+                                listener: handleIdentifier(List, expression)
+                              listener: handleNoTypeArguments(()
+                              parseArgumentsOpt(List)
+                                parseArguments(List)
+                                  parseArgumentsRest(()
+                                    listener: beginArguments(()
+                                    listener: endArguments(0, (, ))
+                              listener: handleSend(List, ;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo6, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo6, fieldDeclaration)
+                parseFieldInitializerOpt(foo6, foo6, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              reportRecoverableErrorWithToken(List, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+                              parsePrimary(List, expression)
+                                parseLiteralListSetMapOrFunction(List, null)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(List, typeReference)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(int, typeReference)
+                                  listener: handleNoTypeArguments(>)
+                                  listener: handleType(int, null)
+                                  listener: endTypeArguments(1, <, >)
+                                  listener: handleType(List, null)
+                                  listener: endTypeArguments(1, <, >)
+                                  parseLiteralListSuffix(>, null)
+                                    parseExpression([)
+                                      parsePrecedenceExpression([, 1, true)
+                                        parseUnaryExpression([, true)
+                                          parsePrimary([, expression)
+                                            parseLiteralNull([)
+                                              listener: handleLiteralNull(null)
+                                    listener: handleLiteralList(1, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo7, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo7, fieldDeclaration)
+                parseFieldInitializerOpt(foo7, foo7, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              ensureIdentifier(=, expression)
+                                listener: handleIdentifier(List, expression)
+                              listener: handleNoTypeArguments([)
+                              parseArgumentsOpt(List)
+                                listener: handleNoArguments([)
+                              listener: handleSend(List, [)
+                      parseArgumentOrIndexStar(List, Instance of 'NoTypeParamOrArg', false)
+                        parseExpression([)
+                          parsePrecedenceExpression([, 1, true)
+                            parseUnaryExpression([, true)
+                              parsePrimary([, expression)
+                                parseLiteralNull([)
+                                  listener: handleLiteralNull(null)
+                        listener: handleIndexedExpression(null, [, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo8, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo8, fieldDeclaration)
+                parseFieldInitializerOpt(foo8, foo8, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralListSetMapOrFunction(=, null)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(List, typeReference)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(int, typeReference)
+                            listener: handleNoTypeArguments(>)
+                            listener: handleType(int, null)
+                            listener: endTypeArguments(1, <, >)
+                            listener: handleType(List, null)
+                            listener: endTypeArguments(1, <, >)
+                            parseLiteralListSuffix(>, null)
+                              parseExpression([)
+                                parsePrecedenceExpression([, 1, true)
+                                  parseUnaryExpression([, true)
+                                    parsePrimary([, expression)
+                                      parseLiteralNull([)
+                                        listener: handleLiteralNull(null)
+                              listener: handleLiteralList(1, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo9, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo9, fieldDeclaration)
+                parseFieldInitializerOpt(foo9, foo9, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          listener: handleNoTypeArguments([)
+                          parseLiteralListSuffix(=, null)
+                            parseExpression([)
+                              parsePrecedenceExpression([, 1, true)
+                                parseUnaryExpression([, true)
+                                  parsePrimary([, expression)
+                                    parseLiteralNull([)
+                                      listener: handleLiteralNull(null)
+                            listener: handleLiteralList(1, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.parser.expect
new file mode 100644
index 0000000..71b1cfe
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.parser.expect
@@ -0,0 +1,59 @@
+NOTICE: Stream was rewritten by parser!
+
+class F {
+
+final List<Undefined> foo1 = List<List<int>>[];
+
+
+final List<Undefined> foo2 = <List<int>>[];
+
+
+final List<Undefined> foo3 = List[];
+
+
+final List<Undefined> foo4 = List<List<int>>();
+
+
+final List<Undefined> foo5 = List();
+
+
+final List<Undefined> foo6 = List<List<int>>[null];
+
+
+final List<Undefined> foo7 = List[null];
+
+
+final List<Undefined> foo8 = <List<int>>[null];
+
+
+final List<Undefined> foo9 = [null];
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] List[StringToken][[BeginToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] List[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] List[StringToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] [[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.scanner.expect
new file mode 100644
index 0000000..895b318
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list.dart.scanner.expect
@@ -0,0 +1,57 @@
+class F {
+
+final List<Undefined> foo1 = List<List<int>>[];
+
+
+final List<Undefined> foo2 = <List<int>>[];
+
+
+final List<Undefined> foo3 = List[];
+
+
+final List<Undefined> foo4 = List<List<int>>();
+
+
+final List<Undefined> foo5 = List();
+
+
+final List<Undefined> foo6 = List<List<int>>[null];
+
+
+final List<Undefined> foo7 = List[null];
+
+
+final List<Undefined> foo8 = <List<int>>[null];
+
+
+final List<Undefined> foo9 = [null];
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] List[StringToken][][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] List[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] List[StringToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] [[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart
new file mode 100644
index 0000000..43d659c
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart
@@ -0,0 +1,29 @@
+class F {
+  /* notice the bracket at the end instead of parenthesis! */
+  final List<Undefined> foo1 = const List<List<int>>[];
+
+  // variation #1: OK.
+  final List<Undefined> foo2 = const <List<int>>[];
+
+  // variation #2: Bad.
+  final List<Undefined> foo3 = const List[];
+
+  // variation #3: OK.
+  final List<Undefined> foo4 = const List<List<int>>();
+
+  // variation #4: OK.
+  final List<Undefined> foo5 = const List();
+
+  // variation #5: Bad.
+  final List<Undefined> foo6 = const List<List<int>>[null];
+
+  // variation #6: const makes it bad. Without const it would be an indexed
+  // expression; We should probably recover as `const [null]`.
+  final List<Undefined> foo7 = const List[null];
+
+  // variation #7: OK.
+  final List<Undefined> foo8 = const <List<int>>[null];
+
+  // variation #8: OK.
+  final List<Undefined> foo9 = const [null];
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.expect
new file mode 100644
index 0000000..9c4318d
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.expect
@@ -0,0 +1,273 @@
+Problems reported:
+
+parser/error_recovery/issue_45251_list_const:3:38: Unexpected token 'List'.
+  final List<Undefined> foo1 = const List<List<int>>[];
+                                     ^^^^
+
+parser/error_recovery/issue_45251_list_const:9:38: Unexpected token 'List'.
+  final List<Undefined> foo3 = const List[];
+                                     ^^^^
+
+parser/error_recovery/issue_45251_list_const:18:38: Unexpected token 'List'.
+  final List<Undefined> foo6 = const List<List<int>>[null];
+                                     ^^^^
+
+parser/error_recovery/issue_45251_list_const:22:38: Unexpected token 'List'.
+  final List<Undefined> foo7 = const List[null];
+                                     ^^^^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(F, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, F)
+      handleNoType(F)
+      handleClassExtends(null, 1)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields({)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo1, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(1, <, >)
+                handleLiteralList(0, [, const, ])
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo2, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(1, <, >)
+                handleLiteralList(0, [, const, ])
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo3, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+              beginConstLiteral([])
+                handleNoTypeArguments([])
+                handleLiteralList(0, [, const, ])
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo4, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstExpression(const)
+                handleIdentifier(List, constructorReference)
+                beginConstructorReference(List)
+                  beginTypeArguments(<)
+                    handleIdentifier(List, typeReference)
+                    beginTypeArguments(<)
+                      handleIdentifier(int, typeReference)
+                      handleNoTypeArguments(>)
+                      handleType(int, null)
+                    endTypeArguments(1, <, >)
+                    handleType(List, null)
+                  endTypeArguments(1, <, >)
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(List, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endConstExpression(const)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo5, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstExpression(const)
+                handleIdentifier(List, constructorReference)
+                beginConstructorReference(List)
+                  handleNoTypeArguments(()
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(List, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endConstExpression(const)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo6, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(1, <, >)
+                handleLiteralNull(null)
+                handleLiteralList(1, [, const, ])
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo7, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+              beginConstLiteral([)
+                handleNoTypeArguments([)
+                handleLiteralNull(null)
+                handleLiteralList(1, [, const, ])
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo8, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(1, <, >)
+                handleLiteralNull(null)
+                handleLiteralList(1, [, const, ])
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo9, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstLiteral([)
+                handleNoTypeArguments([)
+                handleLiteralNull(null)
+                handleLiteralList(1, [, const, ])
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.intertwined.expect
new file mode 100644
index 0000000..310f11d
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.intertwined.expect
@@ -0,0 +1,425 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(F, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, F)
+        parseClass(F, class, class, F)
+          parseClassHeaderOpt(F, class, class)
+            parseClassExtendsOpt(F)
+              listener: handleNoType(F)
+              listener: handleClassExtends(null, 1)
+            parseWithClauseOpt(F)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(F)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
+              parseMetadataStar({)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields({, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo1, DeclarationKind.Class, F, false)
+                listener: beginFields({)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo1, fieldDeclaration)
+                parseFieldInitializerOpt(foo1, foo1, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(List, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(List, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              parseLiteralListSuffix(>, const)
+                                rewriteSquareBrackets(>)
+                                  link([, ])
+                                  rewriter()
+                                listener: handleLiteralList(0, [, const, ])
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo2, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo2, fieldDeclaration)
+                parseFieldInitializerOpt(foo2, foo2, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(const, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              parseLiteralListSuffix(>, const)
+                                rewriteSquareBrackets(>)
+                                  link([, ])
+                                  rewriter()
+                                listener: handleLiteralList(0, [, const, ])
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo3, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo3, fieldDeclaration)
+                parseFieldInitializerOpt(foo3, foo3, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(List, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+                            listener: beginConstLiteral([])
+                            listener: handleNoTypeArguments([])
+                            parseLiteralListSuffix(List, const)
+                              rewriteSquareBrackets(List)
+                                link([, ])
+                                rewriter()
+                              listener: handleLiteralList(0, [, const, ])
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo4, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo4, fieldDeclaration)
+                parseFieldInitializerOpt(foo4, foo4, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstExpression(const)
+                            parseConstructorReference(const, Instance of 'ComplexTypeParamOrArgInfo')
+                              ensureIdentifier(const, constructorReference)
+                                listener: handleIdentifier(List, constructorReference)
+                              listener: beginConstructorReference(List)
+                              parseQualifiedRestOpt(List, constructorReferenceContinuation)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(List, null, ()
+                            parseConstructorInvocationArguments(>)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endConstExpression(const)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo5, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo5, fieldDeclaration)
+                parseFieldInitializerOpt(foo5, foo5, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstExpression(const)
+                            parseConstructorReference(const, Instance of 'NoTypeParamOrArg')
+                              ensureIdentifier(const, constructorReference)
+                                listener: handleIdentifier(List, constructorReference)
+                              listener: beginConstructorReference(List)
+                              parseQualifiedRestOpt(List, constructorReferenceContinuation)
+                              listener: handleNoTypeArguments(()
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(List, null, ()
+                            parseConstructorInvocationArguments(List)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endConstExpression(const)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo6, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo6, fieldDeclaration)
+                parseFieldInitializerOpt(foo6, foo6, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(List, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(List, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              parseLiteralListSuffix(>, const)
+                                parseExpression([)
+                                  parsePrecedenceExpression([, 1, true)
+                                    parseUnaryExpression([, true)
+                                      parsePrimary([, expression)
+                                        parseLiteralNull([)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralList(1, [, const, ])
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo7, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo7, fieldDeclaration)
+                parseFieldInitializerOpt(foo7, foo7, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(List, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+                            listener: beginConstLiteral([)
+                            listener: handleNoTypeArguments([)
+                            parseLiteralListSuffix(List, const)
+                              parseExpression([)
+                                parsePrecedenceExpression([, 1, true)
+                                  parseUnaryExpression([, true)
+                                    parsePrimary([, expression)
+                                      parseLiteralNull([)
+                                        listener: handleLiteralNull(null)
+                              listener: handleLiteralList(1, [, const, ])
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo8, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo8, fieldDeclaration)
+                parseFieldInitializerOpt(foo8, foo8, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(const, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              parseLiteralListSuffix(>, const)
+                                parseExpression([)
+                                  parsePrecedenceExpression([, 1, true)
+                                    parseUnaryExpression([, true)
+                                      parsePrimary([, expression)
+                                        parseLiteralNull([)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralList(1, [, const, ])
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo9, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo9, fieldDeclaration)
+                parseFieldInitializerOpt(foo9, foo9, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstLiteral([)
+                            listener: handleNoTypeArguments([)
+                            parseLiteralListSuffix(const, const)
+                              parseExpression([)
+                                parsePrecedenceExpression([, 1, true)
+                                  parseUnaryExpression([, true)
+                                    parsePrimary([, expression)
+                                      parseLiteralNull([)
+                                        listener: handleLiteralNull(null)
+                              listener: handleLiteralList(1, [, const, ])
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.parser.expect
new file mode 100644
index 0000000..bbe5abb
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.parser.expect
@@ -0,0 +1,61 @@
+NOTICE: Stream was rewritten by parser!
+
+class F {
+
+final List<Undefined> foo1 = const List<List<int>>[];
+
+
+final List<Undefined> foo2 = const <List<int>>[];
+
+
+final List<Undefined> foo3 = const List[];
+
+
+final List<Undefined> foo4 = const List<List<int>>();
+
+
+final List<Undefined> foo5 = const List();
+
+
+final List<Undefined> foo6 = const List<List<int>>[null];
+
+
+
+final List<Undefined> foo7 = const List[null];
+
+
+final List<Undefined> foo8 = const <List<int>>[null];
+
+
+final List<Undefined> foo9 = const [null];
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken][[BeginToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] const[KeywordToken] [[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.scanner.expect
new file mode 100644
index 0000000..12dac96
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.scanner.expect
@@ -0,0 +1,59 @@
+class F {
+
+final List<Undefined> foo1 = const List<List<int>>[];
+
+
+final List<Undefined> foo2 = const <List<int>>[];
+
+
+final List<Undefined> foo3 = const List[];
+
+
+final List<Undefined> foo4 = const List<List<int>>();
+
+
+final List<Undefined> foo5 = const List();
+
+
+final List<Undefined> foo6 = const List<List<int>>[null];
+
+
+
+final List<Undefined> foo7 = const List[null];
+
+
+final List<Undefined> foo8 = const <List<int>>[null];
+
+
+final List<Undefined> foo9 = const [null];
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken][][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] const[KeywordToken] List[StringToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] const[KeywordToken] [[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart
new file mode 100644
index 0000000..d05a529
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart
@@ -0,0 +1,29 @@
+class F {
+  /* notice the bracket at the end instead of parenthesis! */
+  final List<Undefined> foo1 = new List<List<int>>[];
+
+  // variation #1: new makes it bad.
+  final List<Undefined> foo2 = new <List<int>>[];
+
+  // variation #2: Bad.
+  final List<Undefined> foo3 = new List[];
+
+  // variation #3: OK.
+  final List<Undefined> foo4 = new List<List<int>>();
+
+  // variation #4: OK.
+  final List<Undefined> foo5 = new List();
+
+  // variation #5: Bad.
+  final List<Undefined> foo6 = new List<List<int>>[null];
+
+  // variation #6: new makes it bad. Without new it would be an indexed
+  // expression; We should probably recover as `[null]`.
+  final List<Undefined> foo7 = new List[null];
+
+  // variation #7: new makes it bad.
+  final List<Undefined> foo8 = new <List<int>>[null];
+
+  // variation #8: new makes it bad.
+  final List<Undefined> foo9 = new [null];
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.expect
new file mode 100644
index 0000000..af78fd6
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.expect
@@ -0,0 +1,294 @@
+Problems reported:
+
+parser/error_recovery/issue_45251_list_new:3:32: Unexpected token 'new'.
+  final List<Undefined> foo1 = new List<List<int>>[];
+                               ^^^
+
+parser/error_recovery/issue_45251_list_new:3:36: Unexpected token 'List'.
+  final List<Undefined> foo1 = new List<List<int>>[];
+                                   ^^^^
+
+parser/error_recovery/issue_45251_list_new:6:32: Unexpected token 'new'.
+  final List<Undefined> foo2 = new <List<int>>[];
+                               ^^^
+
+parser/error_recovery/issue_45251_list_new:9:32: Unexpected token 'new'.
+  final List<Undefined> foo3 = new List[];
+                               ^^^
+
+parser/error_recovery/issue_45251_list_new:9:36: Unexpected token 'List'.
+  final List<Undefined> foo3 = new List[];
+                                   ^^^^
+
+parser/error_recovery/issue_45251_list_new:18:32: Unexpected token 'new'.
+  final List<Undefined> foo6 = new List<List<int>>[null];
+                               ^^^
+
+parser/error_recovery/issue_45251_list_new:18:36: Unexpected token 'List'.
+  final List<Undefined> foo6 = new List<List<int>>[null];
+                                   ^^^^
+
+parser/error_recovery/issue_45251_list_new:22:32: Unexpected token 'new'.
+  final List<Undefined> foo7 = new List[null];
+                               ^^^
+
+parser/error_recovery/issue_45251_list_new:22:36: Unexpected token 'List'.
+  final List<Undefined> foo7 = new List[null];
+                                   ^^^^
+
+parser/error_recovery/issue_45251_list_new:25:32: Unexpected token 'new'.
+  final List<Undefined> foo8 = new <List<int>>[null];
+                               ^^^
+
+parser/error_recovery/issue_45251_list_new:28:32: Unexpected token 'new'.
+  final List<Undefined> foo9 = new [null];
+                               ^^^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(F, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, F)
+      handleNoType(F)
+      handleClassExtends(null, 1)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields({)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo1, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralList(0, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo2, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralList(0, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo3, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+              handleNoTypeArguments([])
+              handleLiteralList(0, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo4, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginNewExpression(new)
+                handleIdentifier(List, constructorReference)
+                beginConstructorReference(List)
+                  beginTypeArguments(<)
+                    handleIdentifier(List, typeReference)
+                    beginTypeArguments(<)
+                      handleIdentifier(int, typeReference)
+                      handleNoTypeArguments(>)
+                      handleType(int, null)
+                    endTypeArguments(1, <, >)
+                    handleType(List, null)
+                  endTypeArguments(1, <, >)
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(List, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endNewExpression(new)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo5, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginNewExpression(new)
+                handleIdentifier(List, constructorReference)
+                beginConstructorReference(List)
+                  handleNoTypeArguments(()
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(List, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endNewExpression(new)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo6, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralNull(null)
+              handleLiteralList(1, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo7, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+              handleNoTypeArguments([)
+              handleLiteralNull(null)
+              handleLiteralList(1, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo8, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralNull(null)
+              handleLiteralList(1, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(List, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(List, null)
+            handleIdentifier(foo9, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleNoTypeArguments([)
+              handleLiteralNull(null)
+              handleLiteralList(1, [, null, ])
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.intertwined.expect
new file mode 100644
index 0000000..bad29ab
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.intertwined.expect
@@ -0,0 +1,432 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(F, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, F)
+        parseClass(F, class, class, F)
+          parseClassHeaderOpt(F, class, class)
+            parseClassExtendsOpt(F)
+              listener: handleNoType(F)
+              listener: handleClassExtends(null, 1)
+            parseWithClauseOpt(F)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(F)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
+              parseMetadataStar({)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields({, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo1, DeclarationKind.Class, F, false)
+                listener: beginFields({)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo1, fieldDeclaration)
+                parseFieldInitializerOpt(foo1, foo1, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(List, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+                            parsePrimary(List, expression)
+                              parseLiteralListSetMapOrFunction(List, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(1, <, >)
+                                parseLiteralListSuffix(>, null)
+                                  rewriteSquareBrackets(>)
+                                    link([, ])
+                                    rewriter()
+                                  listener: handleLiteralList(0, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo2, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo2, fieldDeclaration)
+                parseFieldInitializerOpt(foo2, foo2, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            parsePrimary(new, expression)
+                              parseLiteralListSetMapOrFunction(new, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(1, <, >)
+                                parseLiteralListSuffix(>, null)
+                                  rewriteSquareBrackets(>)
+                                    link([, ])
+                                    rewriter()
+                                  listener: handleLiteralList(0, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo3, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo3, fieldDeclaration)
+                parseFieldInitializerOpt(foo3, foo3, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(List, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+                            parsePrimary(List, expression)
+                              listener: handleNoTypeArguments([])
+                              parseLiteralListSuffix(List, null)
+                                rewriteSquareBrackets(List)
+                                  link([, ])
+                                  rewriter()
+                                listener: handleLiteralList(0, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo4, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo4, fieldDeclaration)
+                parseFieldInitializerOpt(foo4, foo4, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            listener: beginNewExpression(new)
+                            parseConstructorReference(new, Instance of 'ComplexTypeParamOrArgInfo')
+                              ensureIdentifier(new, constructorReference)
+                                listener: handleIdentifier(List, constructorReference)
+                              listener: beginConstructorReference(List)
+                              parseQualifiedRestOpt(List, constructorReferenceContinuation)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(List, null, ()
+                            parseConstructorInvocationArguments(>)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endNewExpression(new)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo5, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo5, fieldDeclaration)
+                parseFieldInitializerOpt(foo5, foo5, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            listener: beginNewExpression(new)
+                            parseConstructorReference(new, Instance of 'NoTypeParamOrArg')
+                              ensureIdentifier(new, constructorReference)
+                                listener: handleIdentifier(List, constructorReference)
+                              listener: beginConstructorReference(List)
+                              parseQualifiedRestOpt(List, constructorReferenceContinuation)
+                              listener: handleNoTypeArguments(()
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(List, null, ()
+                            parseConstructorInvocationArguments(List)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endNewExpression(new)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo6, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo6, fieldDeclaration)
+                parseFieldInitializerOpt(foo6, foo6, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(List, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+                            parsePrimary(List, expression)
+                              parseLiteralListSetMapOrFunction(List, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(1, <, >)
+                                parseLiteralListSuffix(>, null)
+                                  parseExpression([)
+                                    parsePrecedenceExpression([, 1, true)
+                                      parseUnaryExpression([, true)
+                                        parsePrimary([, expression)
+                                          parseLiteralNull([)
+                                            listener: handleLiteralNull(null)
+                                  listener: handleLiteralList(1, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo7, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo7, fieldDeclaration)
+                parseFieldInitializerOpt(foo7, foo7, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(List, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'List'., null, {lexeme: List}], List, List)
+                            parsePrimary(List, expression)
+                              listener: handleNoTypeArguments([)
+                              parseLiteralListSuffix(List, null)
+                                parseExpression([)
+                                  parsePrecedenceExpression([, 1, true)
+                                    parseUnaryExpression([, true)
+                                      parsePrimary([, expression)
+                                        parseLiteralNull([)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralList(1, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo8, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo8, fieldDeclaration)
+                parseFieldInitializerOpt(foo8, foo8, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            parsePrimary(new, expression)
+                              parseLiteralListSetMapOrFunction(new, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(1, <, >)
+                                parseLiteralListSuffix(>, null)
+                                  parseExpression([)
+                                    parsePrecedenceExpression([, 1, true)
+                                      parseUnaryExpression([, true)
+                                        parsePrimary([, expression)
+                                          parseLiteralNull([)
+                                            listener: handleLiteralNull(null)
+                                  listener: handleLiteralList(1, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo9, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(List, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(List, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo9, fieldDeclaration)
+                parseFieldInitializerOpt(foo9, foo9, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            parsePrimary(new, expression)
+                              listener: handleNoTypeArguments([)
+                              parseLiteralListSuffix(new, null)
+                                parseExpression([)
+                                  parsePrecedenceExpression([, 1, true)
+                                    parseUnaryExpression([, true)
+                                      parsePrimary([, expression)
+                                        parseLiteralNull([)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralList(1, [, null, ])
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.parser.expect
new file mode 100644
index 0000000..4d592a3
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.parser.expect
@@ -0,0 +1,61 @@
+NOTICE: Stream was rewritten by parser!
+
+class F {
+
+final List<Undefined> foo1 = new List<List<int>>[];
+
+
+final List<Undefined> foo2 = new <List<int>>[];
+
+
+final List<Undefined> foo3 = new List[];
+
+
+final List<Undefined> foo4 = new List<List<int>>();
+
+
+final List<Undefined> foo5 = new List();
+
+
+final List<Undefined> foo6 = new List<List<int>>[null];
+
+
+
+final List<Undefined> foo7 = new List[null];
+
+
+final List<Undefined> foo8 = new <List<int>>[null];
+
+
+final List<Undefined> foo9 = new [null];
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken][[BeginToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] new[KeywordToken] [[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.scanner.expect
new file mode 100644
index 0000000..9905387
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.scanner.expect
@@ -0,0 +1,59 @@
+class F {
+
+final List<Undefined> foo1 = new List<List<int>>[];
+
+
+final List<Undefined> foo2 = new <List<int>>[];
+
+
+final List<Undefined> foo3 = new List[];
+
+
+final List<Undefined> foo4 = new List<List<int>>();
+
+
+final List<Undefined> foo5 = new List();
+
+
+final List<Undefined> foo6 = new List<List<int>>[null];
+
+
+
+final List<Undefined> foo7 = new List[null];
+
+
+final List<Undefined> foo8 = new <List<int>>[null];
+
+
+final List<Undefined> foo9 = new [null];
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken][][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] new[KeywordToken] List[StringToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken][[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] List[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] new[KeywordToken] [[BeginToken]null[KeywordToken]][SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart
new file mode 100644
index 0000000..7ce5659
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart
@@ -0,0 +1,28 @@
+class F {
+  /* notice the braces at the end instead of parenthesis! */
+  final Map<String, Undefined> foo1 = new Map<String, List<int>>{};
+
+  // variation #1: new makes it bad.
+  final Map<String, Undefined> foo2 = new <String, List<int>>{};
+
+  // variation #2: Bad.
+  final Map<String, Undefined> foo3 = new Map{};
+
+  // variation #3: OK.
+  final Map<String, Undefined> foo4 = new Map<String, List<int>>();
+
+  // variation #4: OK.
+  final Map<String, Undefined> foo5 = new Map();
+
+  // variation #5: Bad.
+  final Map<String, Undefined> foo6 = new Map<String, List<int>>{"a": null};
+
+  // variation #6: Bad.
+  final Map<String, Undefined> foo7 = new Map{"a": null};
+
+  // variation #7: OK.
+  final Map<String, Undefined> foo8 = new <String, List<int>>{"a": null};
+
+  // variation #8: new makes it bad.
+  final Map<String, Undefined> foo9 = new {"a": null};
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.expect
new file mode 100644
index 0000000..7854a53
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.expect
@@ -0,0 +1,348 @@
+Problems reported:
+
+parser/error_recovery/issue_45251_new:3:39: Unexpected token 'new'.
+  final Map<String, Undefined> foo1 = new Map<String, List<int>>{};
+                                      ^^^
+
+parser/error_recovery/issue_45251_new:3:43: Unexpected token 'Map'.
+  final Map<String, Undefined> foo1 = new Map<String, List<int>>{};
+                                          ^^^
+
+parser/error_recovery/issue_45251_new:6:39: Unexpected token 'new'.
+  final Map<String, Undefined> foo2 = new <String, List<int>>{};
+                                      ^^^
+
+parser/error_recovery/issue_45251_new:9:39: Unexpected token 'new'.
+  final Map<String, Undefined> foo3 = new Map{};
+                                      ^^^
+
+parser/error_recovery/issue_45251_new:9:43: Unexpected token 'Map'.
+  final Map<String, Undefined> foo3 = new Map{};
+                                          ^^^
+
+parser/error_recovery/issue_45251_new:18:39: Unexpected token 'new'.
+  final Map<String, Undefined> foo6 = new Map<String, List<int>>{"a": null};
+                                      ^^^
+
+parser/error_recovery/issue_45251_new:18:43: Unexpected token 'Map'.
+  final Map<String, Undefined> foo6 = new Map<String, List<int>>{"a": null};
+                                          ^^^
+
+parser/error_recovery/issue_45251_new:21:39: Unexpected token 'new'.
+  final Map<String, Undefined> foo7 = new Map{"a": null};
+                                      ^^^
+
+parser/error_recovery/issue_45251_new:21:43: Unexpected token 'Map'.
+  final Map<String, Undefined> foo7 = new Map{"a": null};
+                                          ^^^
+
+parser/error_recovery/issue_45251_new:24:39: Unexpected token 'new'.
+  final Map<String, Undefined> foo8 = new <String, List<int>>{"a": null};
+                                      ^^^
+
+parser/error_recovery/issue_45251_new:27:39: Unexpected token 'new'.
+  final Map<String, Undefined> foo9 = new {"a": null};
+                                      ^^^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(F, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, F)
+      handleNoType(F)
+      handleClassExtends(null, 1)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields({)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo1, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              beginTypeArguments(<)
+                handleIdentifier(String, typeReference)
+                handleNoTypeArguments(,)
+                handleType(String, null)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(2, <, >)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo2, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              beginTypeArguments(<)
+                handleIdentifier(String, typeReference)
+                handleNoTypeArguments(,)
+                handleType(String, null)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(2, <, >)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo3, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              handleNoTypeArguments({)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo4, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginNewExpression(new)
+                handleIdentifier(Map, constructorReference)
+                beginConstructorReference(Map)
+                  beginTypeArguments(<)
+                    handleIdentifier(String, typeReference)
+                    handleNoTypeArguments(,)
+                    handleType(String, null)
+                    handleIdentifier(List, typeReference)
+                    beginTypeArguments(<)
+                      handleIdentifier(int, typeReference)
+                      handleNoTypeArguments(>)
+                      handleType(int, null)
+                    endTypeArguments(1, <, >)
+                    handleType(List, null)
+                  endTypeArguments(2, <, >)
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(Map, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endNewExpression(new)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo5, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginNewExpression(new)
+                handleIdentifier(Map, constructorReference)
+                beginConstructorReference(Map)
+                  handleNoTypeArguments(()
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(Map, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endNewExpression(new)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo6, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              beginTypeArguments(<)
+                handleIdentifier(String, typeReference)
+                handleNoTypeArguments(,)
+                handleType(String, null)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(2, <, >)
+              beginLiteralString("a")
+              endLiteralString(0, :)
+              handleLiteralNull(null)
+              handleLiteralMapEntry(:, })
+              handleLiteralSetOrMap(1, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo7, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+              handleNoTypeArguments({)
+              beginLiteralString("a")
+              endLiteralString(0, :)
+              handleLiteralNull(null)
+              handleLiteralMapEntry(:, })
+              handleLiteralSetOrMap(1, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo8, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              beginTypeArguments(<)
+                handleIdentifier(String, typeReference)
+                handleNoTypeArguments(,)
+                handleType(String, null)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(2, <, >)
+              beginLiteralString("a")
+              endLiteralString(0, :)
+              handleLiteralNull(null)
+              handleLiteralMapEntry(:, })
+              handleLiteralSetOrMap(1, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Map, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(String, typeReference)
+              handleNoTypeArguments(,)
+              handleType(String, null)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(2, <, >)
+            handleType(Map, null)
+            handleIdentifier(foo9, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleNoTypeArguments({)
+              beginLiteralString("a")
+              endLiteralString(0, :)
+              handleLiteralNull(null)
+              handleLiteralMapEntry(:, })
+              handleLiteralSetOrMap(1, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.intertwined.expect
new file mode 100644
index 0000000..b4849db
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.intertwined.expect
@@ -0,0 +1,510 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(F, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, F)
+        parseClass(F, class, class, F)
+          parseClassHeaderOpt(F, class, class)
+            parseClassExtendsOpt(F)
+              listener: handleNoType(F)
+              listener: handleClassExtends(null, 1)
+            parseWithClauseOpt(F)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(F)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
+              parseMetadataStar({)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields({, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo1, DeclarationKind.Class, F, false)
+                listener: beginFields({)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo1, fieldDeclaration)
+                parseFieldInitializerOpt(foo1, foo1, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                            parsePrimary(Map, expression)
+                              parseLiteralListSetMapOrFunction(Map, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(String, typeReference)
+                                listener: handleNoTypeArguments(,)
+                                listener: handleType(String, null)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(2, <, >)
+                                parseLiteralSetOrMapSuffix(>, null)
+                                  listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo2, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo2, fieldDeclaration)
+                parseFieldInitializerOpt(foo2, foo2, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            parsePrimary(new, expression)
+                              parseLiteralListSetMapOrFunction(new, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(String, typeReference)
+                                listener: handleNoTypeArguments(,)
+                                listener: handleType(String, null)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(2, <, >)
+                                parseLiteralSetOrMapSuffix(>, null)
+                                  listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo3, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo3, fieldDeclaration)
+                parseFieldInitializerOpt(foo3, foo3, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                            parsePrimary(Map, expression)
+                              listener: handleNoTypeArguments({)
+                              parseLiteralSetOrMapSuffix(Map, null)
+                                listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo4, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo4, fieldDeclaration)
+                parseFieldInitializerOpt(foo4, foo4, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            listener: beginNewExpression(new)
+                            parseConstructorReference(new, Instance of 'ComplexTypeParamOrArgInfo')
+                              ensureIdentifier(new, constructorReference)
+                                listener: handleIdentifier(Map, constructorReference)
+                              listener: beginConstructorReference(Map)
+                              parseQualifiedRestOpt(Map, constructorReferenceContinuation)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(String, typeReference)
+                              listener: handleNoTypeArguments(,)
+                              listener: handleType(String, null)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(2, <, >)
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(Map, null, ()
+                            parseConstructorInvocationArguments(>)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endNewExpression(new)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo5, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo5, fieldDeclaration)
+                parseFieldInitializerOpt(foo5, foo5, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            listener: beginNewExpression(new)
+                            parseConstructorReference(new, Instance of 'NoTypeParamOrArg')
+                              ensureIdentifier(new, constructorReference)
+                                listener: handleIdentifier(Map, constructorReference)
+                              listener: beginConstructorReference(Map)
+                              parseQualifiedRestOpt(Map, constructorReferenceContinuation)
+                              listener: handleNoTypeArguments(()
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(Map, null, ()
+                            parseConstructorInvocationArguments(Map)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endNewExpression(new)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo6, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo6, fieldDeclaration)
+                parseFieldInitializerOpt(foo6, foo6, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                            parsePrimary(Map, expression)
+                              parseLiteralListSetMapOrFunction(Map, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(String, typeReference)
+                                listener: handleNoTypeArguments(,)
+                                listener: handleType(String, null)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(2, <, >)
+                                parseLiteralSetOrMapSuffix(>, null)
+                                  parseExpression({)
+                                    parsePrecedenceExpression({, 1, true)
+                                      parseUnaryExpression({, true)
+                                        parsePrimary({, expression)
+                                          parseLiteralString({)
+                                            parseSingleLiteralString({)
+                                              listener: beginLiteralString("a")
+                                              listener: endLiteralString(0, :)
+                                  parseExpression(:)
+                                    parsePrecedenceExpression(:, 1, true)
+                                      parseUnaryExpression(:, true)
+                                        parsePrimary(:, expression)
+                                          parseLiteralNull(:)
+                                            listener: handleLiteralNull(null)
+                                  listener: handleLiteralMapEntry(:, })
+                                  listener: handleLiteralSetOrMap(1, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo7, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo7, fieldDeclaration)
+                parseFieldInitializerOpt(foo7, foo7, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(Map, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Map'., null, {lexeme: Map}], Map, Map)
+                            parsePrimary(Map, expression)
+                              listener: handleNoTypeArguments({)
+                              parseLiteralSetOrMapSuffix(Map, null)
+                                parseExpression({)
+                                  parsePrecedenceExpression({, 1, true)
+                                    parseUnaryExpression({, true)
+                                      parsePrimary({, expression)
+                                        parseLiteralString({)
+                                          parseSingleLiteralString({)
+                                            listener: beginLiteralString("a")
+                                            listener: endLiteralString(0, :)
+                                parseExpression(:)
+                                  parsePrecedenceExpression(:, 1, true)
+                                    parseUnaryExpression(:, true)
+                                      parsePrimary(:, expression)
+                                        parseLiteralNull(:)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralMapEntry(:, })
+                                listener: handleLiteralSetOrMap(1, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo8, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo8, fieldDeclaration)
+                parseFieldInitializerOpt(foo8, foo8, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            parsePrimary(new, expression)
+                              parseLiteralListSetMapOrFunction(new, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(String, typeReference)
+                                listener: handleNoTypeArguments(,)
+                                listener: handleType(String, null)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(2, <, >)
+                                parseLiteralSetOrMapSuffix(>, null)
+                                  parseExpression({)
+                                    parsePrecedenceExpression({, 1, true)
+                                      parseUnaryExpression({, true)
+                                        parsePrimary({, expression)
+                                          parseLiteralString({)
+                                            parseSingleLiteralString({)
+                                              listener: beginLiteralString("a")
+                                              listener: endLiteralString(0, :)
+                                  parseExpression(:)
+                                    parsePrecedenceExpression(:, 1, true)
+                                      parseUnaryExpression(:, true)
+                                        parsePrimary(:, expression)
+                                          parseLiteralNull(:)
+                                            listener: handleLiteralNull(null)
+                                  listener: handleLiteralMapEntry(:, })
+                                  listener: handleLiteralSetOrMap(1, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'ComplexTypeInfo', foo9, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                ensureIdentifier(final, typeReference)
+                  listener: handleIdentifier(Map, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(String, typeReference)
+                listener: handleNoTypeArguments(,)
+                listener: handleType(String, null)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(2, <, >)
+                listener: handleType(Map, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo9, fieldDeclaration)
+                parseFieldInitializerOpt(foo9, foo9, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            parsePrimary(new, expression)
+                              listener: handleNoTypeArguments({)
+                              parseLiteralSetOrMapSuffix(new, null)
+                                parseExpression({)
+                                  parsePrecedenceExpression({, 1, true)
+                                    parseUnaryExpression({, true)
+                                      parsePrimary({, expression)
+                                        parseLiteralString({)
+                                          parseSingleLiteralString({)
+                                            listener: beginLiteralString("a")
+                                            listener: endLiteralString(0, :)
+                                parseExpression(:)
+                                  parsePrecedenceExpression(:, 1, true)
+                                    parseUnaryExpression(:, true)
+                                      parsePrimary(:, expression)
+                                        parseLiteralNull(:)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralMapEntry(:, })
+                                listener: handleLiteralSetOrMap(1, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.parser.expect
new file mode 100644
index 0000000..298d0ec
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.parser.expect
@@ -0,0 +1,59 @@
+NOTICE: Stream was rewritten by parser!
+
+class F {
+
+final Map<String, Undefined> foo1 = new Map<String, List<int>>{};
+
+
+final Map<String, Undefined> foo2 = new <String, List<int>>{};
+
+
+final Map<String, Undefined> foo3 = new Map{};
+
+
+final Map<String, Undefined> foo4 = new Map<String, List<int>>();
+
+
+final Map<String, Undefined> foo5 = new Map();
+
+
+final Map<String, Undefined> foo6 = new Map<String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo7 = new Map{"a": null};
+
+
+final Map<String, Undefined> foo8 = new <String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo9 = new {"a": null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] new[KeywordToken] {[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.scanner.expect
new file mode 100644
index 0000000..f04fbe0
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.scanner.expect
@@ -0,0 +1,57 @@
+class F {
+
+final Map<String, Undefined> foo1 = new Map<String, List<int>>{};
+
+
+final Map<String, Undefined> foo2 = new <String, List<int>>{};
+
+
+final Map<String, Undefined> foo3 = new Map{};
+
+
+final Map<String, Undefined> foo4 = new Map<String, List<int>>();
+
+
+final Map<String, Undefined> foo5 = new Map();
+
+
+final Map<String, Undefined> foo6 = new Map<String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo7 = new Map{"a": null};
+
+
+final Map<String, Undefined> foo8 = new <String, List<int>>{"a": null};
+
+
+final Map<String, Undefined> foo9 = new {"a": null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] new[KeywordToken] Map[StringToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]String[StringToken],[SimpleToken] List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Map[StringToken]<[BeginToken]String[StringToken],[SimpleToken] Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] new[KeywordToken] {[BeginToken]"a"[StringToken]:[SimpleToken] null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart
new file mode 100644
index 0000000..2824c09
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart
@@ -0,0 +1,28 @@
+class F {
+  /* notice the braces at the end instead of parenthesis! */
+  final Set<Undefined> foo1 = Set<List<int>>{};
+
+  // variation #1: OK.
+  final Set<Undefined> foo2 = <List<int>>{};
+
+  // variation #2: Bad.
+  final Set<Undefined> foo3 = Set{};
+
+  // variation #3: OK.
+  final Set<Undefined> foo4 = Set<List<int>>();
+
+  // variation #4: OK.
+  final Set<Undefined> foo5 = Set();
+
+  // variation #5: Bad.
+  final Set<Undefined> foo6 = Set<List<int>>{null};
+
+  // variation #6: Bad.
+  final Set<Undefined> foo7 = Set{null};
+
+  // variation #7: OK.
+  final Set<Undefined> foo8 = <List<int>>{null};
+
+  // variation #8: OK.
+  final Set<Undefined> foo9 = {null};
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.expect
new file mode 100644
index 0000000..d8f4e89
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.expect
@@ -0,0 +1,251 @@
+Problems reported:
+
+parser/error_recovery/issue_45251_set:3:31: Unexpected token 'Set'.
+  final Set<Undefined> foo1 = Set<List<int>>{};
+                              ^^^
+
+parser/error_recovery/issue_45251_set:9:31: Unexpected token 'Set'.
+  final Set<Undefined> foo3 = Set{};
+                              ^^^
+
+parser/error_recovery/issue_45251_set:18:31: Unexpected token 'Set'.
+  final Set<Undefined> foo6 = Set<List<int>>{null};
+                              ^^^
+
+parser/error_recovery/issue_45251_set:21:31: Unexpected token 'Set'.
+  final Set<Undefined> foo7 = Set{null};
+                              ^^^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(F, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, F)
+      handleNoType(F)
+      handleClassExtends(null, 1)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields({)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo1, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo2, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo3, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              handleNoTypeArguments({)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo4, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleIdentifier(Set, expression)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              beginArguments(()
+              endArguments(0, (, ))
+              handleSend(Set, ;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo5, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleIdentifier(Set, expression)
+              handleNoTypeArguments(()
+              beginArguments(()
+              endArguments(0, (, ))
+              handleSend(Set, ;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo6, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralNull(null)
+              handleLiteralSetOrMap(1, {, null, }, true)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo7, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              handleNoTypeArguments({)
+              handleLiteralNull(null)
+              handleLiteralSetOrMap(1, {, null, }, true)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo8, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralNull(null)
+              handleLiteralSetOrMap(1, {, null, }, true)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo9, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleNoTypeArguments({)
+              handleLiteralNull(null)
+              handleLiteralSetOrMap(1, {, null, }, true)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.intertwined.expect
new file mode 100644
index 0000000..aa44787
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.intertwined.expect
@@ -0,0 +1,401 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(F, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, F)
+        parseClass(F, class, class, F)
+          parseClassHeaderOpt(F, class, class)
+            parseClassExtendsOpt(F)
+              listener: handleNoType(F)
+              listener: handleClassExtends(null, 1)
+            parseWithClauseOpt(F)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(F)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
+              parseMetadataStar({)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields({, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo1, DeclarationKind.Class, F, false)
+                listener: beginFields({)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo1, fieldDeclaration)
+                parseFieldInitializerOpt(foo1, foo1, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                              parsePrimary(Set, expression)
+                                parseLiteralListSetMapOrFunction(Set, null)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(List, typeReference)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(int, typeReference)
+                                  listener: handleNoTypeArguments(>)
+                                  listener: handleType(int, null)
+                                  listener: endTypeArguments(1, <, >)
+                                  listener: handleType(List, null)
+                                  listener: endTypeArguments(1, <, >)
+                                  parseLiteralSetOrMapSuffix(>, null)
+                                    listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo2, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo2, fieldDeclaration)
+                parseFieldInitializerOpt(foo2, foo2, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralListSetMapOrFunction(=, null)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(List, typeReference)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(int, typeReference)
+                            listener: handleNoTypeArguments(>)
+                            listener: handleType(int, null)
+                            listener: endTypeArguments(1, <, >)
+                            listener: handleType(List, null)
+                            listener: endTypeArguments(1, <, >)
+                            parseLiteralSetOrMapSuffix(>, null)
+                              listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo3, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo3, fieldDeclaration)
+                parseFieldInitializerOpt(foo3, foo3, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                              parsePrimary(Set, expression)
+                                listener: handleNoTypeArguments({)
+                                parseLiteralSetOrMapSuffix(Set, null)
+                                  listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo4, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo4, fieldDeclaration)
+                parseFieldInitializerOpt(foo4, foo4, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            looksLikeFunctionBody(;)
+                            parseSend(=, expression)
+                              ensureIdentifier(=, expression)
+                                listener: handleIdentifier(Set, expression)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              parseArgumentsOpt(>)
+                                parseArguments(>)
+                                  parseArgumentsRest(()
+                                    listener: beginArguments(()
+                                    listener: endArguments(0, (, ))
+                              listener: handleSend(Set, ;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo5, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo5, fieldDeclaration)
+                parseFieldInitializerOpt(foo5, foo5, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            looksLikeFunctionBody(;)
+                            parseSend(=, expression)
+                              ensureIdentifier(=, expression)
+                                listener: handleIdentifier(Set, expression)
+                              listener: handleNoTypeArguments(()
+                              parseArgumentsOpt(Set)
+                                parseArguments(Set)
+                                  parseArgumentsRest(()
+                                    listener: beginArguments(()
+                                    listener: endArguments(0, (, ))
+                              listener: handleSend(Set, ;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo6, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo6, fieldDeclaration)
+                parseFieldInitializerOpt(foo6, foo6, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                              parsePrimary(Set, expression)
+                                parseLiteralListSetMapOrFunction(Set, null)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(List, typeReference)
+                                  listener: beginTypeArguments(<)
+                                  listener: handleIdentifier(int, typeReference)
+                                  listener: handleNoTypeArguments(>)
+                                  listener: handleType(int, null)
+                                  listener: endTypeArguments(1, <, >)
+                                  listener: handleType(List, null)
+                                  listener: endTypeArguments(1, <, >)
+                                  parseLiteralSetOrMapSuffix(>, null)
+                                    parseExpression({)
+                                      parsePrecedenceExpression({, 1, true)
+                                        parseUnaryExpression({, true)
+                                          parsePrimary({, expression)
+                                            parseLiteralNull({)
+                                              listener: handleLiteralNull(null)
+                                    listener: handleLiteralSetOrMap(1, {, null, }, true)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo7, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo7, fieldDeclaration)
+                parseFieldInitializerOpt(foo7, foo7, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseSendOrFunctionLiteral(=, expression)
+                            parseSend(=, expression)
+                              reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                              parsePrimary(Set, expression)
+                                listener: handleNoTypeArguments({)
+                                parseLiteralSetOrMapSuffix(Set, null)
+                                  parseExpression({)
+                                    parsePrecedenceExpression({, 1, true)
+                                      parseUnaryExpression({, true)
+                                        parsePrimary({, expression)
+                                          parseLiteralNull({)
+                                            listener: handleLiteralNull(null)
+                                  listener: handleLiteralSetOrMap(1, {, null, }, true)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo8, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo8, fieldDeclaration)
+                parseFieldInitializerOpt(foo8, foo8, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralListSetMapOrFunction(=, null)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(List, typeReference)
+                            listener: beginTypeArguments(<)
+                            listener: handleIdentifier(int, typeReference)
+                            listener: handleNoTypeArguments(>)
+                            listener: handleType(int, null)
+                            listener: endTypeArguments(1, <, >)
+                            listener: handleType(List, null)
+                            listener: endTypeArguments(1, <, >)
+                            parseLiteralSetOrMapSuffix(>, null)
+                              parseExpression({)
+                                parsePrecedenceExpression({, 1, true)
+                                  parseUnaryExpression({, true)
+                                    parsePrimary({, expression)
+                                      parseLiteralNull({)
+                                        listener: handleLiteralNull(null)
+                              listener: handleLiteralSetOrMap(1, {, null, }, true)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo9, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo9, fieldDeclaration)
+                parseFieldInitializerOpt(foo9, foo9, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          listener: handleNoTypeArguments({)
+                          parseLiteralSetOrMapSuffix(=, null)
+                            parseExpression({)
+                              parsePrecedenceExpression({, 1, true)
+                                parseUnaryExpression({, true)
+                                  parsePrimary({, expression)
+                                    parseLiteralNull({)
+                                      listener: handleLiteralNull(null)
+                            listener: handleLiteralSetOrMap(1, {, null, }, true)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.parser.expect
new file mode 100644
index 0000000..a8976df
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.parser.expect
@@ -0,0 +1,59 @@
+NOTICE: Stream was rewritten by parser!
+
+class F {
+
+final Set<Undefined> foo1 = Set<List<int>>{};
+
+
+final Set<Undefined> foo2 = <List<int>>{};
+
+
+final Set<Undefined> foo3 = Set{};
+
+
+final Set<Undefined> foo4 = Set<List<int>>();
+
+
+final Set<Undefined> foo5 = Set();
+
+
+final Set<Undefined> foo6 = Set<List<int>>{null};
+
+
+final Set<Undefined> foo7 = Set{null};
+
+
+final Set<Undefined> foo8 = <List<int>>{null};
+
+
+final Set<Undefined> foo9 = {null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] Set[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] Set[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] Set[StringToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] {[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.scanner.expect
new file mode 100644
index 0000000..aac5540
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set.dart.scanner.expect
@@ -0,0 +1,57 @@
+class F {
+
+final Set<Undefined> foo1 = Set<List<int>>{};
+
+
+final Set<Undefined> foo2 = <List<int>>{};
+
+
+final Set<Undefined> foo3 = Set{};
+
+
+final Set<Undefined> foo4 = Set<List<int>>();
+
+
+final Set<Undefined> foo5 = Set();
+
+
+final Set<Undefined> foo6 = Set<List<int>>{null};
+
+
+final Set<Undefined> foo7 = Set{null};
+
+
+final Set<Undefined> foo8 = <List<int>>{null};
+
+
+final Set<Undefined> foo9 = {null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] Set[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] Set[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] Set[StringToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] {[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart
new file mode 100644
index 0000000..58f00b2
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart
@@ -0,0 +1,28 @@
+class F {
+  /* notice the braces at the end instead of parenthesis! */
+  final Set<Undefined> foo1 = const Set<List<int>>{};
+
+  // variation #1: OK.
+  final Set<Undefined> foo2 = const <List<int>>{};
+
+  // variation #2: Bad.
+  final Set<Undefined> foo3 = const Set{};
+
+  // variation #3: OK.
+  final Set<Undefined> foo4 = const Set<List<int>>();
+
+  // variation #4: OK.
+  final Set<Undefined> foo5 = const Set();
+
+  // variation #5: Bad.
+  final Set<Undefined> foo6 = const Set<List<int>>{null};
+
+  // variation #6: Bad.
+  final Set<Undefined> foo7 = const Set{null};
+
+  // variation #7: OK.
+  final Set<Undefined> foo8 = const <List<int>>{null};
+
+  // variation #8: OK.
+  final Set<Undefined> foo9 = const {null};
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.expect
new file mode 100644
index 0000000..4d44965
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.expect
@@ -0,0 +1,273 @@
+Problems reported:
+
+parser/error_recovery/issue_45251_set_const:3:37: Unexpected token 'Set'.
+  final Set<Undefined> foo1 = const Set<List<int>>{};
+                                    ^^^
+
+parser/error_recovery/issue_45251_set_const:9:37: Unexpected token 'Set'.
+  final Set<Undefined> foo3 = const Set{};
+                                    ^^^
+
+parser/error_recovery/issue_45251_set_const:18:37: Unexpected token 'Set'.
+  final Set<Undefined> foo6 = const Set<List<int>>{null};
+                                    ^^^
+
+parser/error_recovery/issue_45251_set_const:21:37: Unexpected token 'Set'.
+  final Set<Undefined> foo7 = const Set{null};
+                                    ^^^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(F, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, F)
+      handleNoType(F)
+      handleClassExtends(null, 1)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields({)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo1, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(1, <, >)
+                handleLiteralSetOrMap(0, {, const, }, false)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo2, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(1, <, >)
+                handleLiteralSetOrMap(0, {, const, }, false)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo3, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              beginConstLiteral({)
+                handleNoTypeArguments({)
+                handleLiteralSetOrMap(0, {, const, }, false)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo4, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstExpression(const)
+                handleIdentifier(Set, constructorReference)
+                beginConstructorReference(Set)
+                  beginTypeArguments(<)
+                    handleIdentifier(List, typeReference)
+                    beginTypeArguments(<)
+                      handleIdentifier(int, typeReference)
+                      handleNoTypeArguments(>)
+                      handleType(int, null)
+                    endTypeArguments(1, <, >)
+                    handleType(List, null)
+                  endTypeArguments(1, <, >)
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(Set, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endConstExpression(const)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo5, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstExpression(const)
+                handleIdentifier(Set, constructorReference)
+                beginConstructorReference(Set)
+                  handleNoTypeArguments(()
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(Set, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endConstExpression(const)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo6, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(1, <, >)
+                handleLiteralNull(null)
+                handleLiteralSetOrMap(1, {, const, }, true)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo7, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              beginConstLiteral({)
+                handleNoTypeArguments({)
+                handleLiteralNull(null)
+                handleLiteralSetOrMap(1, {, const, }, true)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo8, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstLiteral(<)
+                beginTypeArguments(<)
+                  handleIdentifier(List, typeReference)
+                  beginTypeArguments(<)
+                    handleIdentifier(int, typeReference)
+                    handleNoTypeArguments(>)
+                    handleType(int, null)
+                  endTypeArguments(1, <, >)
+                  handleType(List, null)
+                endTypeArguments(1, <, >)
+                handleLiteralNull(null)
+                handleLiteralSetOrMap(1, {, const, }, true)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo9, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginConstLiteral({)
+                handleNoTypeArguments({)
+                handleLiteralNull(null)
+                handleLiteralSetOrMap(1, {, const, }, true)
+              endConstLiteral(;)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.intertwined.expect
new file mode 100644
index 0000000..8239dcb
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.intertwined.expect
@@ -0,0 +1,416 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(F, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, F)
+        parseClass(F, class, class, F)
+          parseClassHeaderOpt(F, class, class)
+            parseClassExtendsOpt(F)
+              listener: handleNoType(F)
+              listener: handleClassExtends(null, 1)
+            parseWithClauseOpt(F)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(F)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
+              parseMetadataStar({)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields({, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo1, DeclarationKind.Class, F, false)
+                listener: beginFields({)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo1, fieldDeclaration)
+                parseFieldInitializerOpt(foo1, foo1, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(Set, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              parseLiteralSetOrMapSuffix(>, const)
+                                listener: handleLiteralSetOrMap(0, {, const, }, false)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo2, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo2, fieldDeclaration)
+                parseFieldInitializerOpt(foo2, foo2, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(const, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              parseLiteralSetOrMapSuffix(>, const)
+                                listener: handleLiteralSetOrMap(0, {, const, }, false)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo3, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo3, fieldDeclaration)
+                parseFieldInitializerOpt(foo3, foo3, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                            listener: beginConstLiteral({)
+                            listener: handleNoTypeArguments({)
+                            parseLiteralSetOrMapSuffix(Set, const)
+                              listener: handleLiteralSetOrMap(0, {, const, }, false)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo4, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo4, fieldDeclaration)
+                parseFieldInitializerOpt(foo4, foo4, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstExpression(const)
+                            parseConstructorReference(const, Instance of 'ComplexTypeParamOrArgInfo')
+                              ensureIdentifier(const, constructorReference)
+                                listener: handleIdentifier(Set, constructorReference)
+                              listener: beginConstructorReference(Set)
+                              parseQualifiedRestOpt(Set, constructorReferenceContinuation)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(Set, null, ()
+                            parseConstructorInvocationArguments(>)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endConstExpression(const)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo5, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo5, fieldDeclaration)
+                parseFieldInitializerOpt(foo5, foo5, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstExpression(const)
+                            parseConstructorReference(const, Instance of 'NoTypeParamOrArg')
+                              ensureIdentifier(const, constructorReference)
+                                listener: handleIdentifier(Set, constructorReference)
+                              listener: beginConstructorReference(Set)
+                              parseQualifiedRestOpt(Set, constructorReferenceContinuation)
+                              listener: handleNoTypeArguments(()
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(Set, null, ()
+                            parseConstructorInvocationArguments(Set)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endConstExpression(const)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo6, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo6, fieldDeclaration)
+                parseFieldInitializerOpt(foo6, foo6, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(Set, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              parseLiteralSetOrMapSuffix(>, const)
+                                parseExpression({)
+                                  parsePrecedenceExpression({, 1, true)
+                                    parseUnaryExpression({, true)
+                                      parsePrimary({, expression)
+                                        parseLiteralNull({)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralSetOrMap(1, {, const, }, true)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo7, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo7, fieldDeclaration)
+                parseFieldInitializerOpt(foo7, foo7, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                            listener: beginConstLiteral({)
+                            listener: handleNoTypeArguments({)
+                            parseLiteralSetOrMapSuffix(Set, const)
+                              parseExpression({)
+                                parsePrecedenceExpression({, 1, true)
+                                  parseUnaryExpression({, true)
+                                    parsePrimary({, expression)
+                                      parseLiteralNull({)
+                                        listener: handleLiteralNull(null)
+                              listener: handleLiteralSetOrMap(1, {, const, }, true)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo8, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo8, fieldDeclaration)
+                parseFieldInitializerOpt(foo8, foo8, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstLiteral(<)
+                            parseLiteralListSetMapOrFunction(const, const)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              parseLiteralSetOrMapSuffix(>, const)
+                                parseExpression({)
+                                  parsePrecedenceExpression({, 1, true)
+                                    parseUnaryExpression({, true)
+                                      parsePrimary({, expression)
+                                        parseLiteralNull({)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralSetOrMap(1, {, const, }, true)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo9, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo9, fieldDeclaration)
+                parseFieldInitializerOpt(foo9, foo9, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseConstExpression(=)
+                            listener: beginConstLiteral({)
+                            listener: handleNoTypeArguments({)
+                            parseLiteralSetOrMapSuffix(const, const)
+                              parseExpression({)
+                                parsePrecedenceExpression({, 1, true)
+                                  parseUnaryExpression({, true)
+                                    parsePrimary({, expression)
+                                      parseLiteralNull({)
+                                        listener: handleLiteralNull(null)
+                              listener: handleLiteralSetOrMap(1, {, const, }, true)
+                            listener: endConstLiteral(;)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.parser.expect
new file mode 100644
index 0000000..2cbb213
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.parser.expect
@@ -0,0 +1,59 @@
+NOTICE: Stream was rewritten by parser!
+
+class F {
+
+final Set<Undefined> foo1 = const Set<List<int>>{};
+
+
+final Set<Undefined> foo2 = const <List<int>>{};
+
+
+final Set<Undefined> foo3 = const Set{};
+
+
+final Set<Undefined> foo4 = const Set<List<int>>();
+
+
+final Set<Undefined> foo5 = const Set();
+
+
+final Set<Undefined> foo6 = const Set<List<int>>{null};
+
+
+final Set<Undefined> foo7 = const Set{null};
+
+
+final Set<Undefined> foo8 = const <List<int>>{null};
+
+
+final Set<Undefined> foo9 = const {null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] const[KeywordToken] {[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.scanner.expect
new file mode 100644
index 0000000..4f0046a
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.scanner.expect
@@ -0,0 +1,57 @@
+class F {
+
+final Set<Undefined> foo1 = const Set<List<int>>{};
+
+
+final Set<Undefined> foo2 = const <List<int>>{};
+
+
+final Set<Undefined> foo3 = const Set{};
+
+
+final Set<Undefined> foo4 = const Set<List<int>>();
+
+
+final Set<Undefined> foo5 = const Set();
+
+
+final Set<Undefined> foo6 = const Set<List<int>>{null};
+
+
+final Set<Undefined> foo7 = const Set{null};
+
+
+final Set<Undefined> foo8 = const <List<int>>{null};
+
+
+final Set<Undefined> foo9 = const {null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] const[KeywordToken] Set[StringToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] const[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] const[KeywordToken] {[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart
new file mode 100644
index 0000000..a949b83
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart
@@ -0,0 +1,28 @@
+class F {
+  /* notice the braces at the end instead of parenthesis! */
+  final Set<Undefined> foo1 = new Set<List<int>>{};
+
+  // variation #1: new makes it bad.
+  final Set<Undefined> foo2 = new <List<int>>{};
+
+  // variation #2: Bad.
+  final Set<Undefined> foo3 = new Set{};
+
+  // variation #3: OK.
+  final Set<Undefined> foo4 = new Set<List<int>>();
+
+  // variation #4: OK.
+  final Set<Undefined> foo5 = new Set();
+
+  // variation #5: Bad.
+  final Set<Undefined> foo6 = new Set<List<int>>{null};
+
+  // variation #6: Bad.
+  final Set<Undefined> foo7 = new Set{null};
+
+  // variation #7: new makes it bad.
+  final Set<Undefined> foo8 = new <List<int>>{null};
+
+  // variation #8: new makes it bad.
+  final Set<Undefined> foo9 = new {null};
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.expect
new file mode 100644
index 0000000..aa57003
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.expect
@@ -0,0 +1,294 @@
+Problems reported:
+
+parser/error_recovery/issue_45251_set_new:3:31: Unexpected token 'new'.
+  final Set<Undefined> foo1 = new Set<List<int>>{};
+                              ^^^
+
+parser/error_recovery/issue_45251_set_new:3:35: Unexpected token 'Set'.
+  final Set<Undefined> foo1 = new Set<List<int>>{};
+                                  ^^^
+
+parser/error_recovery/issue_45251_set_new:6:31: Unexpected token 'new'.
+  final Set<Undefined> foo2 = new <List<int>>{};
+                              ^^^
+
+parser/error_recovery/issue_45251_set_new:9:31: Unexpected token 'new'.
+  final Set<Undefined> foo3 = new Set{};
+                              ^^^
+
+parser/error_recovery/issue_45251_set_new:9:35: Unexpected token 'Set'.
+  final Set<Undefined> foo3 = new Set{};
+                                  ^^^
+
+parser/error_recovery/issue_45251_set_new:18:31: Unexpected token 'new'.
+  final Set<Undefined> foo6 = new Set<List<int>>{null};
+                              ^^^
+
+parser/error_recovery/issue_45251_set_new:18:35: Unexpected token 'Set'.
+  final Set<Undefined> foo6 = new Set<List<int>>{null};
+                                  ^^^
+
+parser/error_recovery/issue_45251_set_new:21:31: Unexpected token 'new'.
+  final Set<Undefined> foo7 = new Set{null};
+                              ^^^
+
+parser/error_recovery/issue_45251_set_new:21:35: Unexpected token 'Set'.
+  final Set<Undefined> foo7 = new Set{null};
+                                  ^^^
+
+parser/error_recovery/issue_45251_set_new:24:31: Unexpected token 'new'.
+  final Set<Undefined> foo8 = new <List<int>>{null};
+                              ^^^
+
+parser/error_recovery/issue_45251_set_new:27:31: Unexpected token 'new'.
+  final Set<Undefined> foo9 = new {null};
+                              ^^^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(F, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, F)
+      handleNoType(F)
+      handleClassExtends(null, 1)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields({)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo1, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo2, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo3, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              handleNoTypeArguments({)
+              handleLiteralSetOrMap(0, {, null, }, false)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo4, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginNewExpression(new)
+                handleIdentifier(Set, constructorReference)
+                beginConstructorReference(Set)
+                  beginTypeArguments(<)
+                    handleIdentifier(List, typeReference)
+                    beginTypeArguments(<)
+                      handleIdentifier(int, typeReference)
+                      handleNoTypeArguments(>)
+                      handleType(int, null)
+                    endTypeArguments(1, <, >)
+                    handleType(List, null)
+                  endTypeArguments(1, <, >)
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(Set, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endNewExpression(new)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo5, fieldDeclaration)
+            beginFieldInitializer(=)
+              beginNewExpression(new)
+                handleIdentifier(Set, constructorReference)
+                beginConstructorReference(Set)
+                  handleNoTypeArguments(()
+                  handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                endConstructorReference(Set, null, ()
+                beginArguments(()
+                endArguments(0, (, ))
+              endNewExpression(new)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo6, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralNull(null)
+              handleLiteralSetOrMap(1, {, null, }, true)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo7, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+              handleNoTypeArguments({)
+              handleLiteralNull(null)
+              handleLiteralSetOrMap(1, {, null, }, true)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo8, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              beginTypeArguments(<)
+                handleIdentifier(List, typeReference)
+                beginTypeArguments(<)
+                  handleIdentifier(int, typeReference)
+                  handleNoTypeArguments(>)
+                  handleType(int, null)
+                endTypeArguments(1, <, >)
+                handleType(List, null)
+              endTypeArguments(1, <, >)
+              handleLiteralNull(null)
+              handleLiteralSetOrMap(1, {, null, }, true)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        beginMember()
+          beginFields(;)
+            handleIdentifier(Set, typeReference)
+            beginTypeArguments(<)
+              handleIdentifier(Undefined, typeReference)
+              handleNoTypeArguments(>)
+              handleType(Undefined, null)
+            endTypeArguments(1, <, >)
+            handleType(Set, null)
+            handleIdentifier(foo9, fieldDeclaration)
+            beginFieldInitializer(=)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+              handleNoTypeArguments({)
+              handleLiteralNull(null)
+              handleLiteralSetOrMap(1, {, null, }, true)
+            endFieldInitializer(=, ;)
+          endClassFields(null, null, null, null, null, final, 1, final, ;)
+        endMember()
+      endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.intertwined.expect
new file mode 100644
index 0000000..2eb284f
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.intertwined.expect
@@ -0,0 +1,423 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(F, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, F)
+        parseClass(F, class, class, F)
+          parseClassHeaderOpt(F, class, class)
+            parseClassExtendsOpt(F)
+              listener: handleNoType(F)
+              listener: handleClassExtends(null, 1)
+            parseWithClauseOpt(F)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(F)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(F, DeclarationKind.Class, F)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, F)
+              parseMetadataStar({)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields({, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo1, DeclarationKind.Class, F, false)
+                listener: beginFields({)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo1, fieldDeclaration)
+                parseFieldInitializerOpt(foo1, foo1, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                            parsePrimary(Set, expression)
+                              parseLiteralListSetMapOrFunction(Set, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(1, <, >)
+                                parseLiteralSetOrMapSuffix(>, null)
+                                  listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo2, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo2, fieldDeclaration)
+                parseFieldInitializerOpt(foo2, foo2, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            parsePrimary(new, expression)
+                              parseLiteralListSetMapOrFunction(new, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(1, <, >)
+                                parseLiteralSetOrMapSuffix(>, null)
+                                  listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo3, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo3, fieldDeclaration)
+                parseFieldInitializerOpt(foo3, foo3, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                            parsePrimary(Set, expression)
+                              listener: handleNoTypeArguments({)
+                              parseLiteralSetOrMapSuffix(Set, null)
+                                listener: handleLiteralSetOrMap(0, {, null, }, false)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo4, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo4, fieldDeclaration)
+                parseFieldInitializerOpt(foo4, foo4, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            listener: beginNewExpression(new)
+                            parseConstructorReference(new, Instance of 'ComplexTypeParamOrArgInfo')
+                              ensureIdentifier(new, constructorReference)
+                                listener: handleIdentifier(Set, constructorReference)
+                              listener: beginConstructorReference(Set)
+                              parseQualifiedRestOpt(Set, constructorReferenceContinuation)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(List, typeReference)
+                              listener: beginTypeArguments(<)
+                              listener: handleIdentifier(int, typeReference)
+                              listener: handleNoTypeArguments(>)
+                              listener: handleType(int, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleType(List, null)
+                              listener: endTypeArguments(1, <, >)
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(Set, null, ()
+                            parseConstructorInvocationArguments(>)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endNewExpression(new)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo5, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo5, fieldDeclaration)
+                parseFieldInitializerOpt(foo5, foo5, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            listener: beginNewExpression(new)
+                            parseConstructorReference(new, Instance of 'NoTypeParamOrArg')
+                              ensureIdentifier(new, constructorReference)
+                                listener: handleIdentifier(Set, constructorReference)
+                              listener: beginConstructorReference(Set)
+                              parseQualifiedRestOpt(Set, constructorReferenceContinuation)
+                              listener: handleNoTypeArguments(()
+                              listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                              listener: endConstructorReference(Set, null, ()
+                            parseConstructorInvocationArguments(Set)
+                              parseArgumentsRest(()
+                                listener: beginArguments(()
+                                listener: endArguments(0, (, ))
+                            listener: endNewExpression(new)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo6, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo6, fieldDeclaration)
+                parseFieldInitializerOpt(foo6, foo6, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                            parsePrimary(Set, expression)
+                              parseLiteralListSetMapOrFunction(Set, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(1, <, >)
+                                parseLiteralSetOrMapSuffix(>, null)
+                                  parseExpression({)
+                                    parsePrecedenceExpression({, 1, true)
+                                      parseUnaryExpression({, true)
+                                        parsePrimary({, expression)
+                                          parseLiteralNull({)
+                                            listener: handleLiteralNull(null)
+                                  listener: handleLiteralSetOrMap(1, {, null, }, true)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo7, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo7, fieldDeclaration)
+                parseFieldInitializerOpt(foo7, foo7, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            reportRecoverableErrorWithToken(Set, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'Set'., null, {lexeme: Set}], Set, Set)
+                            parsePrimary(Set, expression)
+                              listener: handleNoTypeArguments({)
+                              parseLiteralSetOrMapSuffix(Set, null)
+                                parseExpression({)
+                                  parsePrecedenceExpression({, 1, true)
+                                    parseUnaryExpression({, true)
+                                      parsePrimary({, expression)
+                                        parseLiteralNull({)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralSetOrMap(1, {, null, }, true)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo8, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo8, fieldDeclaration)
+                parseFieldInitializerOpt(foo8, foo8, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            parsePrimary(new, expression)
+                              parseLiteralListSetMapOrFunction(new, null)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(List, typeReference)
+                                listener: beginTypeArguments(<)
+                                listener: handleIdentifier(int, typeReference)
+                                listener: handleNoTypeArguments(>)
+                                listener: handleType(int, null)
+                                listener: endTypeArguments(1, <, >)
+                                listener: handleType(List, null)
+                                listener: endTypeArguments(1, <, >)
+                                parseLiteralSetOrMapSuffix(>, null)
+                                  parseExpression({)
+                                    parsePrecedenceExpression({, 1, true)
+                                      parseUnaryExpression({, true)
+                                        parsePrimary({, expression)
+                                          parseLiteralNull({)
+                                            listener: handleLiteralNull(null)
+                                  listener: handleLiteralSetOrMap(1, {, null, }, true)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, final)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, F)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(final)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseFields(;, null, null, null, null, null, final, final, Instance of 'SimpleTypeWith1Argument', foo9, DeclarationKind.Class, F, false)
+                listener: beginFields(;)
+                listener: handleIdentifier(Set, typeReference)
+                listener: beginTypeArguments(<)
+                listener: handleIdentifier(Undefined, typeReference)
+                listener: handleNoTypeArguments(>)
+                listener: handleType(Undefined, null)
+                listener: endTypeArguments(1, <, >)
+                listener: handleType(Set, null)
+                ensureIdentifierPotentiallyRecovered(>, fieldDeclaration, false)
+                  listener: handleIdentifier(foo9, fieldDeclaration)
+                parseFieldInitializerOpt(foo9, foo9, null, null, null, final, DeclarationKind.Class, F)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseNewExpression(=)
+                            reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'new'., null, {lexeme: new}], new, new)
+                            parsePrimary(new, expression)
+                              listener: handleNoTypeArguments({)
+                              parseLiteralSetOrMapSuffix(new, null)
+                                parseExpression({)
+                                  parsePrecedenceExpression({, 1, true)
+                                    parseUnaryExpression({, true)
+                                      parsePrimary({, expression)
+                                        parseLiteralNull({)
+                                          listener: handleLiteralNull(null)
+                                listener: handleLiteralSetOrMap(1, {, null, }, true)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 9, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.parser.expect
new file mode 100644
index 0000000..2f51b76
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.parser.expect
@@ -0,0 +1,59 @@
+NOTICE: Stream was rewritten by parser!
+
+class F {
+
+final Set<Undefined> foo1 = new Set<List<int>>{};
+
+
+final Set<Undefined> foo2 = new <List<int>>{};
+
+
+final Set<Undefined> foo3 = new Set{};
+
+
+final Set<Undefined> foo4 = new Set<List<int>>();
+
+
+final Set<Undefined> foo5 = new Set();
+
+
+final Set<Undefined> foo6 = new Set<List<int>>{null};
+
+
+final Set<Undefined> foo7 = new Set{null};
+
+
+final Set<Undefined> foo8 = new <List<int>>{null};
+
+
+final Set<Undefined> foo9 = new {null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] new[KeywordToken] {[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.scanner.expect
new file mode 100644
index 0000000..a92bb6a
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.scanner.expect
@@ -0,0 +1,57 @@
+class F {
+
+final Set<Undefined> foo1 = new Set<List<int>>{};
+
+
+final Set<Undefined> foo2 = new <List<int>>{};
+
+
+final Set<Undefined> foo3 = new Set{};
+
+
+final Set<Undefined> foo4 = new Set<List<int>>();
+
+
+final Set<Undefined> foo5 = new Set();
+
+
+final Set<Undefined> foo6 = new Set<List<int>>{null};
+
+
+final Set<Undefined> foo7 = new Set{null};
+
+
+final Set<Undefined> foo8 = new <List<int>>{null};
+
+
+final Set<Undefined> foo9 = new {null};
+}
+
+class[KeywordToken] F[StringToken] {[BeginToken]
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo1[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo2[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo3[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]{[BeginToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo4[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo5[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo6[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]<[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo7[StringToken] =[SimpleToken] new[KeywordToken] Set[StringToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo8[StringToken] =[SimpleToken] new[KeywordToken] <[BeginToken]List[StringToken]<[BeginToken]int[StringToken]>>[SimpleToken]{[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+
+
+final[KeywordToken] Set[StringToken]<[BeginToken]Undefined[StringToken]>[SimpleToken] foo9[StringToken] =[SimpleToken] new[KeywordToken] {[BeginToken]null[KeywordToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/test/spell_checking_list_code.txt b/pkg/front_end/test/spell_checking_list_code.txt
index ebe668e..517d068 100644
--- a/pkg/front_end/test/spell_checking_list_code.txt
+++ b/pkg/front_end/test/spell_checking_list_code.txt
@@ -251,6 +251,7 @@
 corrected
 corrections
 cosmetic
+costly
 counters
 covariances
 coverage
@@ -1376,6 +1377,7 @@
 wn
 worthwhile
 worthy
+woven
 writeln
 wrongfully
 wrt
diff --git a/pkg/front_end/testcases/regress/issue_31155.dart.textual_outline.expect b/pkg/front_end/testcases/regress/issue_31155.dart.textual_outline.expect
index 79e9364..89f0128 100644
--- a/pkg/front_end/testcases/regress/issue_31155.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/regress/issue_31155.dart.textual_outline.expect
@@ -2,8 +2,6 @@
 class A {}
 class B {}
 class C {
-  var f = Map<A, B;
-  operator> (){}
-  ;
+  var f = Map<A, B> {};
 }
 void main() {}
diff --git a/pkg/front_end/testcases/regress/issue_31155.dart.weak.expect b/pkg/front_end/testcases/regress/issue_31155.dart.weak.expect
index 1cad098..0acdfa9 100644
--- a/pkg/front_end/testcases/regress/issue_31155.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_31155.dart.weak.expect
@@ -2,33 +2,9 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/regress/issue_31155.dart:11:18: Error: Expected ';' after this.
+// pkg/front_end/testcases/regress/issue_31155.dart:11:11: Error: Unexpected token 'Map'.
 //   var f = Map<A, B> {};
-//                  ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:19: Error: Operator declarations must be preceded by the keyword 'operator'.
-// Try adding the keyword 'operator'.
-//   var f = Map<A, B> {};
-//                   ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:19: Error: A method declaration needs an explicit list of parameters.
-// Try adding a parameter list to the method declaration.
-//   var f = Map<A, B> {};
-//                   ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:19: Error: Operator '>' should have exactly one parameter.
-//   var f = Map<A, B> {};
-//                   ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:23: Error: Expected a class member, but got ';'.
-//   var f = Map<A, B> {};
-//                       ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: The operator '<' isn't defined for the class 'Type'.
-//  - 'Type' is from 'dart:core'.
-// Try correcting the operator to an existing operator, or defining a '<' operator.
-//   var f = Map<A, B> {};
-//              ^
+//           ^^^
 //
 import self as self;
 import "dart:core" as core;
@@ -64,16 +40,10 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class C extends core::Object {
-  field dynamic f = invalid-expression "pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: The operator '<' isn't defined for the class 'Type'.
- - 'Type' is from 'dart:core'.
-Try correcting the operator to an existing operator, or defining a '<' operator.
-  var f = Map<A, B> {};
-             ^";
-  field dynamic B = null;
+  field core::Map<self::A*, self::B*>* f = <self::A*, self::B*>{};
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
-  operator >() → dynamic {}
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/regress/issue_31155.dart.weak.outline.expect b/pkg/front_end/testcases/regress/issue_31155.dart.weak.outline.expect
index 86f986c..45d6de2 100644
--- a/pkg/front_end/testcases/regress/issue_31155.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_31155.dart.weak.outline.expect
@@ -2,27 +2,9 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/regress/issue_31155.dart:11:18: Error: Expected ';' after this.
+// pkg/front_end/testcases/regress/issue_31155.dart:11:11: Error: Unexpected token 'Map'.
 //   var f = Map<A, B> {};
-//                  ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:19: Error: Operator declarations must be preceded by the keyword 'operator'.
-// Try adding the keyword 'operator'.
-//   var f = Map<A, B> {};
-//                   ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:19: Error: A method declaration needs an explicit list of parameters.
-// Try adding a parameter list to the method declaration.
-//   var f = Map<A, B> {};
-//                   ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:19: Error: Operator '>' should have exactly one parameter.
-//   var f = Map<A, B> {};
-//                   ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:23: Error: Expected a class member, but got ';'.
-//   var f = Map<A, B> {};
-//                       ^
+//           ^^^
 //
 import self as self;
 import "dart:core" as core;
@@ -56,12 +38,9 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class C extends core::Object {
-  field dynamic f;
-  field dynamic B;
+  field core::Map<self::A*, self::B*>* f;
   synthetic constructor •() → self::C*
     ;
-  operator >() → dynamic
-    ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/regress/issue_31155.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_31155.dart.weak.transformed.expect
index 1cad098..0acdfa9 100644
--- a/pkg/front_end/testcases/regress/issue_31155.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31155.dart.weak.transformed.expect
@@ -2,33 +2,9 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/regress/issue_31155.dart:11:18: Error: Expected ';' after this.
+// pkg/front_end/testcases/regress/issue_31155.dart:11:11: Error: Unexpected token 'Map'.
 //   var f = Map<A, B> {};
-//                  ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:19: Error: Operator declarations must be preceded by the keyword 'operator'.
-// Try adding the keyword 'operator'.
-//   var f = Map<A, B> {};
-//                   ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:19: Error: A method declaration needs an explicit list of parameters.
-// Try adding a parameter list to the method declaration.
-//   var f = Map<A, B> {};
-//                   ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:19: Error: Operator '>' should have exactly one parameter.
-//   var f = Map<A, B> {};
-//                   ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:23: Error: Expected a class member, but got ';'.
-//   var f = Map<A, B> {};
-//                       ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: The operator '<' isn't defined for the class 'Type'.
-//  - 'Type' is from 'dart:core'.
-// Try correcting the operator to an existing operator, or defining a '<' operator.
-//   var f = Map<A, B> {};
-//              ^
+//           ^^^
 //
 import self as self;
 import "dart:core" as core;
@@ -64,16 +40,10 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class C extends core::Object {
-  field dynamic f = invalid-expression "pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: The operator '<' isn't defined for the class 'Type'.
- - 'Type' is from 'dart:core'.
-Try correcting the operator to an existing operator, or defining a '<' operator.
-  var f = Map<A, B> {};
-             ^";
-  field dynamic B = null;
+  field core::Map<self::A*, self::B*>* f = <self::A*, self::B*>{};
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
-  operator >() → dynamic {}
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/tests/language/list/literal5_test.dart b/tests/language/list/literal5_test.dart
index a1cbe6a..5226bb7 100644
--- a/tests/language/list/literal5_test.dart
+++ b/tests/language/list/literal5_test.dart
@@ -6,13 +6,10 @@
 
 main() {
   new List<int>[1, 2];
-  //  ^^^^^^^^^
-  // [analyzer] COMPILE_TIME_ERROR.DEFAULT_LIST_CONSTRUCTOR
-  // [cfe] Can't use the default List constructor.
-  //          ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected '(' after this.
-  //             ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ']' before this.
+//^^^
+// [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
+// [cfe] Unexpected token 'new'.
+  //  ^^^^
+  // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
+  // [cfe] Unexpected token 'List'.
 }
diff --git a/tests/language/map/literal13_test.dart b/tests/language/map/literal13_test.dart
index 08f06e4..5ebbbc9 100644
--- a/tests/language/map/literal13_test.dart
+++ b/tests/language/map/literal13_test.dart
@@ -6,76 +6,22 @@
 
 main() {
   var map = new Map<int>{ "a": 1, "b": 2, "c": 3 };
-  //            ^^^^^^^^
-  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS
-  // [cfe] Expected 2 type arguments.
-  //                   ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected '(' after this.
-  //                    ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
-  //                      ^^^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
+  //        ^^^
+  // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
+  // [cfe] Unexpected token 'new'.
+  //            ^^^
+  // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
+  // [cfe] Unexpected token 'Map'.
+  //                      ^^^^^^
+  // [analyzer] COMPILE_TIME_ERROR.MAP_ENTRY_NOT_IN_MAP
   //                         ^
-  // [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] Unexpected token ':'.
-  //                           ^
-  // [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] Unexpected token ','.
-  //                              ^^^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
+  // [cfe] Expected ',' before this.
+  //                              ^^^^^^
+  // [analyzer] COMPILE_TIME_ERROR.MAP_ENTRY_NOT_IN_MAP
   //                                 ^
-  // [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] Unexpected token ':'.
-  //                                   ^
-  // [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] Unexpected token ','.
-  //                                      ^^^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
+  // [cfe] Expected ',' before this.
+  //                                      ^^^^^^
+  // [analyzer] COMPILE_TIME_ERROR.MAP_ENTRY_NOT_IN_MAP
   //                                         ^
-  // [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] Unexpected token ':'.
-  //                                           ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
+  // [cfe] Expected ',' before this.
 }
diff --git a/tests/language_2/list/literal5_test.dart b/tests/language_2/list/literal5_test.dart
index 81969be..5226bb7 100644
--- a/tests/language_2/list/literal5_test.dart
+++ b/tests/language_2/list/literal5_test.dart
@@ -6,10 +6,10 @@
 
 main() {
   new List<int>[1, 2];
-  //          ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected '(' after this.
-  //             ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ']' before this.
+//^^^
+// [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
+// [cfe] Unexpected token 'new'.
+  //  ^^^^
+  // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
+  // [cfe] Unexpected token 'List'.
 }
diff --git a/tests/language_2/map/literal13_test.dart b/tests/language_2/map/literal13_test.dart
index 08f06e4..5ebbbc9 100644
--- a/tests/language_2/map/literal13_test.dart
+++ b/tests/language_2/map/literal13_test.dart
@@ -6,76 +6,22 @@
 
 main() {
   var map = new Map<int>{ "a": 1, "b": 2, "c": 3 };
-  //            ^^^^^^^^
-  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS
-  // [cfe] Expected 2 type arguments.
-  //                   ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected '(' after this.
-  //                    ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
-  //                      ^^^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
+  //        ^^^
+  // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
+  // [cfe] Unexpected token 'new'.
+  //            ^^^
+  // [analyzer] SYNTACTIC_ERROR.UNEXPECTED_TOKEN
+  // [cfe] Unexpected token 'Map'.
+  //                      ^^^^^^
+  // [analyzer] COMPILE_TIME_ERROR.MAP_ENTRY_NOT_IN_MAP
   //                         ^
-  // [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] Unexpected token ':'.
-  //                           ^
-  // [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] Unexpected token ','.
-  //                              ^^^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
+  // [cfe] Expected ',' before this.
+  //                              ^^^^^^
+  // [analyzer] COMPILE_TIME_ERROR.MAP_ENTRY_NOT_IN_MAP
   //                                 ^
-  // [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] Unexpected token ':'.
-  //                                   ^
-  // [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] Unexpected token ','.
-  //                                      ^^^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
+  // [cfe] Expected ',' before this.
+  //                                      ^^^^^^
+  // [analyzer] COMPILE_TIME_ERROR.MAP_ENTRY_NOT_IN_MAP
   //                                         ^
-  // [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] Unexpected token ':'.
-  //                                           ^
-  // [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
-  // [cfe] Expected ';' after this.
+  // [cfe] Expected ',' before this.
 }
diff --git a/tools/VERSION b/tools/VERSION
index 132037c..d465aa8 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 13
 PATCH 0
-PRERELEASE 132
+PRERELEASE 133
 PRERELEASE_PATCH 0
\ No newline at end of file