mirror of
https://github.com/dart-lang/sdk
synced 2024-10-03 00:45:16 +00:00
[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:
parent
33c38e914b
commit
f40d76d360
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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>');
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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'."
|
||||
|
||||
|
|
|
@ -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(()
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
enum E<F> {
|
||||
v<int>./*about to write foo()*/;
|
||||
|
||||
const E();
|
||||
const E.foo();
|
||||
}
|
|
@ -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, )
|
|
@ -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, )
|
|
@ -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]
|
|
@ -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]
|
|
@ -0,0 +1,7 @@
|
|||
files:
|
||||
- issue_48380_1.dart
|
||||
- issue_48380_1_ok.dart
|
||||
filters:
|
||||
- ignoreListenerArguments
|
||||
ignored:
|
||||
- handleRecoverableError
|
|
@ -0,0 +1,7 @@
|
|||
enum E<F> {
|
||||
v1<int>./*about to write foo()*/,
|
||||
v2<int>.foo();
|
||||
|
||||
const E();
|
||||
const E.foo();
|
||||
}
|
|
@ -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, )
|
|
@ -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, )
|
|
@ -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]
|
|
@ -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]
|
|
@ -0,0 +1,7 @@
|
|||
files:
|
||||
- issue_48380_1_comma.dart
|
||||
- issue_48380_1_comma_ok.dart
|
||||
filters:
|
||||
- ignoreListenerArguments
|
||||
ignored:
|
||||
- handleRecoverableError
|
|
@ -0,0 +1,7 @@
|
|||
enum E<F> {
|
||||
v1<int>.foo(),
|
||||
v2<int>.foo();
|
||||
|
||||
const E();
|
||||
const E.foo();
|
||||
}
|
|
@ -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, )
|
|
@ -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, )
|
|
@ -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]
|
|
@ -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]
|
|
@ -0,0 +1,6 @@
|
|||
enum E<F> {
|
||||
v<int>.foo();
|
||||
|
||||
const E();
|
||||
const E.foo();
|
||||
}
|
|
@ -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, )
|
|
@ -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, )
|
|
@ -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]
|
|
@ -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]
|
|
@ -0,0 +1,6 @@
|
|||
enum E<F> {
|
||||
v<int>/*about to write () or .foo()*/;
|
||||
|
||||
const E();
|
||||
const E.foo();
|
||||
}
|
|
@ -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, )
|
|
@ -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, )
|
|
@ -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]
|
|
@ -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]
|
|
@ -0,0 +1,7 @@
|
|||
files:
|
||||
- issue_48380_2.dart
|
||||
- issue_48380_2_ok.dart
|
||||
filters:
|
||||
- ignoreListenerArguments
|
||||
ignored:
|
||||
- handleRecoverableError
|
|
@ -0,0 +1,7 @@
|
|||
enum E<F> {
|
||||
v<int>/*about to write () or .foo()*/,
|
||||
v<int>.foo();
|
||||
|
||||
const E();
|
||||
const E.foo();
|
||||
}
|
|
@ -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, )
|
|
@ -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, )
|
|
@ -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]
|
|
@ -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]
|
|
@ -0,0 +1,7 @@
|
|||
files:
|
||||
- issue_48380_2_comma.dart
|
||||
- issue_48380_2_comma_ok.dart
|
||||
filters:
|
||||
- ignoreListenerArguments
|
||||
ignored:
|
||||
- handleRecoverableError
|
|
@ -0,0 +1,7 @@
|
|||
enum E<F> {
|
||||
v<int>(),
|
||||
v<int>.foo();
|
||||
|
||||
const E();
|
||||
const E.foo();
|
||||
}
|
|
@ -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, )
|
|
@ -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, )
|
|
@ -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]
|
|
@ -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]
|
|
@ -0,0 +1,6 @@
|
|||
enum E<F> {
|
||||
v<int>();
|
||||
|
||||
const E();
|
||||
const E.foo();
|
||||
}
|
|
@ -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, )
|
|
@ -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, )
|
|
@ -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]
|
|
@ -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]
|
|
@ -0,0 +1,6 @@
|
|||
enum E {
|
||||
v./* about to write foo()*/;
|
||||
|
||||
const E();
|
||||
const E.foo();
|
||||
}
|
|
@ -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, )
|
|
@ -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, )
|
|
@ -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]
|
|
@ -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]
|
|
@ -0,0 +1,7 @@
|
|||
files:
|
||||
- issue_48380_3.dart
|
||||
- issue_48380_3_ok.dart
|
||||
filters:
|
||||
- ignoreListenerArguments
|
||||
ignored:
|
||||
- handleRecoverableError
|
|
@ -0,0 +1,7 @@
|
|||
enum E {
|
||||
v./* about to write foo()*/,
|
||||
v.foo();
|
||||
|
||||
const E();
|
||||
const E.foo();
|
||||
}
|
|
@ -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, )
|
|
@ -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, )
|
|
@ -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]
|
|
@ -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]
|
|
@ -0,0 +1,7 @@
|
|||
files:
|
||||
- issue_48380_3_comma.dart
|
||||
- issue_48380_3_comma_ok.dart
|
||||
filters:
|
||||
- ignoreListenerArguments
|
||||
ignored:
|
||||
- handleRecoverableError
|
|
@ -0,0 +1,7 @@
|
|||
enum E {
|
||||
v.foo(),
|
||||
v.foo();
|
||||
|
||||
const E();
|
||||
const E.foo();
|
||||
}
|
|
@ -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, )
|
|
@ -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, )
|
|
@ -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]
|
|
@ -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]
|
|
@ -0,0 +1,6 @@
|
|||
enum E {
|
||||
v.foo();
|
||||
|
||||
const E();
|
||||
const E.foo();
|
||||
}
|
|
@ -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, )
|
|
@ -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, )
|
|
@ -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]
|
|
@ -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]
|
|
@ -0,0 +1,8 @@
|
|||
enum E {
|
||||
x;
|
||||
|
||||
String hello() {
|
||||
print("hello");
|
||||
return "hello";
|
||||
}
|
||||
}
|
|
@ -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, )
|
|
@ -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, )
|
|
@ -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]
|
|
@ -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]
|
|
@ -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}])
|
||||
|
|
|
@ -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: (}])
|
||||
|
|
|
@ -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: (}])
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
Loading…
Reference in a new issue