[parser] Recover missing () for enum constant with type arguments or dot

Fixes https://github.com/dart-lang/sdk/issues/48380

Change-Id: I4f6fd7311c46ad45ccce5bf6b97b40932a457851
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/234360
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
This commit is contained in:
Jens Johansen 2022-03-09 12:40:35 +00:00 committed by Commit Bot
parent 33c38e914b
commit f40d76d360
110 changed files with 3404 additions and 253 deletions

View file

@ -2806,16 +2806,6 @@ const MessageCode messageEnumDeclaresConstFactory = const MessageCode(
correctionMessage:
r"""Try removing the factory constructor declaration.""");
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const Code<Null> codeEnumEntryWithTypeArgumentsWithoutArguments =
messageEnumEntryWithTypeArgumentsWithoutArguments;
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const MessageCode messageEnumEntryWithTypeArgumentsWithoutArguments =
const MessageCode("EnumEntryWithTypeArgumentsWithoutArguments",
problemMessage:
r"""Missing arguments in enum constructor invocation.""");
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const Code<Null> codeEnumFactoryRedirectsToConstructor =
messageEnumFactoryRedirectsToConstructor;

View file

@ -2151,10 +2151,35 @@ class Parser {
Token beginToken = token;
token = parseMetadataStar(token);
token = ensureIdentifier(token, IdentifierContext.enumValueDeclaration);
token = parseConstructorReference(token, ConstructorReferenceContext.Const,
/* typeArg = */ null, /* isImplicitTypeName = */ true);
bool hasTypeArgumentsOrDot = false;
{
// This is almost a verbatim copy of [parseConstructorReference] inserted
// to provide better recovery.
Token start = token;
listener.handleNoTypeNameInConstructorReference(token.next!);
listener.beginConstructorReference(start);
TypeParamOrArgInfo typeArg = computeTypeParamOrArg(token);
if (typeArg != noTypeParamOrArg) {
hasTypeArgumentsOrDot = true;
}
token = typeArg.parseArguments(token, this);
Token? period = null;
if (optional('.', token.next!)) {
hasTypeArgumentsOrDot = true;
period = token.next!;
token = ensureIdentifier(
period,
IdentifierContext
.constructorReferenceContinuationAfterTypeArguments);
} else {
listener.handleNoConstructorReferenceContinuationAfterTypeArguments(
token.next!);
}
listener.endConstructorReference(
start, period, token.next!, ConstructorReferenceContext.Const);
}
Token next = token.next!;
if (optional('(', next) || optional('<', next)) {
if (optional('(', next) || hasTypeArgumentsOrDot) {
token = parseConstructorInvocationArguments(token);
} else {
listener.handleNoArguments(token);
@ -4638,19 +4663,14 @@ class Parser {
Token parseConstructorReference(
Token token, ConstructorReferenceContext constructorReferenceContext,
[TypeParamOrArgInfo? typeArg, bool isImplicitTypeName = false]) {
[TypeParamOrArgInfo? typeArg]) {
// Note that there's an almost verbatim copy in [parseEnumElement] so
// any change here should be added there too.
Token start;
if (isImplicitTypeName) {
listener.handleNoTypeNameInConstructorReference(token.next!);
start = token;
} else {
start = ensureIdentifier(token, IdentifierContext.constructorReference);
}
start = ensureIdentifier(token, IdentifierContext.constructorReference);
listener.beginConstructorReference(start);
if (!isImplicitTypeName) {
token = parseQualifiedRestOpt(
start, IdentifierContext.constructorReferenceContinuation);
}
token = parseQualifiedRestOpt(
start, IdentifierContext.constructorReferenceContinuation);
typeArg ??= computeTypeParamOrArg(token);
token = typeArg.parseArguments(token, this);
Token? period = null;

View file

@ -78,6 +78,7 @@ enum E {
''');
parseResult.assertErrors([
error(ParserErrorCode.MISSING_IDENTIFIER, 14, 1),
error(ParserErrorCode.EXPECTED_TOKEN, 14, 1),
]);
var node = parseResult.findNode.enumConstantDeclaration('v.');
@ -102,7 +103,9 @@ enum E {
v.named;
}
''');
parseResult.assertNoErrors();
parseResult.assertErrors([
error(ParserErrorCode.EXPECTED_TOKEN, 13, 5),
]);
var node = parseResult.findNode.enumConstantDeclaration('v.');
assertParsedNodeText(node, r'''
@ -127,6 +130,7 @@ enum E {
}
''');
parseResult.assertErrors([
error(ParserErrorCode.EXPECTED_TOKEN, 13, 1),
error(ParserErrorCode.MISSING_IDENTIFIER, 13, 1),
]);
@ -153,9 +157,8 @@ enum E {
}
''');
parseResult.assertErrors([
error(ParserErrorCode.ENUM_CONSTANT_WITH_TYPE_ARGUMENTS_WITHOUT_ARGUMENTS,
12, 5),
error(ParserErrorCode.MISSING_IDENTIFIER, 19, 1),
error(ParserErrorCode.EXPECTED_TOKEN, 19, 1),
]);
var node = parseResult.findNode.enumConstantDeclaration('v<int>.');
@ -181,7 +184,6 @@ EnumConstantDeclaration
''');
}
@FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/48380')
void test_enum_constant_name_typeArguments_dot_semicolon() {
var parseResult = parseStringWithErrors(r'''
enum E {
@ -189,9 +191,8 @@ enum E {
}
''');
parseResult.assertErrors([
error(ParserErrorCode.ENUM_CONSTANT_WITH_TYPE_ARGUMENTS_WITHOUT_ARGUMENTS,
12, 5),
error(ParserErrorCode.MISSING_IDENTIFIER, 18, 1),
error(ParserErrorCode.EXPECTED_TOKEN, 18, 1),
]);
var node = parseResult.findNode.enumConstantDeclaration('v<int>');
@ -199,23 +200,23 @@ enum E {
node,
r'''
EnumConstantDeclaration
name: SimpleIdentifier
token: v
arguments: EnumConstantArguments
argumentList: ArgumentList
leftParenthesis: ( <synthetic>
rightParenthesis: ) <synthetic>
constructorSelector: ConstructorSelector
name: SimpleIdentifier
token: <empty> <synthetic>
period: .
typeArguments: TypeArgumentList
leftBracket: <
arguments
NamedType
name: SimpleIdentifier
token: int
leftBracket: <
rightBracket: >
name: SimpleIdentifier
token: v
constructorSelector: ConstructorSelector
period: .
name: SimpleIdentifier
token: <empty> <synthetic>
argumentList: ArgumentList
leftParenthesis: ( <synthetic>
rightParenthesis: ) <synthetic>
''',
withCheckingLinking: true);
}
@ -227,8 +228,7 @@ enum E<T> {
}
''');
parseResult.assertErrors([
error(ParserErrorCode.ENUM_CONSTANT_WITH_TYPE_ARGUMENTS_WITHOUT_ARGUMENTS,
15, 5),
error(ParserErrorCode.EXPECTED_TOKEN, 19, 1),
]);
var node = parseResult.findNode.enumConstantDeclaration('v<int>');

View file

@ -29,7 +29,6 @@ import '../fasta_codes.dart'
LocatedMessage,
Severity,
messageEnumContainsValuesDeclaration,
messageEnumEntryWithTypeArgumentsWithoutArguments,
messageEnumNonConstConstructor,
messageNoUnnamedConstructorInObject,
noLength,
@ -609,13 +608,6 @@ class SourceEnumBuilder extends SourceClassBuilder {
if (enumConstantInfos != null) {
for (EnumConstantInfo? enumConstantInfo in enumConstantInfos!) {
if (enumConstantInfo != null) {
if (enumConstantInfo.argumentsBeginToken == null &&
enumConstantInfo.constructorReferenceBuilder?.typeArguments !=
null) {
addProblem(messageEnumEntryWithTypeArgumentsWithoutArguments,
enumConstantInfo.charOffset, noLength);
}
String constant = enumConstantInfo.name;
Builder declaration = firstMemberNamed(constant)!;
SourceFieldBuilder field;

View file

@ -223,8 +223,6 @@ EnumDeclaresConstFactory/analyzerCode: Fail
EnumDeclaresConstFactory/example: Fail
EnumDeclaresFactory/analyzerCode: Fail
EnumDeclaresFactory/example: Fail
EnumEntryWithTypeArgumentsWithoutArguments/analyzerCode: Fail
EnumEntryWithTypeArgumentsWithoutArguments/example: Fail
EnumFactoryRedirectsToConstructor/analyzerCode: Fail
EnumFactoryRedirectsToConstructor/example: Fail
EnumImplementerContainsValuesDeclaration/analyzerCode: Fail

View file

@ -5480,9 +5480,6 @@ SuperInitializerParameter:
EnumSupertypeOfNonAbstractClass:
problemMessage: "Non-abstract class '#name' has 'Enum' as a superinterface."
EnumEntryWithTypeArgumentsWithoutArguments:
problemMessage: "Missing arguments in enum constructor invocation."
EnumNonConstConstructor:
problemMessage: "Generative enum constructors must be marked as 'const'."

View file

@ -43,19 +43,18 @@ parseUnit(enum)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(one, enumValueDeclaration)
parseConstructorReference(one, ConstructorReferenceContext.Const, null, true)
listener: handleNoTypeNameInConstructorReference(<)
listener: beginConstructorReference(one)
listener: beginTypeArguments(<)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(,)
listener: handleType(int, null)
listener: handleIdentifier(String, typeReference)
listener: handleNoTypeArguments(>)
listener: handleType(String, null)
listener: endTypeArguments(2, <, >)
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
listener: endConstructorReference(one, null, (, ConstructorReferenceContext.Const)
listener: handleNoTypeNameInConstructorReference(<)
listener: beginConstructorReference(one)
listener: beginTypeArguments(<)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(,)
listener: handleType(int, null)
listener: handleIdentifier(String, typeReference)
listener: handleNoTypeArguments(>)
listener: handleType(String, null)
listener: endTypeArguments(2, <, >)
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
listener: endConstructorReference(one, null, (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(>)
parseArgumentsRest(()
listener: beginArguments(()
@ -67,19 +66,18 @@ parseUnit(enum)
listener: endMetadataStar(0)
ensureIdentifier(,, enumValueDeclaration)
listener: handleIdentifier(two, enumValueDeclaration)
parseConstructorReference(two, ConstructorReferenceContext.Const, null, true)
listener: handleNoTypeNameInConstructorReference(<)
listener: beginConstructorReference(two)
listener: beginTypeArguments(<)
listener: handleIdentifier(double, typeReference)
listener: handleNoTypeArguments(,)
listener: handleType(double, null)
listener: handleIdentifier(num, typeReference)
listener: handleNoTypeArguments(>)
listener: handleType(num, null)
listener: endTypeArguments(2, <, >)
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
listener: endConstructorReference(two, null, (, ConstructorReferenceContext.Const)
listener: handleNoTypeNameInConstructorReference(<)
listener: beginConstructorReference(two)
listener: beginTypeArguments(<)
listener: handleIdentifier(double, typeReference)
listener: handleNoTypeArguments(,)
listener: handleType(double, null)
listener: handleIdentifier(num, typeReference)
listener: handleNoTypeArguments(>)
listener: handleType(num, null)
listener: endTypeArguments(2, <, >)
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
listener: endConstructorReference(two, null, (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(>)
parseArgumentsRest(()
listener: beginArguments(()
@ -91,20 +89,19 @@ parseUnit(enum)
listener: endMetadataStar(0)
ensureIdentifier(,, enumValueDeclaration)
listener: handleIdentifier(three, enumValueDeclaration)
parseConstructorReference(three, ConstructorReferenceContext.Const, null, true)
listener: handleNoTypeNameInConstructorReference(<)
listener: beginConstructorReference(three)
listener: beginTypeArguments(<)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(,)
listener: handleType(int, null)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(>)
listener: handleType(int, null)
listener: endTypeArguments(2, <, >)
ensureIdentifier(., constructorReferenceContinuationAfterTypeArguments)
listener: handleIdentifier(named, constructorReferenceContinuationAfterTypeArguments)
listener: endConstructorReference(three, ., (, ConstructorReferenceContext.Const)
listener: handleNoTypeNameInConstructorReference(<)
listener: beginConstructorReference(three)
listener: beginTypeArguments(<)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(,)
listener: handleType(int, null)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(>)
listener: handleType(int, null)
listener: endTypeArguments(2, <, >)
ensureIdentifier(., constructorReferenceContinuationAfterTypeArguments)
listener: handleIdentifier(named, constructorReferenceContinuationAfterTypeArguments)
listener: endConstructorReference(three, ., (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(named)
parseArgumentsRest(()
listener: beginArguments(()

View file

@ -40,7 +40,7 @@ parseUnit(UnmatchedToken(())
parseNewExpression({)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(C, constructorReference)
listener: beginConstructorReference(C)

View file

@ -200,7 +200,7 @@ parseUnit(const)
parseNewExpression(=>)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(A, constructorReference)
listener: beginConstructorReference(A)

View file

@ -190,7 +190,7 @@ parseUnit(class)
parsePrimary(=, expression)
parseConstExpression(=)
listener: beginConstExpression(const)
parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'ComplexTypeParamOrArgInfo', false)
parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'ComplexTypeParamOrArgInfo')
ensureIdentifier(const, constructorReference)
listener: handleIdentifier(Map, constructorReference)
listener: beginConstructorReference(Map)
@ -246,7 +246,7 @@ parseUnit(class)
parsePrimary(=, expression)
parseConstExpression(=)
listener: beginConstExpression(const)
parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'NoTypeParamOrArg', false)
parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'NoTypeParamOrArg')
ensureIdentifier(const, constructorReference)
listener: handleIdentifier(Map, constructorReference)
listener: beginConstructorReference(Map)

View file

@ -177,7 +177,7 @@ parseUnit(class)
parsePrimary(=, expression)
parseConstExpression(=)
listener: beginConstExpression(const)
parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'ComplexTypeParamOrArgInfo', false)
parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'ComplexTypeParamOrArgInfo')
ensureIdentifier(const, constructorReference)
listener: handleIdentifier(List, constructorReference)
listener: beginConstructorReference(List)
@ -226,7 +226,7 @@ parseUnit(class)
parsePrimary(=, expression)
parseConstExpression(=)
listener: beginConstExpression(const)
parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'NoTypeParamOrArg', false)
parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'NoTypeParamOrArg')
ensureIdentifier(const, constructorReference)
listener: handleIdentifier(List, constructorReference)
listener: beginConstructorReference(List)

View file

@ -180,7 +180,7 @@ parseUnit(class)
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'ComplexTypeParamOrArgInfo', false)
parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'ComplexTypeParamOrArgInfo')
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(List, constructorReference)
listener: beginConstructorReference(List)
@ -230,7 +230,7 @@ parseUnit(class)
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'NoTypeParamOrArg', false)
parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'NoTypeParamOrArg')
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(List, constructorReference)
listener: beginConstructorReference(List)

View file

@ -193,7 +193,7 @@ parseUnit(class)
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'ComplexTypeParamOrArgInfo', false)
parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'ComplexTypeParamOrArgInfo')
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(Map, constructorReference)
listener: beginConstructorReference(Map)
@ -250,7 +250,7 @@ parseUnit(class)
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'NoTypeParamOrArg', false)
parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'NoTypeParamOrArg')
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(Map, constructorReference)
listener: beginConstructorReference(Map)

View file

@ -168,7 +168,7 @@ parseUnit(class)
parsePrimary(=, expression)
parseConstExpression(=)
listener: beginConstExpression(const)
parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'ComplexTypeParamOrArgInfo', false)
parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'ComplexTypeParamOrArgInfo')
ensureIdentifier(const, constructorReference)
listener: handleIdentifier(Set, constructorReference)
listener: beginConstructorReference(Set)
@ -217,7 +217,7 @@ parseUnit(class)
parsePrimary(=, expression)
parseConstExpression(=)
listener: beginConstExpression(const)
parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'NoTypeParamOrArg', false)
parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'NoTypeParamOrArg')
ensureIdentifier(const, constructorReference)
listener: handleIdentifier(Set, constructorReference)
listener: beginConstructorReference(Set)

View file

@ -171,7 +171,7 @@ parseUnit(class)
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'ComplexTypeParamOrArgInfo', false)
parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'ComplexTypeParamOrArgInfo')
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(Set, constructorReference)
listener: beginConstructorReference(Set)
@ -221,7 +221,7 @@ parseUnit(class)
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'NoTypeParamOrArg', false)
parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'NoTypeParamOrArg')
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(Set, constructorReference)
listener: beginConstructorReference(Set)

View file

@ -28,12 +28,11 @@ parseUnit(enum)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
parseConstructorReference(v, ConstructorReferenceContext.Const, null, true)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoArguments(v)
listener: handleEnumElement({)
listener: handleEnumElements(}, 1)
@ -68,12 +67,11 @@ parseUnit(enum)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
parseConstructorReference(v, ConstructorReferenceContext.Const, null, true)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoArguments(v)
listener: handleEnumElement({)
listener: handleEnumElements(}, 1)
@ -110,12 +108,11 @@ parseUnit(enum)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
parseConstructorReference(v, ConstructorReferenceContext.Const, null, true)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoArguments(v)
listener: handleEnumElement({)
listener: handleEnumElements(}, 1)
@ -157,12 +154,11 @@ parseUnit(enum)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
parseConstructorReference(v, ConstructorReferenceContext.Const, null, true)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoArguments(v)
listener: handleEnumElement({)
listener: handleEnumElements(}, 1)
@ -194,12 +190,11 @@ parseUnit(enum)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
parseConstructorReference(v, ConstructorReferenceContext.Const, null, true)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoArguments(v)
listener: handleEnumElement({)
listener: handleEnumElements(}, 1)
@ -231,12 +226,11 @@ parseUnit(enum)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
parseConstructorReference(v, ConstructorReferenceContext.Const, null, true)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoArguments(v)
listener: handleEnumElement({)
listener: handleEnumElements(}, 1)
@ -273,12 +267,11 @@ parseUnit(enum)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
parseConstructorReference(v, ConstructorReferenceContext.Const, null, true)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoArguments(v)
listener: handleEnumElement({)
listener: handleEnumElements(}, 1)
@ -316,12 +309,11 @@ parseUnit(enum)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
parseConstructorReference(v, ConstructorReferenceContext.Const, null, true)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoArguments(v)
listener: handleEnumElement({)
listener: handleEnumElements(}, 1)
@ -356,12 +348,11 @@ parseUnit(enum)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
parseConstructorReference(v, ConstructorReferenceContext.Const, null, true)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoArguments(v)
listener: handleEnumElement({)
listener: handleEnumElements(}, 1)
@ -399,12 +390,11 @@ parseUnit(enum)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
parseConstructorReference(v, ConstructorReferenceContext.Const, null, true)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoArguments(v)
listener: handleEnumElement({)
listener: handleEnumElements(}, 1)
@ -441,12 +431,11 @@ parseUnit(enum)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
parseConstructorReference(v, ConstructorReferenceContext.Const, null, true)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoArguments(v)
listener: handleEnumElement({)
listener: handleEnumElements(}, 1)
@ -491,12 +480,11 @@ parseUnit(enum)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
parseConstructorReference(v, ConstructorReferenceContext.Const, null, true)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoArguments(v)
listener: handleEnumElement({)
listener: handleEnumElements(}, 1)
@ -541,12 +529,11 @@ parseUnit(enum)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
parseConstructorReference(v, ConstructorReferenceContext.Const, null, true)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoArguments(v)
listener: handleEnumElement({)
listener: handleEnumElements(}, 1)
@ -604,12 +591,11 @@ parseUnit(enum)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
parseConstructorReference(v, ConstructorReferenceContext.Const, null, true)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoArguments(v)
listener: handleEnumElement({)
listener: handleEnumElements(}, 1)
@ -666,12 +652,11 @@ parseUnit(enum)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
parseConstructorReference(v, ConstructorReferenceContext.Const, null, true)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoTypeNameInConstructorReference(})
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(})
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(})
listener: endConstructorReference(v, null, }, ConstructorReferenceContext.Const)
listener: handleNoArguments(v)
listener: handleEnumElement({)
listener: handleEnumElements(}, 1)

View file

@ -0,0 +1,6 @@
enum E<F> {
v<int>./*about to write foo()*/;
const E();
const E.foo();
}

View file

@ -0,0 +1,79 @@
Problems reported:
parser/error_recovery/issue_48380_1:2:34: Expected an identifier, but got ';'.
v<int>./*about to write foo()*/;
^
parser/error_recovery/issue_48380_1:2:34: Expected '(' after this.
v<int>./*about to write foo()*/;
^
beginCompilationUnit(enum)
beginMetadataStar(enum)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(enum)
handleIdentifier(E, enumDeclaration)
beginEnum(enum)
beginTypeVariables(<)
beginMetadataStar(F)
endMetadataStar(0)
handleIdentifier(F, typeVariableDeclaration)
beginTypeVariable(F)
handleTypeVariablesDefined(F, 1)
handleNoType(F)
endTypeVariable(>, 0, null, null)
endTypeVariables(<, >)
handleEnumNoWithClause()
handleImplements(null, 0)
handleEnumHeader(enum, {)
beginMetadataStar(v)
endMetadataStar(0)
handleIdentifier(v, enumValueDeclaration)
handleNoTypeNameInConstructorReference(<)
beginConstructorReference(v)
beginTypeArguments(<)
handleIdentifier(int, typeReference)
handleNoTypeArguments(>)
handleType(int, null)
endTypeArguments(1, <, >)
handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ';'., Try inserting an identifier before ';'., {lexeme: ;}], ;, ;)
handleIdentifier(, constructorReferenceContinuationAfterTypeArguments)
endConstructorReference(v, ., ;, ConstructorReferenceContext.Const)
handleRecoverableError(Message[ExpectedAfterButGot, Expected '(' after this., null, {string: (}], ;, ;)
beginArguments(()
endArguments(0, (, ))
handleEnumElement({)
handleEnumElements(;, 1)
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleIdentifier(foo, methodDeclarationContinuation)
handleQualified(.)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
endEnum(enum, {, 2)
endTopLevelDeclaration()
endCompilationUnit(1, )

View file

@ -0,0 +1,125 @@
parseUnit(enum)
skipErrorTokens(enum)
listener: beginCompilationUnit(enum)
syntheticPreviousToken(enum)
parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
parseMetadataStar()
listener: beginMetadataStar(enum)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(, enum, null, Instance of 'DirectiveContext')
parseEnum(enum)
listener: beginUncategorizedTopLevelDeclaration(enum)
ensureIdentifier(enum, enumDeclaration)
listener: handleIdentifier(E, enumDeclaration)
listener: beginEnum(enum)
parseEnumHeaderOpt(E, enum)
listener: beginTypeVariables(<)
listener: beginMetadataStar(F)
listener: endMetadataStar(0)
listener: handleIdentifier(F, typeVariableDeclaration)
listener: beginTypeVariable(F)
listener: handleTypeVariablesDefined(F, 1)
listener: handleNoType(F)
listener: endTypeVariable(>, 0, null, null)
listener: endTypeVariables(<, >)
parseEnumWithClauseOpt(>)
listener: handleEnumNoWithClause()
parseClassOrMixinOrEnumImplementsOpt(>)
listener: handleImplements(null, 0)
listener: handleEnumHeader(enum, {)
parseEnumElement({)
parseMetadataStar({)
listener: beginMetadataStar(v)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
listener: handleNoTypeNameInConstructorReference(<)
listener: beginConstructorReference(v)
listener: beginTypeArguments(<)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(>)
listener: handleType(int, null)
listener: endTypeArguments(1, <, >)
ensureIdentifier(., constructorReferenceContinuationAfterTypeArguments)
insertSyntheticIdentifier(., constructorReferenceContinuationAfterTypeArguments, message: Message[ExpectedIdentifier, Expected an identifier, but got ';'., Try inserting an identifier before ';'., {lexeme: ;}], messageOnToken: null)
reportRecoverableError(;, Message[ExpectedIdentifier, Expected an identifier, but got ';'., Try inserting an identifier before ';'., {lexeme: ;}])
listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ';'., Try inserting an identifier before ';'., {lexeme: ;}], ;, ;)
rewriter()
listener: handleIdentifier(, constructorReferenceContinuationAfterTypeArguments)
listener: endConstructorReference(v, ., ;, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments()
reportRecoverableError(, Message[ExpectedAfterButGot, Expected '(' after this., null, {string: (}])
listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected '(' after this., null, {string: (}], ;, ;)
rewriter()
parseArgumentsRest(()
listener: beginArguments(()
listener: endArguments(0, (, ))
listener: handleEnumElement({)
listener: handleEnumElements(;, 1)
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseMethodTypeVar(E)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(E, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(E, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseQualifiedRest(E, methodDeclarationContinuation)
ensureIdentifier(., methodDeclarationContinuation)
listener: handleIdentifier(foo, methodDeclarationContinuation)
listener: handleQualified(.)
parseMethodTypeVar(foo)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(foo, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(foo, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, })
listener: endEnum(enum, {, 2)
listener: endTopLevelDeclaration()
reportAllErrorTokens(enum)
listener: endCompilationUnit(1, )

View file

@ -0,0 +1,17 @@
NOTICE: Stream was rewritten by parser!
enum E<F> {
v<int>. *synthetic*();
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken]<[BeginToken]F[StringToken]>[SimpleToken] {[BeginToken]
v[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken] [SyntheticStringToken]([SyntheticBeginToken])[SyntheticToken];[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,15 @@
enum E<F> {
v<int>. ;
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken]<[BeginToken]F[StringToken]>[SimpleToken] {[BeginToken]
v[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken] ;[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,7 @@
files:
- issue_48380_1.dart
- issue_48380_1_ok.dart
filters:
- ignoreListenerArguments
ignored:
- handleRecoverableError

View file

@ -0,0 +1,7 @@
enum E<F> {
v1<int>./*about to write foo()*/,
v2<int>.foo();
const E();
const E.foo();
}

View file

@ -0,0 +1,94 @@
Problems reported:
parser/error_recovery/issue_48380_1_comma:2:35: Expected an identifier, but got ','.
v1<int>./*about to write foo()*/,
^
parser/error_recovery/issue_48380_1_comma:2:35: Expected '(' after this.
v1<int>./*about to write foo()*/,
^
beginCompilationUnit(enum)
beginMetadataStar(enum)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(enum)
handleIdentifier(E, enumDeclaration)
beginEnum(enum)
beginTypeVariables(<)
beginMetadataStar(F)
endMetadataStar(0)
handleIdentifier(F, typeVariableDeclaration)
beginTypeVariable(F)
handleTypeVariablesDefined(F, 1)
handleNoType(F)
endTypeVariable(>, 0, null, null)
endTypeVariables(<, >)
handleEnumNoWithClause()
handleImplements(null, 0)
handleEnumHeader(enum, {)
beginMetadataStar(v1)
endMetadataStar(0)
handleIdentifier(v1, enumValueDeclaration)
handleNoTypeNameInConstructorReference(<)
beginConstructorReference(v1)
beginTypeArguments(<)
handleIdentifier(int, typeReference)
handleNoTypeArguments(>)
handleType(int, null)
endTypeArguments(1, <, >)
handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ','., Try inserting an identifier before ','., {lexeme: ,}], ,, ,)
handleIdentifier(, constructorReferenceContinuationAfterTypeArguments)
endConstructorReference(v1, ., ,, ConstructorReferenceContext.Const)
handleRecoverableError(Message[ExpectedAfterButGot, Expected '(' after this., null, {string: (}], ,, ,)
beginArguments(()
endArguments(0, (, ))
handleEnumElement({)
beginMetadataStar(v2)
endMetadataStar(0)
handleIdentifier(v2, enumValueDeclaration)
handleNoTypeNameInConstructorReference(<)
beginConstructorReference(v2)
beginTypeArguments(<)
handleIdentifier(int, typeReference)
handleNoTypeArguments(>)
handleType(int, null)
endTypeArguments(1, <, >)
handleIdentifier(foo, constructorReferenceContinuationAfterTypeArguments)
endConstructorReference(v2, ., (, ConstructorReferenceContext.Const)
beginArguments(()
endArguments(0, (, ))
handleEnumElement(,)
handleEnumElements(;, 2)
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleIdentifier(foo, methodDeclarationContinuation)
handleQualified(.)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
endEnum(enum, {, 2)
endTopLevelDeclaration()
endCompilationUnit(1, )

View file

@ -0,0 +1,146 @@
parseUnit(enum)
skipErrorTokens(enum)
listener: beginCompilationUnit(enum)
syntheticPreviousToken(enum)
parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
parseMetadataStar()
listener: beginMetadataStar(enum)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(, enum, null, Instance of 'DirectiveContext')
parseEnum(enum)
listener: beginUncategorizedTopLevelDeclaration(enum)
ensureIdentifier(enum, enumDeclaration)
listener: handleIdentifier(E, enumDeclaration)
listener: beginEnum(enum)
parseEnumHeaderOpt(E, enum)
listener: beginTypeVariables(<)
listener: beginMetadataStar(F)
listener: endMetadataStar(0)
listener: handleIdentifier(F, typeVariableDeclaration)
listener: beginTypeVariable(F)
listener: handleTypeVariablesDefined(F, 1)
listener: handleNoType(F)
listener: endTypeVariable(>, 0, null, null)
listener: endTypeVariables(<, >)
parseEnumWithClauseOpt(>)
listener: handleEnumNoWithClause()
parseClassOrMixinOrEnumImplementsOpt(>)
listener: handleImplements(null, 0)
listener: handleEnumHeader(enum, {)
parseEnumElement({)
parseMetadataStar({)
listener: beginMetadataStar(v1)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v1, enumValueDeclaration)
listener: handleNoTypeNameInConstructorReference(<)
listener: beginConstructorReference(v1)
listener: beginTypeArguments(<)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(>)
listener: handleType(int, null)
listener: endTypeArguments(1, <, >)
ensureIdentifier(., constructorReferenceContinuationAfterTypeArguments)
insertSyntheticIdentifier(., constructorReferenceContinuationAfterTypeArguments, message: Message[ExpectedIdentifier, Expected an identifier, but got ','., Try inserting an identifier before ','., {lexeme: ,}], messageOnToken: null)
reportRecoverableError(,, Message[ExpectedIdentifier, Expected an identifier, but got ','., Try inserting an identifier before ','., {lexeme: ,}])
listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ','., Try inserting an identifier before ','., {lexeme: ,}], ,, ,)
rewriter()
listener: handleIdentifier(, constructorReferenceContinuationAfterTypeArguments)
listener: endConstructorReference(v1, ., ,, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments()
reportRecoverableError(, Message[ExpectedAfterButGot, Expected '(' after this., null, {string: (}])
listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected '(' after this., null, {string: (}], ,, ,)
rewriter()
parseArgumentsRest(()
listener: beginArguments(()
listener: endArguments(0, (, ))
listener: handleEnumElement({)
parseEnumElement(,)
parseMetadataStar(,)
listener: beginMetadataStar(v2)
listener: endMetadataStar(0)
ensureIdentifier(,, enumValueDeclaration)
listener: handleIdentifier(v2, enumValueDeclaration)
listener: handleNoTypeNameInConstructorReference(<)
listener: beginConstructorReference(v2)
listener: beginTypeArguments(<)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(>)
listener: handleType(int, null)
listener: endTypeArguments(1, <, >)
ensureIdentifier(., constructorReferenceContinuationAfterTypeArguments)
listener: handleIdentifier(foo, constructorReferenceContinuationAfterTypeArguments)
listener: endConstructorReference(v2, ., (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(foo)
parseArgumentsRest(()
listener: beginArguments(()
listener: endArguments(0, (, ))
listener: handleEnumElement(,)
listener: handleEnumElements(;, 2)
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseMethodTypeVar(E)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(E, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(E, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseQualifiedRest(E, methodDeclarationContinuation)
ensureIdentifier(., methodDeclarationContinuation)
listener: handleIdentifier(foo, methodDeclarationContinuation)
listener: handleQualified(.)
parseMethodTypeVar(foo)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(foo, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(foo, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, })
listener: endEnum(enum, {, 2)
listener: endTopLevelDeclaration()
reportAllErrorTokens(enum)
listener: endCompilationUnit(1, )

View file

@ -0,0 +1,19 @@
NOTICE: Stream was rewritten by parser!
enum E<F> {
v1<int>. *synthetic*(),
v2<int>.foo();
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken]<[BeginToken]F[StringToken]>[SimpleToken] {[BeginToken]
v1[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken] [SyntheticStringToken]([SyntheticBeginToken])[SyntheticToken],[SimpleToken]
v2[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,17 @@
enum E<F> {
v1<int>. ,
v2<int>.foo();
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken]<[BeginToken]F[StringToken]>[SimpleToken] {[BeginToken]
v1[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken] ,[SimpleToken]
v2[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,7 @@
files:
- issue_48380_1_comma.dart
- issue_48380_1_comma_ok.dart
filters:
- ignoreListenerArguments
ignored:
- handleRecoverableError

View file

@ -0,0 +1,7 @@
enum E<F> {
v1<int>.foo(),
v2<int>.foo();
const E();
const E.foo();
}

View file

@ -0,0 +1,82 @@
beginCompilationUnit(enum)
beginMetadataStar(enum)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(enum)
handleIdentifier(E, enumDeclaration)
beginEnum(enum)
beginTypeVariables(<)
beginMetadataStar(F)
endMetadataStar(0)
handleIdentifier(F, typeVariableDeclaration)
beginTypeVariable(F)
handleTypeVariablesDefined(F, 1)
handleNoType(F)
endTypeVariable(>, 0, null, null)
endTypeVariables(<, >)
handleEnumNoWithClause()
handleImplements(null, 0)
handleEnumHeader(enum, {)
beginMetadataStar(v1)
endMetadataStar(0)
handleIdentifier(v1, enumValueDeclaration)
handleNoTypeNameInConstructorReference(<)
beginConstructorReference(v1)
beginTypeArguments(<)
handleIdentifier(int, typeReference)
handleNoTypeArguments(>)
handleType(int, null)
endTypeArguments(1, <, >)
handleIdentifier(foo, constructorReferenceContinuationAfterTypeArguments)
endConstructorReference(v1, ., (, ConstructorReferenceContext.Const)
beginArguments(()
endArguments(0, (, ))
handleEnumElement({)
beginMetadataStar(v2)
endMetadataStar(0)
handleIdentifier(v2, enumValueDeclaration)
handleNoTypeNameInConstructorReference(<)
beginConstructorReference(v2)
beginTypeArguments(<)
handleIdentifier(int, typeReference)
handleNoTypeArguments(>)
handleType(int, null)
endTypeArguments(1, <, >)
handleIdentifier(foo, constructorReferenceContinuationAfterTypeArguments)
endConstructorReference(v2, ., (, ConstructorReferenceContext.Const)
beginArguments(()
endArguments(0, (, ))
handleEnumElement(,)
handleEnumElements(;, 2)
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleIdentifier(foo, methodDeclarationContinuation)
handleQualified(.)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
endEnum(enum, {, 2)
endTopLevelDeclaration()
endCompilationUnit(1, )

View file

@ -0,0 +1,139 @@
parseUnit(enum)
skipErrorTokens(enum)
listener: beginCompilationUnit(enum)
syntheticPreviousToken(enum)
parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
parseMetadataStar()
listener: beginMetadataStar(enum)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(, enum, null, Instance of 'DirectiveContext')
parseEnum(enum)
listener: beginUncategorizedTopLevelDeclaration(enum)
ensureIdentifier(enum, enumDeclaration)
listener: handleIdentifier(E, enumDeclaration)
listener: beginEnum(enum)
parseEnumHeaderOpt(E, enum)
listener: beginTypeVariables(<)
listener: beginMetadataStar(F)
listener: endMetadataStar(0)
listener: handleIdentifier(F, typeVariableDeclaration)
listener: beginTypeVariable(F)
listener: handleTypeVariablesDefined(F, 1)
listener: handleNoType(F)
listener: endTypeVariable(>, 0, null, null)
listener: endTypeVariables(<, >)
parseEnumWithClauseOpt(>)
listener: handleEnumNoWithClause()
parseClassOrMixinOrEnumImplementsOpt(>)
listener: handleImplements(null, 0)
listener: handleEnumHeader(enum, {)
parseEnumElement({)
parseMetadataStar({)
listener: beginMetadataStar(v1)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v1, enumValueDeclaration)
listener: handleNoTypeNameInConstructorReference(<)
listener: beginConstructorReference(v1)
listener: beginTypeArguments(<)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(>)
listener: handleType(int, null)
listener: endTypeArguments(1, <, >)
ensureIdentifier(., constructorReferenceContinuationAfterTypeArguments)
listener: handleIdentifier(foo, constructorReferenceContinuationAfterTypeArguments)
listener: endConstructorReference(v1, ., (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(foo)
parseArgumentsRest(()
listener: beginArguments(()
listener: endArguments(0, (, ))
listener: handleEnumElement({)
parseEnumElement(,)
parseMetadataStar(,)
listener: beginMetadataStar(v2)
listener: endMetadataStar(0)
ensureIdentifier(,, enumValueDeclaration)
listener: handleIdentifier(v2, enumValueDeclaration)
listener: handleNoTypeNameInConstructorReference(<)
listener: beginConstructorReference(v2)
listener: beginTypeArguments(<)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(>)
listener: handleType(int, null)
listener: endTypeArguments(1, <, >)
ensureIdentifier(., constructorReferenceContinuationAfterTypeArguments)
listener: handleIdentifier(foo, constructorReferenceContinuationAfterTypeArguments)
listener: endConstructorReference(v2, ., (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(foo)
parseArgumentsRest(()
listener: beginArguments(()
listener: endArguments(0, (, ))
listener: handleEnumElement(,)
listener: handleEnumElements(;, 2)
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseMethodTypeVar(E)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(E, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(E, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseQualifiedRest(E, methodDeclarationContinuation)
ensureIdentifier(., methodDeclarationContinuation)
listener: handleIdentifier(foo, methodDeclarationContinuation)
listener: handleQualified(.)
parseMethodTypeVar(foo)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(foo, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(foo, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, })
listener: endEnum(enum, {, 2)
listener: endTopLevelDeclaration()
reportAllErrorTokens(enum)
listener: endCompilationUnit(1, )

View file

@ -0,0 +1,17 @@
enum E<F> {
v1<int>.foo(),
v2<int>.foo();
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken]<[BeginToken]F[StringToken]>[SimpleToken] {[BeginToken]
v1[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
v2[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,17 @@
enum E<F> {
v1<int>.foo(),
v2<int>.foo();
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken]<[BeginToken]F[StringToken]>[SimpleToken] {[BeginToken]
v1[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
v2[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,6 @@
enum E<F> {
v<int>.foo();
const E();
const E.foo();
}

View file

@ -0,0 +1,67 @@
beginCompilationUnit(enum)
beginMetadataStar(enum)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(enum)
handleIdentifier(E, enumDeclaration)
beginEnum(enum)
beginTypeVariables(<)
beginMetadataStar(F)
endMetadataStar(0)
handleIdentifier(F, typeVariableDeclaration)
beginTypeVariable(F)
handleTypeVariablesDefined(F, 1)
handleNoType(F)
endTypeVariable(>, 0, null, null)
endTypeVariables(<, >)
handleEnumNoWithClause()
handleImplements(null, 0)
handleEnumHeader(enum, {)
beginMetadataStar(v)
endMetadataStar(0)
handleIdentifier(v, enumValueDeclaration)
handleNoTypeNameInConstructorReference(<)
beginConstructorReference(v)
beginTypeArguments(<)
handleIdentifier(int, typeReference)
handleNoTypeArguments(>)
handleType(int, null)
endTypeArguments(1, <, >)
handleIdentifier(foo, constructorReferenceContinuationAfterTypeArguments)
endConstructorReference(v, ., (, ConstructorReferenceContext.Const)
beginArguments(()
endArguments(0, (, ))
handleEnumElement({)
handleEnumElements(;, 1)
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleIdentifier(foo, methodDeclarationContinuation)
handleQualified(.)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
endEnum(enum, {, 2)
endTopLevelDeclaration()
endCompilationUnit(1, )

View file

@ -0,0 +1,118 @@
parseUnit(enum)
skipErrorTokens(enum)
listener: beginCompilationUnit(enum)
syntheticPreviousToken(enum)
parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
parseMetadataStar()
listener: beginMetadataStar(enum)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(, enum, null, Instance of 'DirectiveContext')
parseEnum(enum)
listener: beginUncategorizedTopLevelDeclaration(enum)
ensureIdentifier(enum, enumDeclaration)
listener: handleIdentifier(E, enumDeclaration)
listener: beginEnum(enum)
parseEnumHeaderOpt(E, enum)
listener: beginTypeVariables(<)
listener: beginMetadataStar(F)
listener: endMetadataStar(0)
listener: handleIdentifier(F, typeVariableDeclaration)
listener: beginTypeVariable(F)
listener: handleTypeVariablesDefined(F, 1)
listener: handleNoType(F)
listener: endTypeVariable(>, 0, null, null)
listener: endTypeVariables(<, >)
parseEnumWithClauseOpt(>)
listener: handleEnumNoWithClause()
parseClassOrMixinOrEnumImplementsOpt(>)
listener: handleImplements(null, 0)
listener: handleEnumHeader(enum, {)
parseEnumElement({)
parseMetadataStar({)
listener: beginMetadataStar(v)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
listener: handleNoTypeNameInConstructorReference(<)
listener: beginConstructorReference(v)
listener: beginTypeArguments(<)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(>)
listener: handleType(int, null)
listener: endTypeArguments(1, <, >)
ensureIdentifier(., constructorReferenceContinuationAfterTypeArguments)
listener: handleIdentifier(foo, constructorReferenceContinuationAfterTypeArguments)
listener: endConstructorReference(v, ., (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(foo)
parseArgumentsRest(()
listener: beginArguments(()
listener: endArguments(0, (, ))
listener: handleEnumElement({)
listener: handleEnumElements(;, 1)
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseMethodTypeVar(E)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(E, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(E, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseQualifiedRest(E, methodDeclarationContinuation)
ensureIdentifier(., methodDeclarationContinuation)
listener: handleIdentifier(foo, methodDeclarationContinuation)
listener: handleQualified(.)
parseMethodTypeVar(foo)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(foo, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(foo, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, })
listener: endEnum(enum, {, 2)
listener: endTopLevelDeclaration()
reportAllErrorTokens(enum)
listener: endCompilationUnit(1, )

View file

@ -0,0 +1,15 @@
enum E<F> {
v<int>.foo();
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken]<[BeginToken]F[StringToken]>[SimpleToken] {[BeginToken]
v[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,15 @@
enum E<F> {
v<int>.foo();
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken]<[BeginToken]F[StringToken]>[SimpleToken] {[BeginToken]
v[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,6 @@
enum E<F> {
v<int>/*about to write () or .foo()*/;
const E();
const E.foo();
}

View file

@ -0,0 +1,74 @@
Problems reported:
parser/error_recovery/issue_48380_2:2:8: Expected '(' after this.
v<int>/*about to write () or .foo()*/;
^
beginCompilationUnit(enum)
beginMetadataStar(enum)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(enum)
handleIdentifier(E, enumDeclaration)
beginEnum(enum)
beginTypeVariables(<)
beginMetadataStar(F)
endMetadataStar(0)
handleIdentifier(F, typeVariableDeclaration)
beginTypeVariable(F)
handleTypeVariablesDefined(F, 1)
handleNoType(F)
endTypeVariable(>, 0, null, null)
endTypeVariables(<, >)
handleEnumNoWithClause()
handleImplements(null, 0)
handleEnumHeader(enum, {)
beginMetadataStar(v)
endMetadataStar(0)
handleIdentifier(v, enumValueDeclaration)
handleNoTypeNameInConstructorReference(<)
beginConstructorReference(v)
beginTypeArguments(<)
handleIdentifier(int, typeReference)
handleNoTypeArguments(>)
handleType(int, null)
endTypeArguments(1, <, >)
handleNoConstructorReferenceContinuationAfterTypeArguments(;)
endConstructorReference(v, null, ;, ConstructorReferenceContext.Const)
handleRecoverableError(Message[ExpectedAfterButGot, Expected '(' after this., null, {string: (}], >, >)
beginArguments(()
endArguments(0, (, ))
handleEnumElement({)
handleEnumElements(;, 1)
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleIdentifier(foo, methodDeclarationContinuation)
handleQualified(.)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
endEnum(enum, {, 2)
endTopLevelDeclaration()
endCompilationUnit(1, )

View file

@ -0,0 +1,120 @@
parseUnit(enum)
skipErrorTokens(enum)
listener: beginCompilationUnit(enum)
syntheticPreviousToken(enum)
parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
parseMetadataStar()
listener: beginMetadataStar(enum)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(, enum, null, Instance of 'DirectiveContext')
parseEnum(enum)
listener: beginUncategorizedTopLevelDeclaration(enum)
ensureIdentifier(enum, enumDeclaration)
listener: handleIdentifier(E, enumDeclaration)
listener: beginEnum(enum)
parseEnumHeaderOpt(E, enum)
listener: beginTypeVariables(<)
listener: beginMetadataStar(F)
listener: endMetadataStar(0)
listener: handleIdentifier(F, typeVariableDeclaration)
listener: beginTypeVariable(F)
listener: handleTypeVariablesDefined(F, 1)
listener: handleNoType(F)
listener: endTypeVariable(>, 0, null, null)
listener: endTypeVariables(<, >)
parseEnumWithClauseOpt(>)
listener: handleEnumNoWithClause()
parseClassOrMixinOrEnumImplementsOpt(>)
listener: handleImplements(null, 0)
listener: handleEnumHeader(enum, {)
parseEnumElement({)
parseMetadataStar({)
listener: beginMetadataStar(v)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
listener: handleNoTypeNameInConstructorReference(<)
listener: beginConstructorReference(v)
listener: beginTypeArguments(<)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(>)
listener: handleType(int, null)
listener: endTypeArguments(1, <, >)
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(;)
listener: endConstructorReference(v, null, ;, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(>)
reportRecoverableError(>, Message[ExpectedAfterButGot, Expected '(' after this., null, {string: (}])
listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected '(' after this., null, {string: (}], >, >)
rewriter()
parseArgumentsRest(()
listener: beginArguments(()
listener: endArguments(0, (, ))
listener: handleEnumElement({)
listener: handleEnumElements(;, 1)
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseMethodTypeVar(E)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(E, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(E, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseQualifiedRest(E, methodDeclarationContinuation)
ensureIdentifier(., methodDeclarationContinuation)
listener: handleIdentifier(foo, methodDeclarationContinuation)
listener: handleQualified(.)
parseMethodTypeVar(foo)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(foo, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(foo, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, })
listener: endEnum(enum, {, 2)
listener: endTopLevelDeclaration()
reportAllErrorTokens(enum)
listener: endCompilationUnit(1, )

View file

@ -0,0 +1,17 @@
NOTICE: Stream was rewritten by parser!
enum E<F> {
v<int> ();
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken]<[BeginToken]F[StringToken]>[SimpleToken] {[BeginToken]
v[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] ([SyntheticBeginToken])[SyntheticToken];[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,15 @@
enum E<F> {
v<int> ;
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken]<[BeginToken]F[StringToken]>[SimpleToken] {[BeginToken]
v[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] ;[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,7 @@
files:
- issue_48380_2.dart
- issue_48380_2_ok.dart
filters:
- ignoreListenerArguments
ignored:
- handleRecoverableError

View file

@ -0,0 +1,7 @@
enum E<F> {
v<int>/*about to write () or .foo()*/,
v<int>.foo();
const E();
const E.foo();
}

View file

@ -0,0 +1,89 @@
Problems reported:
parser/error_recovery/issue_48380_2_comma:2:8: Expected '(' after this.
v<int>/*about to write () or .foo()*/,
^
beginCompilationUnit(enum)
beginMetadataStar(enum)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(enum)
handleIdentifier(E, enumDeclaration)
beginEnum(enum)
beginTypeVariables(<)
beginMetadataStar(F)
endMetadataStar(0)
handleIdentifier(F, typeVariableDeclaration)
beginTypeVariable(F)
handleTypeVariablesDefined(F, 1)
handleNoType(F)
endTypeVariable(>, 0, null, null)
endTypeVariables(<, >)
handleEnumNoWithClause()
handleImplements(null, 0)
handleEnumHeader(enum, {)
beginMetadataStar(v)
endMetadataStar(0)
handleIdentifier(v, enumValueDeclaration)
handleNoTypeNameInConstructorReference(<)
beginConstructorReference(v)
beginTypeArguments(<)
handleIdentifier(int, typeReference)
handleNoTypeArguments(>)
handleType(int, null)
endTypeArguments(1, <, >)
handleNoConstructorReferenceContinuationAfterTypeArguments(,)
endConstructorReference(v, null, ,, ConstructorReferenceContext.Const)
handleRecoverableError(Message[ExpectedAfterButGot, Expected '(' after this., null, {string: (}], >, >)
beginArguments(()
endArguments(0, (, ))
handleEnumElement({)
beginMetadataStar(v)
endMetadataStar(0)
handleIdentifier(v, enumValueDeclaration)
handleNoTypeNameInConstructorReference(<)
beginConstructorReference(v)
beginTypeArguments(<)
handleIdentifier(int, typeReference)
handleNoTypeArguments(>)
handleType(int, null)
endTypeArguments(1, <, >)
handleIdentifier(foo, constructorReferenceContinuationAfterTypeArguments)
endConstructorReference(v, ., (, ConstructorReferenceContext.Const)
beginArguments(()
endArguments(0, (, ))
handleEnumElement(,)
handleEnumElements(;, 2)
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleIdentifier(foo, methodDeclarationContinuation)
handleQualified(.)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
endEnum(enum, {, 2)
endTopLevelDeclaration()
endCompilationUnit(1, )

View file

@ -0,0 +1,141 @@
parseUnit(enum)
skipErrorTokens(enum)
listener: beginCompilationUnit(enum)
syntheticPreviousToken(enum)
parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
parseMetadataStar()
listener: beginMetadataStar(enum)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(, enum, null, Instance of 'DirectiveContext')
parseEnum(enum)
listener: beginUncategorizedTopLevelDeclaration(enum)
ensureIdentifier(enum, enumDeclaration)
listener: handleIdentifier(E, enumDeclaration)
listener: beginEnum(enum)
parseEnumHeaderOpt(E, enum)
listener: beginTypeVariables(<)
listener: beginMetadataStar(F)
listener: endMetadataStar(0)
listener: handleIdentifier(F, typeVariableDeclaration)
listener: beginTypeVariable(F)
listener: handleTypeVariablesDefined(F, 1)
listener: handleNoType(F)
listener: endTypeVariable(>, 0, null, null)
listener: endTypeVariables(<, >)
parseEnumWithClauseOpt(>)
listener: handleEnumNoWithClause()
parseClassOrMixinOrEnumImplementsOpt(>)
listener: handleImplements(null, 0)
listener: handleEnumHeader(enum, {)
parseEnumElement({)
parseMetadataStar({)
listener: beginMetadataStar(v)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
listener: handleNoTypeNameInConstructorReference(<)
listener: beginConstructorReference(v)
listener: beginTypeArguments(<)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(>)
listener: handleType(int, null)
listener: endTypeArguments(1, <, >)
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(,)
listener: endConstructorReference(v, null, ,, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(>)
reportRecoverableError(>, Message[ExpectedAfterButGot, Expected '(' after this., null, {string: (}])
listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected '(' after this., null, {string: (}], >, >)
rewriter()
parseArgumentsRest(()
listener: beginArguments(()
listener: endArguments(0, (, ))
listener: handleEnumElement({)
parseEnumElement(,)
parseMetadataStar(,)
listener: beginMetadataStar(v)
listener: endMetadataStar(0)
ensureIdentifier(,, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
listener: handleNoTypeNameInConstructorReference(<)
listener: beginConstructorReference(v)
listener: beginTypeArguments(<)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(>)
listener: handleType(int, null)
listener: endTypeArguments(1, <, >)
ensureIdentifier(., constructorReferenceContinuationAfterTypeArguments)
listener: handleIdentifier(foo, constructorReferenceContinuationAfterTypeArguments)
listener: endConstructorReference(v, ., (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(foo)
parseArgumentsRest(()
listener: beginArguments(()
listener: endArguments(0, (, ))
listener: handleEnumElement(,)
listener: handleEnumElements(;, 2)
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseMethodTypeVar(E)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(E, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(E, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseQualifiedRest(E, methodDeclarationContinuation)
ensureIdentifier(., methodDeclarationContinuation)
listener: handleIdentifier(foo, methodDeclarationContinuation)
listener: handleQualified(.)
parseMethodTypeVar(foo)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(foo, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(foo, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, })
listener: endEnum(enum, {, 2)
listener: endTopLevelDeclaration()
reportAllErrorTokens(enum)
listener: endCompilationUnit(1, )

View file

@ -0,0 +1,19 @@
NOTICE: Stream was rewritten by parser!
enum E<F> {
v<int> (),
v<int>.foo();
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken]<[BeginToken]F[StringToken]>[SimpleToken] {[BeginToken]
v[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] ([SyntheticBeginToken])[SyntheticToken],[SimpleToken]
v[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,17 @@
enum E<F> {
v<int> ,
v<int>.foo();
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken]<[BeginToken]F[StringToken]>[SimpleToken] {[BeginToken]
v[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] ,[SimpleToken]
v[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,7 @@
files:
- issue_48380_2_comma.dart
- issue_48380_2_comma_ok.dart
filters:
- ignoreListenerArguments
ignored:
- handleRecoverableError

View file

@ -0,0 +1,7 @@
enum E<F> {
v<int>(),
v<int>.foo();
const E();
const E.foo();
}

View file

@ -0,0 +1,82 @@
beginCompilationUnit(enum)
beginMetadataStar(enum)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(enum)
handleIdentifier(E, enumDeclaration)
beginEnum(enum)
beginTypeVariables(<)
beginMetadataStar(F)
endMetadataStar(0)
handleIdentifier(F, typeVariableDeclaration)
beginTypeVariable(F)
handleTypeVariablesDefined(F, 1)
handleNoType(F)
endTypeVariable(>, 0, null, null)
endTypeVariables(<, >)
handleEnumNoWithClause()
handleImplements(null, 0)
handleEnumHeader(enum, {)
beginMetadataStar(v)
endMetadataStar(0)
handleIdentifier(v, enumValueDeclaration)
handleNoTypeNameInConstructorReference(<)
beginConstructorReference(v)
beginTypeArguments(<)
handleIdentifier(int, typeReference)
handleNoTypeArguments(>)
handleType(int, null)
endTypeArguments(1, <, >)
handleNoConstructorReferenceContinuationAfterTypeArguments(()
endConstructorReference(v, null, (, ConstructorReferenceContext.Const)
beginArguments(()
endArguments(0, (, ))
handleEnumElement({)
beginMetadataStar(v)
endMetadataStar(0)
handleIdentifier(v, enumValueDeclaration)
handleNoTypeNameInConstructorReference(<)
beginConstructorReference(v)
beginTypeArguments(<)
handleIdentifier(int, typeReference)
handleNoTypeArguments(>)
handleType(int, null)
endTypeArguments(1, <, >)
handleIdentifier(foo, constructorReferenceContinuationAfterTypeArguments)
endConstructorReference(v, ., (, ConstructorReferenceContext.Const)
beginArguments(()
endArguments(0, (, ))
handleEnumElement(,)
handleEnumElements(;, 2)
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleIdentifier(foo, methodDeclarationContinuation)
handleQualified(.)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
endEnum(enum, {, 2)
endTopLevelDeclaration()
endCompilationUnit(1, )

View file

@ -0,0 +1,138 @@
parseUnit(enum)
skipErrorTokens(enum)
listener: beginCompilationUnit(enum)
syntheticPreviousToken(enum)
parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
parseMetadataStar()
listener: beginMetadataStar(enum)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(, enum, null, Instance of 'DirectiveContext')
parseEnum(enum)
listener: beginUncategorizedTopLevelDeclaration(enum)
ensureIdentifier(enum, enumDeclaration)
listener: handleIdentifier(E, enumDeclaration)
listener: beginEnum(enum)
parseEnumHeaderOpt(E, enum)
listener: beginTypeVariables(<)
listener: beginMetadataStar(F)
listener: endMetadataStar(0)
listener: handleIdentifier(F, typeVariableDeclaration)
listener: beginTypeVariable(F)
listener: handleTypeVariablesDefined(F, 1)
listener: handleNoType(F)
listener: endTypeVariable(>, 0, null, null)
listener: endTypeVariables(<, >)
parseEnumWithClauseOpt(>)
listener: handleEnumNoWithClause()
parseClassOrMixinOrEnumImplementsOpt(>)
listener: handleImplements(null, 0)
listener: handleEnumHeader(enum, {)
parseEnumElement({)
parseMetadataStar({)
listener: beginMetadataStar(v)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
listener: handleNoTypeNameInConstructorReference(<)
listener: beginConstructorReference(v)
listener: beginTypeArguments(<)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(>)
listener: handleType(int, null)
listener: endTypeArguments(1, <, >)
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
listener: endConstructorReference(v, null, (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(>)
parseArgumentsRest(()
listener: beginArguments(()
listener: endArguments(0, (, ))
listener: handleEnumElement({)
parseEnumElement(,)
parseMetadataStar(,)
listener: beginMetadataStar(v)
listener: endMetadataStar(0)
ensureIdentifier(,, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
listener: handleNoTypeNameInConstructorReference(<)
listener: beginConstructorReference(v)
listener: beginTypeArguments(<)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(>)
listener: handleType(int, null)
listener: endTypeArguments(1, <, >)
ensureIdentifier(., constructorReferenceContinuationAfterTypeArguments)
listener: handleIdentifier(foo, constructorReferenceContinuationAfterTypeArguments)
listener: endConstructorReference(v, ., (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(foo)
parseArgumentsRest(()
listener: beginArguments(()
listener: endArguments(0, (, ))
listener: handleEnumElement(,)
listener: handleEnumElements(;, 2)
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseMethodTypeVar(E)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(E, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(E, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseQualifiedRest(E, methodDeclarationContinuation)
ensureIdentifier(., methodDeclarationContinuation)
listener: handleIdentifier(foo, methodDeclarationContinuation)
listener: handleQualified(.)
parseMethodTypeVar(foo)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(foo, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(foo, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, })
listener: endEnum(enum, {, 2)
listener: endTopLevelDeclaration()
reportAllErrorTokens(enum)
listener: endCompilationUnit(1, )

View file

@ -0,0 +1,17 @@
enum E<F> {
v<int>(),
v<int>.foo();
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken]<[BeginToken]F[StringToken]>[SimpleToken] {[BeginToken]
v[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken])[SimpleToken],[SimpleToken]
v[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,17 @@
enum E<F> {
v<int>(),
v<int>.foo();
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken]<[BeginToken]F[StringToken]>[SimpleToken] {[BeginToken]
v[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken])[SimpleToken],[SimpleToken]
v[StringToken]<[BeginToken]int[StringToken]>[SimpleToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,6 @@
enum E<F> {
v<int>();
const E();
const E.foo();
}

View file

@ -0,0 +1,67 @@
beginCompilationUnit(enum)
beginMetadataStar(enum)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(enum)
handleIdentifier(E, enumDeclaration)
beginEnum(enum)
beginTypeVariables(<)
beginMetadataStar(F)
endMetadataStar(0)
handleIdentifier(F, typeVariableDeclaration)
beginTypeVariable(F)
handleTypeVariablesDefined(F, 1)
handleNoType(F)
endTypeVariable(>, 0, null, null)
endTypeVariables(<, >)
handleEnumNoWithClause()
handleImplements(null, 0)
handleEnumHeader(enum, {)
beginMetadataStar(v)
endMetadataStar(0)
handleIdentifier(v, enumValueDeclaration)
handleNoTypeNameInConstructorReference(<)
beginConstructorReference(v)
beginTypeArguments(<)
handleIdentifier(int, typeReference)
handleNoTypeArguments(>)
handleType(int, null)
endTypeArguments(1, <, >)
handleNoConstructorReferenceContinuationAfterTypeArguments(()
endConstructorReference(v, null, (, ConstructorReferenceContext.Const)
beginArguments(()
endArguments(0, (, ))
handleEnumElement({)
handleEnumElements(;, 1)
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleIdentifier(foo, methodDeclarationContinuation)
handleQualified(.)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
endEnum(enum, {, 2)
endTopLevelDeclaration()
endCompilationUnit(1, )

View file

@ -0,0 +1,117 @@
parseUnit(enum)
skipErrorTokens(enum)
listener: beginCompilationUnit(enum)
syntheticPreviousToken(enum)
parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
parseMetadataStar()
listener: beginMetadataStar(enum)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(, enum, null, Instance of 'DirectiveContext')
parseEnum(enum)
listener: beginUncategorizedTopLevelDeclaration(enum)
ensureIdentifier(enum, enumDeclaration)
listener: handleIdentifier(E, enumDeclaration)
listener: beginEnum(enum)
parseEnumHeaderOpt(E, enum)
listener: beginTypeVariables(<)
listener: beginMetadataStar(F)
listener: endMetadataStar(0)
listener: handleIdentifier(F, typeVariableDeclaration)
listener: beginTypeVariable(F)
listener: handleTypeVariablesDefined(F, 1)
listener: handleNoType(F)
listener: endTypeVariable(>, 0, null, null)
listener: endTypeVariables(<, >)
parseEnumWithClauseOpt(>)
listener: handleEnumNoWithClause()
parseClassOrMixinOrEnumImplementsOpt(>)
listener: handleImplements(null, 0)
listener: handleEnumHeader(enum, {)
parseEnumElement({)
parseMetadataStar({)
listener: beginMetadataStar(v)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
listener: handleNoTypeNameInConstructorReference(<)
listener: beginConstructorReference(v)
listener: beginTypeArguments(<)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(>)
listener: handleType(int, null)
listener: endTypeArguments(1, <, >)
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
listener: endConstructorReference(v, null, (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(>)
parseArgumentsRest(()
listener: beginArguments(()
listener: endArguments(0, (, ))
listener: handleEnumElement({)
listener: handleEnumElements(;, 1)
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseMethodTypeVar(E)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(E, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(E, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseQualifiedRest(E, methodDeclarationContinuation)
ensureIdentifier(., methodDeclarationContinuation)
listener: handleIdentifier(foo, methodDeclarationContinuation)
listener: handleQualified(.)
parseMethodTypeVar(foo)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(foo, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(foo, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, })
listener: endEnum(enum, {, 2)
listener: endTopLevelDeclaration()
reportAllErrorTokens(enum)
listener: endCompilationUnit(1, )

View file

@ -0,0 +1,15 @@
enum E<F> {
v<int>();
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken]<[BeginToken]F[StringToken]>[SimpleToken] {[BeginToken]
v[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,15 @@
enum E<F> {
v<int>();
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken]<[BeginToken]F[StringToken]>[SimpleToken] {[BeginToken]
v[StringToken]<[BeginToken]int[StringToken]>[SimpleToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,6 @@
enum E {
v./* about to write foo()*/;
const E();
const E.foo();
}

View file

@ -0,0 +1,67 @@
Problems reported:
parser/error_recovery/issue_48380_3:2:30: Expected an identifier, but got ';'.
v./* about to write foo()*/;
^
parser/error_recovery/issue_48380_3:2:30: Expected '(' after this.
v./* about to write foo()*/;
^
beginCompilationUnit(enum)
beginMetadataStar(enum)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(enum)
handleIdentifier(E, enumDeclaration)
beginEnum(enum)
handleNoTypeVariables({)
handleEnumNoWithClause()
handleImplements(null, 0)
handleEnumHeader(enum, {)
beginMetadataStar(v)
endMetadataStar(0)
handleIdentifier(v, enumValueDeclaration)
handleNoTypeNameInConstructorReference(.)
beginConstructorReference(v)
handleNoTypeArguments(.)
handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ';'., Try inserting an identifier before ';'., {lexeme: ;}], ;, ;)
handleIdentifier(, constructorReferenceContinuationAfterTypeArguments)
endConstructorReference(v, ., ;, ConstructorReferenceContext.Const)
handleRecoverableError(Message[ExpectedAfterButGot, Expected '(' after this., null, {string: (}], ;, ;)
beginArguments(()
endArguments(0, (, ))
handleEnumElement({)
handleEnumElements(;, 1)
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleIdentifier(foo, methodDeclarationContinuation)
handleQualified(.)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
endEnum(enum, {, 2)
endTopLevelDeclaration()
endCompilationUnit(1, )

View file

@ -0,0 +1,113 @@
parseUnit(enum)
skipErrorTokens(enum)
listener: beginCompilationUnit(enum)
syntheticPreviousToken(enum)
parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
parseMetadataStar()
listener: beginMetadataStar(enum)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(, enum, null, Instance of 'DirectiveContext')
parseEnum(enum)
listener: beginUncategorizedTopLevelDeclaration(enum)
ensureIdentifier(enum, enumDeclaration)
listener: handleIdentifier(E, enumDeclaration)
listener: beginEnum(enum)
parseEnumHeaderOpt(E, enum)
listener: handleNoTypeVariables({)
parseEnumWithClauseOpt(E)
listener: handleEnumNoWithClause()
parseClassOrMixinOrEnumImplementsOpt(E)
listener: handleImplements(null, 0)
listener: handleEnumHeader(enum, {)
parseEnumElement({)
parseMetadataStar({)
listener: beginMetadataStar(v)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
listener: handleNoTypeNameInConstructorReference(.)
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(.)
ensureIdentifier(., constructorReferenceContinuationAfterTypeArguments)
insertSyntheticIdentifier(., constructorReferenceContinuationAfterTypeArguments, message: Message[ExpectedIdentifier, Expected an identifier, but got ';'., Try inserting an identifier before ';'., {lexeme: ;}], messageOnToken: null)
reportRecoverableError(;, Message[ExpectedIdentifier, Expected an identifier, but got ';'., Try inserting an identifier before ';'., {lexeme: ;}])
listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ';'., Try inserting an identifier before ';'., {lexeme: ;}], ;, ;)
rewriter()
listener: handleIdentifier(, constructorReferenceContinuationAfterTypeArguments)
listener: endConstructorReference(v, ., ;, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments()
reportRecoverableError(, Message[ExpectedAfterButGot, Expected '(' after this., null, {string: (}])
listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected '(' after this., null, {string: (}], ;, ;)
rewriter()
parseArgumentsRest(()
listener: beginArguments(()
listener: endArguments(0, (, ))
listener: handleEnumElement({)
listener: handleEnumElements(;, 1)
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseMethodTypeVar(E)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(E, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(E, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseQualifiedRest(E, methodDeclarationContinuation)
ensureIdentifier(., methodDeclarationContinuation)
listener: handleIdentifier(foo, methodDeclarationContinuation)
listener: handleQualified(.)
parseMethodTypeVar(foo)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(foo, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(foo, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, })
listener: endEnum(enum, {, 2)
listener: endTopLevelDeclaration()
reportAllErrorTokens(enum)
listener: endCompilationUnit(1, )

View file

@ -0,0 +1,17 @@
NOTICE: Stream was rewritten by parser!
enum E {
v. *synthetic*();
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken] {[BeginToken]
v[StringToken].[SimpleToken] [SyntheticStringToken]([SyntheticBeginToken])[SyntheticToken];[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,15 @@
enum E {
v. ;
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken] {[BeginToken]
v[StringToken].[SimpleToken] ;[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,7 @@
files:
- issue_48380_3.dart
- issue_48380_3_ok.dart
filters:
- ignoreListenerArguments
ignored:
- handleRecoverableError

View file

@ -0,0 +1,7 @@
enum E {
v./* about to write foo()*/,
v.foo();
const E();
const E.foo();
}

View file

@ -0,0 +1,78 @@
Problems reported:
parser/error_recovery/issue_48380_3_comma:2:30: Expected an identifier, but got ','.
v./* about to write foo()*/,
^
parser/error_recovery/issue_48380_3_comma:2:30: Expected '(' after this.
v./* about to write foo()*/,
^
beginCompilationUnit(enum)
beginMetadataStar(enum)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(enum)
handleIdentifier(E, enumDeclaration)
beginEnum(enum)
handleNoTypeVariables({)
handleEnumNoWithClause()
handleImplements(null, 0)
handleEnumHeader(enum, {)
beginMetadataStar(v)
endMetadataStar(0)
handleIdentifier(v, enumValueDeclaration)
handleNoTypeNameInConstructorReference(.)
beginConstructorReference(v)
handleNoTypeArguments(.)
handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ','., Try inserting an identifier before ','., {lexeme: ,}], ,, ,)
handleIdentifier(, constructorReferenceContinuationAfterTypeArguments)
endConstructorReference(v, ., ,, ConstructorReferenceContext.Const)
handleRecoverableError(Message[ExpectedAfterButGot, Expected '(' after this., null, {string: (}], ,, ,)
beginArguments(()
endArguments(0, (, ))
handleEnumElement({)
beginMetadataStar(v)
endMetadataStar(0)
handleIdentifier(v, enumValueDeclaration)
handleNoTypeNameInConstructorReference(.)
beginConstructorReference(v)
handleNoTypeArguments(.)
handleIdentifier(foo, constructorReferenceContinuationAfterTypeArguments)
endConstructorReference(v, ., (, ConstructorReferenceContext.Const)
beginArguments(()
endArguments(0, (, ))
handleEnumElement(,)
handleEnumElements(;, 2)
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleIdentifier(foo, methodDeclarationContinuation)
handleQualified(.)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
endEnum(enum, {, 2)
endTopLevelDeclaration()
endCompilationUnit(1, )

View file

@ -0,0 +1,130 @@
parseUnit(enum)
skipErrorTokens(enum)
listener: beginCompilationUnit(enum)
syntheticPreviousToken(enum)
parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
parseMetadataStar()
listener: beginMetadataStar(enum)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(, enum, null, Instance of 'DirectiveContext')
parseEnum(enum)
listener: beginUncategorizedTopLevelDeclaration(enum)
ensureIdentifier(enum, enumDeclaration)
listener: handleIdentifier(E, enumDeclaration)
listener: beginEnum(enum)
parseEnumHeaderOpt(E, enum)
listener: handleNoTypeVariables({)
parseEnumWithClauseOpt(E)
listener: handleEnumNoWithClause()
parseClassOrMixinOrEnumImplementsOpt(E)
listener: handleImplements(null, 0)
listener: handleEnumHeader(enum, {)
parseEnumElement({)
parseMetadataStar({)
listener: beginMetadataStar(v)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
listener: handleNoTypeNameInConstructorReference(.)
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(.)
ensureIdentifier(., constructorReferenceContinuationAfterTypeArguments)
insertSyntheticIdentifier(., constructorReferenceContinuationAfterTypeArguments, message: Message[ExpectedIdentifier, Expected an identifier, but got ','., Try inserting an identifier before ','., {lexeme: ,}], messageOnToken: null)
reportRecoverableError(,, Message[ExpectedIdentifier, Expected an identifier, but got ','., Try inserting an identifier before ','., {lexeme: ,}])
listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ','., Try inserting an identifier before ','., {lexeme: ,}], ,, ,)
rewriter()
listener: handleIdentifier(, constructorReferenceContinuationAfterTypeArguments)
listener: endConstructorReference(v, ., ,, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments()
reportRecoverableError(, Message[ExpectedAfterButGot, Expected '(' after this., null, {string: (}])
listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected '(' after this., null, {string: (}], ,, ,)
rewriter()
parseArgumentsRest(()
listener: beginArguments(()
listener: endArguments(0, (, ))
listener: handleEnumElement({)
parseEnumElement(,)
parseMetadataStar(,)
listener: beginMetadataStar(v)
listener: endMetadataStar(0)
ensureIdentifier(,, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
listener: handleNoTypeNameInConstructorReference(.)
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(.)
ensureIdentifier(., constructorReferenceContinuationAfterTypeArguments)
listener: handleIdentifier(foo, constructorReferenceContinuationAfterTypeArguments)
listener: endConstructorReference(v, ., (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(foo)
parseArgumentsRest(()
listener: beginArguments(()
listener: endArguments(0, (, ))
listener: handleEnumElement(,)
listener: handleEnumElements(;, 2)
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseMethodTypeVar(E)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(E, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(E, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseQualifiedRest(E, methodDeclarationContinuation)
ensureIdentifier(., methodDeclarationContinuation)
listener: handleIdentifier(foo, methodDeclarationContinuation)
listener: handleQualified(.)
parseMethodTypeVar(foo)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(foo, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(foo, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, })
listener: endEnum(enum, {, 2)
listener: endTopLevelDeclaration()
reportAllErrorTokens(enum)
listener: endCompilationUnit(1, )

View file

@ -0,0 +1,19 @@
NOTICE: Stream was rewritten by parser!
enum E {
v. *synthetic*(),
v.foo();
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken] {[BeginToken]
v[StringToken].[SimpleToken] [SyntheticStringToken]([SyntheticBeginToken])[SyntheticToken],[SimpleToken]
v[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,17 @@
enum E {
v. ,
v.foo();
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken] {[BeginToken]
v[StringToken].[SimpleToken] ,[SimpleToken]
v[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,7 @@
files:
- issue_48380_3_comma.dart
- issue_48380_3_comma_ok.dart
filters:
- ignoreListenerArguments
ignored:
- handleRecoverableError

View file

@ -0,0 +1,7 @@
enum E {
v.foo(),
v.foo();
const E();
const E.foo();
}

View file

@ -0,0 +1,66 @@
beginCompilationUnit(enum)
beginMetadataStar(enum)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(enum)
handleIdentifier(E, enumDeclaration)
beginEnum(enum)
handleNoTypeVariables({)
handleEnumNoWithClause()
handleImplements(null, 0)
handleEnumHeader(enum, {)
beginMetadataStar(v)
endMetadataStar(0)
handleIdentifier(v, enumValueDeclaration)
handleNoTypeNameInConstructorReference(.)
beginConstructorReference(v)
handleNoTypeArguments(.)
handleIdentifier(foo, constructorReferenceContinuationAfterTypeArguments)
endConstructorReference(v, ., (, ConstructorReferenceContext.Const)
beginArguments(()
endArguments(0, (, ))
handleEnumElement({)
beginMetadataStar(v)
endMetadataStar(0)
handleIdentifier(v, enumValueDeclaration)
handleNoTypeNameInConstructorReference(.)
beginConstructorReference(v)
handleNoTypeArguments(.)
handleIdentifier(foo, constructorReferenceContinuationAfterTypeArguments)
endConstructorReference(v, ., (, ConstructorReferenceContext.Const)
beginArguments(()
endArguments(0, (, ))
handleEnumElement(,)
handleEnumElements(;, 2)
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleIdentifier(foo, methodDeclarationContinuation)
handleQualified(.)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
endEnum(enum, {, 2)
endTopLevelDeclaration()
endCompilationUnit(1, )

View file

@ -0,0 +1,123 @@
parseUnit(enum)
skipErrorTokens(enum)
listener: beginCompilationUnit(enum)
syntheticPreviousToken(enum)
parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
parseMetadataStar()
listener: beginMetadataStar(enum)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(, enum, null, Instance of 'DirectiveContext')
parseEnum(enum)
listener: beginUncategorizedTopLevelDeclaration(enum)
ensureIdentifier(enum, enumDeclaration)
listener: handleIdentifier(E, enumDeclaration)
listener: beginEnum(enum)
parseEnumHeaderOpt(E, enum)
listener: handleNoTypeVariables({)
parseEnumWithClauseOpt(E)
listener: handleEnumNoWithClause()
parseClassOrMixinOrEnumImplementsOpt(E)
listener: handleImplements(null, 0)
listener: handleEnumHeader(enum, {)
parseEnumElement({)
parseMetadataStar({)
listener: beginMetadataStar(v)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
listener: handleNoTypeNameInConstructorReference(.)
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(.)
ensureIdentifier(., constructorReferenceContinuationAfterTypeArguments)
listener: handleIdentifier(foo, constructorReferenceContinuationAfterTypeArguments)
listener: endConstructorReference(v, ., (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(foo)
parseArgumentsRest(()
listener: beginArguments(()
listener: endArguments(0, (, ))
listener: handleEnumElement({)
parseEnumElement(,)
parseMetadataStar(,)
listener: beginMetadataStar(v)
listener: endMetadataStar(0)
ensureIdentifier(,, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
listener: handleNoTypeNameInConstructorReference(.)
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(.)
ensureIdentifier(., constructorReferenceContinuationAfterTypeArguments)
listener: handleIdentifier(foo, constructorReferenceContinuationAfterTypeArguments)
listener: endConstructorReference(v, ., (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(foo)
parseArgumentsRest(()
listener: beginArguments(()
listener: endArguments(0, (, ))
listener: handleEnumElement(,)
listener: handleEnumElements(;, 2)
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseMethodTypeVar(E)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(E, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(E, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseQualifiedRest(E, methodDeclarationContinuation)
ensureIdentifier(., methodDeclarationContinuation)
listener: handleIdentifier(foo, methodDeclarationContinuation)
listener: handleQualified(.)
parseMethodTypeVar(foo)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(foo, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(foo, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, })
listener: endEnum(enum, {, 2)
listener: endTopLevelDeclaration()
reportAllErrorTokens(enum)
listener: endCompilationUnit(1, )

View file

@ -0,0 +1,17 @@
enum E {
v.foo(),
v.foo();
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken] {[BeginToken]
v[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
v[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,17 @@
enum E {
v.foo(),
v.foo();
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken] {[BeginToken]
v[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
v[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,6 @@
enum E {
v.foo();
const E();
const E.foo();
}

View file

@ -0,0 +1,55 @@
beginCompilationUnit(enum)
beginMetadataStar(enum)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(enum)
handleIdentifier(E, enumDeclaration)
beginEnum(enum)
handleNoTypeVariables({)
handleEnumNoWithClause()
handleImplements(null, 0)
handleEnumHeader(enum, {)
beginMetadataStar(v)
endMetadataStar(0)
handleIdentifier(v, enumValueDeclaration)
handleNoTypeNameInConstructorReference(.)
beginConstructorReference(v)
handleNoTypeArguments(.)
handleIdentifier(foo, constructorReferenceContinuationAfterTypeArguments)
endConstructorReference(v, ., (, ConstructorReferenceContext.Const)
beginArguments(()
endArguments(0, (, ))
handleEnumElement({)
handleEnumElements(;, 1)
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
beginMetadataStar(const)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
handleNoType(const)
handleIdentifier(E, methodDeclaration)
handleIdentifier(foo, methodDeclarationContinuation)
handleQualified(.)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endEnumConstructor(null, const, (, null, ;)
endMember()
endEnum(enum, {, 2)
endTopLevelDeclaration()
endCompilationUnit(1, )

View file

@ -0,0 +1,106 @@
parseUnit(enum)
skipErrorTokens(enum)
listener: beginCompilationUnit(enum)
syntheticPreviousToken(enum)
parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
parseMetadataStar()
listener: beginMetadataStar(enum)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(, enum, null, Instance of 'DirectiveContext')
parseEnum(enum)
listener: beginUncategorizedTopLevelDeclaration(enum)
ensureIdentifier(enum, enumDeclaration)
listener: handleIdentifier(E, enumDeclaration)
listener: beginEnum(enum)
parseEnumHeaderOpt(E, enum)
listener: handleNoTypeVariables({)
parseEnumWithClauseOpt(E)
listener: handleEnumNoWithClause()
parseClassOrMixinOrEnumImplementsOpt(E)
listener: handleImplements(null, 0)
listener: handleEnumHeader(enum, {)
parseEnumElement({)
parseMetadataStar({)
listener: beginMetadataStar(v)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(v, enumValueDeclaration)
listener: handleNoTypeNameInConstructorReference(.)
listener: beginConstructorReference(v)
listener: handleNoTypeArguments(.)
ensureIdentifier(., constructorReferenceContinuationAfterTypeArguments)
listener: handleIdentifier(foo, constructorReferenceContinuationAfterTypeArguments)
listener: endConstructorReference(v, ., (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(foo)
parseArgumentsRest(()
listener: beginArguments(()
listener: endArguments(0, (, ))
listener: handleEnumElement({)
listener: handleEnumElements(;, 1)
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseMethodTypeVar(E)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(E, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(E, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, const)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(const)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
listener: handleNoType(const)
ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
listener: handleIdentifier(E, methodDeclaration)
parseQualifiedRestOpt(E, methodDeclarationContinuation)
parseQualifiedRest(E, methodDeclarationContinuation)
ensureIdentifier(., methodDeclarationContinuation)
listener: handleIdentifier(foo, methodDeclarationContinuation)
listener: handleQualified(.)
parseMethodTypeVar(foo)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(foo, E, false, MemberKind.NonStaticMethod)
parseFormalParameters(foo, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endEnumConstructor(null, const, (, null, ;)
listener: endMember()
notEofOrValue(}, })
listener: endEnum(enum, {, 2)
listener: endTopLevelDeclaration()
reportAllErrorTokens(enum)
listener: endCompilationUnit(1, )

View file

@ -0,0 +1,15 @@
enum E {
v.foo();
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken] {[BeginToken]
v[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,15 @@
enum E {
v.foo();
const E();
const E.foo();
}
enum[KeywordToken] E[StringToken] {[BeginToken]
v[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
const[KeywordToken] E[StringToken].[SimpleToken]foo[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,8 @@
enum E {
x;
String hello() {
print("hello");
return "hello";
}
}

View file

@ -0,0 +1,53 @@
beginCompilationUnit(enum)
beginMetadataStar(enum)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(enum)
handleIdentifier(E, enumDeclaration)
beginEnum(enum)
handleNoTypeVariables({)
handleEnumNoWithClause()
handleImplements(null, 0)
handleEnumHeader(enum, {)
beginMetadataStar(x)
endMetadataStar(0)
handleIdentifier(x, enumValueDeclaration)
handleNoTypeNameInConstructorReference(;)
beginConstructorReference(x)
handleNoTypeArguments(;)
handleNoConstructorReferenceContinuationAfterTypeArguments(;)
endConstructorReference(x, null, ;, ConstructorReferenceContext.Const)
handleNoArguments(x)
handleEnumElement({)
handleEnumElements(;, 1)
beginMetadataStar(String)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Enum, null, null, null, null, null, null, hello)
handleIdentifier(String, typeReference)
handleNoTypeArguments(hello)
handleType(String, null)
handleIdentifier(hello, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
beginBlockFunctionBody({)
handleIdentifier(print, expression)
handleNoTypeArguments(()
beginArguments(()
beginLiteralString("hello")
endLiteralString(0, ))
endArguments(1, (, ))
handleSend(print, ;)
handleExpressionStatement(;)
beginReturnStatement(return)
beginLiteralString("hello")
endLiteralString(0, ;)
endReturnStatement(true, return, ;)
endBlockFunctionBody(2, {, })
endEnumMethod(null, String, (, null, })
endMember()
endEnum(enum, {, 1)
endTopLevelDeclaration()
endCompilationUnit(1, )

View file

@ -0,0 +1,122 @@
parseUnit(enum)
skipErrorTokens(enum)
listener: beginCompilationUnit(enum)
syntheticPreviousToken(enum)
parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
parseMetadataStar()
listener: beginMetadataStar(enum)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(, enum, null, Instance of 'DirectiveContext')
parseEnum(enum)
listener: beginUncategorizedTopLevelDeclaration(enum)
ensureIdentifier(enum, enumDeclaration)
listener: handleIdentifier(E, enumDeclaration)
listener: beginEnum(enum)
parseEnumHeaderOpt(E, enum)
listener: handleNoTypeVariables({)
parseEnumWithClauseOpt(E)
listener: handleEnumNoWithClause()
parseClassOrMixinOrEnumImplementsOpt(E)
listener: handleImplements(null, 0)
listener: handleEnumHeader(enum, {)
parseEnumElement({)
parseMetadataStar({)
listener: beginMetadataStar(x)
listener: endMetadataStar(0)
ensureIdentifier({, enumValueDeclaration)
listener: handleIdentifier(x, enumValueDeclaration)
listener: handleNoTypeNameInConstructorReference(;)
listener: beginConstructorReference(x)
listener: handleNoTypeArguments(;)
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(;)
listener: endConstructorReference(x, null, ;, ConstructorReferenceContext.Const)
listener: handleNoArguments(x)
listener: handleEnumElement({)
listener: handleEnumElements(;, 1)
notEofOrValue(}, String)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
parseMetadataStar(;)
listener: beginMetadataStar(String)
listener: endMetadataStar(0)
listener: beginMember()
parseMethod(;, null, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, hello, DeclarationKind.Enum, E, false)
listener: beginMethod(DeclarationKind.Enum, null, null, null, null, null, null, hello)
listener: handleIdentifier(String, typeReference)
listener: handleNoTypeArguments(hello)
listener: handleType(String, null)
ensureIdentifierPotentiallyRecovered(String, methodDeclaration, false)
listener: handleIdentifier(hello, methodDeclaration)
parseQualifiedRestOpt(hello, methodDeclarationContinuation)
parseMethodTypeVar(hello)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(hello, hello, false, MemberKind.NonStaticMethod)
parseFormalParameters(hello, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: beginBlockFunctionBody({)
notEofOrValue(}, print)
parseStatement({)
parseStatementX({)
parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
looksLikeLocalFunction(print)
parseExpressionStatement({)
parseExpression({)
parsePrecedenceExpression({, 1, true)
parseUnaryExpression({, true)
parsePrimary({, expression)
parseSendOrFunctionLiteral({, expression)
looksLikeFunctionBody(;)
parseSend({, expression)
isNextIdentifier({)
ensureIdentifier({, expression)
listener: handleIdentifier(print, expression)
listener: handleNoTypeArguments(()
parseArgumentsOpt(print)
parseArguments(print)
parseArgumentsRest(()
listener: beginArguments(()
parseExpression(()
parsePrecedenceExpression((, 1, true)
parseUnaryExpression((, true)
parsePrimary((, expression)
parseLiteralString(()
parseSingleLiteralString(()
listener: beginLiteralString("hello")
listener: endLiteralString(0, ))
listener: endArguments(1, (, ))
listener: handleSend(print, ;)
ensureSemicolon())
listener: handleExpressionStatement(;)
notEofOrValue(}, return)
parseStatement(;)
parseStatementX(;)
parseReturnStatement(;)
listener: beginReturnStatement(return)
parseExpression(return)
parsePrecedenceExpression(return, 1, true)
parseUnaryExpression(return, true)
parsePrimary(return, expression)
parseLiteralString(return)
parseSingleLiteralString(return)
listener: beginLiteralString("hello")
listener: endLiteralString(0, ;)
ensureSemicolon("hello")
listener: endReturnStatement(true, return, ;)
inGenerator()
notEofOrValue(}, })
listener: endBlockFunctionBody(2, {, })
listener: endEnumMethod(null, String, (, null, })
listener: endMember()
notEofOrValue(}, })
listener: endEnum(enum, {, 1)
listener: endTopLevelDeclaration()
reportAllErrorTokens(enum)
listener: endCompilationUnit(1, )

View file

@ -0,0 +1,19 @@
enum E {
x;
String hello() {
print("hello");
return "hello";
}
}
enum[KeywordToken] E[StringToken] {[BeginToken]
x[StringToken];[SimpleToken]
String[StringToken] hello[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
print[StringToken]([BeginToken]"hello"[StringToken])[SimpleToken];[SimpleToken]
return[KeywordToken] "hello"[StringToken];[SimpleToken]
}[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,19 @@
enum E {
x;
String hello() {
print("hello");
return "hello";
}
}
enum[KeywordToken] E[StringToken] {[BeginToken]
x[StringToken];[SimpleToken]
String[StringToken] hello[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
print[StringToken]([BeginToken]"hello"[StringToken])[SimpleToken];[SimpleToken]
return[KeywordToken] "hello"[StringToken];[SimpleToken]
}[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -78,7 +78,7 @@ parseUnit(class)
listener: handleRecoverableError(RedirectionInNonFactory, =, =)
parseRedirectingFactoryBody())
listener: beginRedirectingFactoryBody(=)
parseConstructorReference(=, ConstructorReferenceContext.RedirectingFactory, null, false)
parseConstructorReference(=, ConstructorReferenceContext.RedirectingFactory, null)
ensureIdentifier(=, constructorReference)
insertSyntheticIdentifier(=, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '0'., Try inserting an identifier before '0'., {lexeme: 0}], messageOnToken: null)
reportRecoverableError(0, Message[ExpectedIdentifier, Expected an identifier, but got '0'., Try inserting an identifier before '0'., {lexeme: 0}])

View file

@ -1464,7 +1464,7 @@ parseUnit(class)
parsePrimary(return, expression)
parseConstExpression(return)
listener: beginConstExpression(const)
parseConstructorReference(const, ConstructorReferenceContext.Const, null, false)
parseConstructorReference(const, ConstructorReferenceContext.Const, null)
ensureIdentifier(const, constructorReference)
insertSyntheticIdentifier(const, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}], messageOnToken: null)
reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}])
@ -6483,7 +6483,7 @@ parseUnit(class)
parseNewExpression(return)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
insertSyntheticIdentifier(new, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}], messageOnToken: null)
reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}])

View file

@ -1401,7 +1401,7 @@ parseUnit(int)
parsePrimary(return, expression)
parseConstExpression(return)
listener: beginConstExpression(const)
parseConstructorReference(const, ConstructorReferenceContext.Const, null, false)
parseConstructorReference(const, ConstructorReferenceContext.Const, null)
ensureIdentifier(const, constructorReference)
insertSyntheticIdentifier(const, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}], messageOnToken: null)
reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}])
@ -6291,7 +6291,7 @@ parseUnit(int)
parseNewExpression(return)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
insertSyntheticIdentifier(new, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}], messageOnToken: null)
reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}])

View file

@ -138,7 +138,7 @@ parseUnit(class)
parseNewExpression(()
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(A, constructorReference)
listener: beginConstructorReference(A)

View file

@ -398,7 +398,7 @@ parseUnit(var)
parseUnaryExpression(=, true)
parseImplicitCreationExpression(=, <, Instance of 'ComplexTypeParamOrArgInfo')
listener: beginImplicitCreationExpression(f)
parseConstructorReference(=, ConstructorReferenceContext.Implicit, Instance of 'ComplexTypeParamOrArgInfo', false)
parseConstructorReference(=, ConstructorReferenceContext.Implicit, Instance of 'ComplexTypeParamOrArgInfo')
ensureIdentifier(=, constructorReference)
listener: handleIdentifier(f, constructorReference)
listener: beginConstructorReference(f)

View file

@ -329,7 +329,7 @@ parseUnit(class)
inPlainSync()
parseRedirectingFactoryBody())
listener: beginRedirectingFactoryBody(=)
parseConstructorReference(=, ConstructorReferenceContext.RedirectingFactory, null, false)
parseConstructorReference(=, ConstructorReferenceContext.RedirectingFactory, null)
ensureIdentifier(=, constructorReference)
listener: handleIdentifier(C, constructorReference)
listener: beginConstructorReference(C)
@ -374,7 +374,7 @@ parseUnit(class)
inPlainSync()
parseRedirectingFactoryBody())
listener: beginRedirectingFactoryBody(=)
parseConstructorReference(=, ConstructorReferenceContext.RedirectingFactory, null, false)
parseConstructorReference(=, ConstructorReferenceContext.RedirectingFactory, null)
ensureIdentifier(=, constructorReference)
listener: handleIdentifier(C, constructorReference)
listener: beginConstructorReference(C)
@ -420,7 +420,7 @@ parseUnit(class)
inPlainSync()
parseRedirectingFactoryBody())
listener: beginRedirectingFactoryBody(=)
parseConstructorReference(=, ConstructorReferenceContext.RedirectingFactory, null, false)
parseConstructorReference(=, ConstructorReferenceContext.RedirectingFactory, null)
ensureIdentifier(=, constructorReference)
listener: handleIdentifier(prefix, constructorReference)
listener: beginConstructorReference(prefix)
@ -466,7 +466,7 @@ parseUnit(class)
inPlainSync()
parseRedirectingFactoryBody())
listener: beginRedirectingFactoryBody(=)
parseConstructorReference(=, ConstructorReferenceContext.RedirectingFactory, null, false)
parseConstructorReference(=, ConstructorReferenceContext.RedirectingFactory, null)
ensureIdentifier(=, constructorReference)
listener: handleIdentifier(prefix, constructorReference)
listener: beginConstructorReference(prefix)
@ -637,7 +637,7 @@ parseUnit(class)
parsePrimary(=, expression)
parseConstExpression(=)
listener: beginConstExpression(const)
parseConstructorReference(const, ConstructorReferenceContext.Const, null, false)
parseConstructorReference(const, ConstructorReferenceContext.Const, null)
ensureIdentifier(const, constructorReference)
listener: handleIdentifier(C, constructorReference)
listener: beginConstructorReference(C)
@ -678,7 +678,7 @@ parseUnit(class)
parsePrimary(=, expression)
parseConstExpression(=)
listener: beginConstExpression(const)
parseConstructorReference(const, ConstructorReferenceContext.Const, null, false)
parseConstructorReference(const, ConstructorReferenceContext.Const, null)
ensureIdentifier(const, constructorReference)
listener: handleIdentifier(C, constructorReference)
listener: beginConstructorReference(C)
@ -720,7 +720,7 @@ parseUnit(class)
parsePrimary(=, expression)
parseConstExpression(=)
listener: beginConstExpression(const)
parseConstructorReference(const, ConstructorReferenceContext.Const, null, false)
parseConstructorReference(const, ConstructorReferenceContext.Const, null)
ensureIdentifier(const, constructorReference)
listener: handleIdentifier(prefix, constructorReference)
listener: beginConstructorReference(prefix)
@ -762,7 +762,7 @@ parseUnit(class)
parsePrimary(=, expression)
parseConstExpression(=)
listener: beginConstExpression(const)
parseConstructorReference(const, ConstructorReferenceContext.Const, null, false)
parseConstructorReference(const, ConstructorReferenceContext.Const, null)
ensureIdentifier(const, constructorReference)
listener: handleIdentifier(prefix, constructorReference)
listener: beginConstructorReference(prefix)
@ -809,7 +809,7 @@ parseUnit(class)
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(C, constructorReference)
listener: beginConstructorReference(C)
@ -851,7 +851,7 @@ parseUnit(class)
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(C, constructorReference)
listener: beginConstructorReference(C)
@ -894,7 +894,7 @@ parseUnit(class)
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(prefix, constructorReference)
listener: beginConstructorReference(prefix)
@ -937,7 +937,7 @@ parseUnit(class)
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(prefix, constructorReference)
listener: beginConstructorReference(prefix)
@ -1028,7 +1028,7 @@ parseUnit(class)
parseUnaryExpression(=, true)
parseImplicitCreationExpression(=, <, Instance of 'SimpleTypeArgument1')
listener: beginImplicitCreationExpression(C)
parseConstructorReference(=, ConstructorReferenceContext.Implicit, Instance of 'SimpleTypeArgument1', false)
parseConstructorReference(=, ConstructorReferenceContext.Implicit, Instance of 'SimpleTypeArgument1')
ensureIdentifier(=, constructorReference)
listener: handleIdentifier(C, constructorReference)
listener: beginConstructorReference(C)
@ -1126,7 +1126,7 @@ parseUnit(class)
parseUnaryExpression(=, true)
parseImplicitCreationExpression(=, <, Instance of 'SimpleTypeArgument1')
listener: beginImplicitCreationExpression(prefix)
parseConstructorReference(=, ConstructorReferenceContext.Implicit, Instance of 'SimpleTypeArgument1', false)
parseConstructorReference(=, ConstructorReferenceContext.Implicit, Instance of 'SimpleTypeArgument1')
ensureIdentifier(=, constructorReference)
listener: handleIdentifier(prefix, constructorReference)
listener: beginConstructorReference(prefix)

View file

@ -52,7 +52,7 @@ parseUnit(main)
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(X, constructorReference)
listener: beginConstructorReference(X)
@ -182,7 +182,7 @@ parseUnit(main)
parseNewExpression(;)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(X, constructorReference)
listener: beginConstructorReference(X)
@ -228,7 +228,7 @@ parseUnit(main)
parseNewExpression(;)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(Y, constructorReference)
listener: beginConstructorReference(Y)

View file

@ -52,7 +52,7 @@ parseUnit(main)
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(X, constructorReference)
listener: beginConstructorReference(X)
@ -182,7 +182,7 @@ parseUnit(main)
parseNewExpression(;)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(X, constructorReference)
listener: beginConstructorReference(X)
@ -228,7 +228,7 @@ parseUnit(main)
parseNewExpression(;)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(Y, constructorReference)
listener: beginConstructorReference(Y)

View file

@ -52,7 +52,7 @@ parseUnit(main)
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(X, constructorReference)
listener: beginConstructorReference(X)
@ -182,7 +182,7 @@ parseUnit(main)
parseNewExpression(;)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(X, constructorReference)
listener: beginConstructorReference(X)
@ -228,7 +228,7 @@ parseUnit(main)
parseNewExpression(;)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(Y, constructorReference)
listener: beginConstructorReference(Y)

View file

@ -52,7 +52,7 @@ parseUnit(main)
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(X, constructorReference)
listener: beginConstructorReference(X)
@ -182,7 +182,7 @@ parseUnit(main)
parseNewExpression(;)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(X, constructorReference)
listener: beginConstructorReference(X)
@ -228,7 +228,7 @@ parseUnit(main)
parseNewExpression(;)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(Y, constructorReference)
listener: beginConstructorReference(Y)

View file

@ -130,7 +130,7 @@ parseUnit(class)
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(Foo, constructorReference)
listener: beginConstructorReference(Foo)

View file

@ -127,7 +127,7 @@ parseUnit(class)
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
parseConstructorReference(new, ConstructorReferenceContext.New, null, false)
parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(Foo, constructorReference)
listener: beginConstructorReference(Foo)

View file

@ -1321,15 +1321,14 @@ class TestParser extends Parser {
@override
Token parseConstructorReference(
Token token, ConstructorReferenceContext constructorReferenceContext,
[TypeParamOrArgInfo? typeArg, bool isImplicitTypeName = false]) {
[TypeParamOrArgInfo? typeArg]) {
doPrint('parseConstructorReference('
'$token, '
'$constructorReferenceContext, '
'$typeArg, '
'$isImplicitTypeName)');
'$typeArg)');
indent++;
var result = super.parseConstructorReference(
token, constructorReferenceContext, typeArg, isImplicitTypeName);
var result = super
.parseConstructorReference(token, constructorReferenceContext, typeArg);
indent--;
return result;
}

Some files were not shown because too many files have changed in this diff Show more