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