mirror of
https://github.com/dart-lang/sdk
synced 2024-10-03 00:45:16 +00:00
[parser] Breaking change for metadata parsing
https://github.com/dart-lang/language/blob/master/accepted/future-releases/records/records-feature-specification.md#ambiguity-with-metadata-annotations Change-Id: I47e584868f2a12a2553cbd57e3e5b8fbacaa5f27 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/272600 Reviewed-by: Johnni Winther <johnniwinther@google.com> Commit-Queue: Jens Johansen <jensj@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
parent
f74929e8e6
commit
6bce0d6b7a
|
@ -1234,7 +1234,7 @@ class Parser {
|
|||
reportRecoverableError(
|
||||
token, codes.messageMetadataTypeArgumentsUninstantiated);
|
||||
}
|
||||
token = parseArgumentsOpt(token);
|
||||
token = parseArgumentsOptMetadata(token);
|
||||
listener.endMetadata(atToken, period, token.next!);
|
||||
return token;
|
||||
}
|
||||
|
@ -7133,6 +7133,20 @@ class Parser {
|
|||
}
|
||||
}
|
||||
|
||||
/// Parse optional arguments specifically for metadata as metadata arguments
|
||||
/// has to follow the previous token without space.
|
||||
/// See also
|
||||
/// https://github.com/dart-lang/language/blob/master/accepted/future-releases/records/records-feature-specification.md#ambiguity-with-metadata-annotations
|
||||
Token parseArgumentsOptMetadata(Token token) {
|
||||
Token next = token.next!;
|
||||
if (!optional('(', next) || (token.charEnd != next.charOffset)) {
|
||||
listener.handleNoArguments(next);
|
||||
return token;
|
||||
} else {
|
||||
return parseArguments(token);
|
||||
}
|
||||
}
|
||||
|
||||
Token parseArgumentsOpt(Token token) {
|
||||
Token next = token.next!;
|
||||
if (!optional('(', next)) {
|
||||
|
|
|
@ -15,7 +15,7 @@ parseUnit(@)
|
|||
listener: handleNoTypeArguments(>)
|
||||
listener: handleType(int, null)
|
||||
listener: endTypeArguments(1, <, >)
|
||||
parseArgumentsOpt(>)
|
||||
parseArgumentsOptMetadata(>)
|
||||
parseArguments(>)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -47,7 +47,7 @@ parseUnit(@)
|
|||
listener: handleNoTypeArguments(>)
|
||||
listener: handleType(int, null)
|
||||
listener: endTypeArguments(1, <, >)
|
||||
parseArgumentsOpt(>)
|
||||
parseArgumentsOptMetadata(>)
|
||||
parseArguments(>)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -81,7 +81,7 @@ parseUnit(@)
|
|||
listener: handleNoTypeArguments(>)
|
||||
listener: handleType(int, null)
|
||||
listener: endTypeArguments(1, <, >)
|
||||
parseArgumentsOpt(>)
|
||||
parseArgumentsOptMetadata(>)
|
||||
parseArguments(>)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -121,7 +121,7 @@ parseUnit(@)
|
|||
listener: handleNoTypeArguments(>)
|
||||
listener: handleType(int, null)
|
||||
listener: endTypeArguments(1, <, >)
|
||||
parseArgumentsOpt(>)
|
||||
parseArgumentsOptMetadata(>)
|
||||
parseArguments(>)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -185,7 +185,7 @@ parseUnit(@)
|
|||
listener: handleNoTypeArguments(>)
|
||||
listener: handleType(int, null)
|
||||
listener: endTypeArguments(1, <, >)
|
||||
parseArgumentsOpt(>)
|
||||
parseArgumentsOptMetadata(>)
|
||||
parseArguments(>)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -214,7 +214,7 @@ parseUnit(@)
|
|||
listener: handleNoTypeArguments(>)
|
||||
listener: handleType(int, null)
|
||||
listener: endTypeArguments(1, <, >)
|
||||
parseArgumentsOpt(>)
|
||||
parseArgumentsOptMetadata(>)
|
||||
parseArguments(>)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -251,7 +251,7 @@ parseUnit(@)
|
|||
listener: handleNoTypeArguments(>)
|
||||
listener: handleType(int, null)
|
||||
listener: endTypeArguments(1, <, >)
|
||||
parseArgumentsOpt(>)
|
||||
parseArgumentsOptMetadata(>)
|
||||
parseArguments(>)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
|
|
@ -12,7 +12,7 @@ parseUnit(@)
|
|||
listener: handleIdentifier(abstract, metadataReference)
|
||||
parseQualifiedRestOpt(abstract, metadataContinuation)
|
||||
listener: handleNoTypeArguments(@)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
listener: handleNoArguments(@)
|
||||
listener: endMetadata(@, null, @)
|
||||
parseMetadata(abstract)
|
||||
|
@ -26,7 +26,7 @@ parseUnit(@)
|
|||
listener: handleIdentifier(abstract, metadataContinuation)
|
||||
listener: handleQualified(.)
|
||||
listener: handleNoTypeArguments(@)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
listener: handleNoArguments(@)
|
||||
listener: endMetadata(@, null, @)
|
||||
parseMetadata(abstract)
|
||||
|
@ -42,7 +42,7 @@ parseUnit(@)
|
|||
ensureIdentifier(., metadataContinuationAfterTypeArguments)
|
||||
inPlainSync()
|
||||
listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
listener: handleNoArguments(@)
|
||||
listener: endMetadata(@, ., @)
|
||||
parseMetadata(abstract)
|
||||
|
@ -51,7 +51,7 @@ parseUnit(@)
|
|||
listener: handleIdentifier(foo, metadataReference)
|
||||
parseQualifiedRestOpt(foo, metadataContinuation)
|
||||
listener: handleNoTypeArguments(()
|
||||
parseArgumentsOpt(foo)
|
||||
parseArgumentsOptMetadata(foo)
|
||||
parseArguments(foo)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -76,7 +76,7 @@ parseUnit(@)
|
|||
listener: handleIdentifier(abstract, metadataContinuation)
|
||||
listener: handleQualified(.)
|
||||
listener: handleNoTypeArguments(()
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
parseArguments(abstract)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -103,7 +103,7 @@ parseUnit(@)
|
|||
ensureIdentifier(., metadataContinuationAfterTypeArguments)
|
||||
inPlainSync()
|
||||
listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
parseArguments(abstract)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -127,7 +127,7 @@ parseUnit(@)
|
|||
listener: handleNoTypeArguments(>)
|
||||
listener: handleType(int, null)
|
||||
listener: endTypeArguments(1, <, >)
|
||||
parseArgumentsOpt(>)
|
||||
parseArgumentsOptMetadata(>)
|
||||
parseArguments(>)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -154,7 +154,7 @@ parseUnit(@)
|
|||
ensureIdentifier(., metadataContinuationAfterTypeArguments)
|
||||
inPlainSync()
|
||||
listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
parseArguments(abstract)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -182,7 +182,7 @@ parseUnit(@)
|
|||
listener: handleNoTypeArguments(>)
|
||||
listener: handleType(int, null)
|
||||
listener: endTypeArguments(1, <, >)
|
||||
parseArgumentsOpt(>)
|
||||
parseArgumentsOptMetadata(>)
|
||||
parseArguments(>)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -213,7 +213,7 @@ parseUnit(@)
|
|||
ensureIdentifier(., metadataContinuationAfterTypeArguments)
|
||||
inPlainSync()
|
||||
listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
parseArguments(abstract)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -271,7 +271,7 @@ parseUnit(@)
|
|||
listener: handleIdentifier(abstract, metadataReference)
|
||||
parseQualifiedRestOpt(abstract, metadataContinuation)
|
||||
listener: handleNoTypeArguments(T)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
listener: handleNoArguments(T)
|
||||
listener: endMetadata(@, null, T)
|
||||
listener: endMetadataStar(1)
|
||||
|
@ -293,7 +293,7 @@ parseUnit(@)
|
|||
listener: handleIdentifier(abstract, metadataReference)
|
||||
parseQualifiedRestOpt(abstract, metadataContinuation)
|
||||
listener: handleNoTypeArguments(X)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
listener: handleNoArguments(X)
|
||||
listener: endMetadata(@, null, X)
|
||||
listener: endMetadataStar(1)
|
||||
|
@ -321,7 +321,7 @@ parseUnit(@)
|
|||
listener: handleIdentifier(abstract, metadataReference)
|
||||
parseQualifiedRestOpt(abstract, metadataContinuation)
|
||||
listener: handleNoTypeArguments(int)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
listener: handleNoArguments(int)
|
||||
listener: endMetadata(@, null, int)
|
||||
listener: endMetadataStar(1)
|
||||
|
@ -361,7 +361,7 @@ parseUnit(@)
|
|||
listener: handleIdentifier(abstract, metadataContinuation)
|
||||
listener: handleQualified(.)
|
||||
listener: handleNoTypeArguments(T)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
listener: handleNoArguments(T)
|
||||
listener: endMetadata(@, null, T)
|
||||
listener: endMetadataStar(1)
|
||||
|
@ -387,7 +387,7 @@ parseUnit(@)
|
|||
listener: handleIdentifier(abstract, metadataContinuation)
|
||||
listener: handleQualified(.)
|
||||
listener: handleNoTypeArguments(X)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
listener: handleNoArguments(X)
|
||||
listener: endMetadata(@, null, X)
|
||||
listener: endMetadataStar(1)
|
||||
|
@ -419,7 +419,7 @@ parseUnit(@)
|
|||
listener: handleIdentifier(abstract, metadataContinuation)
|
||||
listener: handleQualified(.)
|
||||
listener: handleNoTypeArguments(int)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
listener: handleNoArguments(int)
|
||||
listener: endMetadata(@, null, int)
|
||||
listener: endMetadataStar(1)
|
||||
|
@ -461,7 +461,7 @@ parseUnit(@)
|
|||
ensureIdentifier(., metadataContinuationAfterTypeArguments)
|
||||
inPlainSync()
|
||||
listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
listener: handleNoArguments(T)
|
||||
listener: endMetadata(@, ., T)
|
||||
listener: endMetadataStar(1)
|
||||
|
@ -489,7 +489,7 @@ parseUnit(@)
|
|||
ensureIdentifier(., metadataContinuationAfterTypeArguments)
|
||||
inPlainSync()
|
||||
listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
listener: handleNoArguments(X)
|
||||
listener: endMetadata(@, ., X)
|
||||
listener: endMetadataStar(1)
|
||||
|
@ -523,7 +523,7 @@ parseUnit(@)
|
|||
ensureIdentifier(., metadataContinuationAfterTypeArguments)
|
||||
inPlainSync()
|
||||
listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
listener: handleNoArguments(int)
|
||||
listener: endMetadata(@, ., int)
|
||||
listener: endMetadataStar(1)
|
||||
|
@ -558,7 +558,7 @@ parseUnit(@)
|
|||
listener: handleIdentifier(foo, metadataReference)
|
||||
parseQualifiedRestOpt(foo, metadataContinuation)
|
||||
listener: handleNoTypeArguments(()
|
||||
parseArgumentsOpt(foo)
|
||||
parseArgumentsOptMetadata(foo)
|
||||
parseArguments(foo)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -590,7 +590,7 @@ parseUnit(@)
|
|||
listener: handleIdentifier(foo, metadataReference)
|
||||
parseQualifiedRestOpt(foo, metadataContinuation)
|
||||
listener: handleNoTypeArguments(()
|
||||
parseArgumentsOpt(foo)
|
||||
parseArgumentsOptMetadata(foo)
|
||||
parseArguments(foo)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -628,7 +628,7 @@ parseUnit(@)
|
|||
listener: handleIdentifier(foo, metadataReference)
|
||||
parseQualifiedRestOpt(foo, metadataContinuation)
|
||||
listener: handleNoTypeArguments(()
|
||||
parseArgumentsOpt(foo)
|
||||
parseArgumentsOptMetadata(foo)
|
||||
parseArguments(foo)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -679,7 +679,7 @@ parseUnit(@)
|
|||
listener: handleIdentifier(abstract, metadataContinuation)
|
||||
listener: handleQualified(.)
|
||||
listener: handleNoTypeArguments(()
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
parseArguments(abstract)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -716,7 +716,7 @@ parseUnit(@)
|
|||
listener: handleIdentifier(abstract, metadataContinuation)
|
||||
listener: handleQualified(.)
|
||||
listener: handleNoTypeArguments(()
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
parseArguments(abstract)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -759,7 +759,7 @@ parseUnit(@)
|
|||
listener: handleIdentifier(abstract, metadataContinuation)
|
||||
listener: handleQualified(.)
|
||||
listener: handleNoTypeArguments(()
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
parseArguments(abstract)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -812,7 +812,7 @@ parseUnit(@)
|
|||
ensureIdentifier(., metadataContinuationAfterTypeArguments)
|
||||
inPlainSync()
|
||||
listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
parseArguments(abstract)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -851,7 +851,7 @@ parseUnit(@)
|
|||
ensureIdentifier(., metadataContinuationAfterTypeArguments)
|
||||
inPlainSync()
|
||||
listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
parseArguments(abstract)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -896,7 +896,7 @@ parseUnit(@)
|
|||
ensureIdentifier(., metadataContinuationAfterTypeArguments)
|
||||
inPlainSync()
|
||||
listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
parseArguments(abstract)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -946,7 +946,7 @@ parseUnit(@)
|
|||
listener: handleNoTypeArguments(>)
|
||||
listener: handleType(int, null)
|
||||
listener: endTypeArguments(1, <, >)
|
||||
parseArgumentsOpt(>)
|
||||
parseArgumentsOptMetadata(>)
|
||||
parseArguments(>)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -982,7 +982,7 @@ parseUnit(@)
|
|||
listener: handleNoTypeArguments(>)
|
||||
listener: handleType(int, null)
|
||||
listener: endTypeArguments(1, <, >)
|
||||
parseArgumentsOpt(>)
|
||||
parseArgumentsOptMetadata(>)
|
||||
parseArguments(>)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -1024,7 +1024,7 @@ parseUnit(@)
|
|||
listener: handleNoTypeArguments(>)
|
||||
listener: handleType(int, null)
|
||||
listener: endTypeArguments(1, <, >)
|
||||
parseArgumentsOpt(>)
|
||||
parseArgumentsOptMetadata(>)
|
||||
parseArguments(>)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -1077,7 +1077,7 @@ parseUnit(@)
|
|||
ensureIdentifier(., metadataContinuationAfterTypeArguments)
|
||||
inPlainSync()
|
||||
listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
parseArguments(abstract)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -1116,7 +1116,7 @@ parseUnit(@)
|
|||
ensureIdentifier(., metadataContinuationAfterTypeArguments)
|
||||
inPlainSync()
|
||||
listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
parseArguments(abstract)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -1161,7 +1161,7 @@ parseUnit(@)
|
|||
ensureIdentifier(., metadataContinuationAfterTypeArguments)
|
||||
inPlainSync()
|
||||
listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
parseArguments(abstract)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -1215,7 +1215,7 @@ parseUnit(@)
|
|||
listener: handleNoTypeArguments(>)
|
||||
listener: handleType(int, null)
|
||||
listener: endTypeArguments(1, <, >)
|
||||
parseArgumentsOpt(>)
|
||||
parseArgumentsOptMetadata(>)
|
||||
parseArguments(>)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -1255,7 +1255,7 @@ parseUnit(@)
|
|||
listener: handleNoTypeArguments(>)
|
||||
listener: handleType(int, null)
|
||||
listener: endTypeArguments(1, <, >)
|
||||
parseArgumentsOpt(>)
|
||||
parseArgumentsOptMetadata(>)
|
||||
parseArguments(>)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -1301,7 +1301,7 @@ parseUnit(@)
|
|||
listener: handleNoTypeArguments(>)
|
||||
listener: handleType(int, null)
|
||||
listener: endTypeArguments(1, <, >)
|
||||
parseArgumentsOpt(>)
|
||||
parseArgumentsOptMetadata(>)
|
||||
parseArguments(>)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -1358,7 +1358,7 @@ parseUnit(@)
|
|||
ensureIdentifier(., metadataContinuationAfterTypeArguments)
|
||||
inPlainSync()
|
||||
listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
parseArguments(abstract)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -1401,7 +1401,7 @@ parseUnit(@)
|
|||
ensureIdentifier(., metadataContinuationAfterTypeArguments)
|
||||
inPlainSync()
|
||||
listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
parseArguments(abstract)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -1450,7 +1450,7 @@ parseUnit(@)
|
|||
ensureIdentifier(., metadataContinuationAfterTypeArguments)
|
||||
inPlainSync()
|
||||
listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
parseArguments(abstract)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -1492,7 +1492,7 @@ parseUnit(@)
|
|||
listener: handleIdentifier(abstract, metadataContinuation)
|
||||
listener: handleQualified(.)
|
||||
listener: handleNoTypeArguments(@)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
listener: handleNoArguments(@)
|
||||
listener: endMetadata(@, null, @)
|
||||
parseMetadata(abstract)
|
||||
|
@ -1509,7 +1509,7 @@ parseUnit(@)
|
|||
ensureIdentifier(., metadataContinuationAfterTypeArguments)
|
||||
inPlainSync()
|
||||
listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
listener: handleNoArguments(@)
|
||||
listener: endMetadata(@, ., @)
|
||||
parseMetadata(abstract)
|
||||
|
@ -1519,7 +1519,7 @@ parseUnit(@)
|
|||
listener: handleIdentifier(abstract, metadataReference)
|
||||
parseQualifiedRestOpt(abstract, metadataContinuation)
|
||||
listener: handleNoTypeArguments(()
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
parseArguments(abstract)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -1545,7 +1545,7 @@ parseUnit(@)
|
|||
listener: handleIdentifier(abstract, metadataContinuation)
|
||||
listener: handleQualified(.)
|
||||
listener: handleNoTypeArguments(()
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
parseArguments(abstract)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -1573,7 +1573,7 @@ parseUnit(@)
|
|||
ensureIdentifier(., metadataContinuationAfterTypeArguments)
|
||||
inPlainSync()
|
||||
listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
parseArguments(abstract)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -1598,7 +1598,7 @@ parseUnit(@)
|
|||
listener: handleNoTypeArguments(>)
|
||||
listener: handleType(int, null)
|
||||
listener: endTypeArguments(1, <, >)
|
||||
parseArgumentsOpt(>)
|
||||
parseArgumentsOptMetadata(>)
|
||||
parseArguments(>)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -1626,7 +1626,7 @@ parseUnit(@)
|
|||
ensureIdentifier(., metadataContinuationAfterTypeArguments)
|
||||
inPlainSync()
|
||||
listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
parseArguments(abstract)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -1655,7 +1655,7 @@ parseUnit(@)
|
|||
listener: handleNoTypeArguments(>)
|
||||
listener: handleType(int, null)
|
||||
listener: endTypeArguments(1, <, >)
|
||||
parseArgumentsOpt(>)
|
||||
parseArgumentsOptMetadata(>)
|
||||
parseArguments(>)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
@ -1687,7 +1687,7 @@ parseUnit(@)
|
|||
ensureIdentifier(., metadataContinuationAfterTypeArguments)
|
||||
inPlainSync()
|
||||
listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
|
||||
parseArgumentsOpt(abstract)
|
||||
parseArgumentsOptMetadata(abstract)
|
||||
parseArguments(abstract)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
|
|
|
@ -48,7 +48,7 @@ parseUnit(f)
|
|||
listener: handleIdentifier(annotation, metadataReference)
|
||||
parseQualifiedRestOpt(annotation, metadataContinuation)
|
||||
listener: handleNoTypeArguments(final)
|
||||
parseArgumentsOpt(annotation)
|
||||
parseArgumentsOptMetadata(annotation)
|
||||
listener: handleNoArguments(final)
|
||||
listener: endMetadata(@, null, final)
|
||||
listener: endMetadataStar(1)
|
||||
|
|
|
@ -48,7 +48,7 @@ parseUnit(f)
|
|||
listener: handleIdentifier(annotation, metadataReference)
|
||||
parseQualifiedRestOpt(annotation, metadataContinuation)
|
||||
listener: handleNoTypeArguments(final)
|
||||
parseArgumentsOpt(annotation)
|
||||
parseArgumentsOptMetadata(annotation)
|
||||
listener: handleNoArguments(final)
|
||||
listener: endMetadata(@, null, final)
|
||||
listener: endMetadataStar(1)
|
||||
|
|
|
@ -48,7 +48,7 @@ parseUnit(f)
|
|||
listener: handleIdentifier(annotation, metadataReference)
|
||||
parseQualifiedRestOpt(annotation, metadataContinuation)
|
||||
listener: handleNoTypeArguments(final)
|
||||
parseArgumentsOpt(annotation)
|
||||
parseArgumentsOptMetadata(annotation)
|
||||
listener: handleNoArguments(final)
|
||||
listener: endMetadata(@, null, final)
|
||||
listener: endMetadataStar(1)
|
||||
|
|
|
@ -48,7 +48,7 @@ parseUnit(f)
|
|||
listener: handleIdentifier(annotation, metadataReference)
|
||||
parseQualifiedRestOpt(annotation, metadataContinuation)
|
||||
listener: handleNoTypeArguments(final)
|
||||
parseArgumentsOpt(annotation)
|
||||
parseArgumentsOptMetadata(annotation)
|
||||
listener: handleNoArguments(final)
|
||||
listener: endMetadata(@, null, final)
|
||||
listener: endMetadataStar(1)
|
||||
|
|
|
@ -48,7 +48,7 @@ parseUnit(f)
|
|||
listener: handleIdentifier(annotation, metadataReference)
|
||||
parseQualifiedRestOpt(annotation, metadataContinuation)
|
||||
listener: handleNoTypeArguments(final)
|
||||
parseArgumentsOpt(annotation)
|
||||
parseArgumentsOptMetadata(annotation)
|
||||
listener: handleNoArguments(final)
|
||||
listener: endMetadata(@, null, final)
|
||||
listener: endMetadataStar(1)
|
||||
|
|
|
@ -48,7 +48,7 @@ parseUnit(f)
|
|||
listener: handleIdentifier(annotation, metadataReference)
|
||||
parseQualifiedRestOpt(annotation, metadataContinuation)
|
||||
listener: handleNoTypeArguments(var)
|
||||
parseArgumentsOpt(annotation)
|
||||
parseArgumentsOptMetadata(annotation)
|
||||
listener: handleNoArguments(var)
|
||||
listener: endMetadata(@, null, var)
|
||||
listener: endMetadataStar(1)
|
||||
|
|
|
@ -48,7 +48,7 @@ parseUnit(f)
|
|||
listener: handleIdentifier(annotation, metadataReference)
|
||||
parseQualifiedRestOpt(annotation, metadataContinuation)
|
||||
listener: handleNoTypeArguments(var)
|
||||
parseArgumentsOpt(annotation)
|
||||
parseArgumentsOptMetadata(annotation)
|
||||
listener: handleNoArguments(var)
|
||||
listener: endMetadata(@, null, var)
|
||||
listener: endMetadataStar(1)
|
||||
|
|
|
@ -48,7 +48,7 @@ parseUnit(f)
|
|||
listener: handleIdentifier(annotation, metadataReference)
|
||||
parseQualifiedRestOpt(annotation, metadataContinuation)
|
||||
listener: handleNoTypeArguments(var)
|
||||
parseArgumentsOpt(annotation)
|
||||
parseArgumentsOptMetadata(annotation)
|
||||
listener: handleNoArguments(var)
|
||||
listener: endMetadata(@, null, var)
|
||||
listener: endMetadataStar(1)
|
||||
|
|
|
@ -48,7 +48,7 @@ parseUnit(f)
|
|||
listener: handleIdentifier(annotation, metadataReference)
|
||||
parseQualifiedRestOpt(annotation, metadataContinuation)
|
||||
listener: handleNoTypeArguments(var)
|
||||
parseArgumentsOpt(annotation)
|
||||
parseArgumentsOptMetadata(annotation)
|
||||
listener: handleNoArguments(var)
|
||||
listener: endMetadata(@, null, var)
|
||||
listener: endMetadataStar(1)
|
||||
|
|
|
@ -48,7 +48,7 @@ parseUnit(f)
|
|||
listener: handleIdentifier(annotation, metadataReference)
|
||||
parseQualifiedRestOpt(annotation, metadataContinuation)
|
||||
listener: handleNoTypeArguments(var)
|
||||
parseArgumentsOpt(annotation)
|
||||
parseArgumentsOptMetadata(annotation)
|
||||
listener: handleNoArguments(var)
|
||||
listener: endMetadata(@, null, var)
|
||||
listener: endMetadataStar(1)
|
||||
|
|
|
@ -54,7 +54,7 @@ parseUnit(void)
|
|||
listener: handleIdentifier(annotation, metadataReference)
|
||||
parseQualifiedRestOpt(annotation, metadataContinuation)
|
||||
listener: handleNoTypeArguments(var)
|
||||
parseArgumentsOpt(annotation)
|
||||
parseArgumentsOptMetadata(annotation)
|
||||
listener: handleNoArguments(var)
|
||||
listener: endMetadata(@, null, var)
|
||||
listener: endMetadataStar(1)
|
||||
|
|
|
@ -50,7 +50,7 @@ parseUnit(void)
|
|||
listener: handleIdentifier(annotation, metadataReference)
|
||||
parseQualifiedRestOpt(annotation, metadataContinuation)
|
||||
listener: handleNoTypeArguments(var)
|
||||
parseArgumentsOpt(annotation)
|
||||
parseArgumentsOptMetadata(annotation)
|
||||
listener: handleNoArguments(var)
|
||||
listener: endMetadata(@, null, var)
|
||||
listener: endMetadataStar(1)
|
||||
|
|
36
pkg/front_end/parser_testcases/record/metadata.dart
Normal file
36
pkg/front_end/parser_testcases/record/metadata.dart
Normal file
|
@ -0,0 +1,36 @@
|
|||
// These are parsed as argument lists to the annotation:
|
||||
@metadata(x, y) a;
|
||||
|
||||
@metadata<T>(x, y) a;
|
||||
|
||||
@metadata <T>(x, y) a;
|
||||
|
||||
// These are parsed as record variable types:
|
||||
@metadata (x, y) a;
|
||||
|
||||
@metadata
|
||||
(x, y) a;
|
||||
|
||||
@metadata/* comment */(x, y) a;
|
||||
|
||||
@metadata // Comment.
|
||||
(x,) a;
|
||||
|
||||
// Note that the NO_SPACE rule is applied unconditionally,
|
||||
// even when the metadata annotation appears in a context where no ambiguity
|
||||
// with record types is possible, as in:
|
||||
@metadata (x, y)
|
||||
class C {}
|
||||
|
||||
// This example has a syntax error because the (x, y) is not parsed as arguments
|
||||
// to the metadata and can't be parsed as anything else either.
|
||||
|
||||
// Another interesting case is:
|
||||
|
||||
@metadata<T> (x, y) a;
|
||||
|
||||
// This is a syntax error because the <T> means there must be an argument list
|
||||
// after it, but the NO_SPACE in metadatum prevents it from being parsed as such
|
||||
// and the result is an error.
|
||||
|
||||
// (though apparently not a parser issued error)
|
308
pkg/front_end/parser_testcases/record/metadata.dart.expect
Normal file
308
pkg/front_end/parser_testcases/record/metadata.dart.expect
Normal file
|
@ -0,0 +1,308 @@
|
|||
Problems reported:
|
||||
|
||||
parser/record/metadata:2:17: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
|
||||
@metadata(x, y) a;
|
||||
^
|
||||
|
||||
parser/record/metadata:4:20: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
|
||||
@metadata<T>(x, y) a;
|
||||
^
|
||||
|
||||
parser/record/metadata:6:21: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
|
||||
@metadata <T>(x, y) a;
|
||||
^
|
||||
|
||||
parser/record/metadata:22:11: Expected a declaration, but got '('.
|
||||
@metadata (x, y)
|
||||
^
|
||||
|
||||
parser/record/metadata:22:12: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
|
||||
@metadata (x, y)
|
||||
^
|
||||
|
||||
parser/record/metadata:22:15: Expected ';' after this.
|
||||
@metadata (x, y)
|
||||
^
|
||||
|
||||
parser/record/metadata:22:16: Expected a declaration, but got ')'.
|
||||
@metadata (x, y)
|
||||
^
|
||||
|
||||
beginCompilationUnit(@)
|
||||
beginMetadataStar(@)
|
||||
beginMetadata(@)
|
||||
handleIdentifier(metadata, metadataReference)
|
||||
handleNoTypeArguments(()
|
||||
beginArguments(()
|
||||
handleIdentifier(x, expression)
|
||||
handleNoTypeArguments(,)
|
||||
handleNoArguments(,)
|
||||
handleSend(x, ,)
|
||||
handleIdentifier(y, expression)
|
||||
handleNoTypeArguments())
|
||||
handleNoArguments())
|
||||
handleSend(y, ))
|
||||
endArguments(2, (, ))
|
||||
endMetadata(@, null, a)
|
||||
endMetadataStar(1)
|
||||
beginTopLevelMember(a)
|
||||
beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, ))
|
||||
handleRecoverableError(MissingConstFinalVarOrType, a, a)
|
||||
handleNoType())
|
||||
handleIdentifier(a, topLevelVariableDeclaration)
|
||||
handleNoFieldInitializer(;)
|
||||
endTopLevelFields(null, null, null, null, null, 1, a, ;)
|
||||
endTopLevelDeclaration(@)
|
||||
beginMetadataStar(@)
|
||||
beginMetadata(@)
|
||||
handleIdentifier(metadata, metadataReference)
|
||||
beginTypeArguments(<)
|
||||
handleIdentifier(T, typeReference)
|
||||
handleNoTypeArguments(>)
|
||||
handleType(T, null)
|
||||
endTypeArguments(1, <, >)
|
||||
beginArguments(()
|
||||
handleIdentifier(x, expression)
|
||||
handleNoTypeArguments(,)
|
||||
handleNoArguments(,)
|
||||
handleSend(x, ,)
|
||||
handleIdentifier(y, expression)
|
||||
handleNoTypeArguments())
|
||||
handleNoArguments())
|
||||
handleSend(y, ))
|
||||
endArguments(2, (, ))
|
||||
endMetadata(@, null, a)
|
||||
endMetadataStar(1)
|
||||
beginTopLevelMember(a)
|
||||
beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, ))
|
||||
handleRecoverableError(MissingConstFinalVarOrType, a, a)
|
||||
handleNoType())
|
||||
handleIdentifier(a, topLevelVariableDeclaration)
|
||||
handleNoFieldInitializer(;)
|
||||
endTopLevelFields(null, null, null, null, null, 1, a, ;)
|
||||
endTopLevelDeclaration(@)
|
||||
beginMetadataStar(@)
|
||||
beginMetadata(@)
|
||||
handleIdentifier(metadata, metadataReference)
|
||||
beginTypeArguments(<)
|
||||
handleIdentifier(T, typeReference)
|
||||
handleNoTypeArguments(>)
|
||||
handleType(T, null)
|
||||
endTypeArguments(1, <, >)
|
||||
beginArguments(()
|
||||
handleIdentifier(x, expression)
|
||||
handleNoTypeArguments(,)
|
||||
handleNoArguments(,)
|
||||
handleSend(x, ,)
|
||||
handleIdentifier(y, expression)
|
||||
handleNoTypeArguments())
|
||||
handleNoArguments())
|
||||
handleSend(y, ))
|
||||
endArguments(2, (, ))
|
||||
endMetadata(@, null, a)
|
||||
endMetadataStar(1)
|
||||
beginTopLevelMember(a)
|
||||
beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, ))
|
||||
handleRecoverableError(MissingConstFinalVarOrType, a, a)
|
||||
handleNoType())
|
||||
handleIdentifier(a, topLevelVariableDeclaration)
|
||||
handleNoFieldInitializer(;)
|
||||
endTopLevelFields(null, null, null, null, null, 1, a, ;)
|
||||
endTopLevelDeclaration(@)
|
||||
beginMetadataStar(@)
|
||||
beginMetadata(@)
|
||||
handleIdentifier(metadata, metadataReference)
|
||||
handleNoTypeArguments(()
|
||||
handleNoArguments(()
|
||||
endMetadata(@, null, ()
|
||||
endMetadataStar(1)
|
||||
beginTopLevelMember(()
|
||||
beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, metadata)
|
||||
beginRecordType(()
|
||||
beginRecordTypeEntry()
|
||||
beginMetadataStar(x)
|
||||
endMetadataStar(0)
|
||||
handleIdentifier(x, typeReference)
|
||||
handleNoTypeArguments(,)
|
||||
handleType(x, null)
|
||||
handleNoName(,)
|
||||
endRecordTypeEntry()
|
||||
beginRecordTypeEntry()
|
||||
beginMetadataStar(y)
|
||||
endMetadataStar(0)
|
||||
handleIdentifier(y, typeReference)
|
||||
handleNoTypeArguments())
|
||||
handleType(y, null)
|
||||
handleNoName())
|
||||
endRecordTypeEntry()
|
||||
endRecordType((, null, 2, false)
|
||||
handleIdentifier(a, topLevelVariableDeclaration)
|
||||
handleNoFieldInitializer(;)
|
||||
endTopLevelFields(null, null, null, null, null, 1, (, ;)
|
||||
endTopLevelDeclaration(@)
|
||||
beginMetadataStar(@)
|
||||
beginMetadata(@)
|
||||
handleIdentifier(metadata, metadataReference)
|
||||
handleNoTypeArguments(()
|
||||
handleNoArguments(()
|
||||
endMetadata(@, null, ()
|
||||
endMetadataStar(1)
|
||||
beginTopLevelMember(()
|
||||
beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, metadata)
|
||||
beginRecordType(()
|
||||
beginRecordTypeEntry()
|
||||
beginMetadataStar(x)
|
||||
endMetadataStar(0)
|
||||
handleIdentifier(x, typeReference)
|
||||
handleNoTypeArguments(,)
|
||||
handleType(x, null)
|
||||
handleNoName(,)
|
||||
endRecordTypeEntry()
|
||||
beginRecordTypeEntry()
|
||||
beginMetadataStar(y)
|
||||
endMetadataStar(0)
|
||||
handleIdentifier(y, typeReference)
|
||||
handleNoTypeArguments())
|
||||
handleType(y, null)
|
||||
handleNoName())
|
||||
endRecordTypeEntry()
|
||||
endRecordType((, null, 2, false)
|
||||
handleIdentifier(a, topLevelVariableDeclaration)
|
||||
handleNoFieldInitializer(;)
|
||||
endTopLevelFields(null, null, null, null, null, 1, (, ;)
|
||||
endTopLevelDeclaration(@)
|
||||
beginMetadataStar(@)
|
||||
beginMetadata(@)
|
||||
handleIdentifier(metadata, metadataReference)
|
||||
handleNoTypeArguments(()
|
||||
handleNoArguments(()
|
||||
endMetadata(@, null, ()
|
||||
endMetadataStar(1)
|
||||
beginTopLevelMember(()
|
||||
beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, metadata)
|
||||
beginRecordType(()
|
||||
beginRecordTypeEntry()
|
||||
beginMetadataStar(x)
|
||||
endMetadataStar(0)
|
||||
handleIdentifier(x, typeReference)
|
||||
handleNoTypeArguments(,)
|
||||
handleType(x, null)
|
||||
handleNoName(,)
|
||||
endRecordTypeEntry()
|
||||
beginRecordTypeEntry()
|
||||
beginMetadataStar(y)
|
||||
endMetadataStar(0)
|
||||
handleIdentifier(y, typeReference)
|
||||
handleNoTypeArguments())
|
||||
handleType(y, null)
|
||||
handleNoName())
|
||||
endRecordTypeEntry()
|
||||
endRecordType((, null, 2, false)
|
||||
handleIdentifier(a, topLevelVariableDeclaration)
|
||||
handleNoFieldInitializer(;)
|
||||
endTopLevelFields(null, null, null, null, null, 1, (, ;)
|
||||
endTopLevelDeclaration(@)
|
||||
beginMetadataStar(@)
|
||||
beginMetadata(@)
|
||||
handleIdentifier(metadata, metadataReference)
|
||||
handleNoTypeArguments(()
|
||||
handleNoArguments(()
|
||||
endMetadata(@, null, ()
|
||||
endMetadataStar(1)
|
||||
beginTopLevelMember(()
|
||||
beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, metadata)
|
||||
beginRecordType(()
|
||||
beginRecordTypeEntry()
|
||||
beginMetadataStar(x)
|
||||
endMetadataStar(0)
|
||||
handleIdentifier(x, typeReference)
|
||||
handleNoTypeArguments(,)
|
||||
handleType(x, null)
|
||||
handleNoName(,)
|
||||
endRecordTypeEntry()
|
||||
endRecordType((, null, 1, false)
|
||||
handleIdentifier(a, topLevelVariableDeclaration)
|
||||
handleNoFieldInitializer(;)
|
||||
endTopLevelFields(null, null, null, null, null, 1, (, ;)
|
||||
endTopLevelDeclaration(@)
|
||||
beginMetadataStar(@)
|
||||
beginMetadata(@)
|
||||
handleIdentifier(metadata, metadataReference)
|
||||
handleNoTypeArguments(()
|
||||
handleNoArguments(()
|
||||
endMetadata(@, null, ()
|
||||
endMetadataStar(1)
|
||||
beginTopLevelMember(()
|
||||
handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '('., null, {lexeme: (}], (, ()
|
||||
handleInvalidTopLevelDeclaration(()
|
||||
endTopLevelDeclaration(x)
|
||||
beginMetadataStar(x)
|
||||
endMetadataStar(0)
|
||||
beginTopLevelMember(x)
|
||||
beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, ()
|
||||
handleRecoverableError(MissingConstFinalVarOrType, x, x)
|
||||
handleNoType(()
|
||||
handleIdentifier(x, topLevelVariableDeclaration)
|
||||
handleNoFieldInitializer(,)
|
||||
handleIdentifier(y, topLevelVariableDeclaration)
|
||||
handleNoFieldInitializer())
|
||||
handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], y, y)
|
||||
endTopLevelFields(null, null, null, null, null, 2, x, ;)
|
||||
endTopLevelDeclaration())
|
||||
beginMetadataStar())
|
||||
endMetadataStar(0)
|
||||
beginTopLevelMember())
|
||||
handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got ')'., null, {lexeme: )}], ), ))
|
||||
handleInvalidTopLevelDeclaration())
|
||||
endTopLevelDeclaration(class)
|
||||
beginMetadataStar(class)
|
||||
endMetadataStar(0)
|
||||
beginClassOrMixinOrNamedMixinApplicationPrelude(class)
|
||||
handleIdentifier(C, classOrMixinDeclaration)
|
||||
handleNoTypeVariables({)
|
||||
beginClassDeclaration(class, null, null, null, null, null, null, C)
|
||||
handleNoType(C)
|
||||
handleClassExtends(null, 1)
|
||||
handleClassNoWithClause()
|
||||
handleImplements(null, 0)
|
||||
handleClassHeader(class, class, null)
|
||||
beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
|
||||
endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
|
||||
endClassDeclaration(class, })
|
||||
endTopLevelDeclaration(@)
|
||||
beginMetadataStar(@)
|
||||
beginMetadata(@)
|
||||
handleIdentifier(metadata, metadataReference)
|
||||
beginTypeArguments(<)
|
||||
handleIdentifier(T, typeReference)
|
||||
handleNoTypeArguments(>)
|
||||
handleType(T, null)
|
||||
endTypeArguments(1, <, >)
|
||||
handleNoArguments(()
|
||||
endMetadata(@, null, ()
|
||||
endMetadataStar(1)
|
||||
beginTopLevelMember(()
|
||||
beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, >)
|
||||
beginRecordType(()
|
||||
beginRecordTypeEntry()
|
||||
beginMetadataStar(x)
|
||||
endMetadataStar(0)
|
||||
handleIdentifier(x, typeReference)
|
||||
handleNoTypeArguments(,)
|
||||
handleType(x, null)
|
||||
handleNoName(,)
|
||||
endRecordTypeEntry()
|
||||
beginRecordTypeEntry()
|
||||
beginMetadataStar(y)
|
||||
endMetadataStar(0)
|
||||
handleIdentifier(y, typeReference)
|
||||
handleNoTypeArguments())
|
||||
handleType(y, null)
|
||||
handleNoName())
|
||||
endRecordTypeEntry()
|
||||
endRecordType((, null, 2, false)
|
||||
handleIdentifier(a, topLevelVariableDeclaration)
|
||||
handleNoFieldInitializer(;)
|
||||
endTopLevelFields(null, null, null, null, null, 1, (, ;)
|
||||
endTopLevelDeclaration()
|
||||
endCompilationUnit(12, )
|
|
@ -0,0 +1,490 @@
|
|||
parseUnit(@)
|
||||
skipErrorTokens(@)
|
||||
listener: beginCompilationUnit(@)
|
||||
syntheticPreviousToken(@)
|
||||
parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
|
||||
parseMetadataStar()
|
||||
listener: beginMetadataStar(@)
|
||||
parseMetadata()
|
||||
listener: beginMetadata(@)
|
||||
ensureIdentifier(@, metadataReference)
|
||||
listener: handleIdentifier(metadata, metadataReference)
|
||||
parseQualifiedRestOpt(metadata, metadataContinuation)
|
||||
listener: handleNoTypeArguments(()
|
||||
parseArgumentsOptMetadata(metadata)
|
||||
parseArguments(metadata)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
parseExpression(()
|
||||
parsePrecedenceExpression((, 1, true)
|
||||
parseUnaryExpression((, true)
|
||||
parsePrimary((, expression)
|
||||
parseSendOrFunctionLiteral((, expression)
|
||||
parseSend((, expression)
|
||||
isNextIdentifier(()
|
||||
ensureIdentifier((, expression)
|
||||
listener: handleIdentifier(x, expression)
|
||||
listener: handleNoTypeArguments(,)
|
||||
parseArgumentsOpt(x)
|
||||
listener: handleNoArguments(,)
|
||||
listener: handleSend(x, ,)
|
||||
parseExpression(,)
|
||||
parsePrecedenceExpression(,, 1, true)
|
||||
parseUnaryExpression(,, true)
|
||||
parsePrimary(,, expression)
|
||||
parseSendOrFunctionLiteral(,, expression)
|
||||
parseSend(,, expression)
|
||||
isNextIdentifier(,)
|
||||
ensureIdentifier(,, expression)
|
||||
listener: handleIdentifier(y, expression)
|
||||
listener: handleNoTypeArguments())
|
||||
parseArgumentsOpt(y)
|
||||
listener: handleNoArguments())
|
||||
listener: handleSend(y, ))
|
||||
listener: endArguments(2, (, ))
|
||||
listener: endMetadata(@, null, a)
|
||||
listener: endMetadataStar(1)
|
||||
parseTopLevelMemberImpl())
|
||||
listener: beginTopLevelMember(a)
|
||||
isReservedKeyword(;)
|
||||
parseFields(), null, null, null, null, null, null, null, ), Instance of 'NoType', a, DeclarationKind.TopLevel, null, false)
|
||||
listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, ))
|
||||
reportRecoverableError(a, MissingConstFinalVarOrType)
|
||||
listener: handleRecoverableError(MissingConstFinalVarOrType, a, a)
|
||||
listener: handleNoType())
|
||||
ensureIdentifierPotentiallyRecovered(), topLevelVariableDeclaration, false)
|
||||
listener: handleIdentifier(a, topLevelVariableDeclaration)
|
||||
parseFieldInitializerOpt(a, a, null, null, null, null, null, DeclarationKind.TopLevel, null)
|
||||
listener: handleNoFieldInitializer(;)
|
||||
listener: endTopLevelFields(null, null, null, null, null, 1, a, ;)
|
||||
listener: endTopLevelDeclaration(@)
|
||||
parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
|
||||
parseMetadataStar(;)
|
||||
listener: beginMetadataStar(@)
|
||||
parseMetadata(;)
|
||||
listener: beginMetadata(@)
|
||||
ensureIdentifier(@, metadataReference)
|
||||
listener: handleIdentifier(metadata, metadataReference)
|
||||
parseQualifiedRestOpt(metadata, metadataContinuation)
|
||||
listener: beginTypeArguments(<)
|
||||
listener: handleIdentifier(T, typeReference)
|
||||
listener: handleNoTypeArguments(>)
|
||||
listener: handleType(T, null)
|
||||
listener: endTypeArguments(1, <, >)
|
||||
parseArgumentsOptMetadata(>)
|
||||
parseArguments(>)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
parseExpression(()
|
||||
parsePrecedenceExpression((, 1, true)
|
||||
parseUnaryExpression((, true)
|
||||
parsePrimary((, expression)
|
||||
parseSendOrFunctionLiteral((, expression)
|
||||
parseSend((, expression)
|
||||
isNextIdentifier(()
|
||||
ensureIdentifier((, expression)
|
||||
listener: handleIdentifier(x, expression)
|
||||
listener: handleNoTypeArguments(,)
|
||||
parseArgumentsOpt(x)
|
||||
listener: handleNoArguments(,)
|
||||
listener: handleSend(x, ,)
|
||||
parseExpression(,)
|
||||
parsePrecedenceExpression(,, 1, true)
|
||||
parseUnaryExpression(,, true)
|
||||
parsePrimary(,, expression)
|
||||
parseSendOrFunctionLiteral(,, expression)
|
||||
parseSend(,, expression)
|
||||
isNextIdentifier(,)
|
||||
ensureIdentifier(,, expression)
|
||||
listener: handleIdentifier(y, expression)
|
||||
listener: handleNoTypeArguments())
|
||||
parseArgumentsOpt(y)
|
||||
listener: handleNoArguments())
|
||||
listener: handleSend(y, ))
|
||||
listener: endArguments(2, (, ))
|
||||
listener: endMetadata(@, null, a)
|
||||
listener: endMetadataStar(1)
|
||||
parseTopLevelMemberImpl())
|
||||
listener: beginTopLevelMember(a)
|
||||
isReservedKeyword(;)
|
||||
parseFields(), null, null, null, null, null, null, null, ), Instance of 'NoType', a, DeclarationKind.TopLevel, null, false)
|
||||
listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, ))
|
||||
reportRecoverableError(a, MissingConstFinalVarOrType)
|
||||
listener: handleRecoverableError(MissingConstFinalVarOrType, a, a)
|
||||
listener: handleNoType())
|
||||
ensureIdentifierPotentiallyRecovered(), topLevelVariableDeclaration, false)
|
||||
listener: handleIdentifier(a, topLevelVariableDeclaration)
|
||||
parseFieldInitializerOpt(a, a, null, null, null, null, null, DeclarationKind.TopLevel, null)
|
||||
listener: handleNoFieldInitializer(;)
|
||||
listener: endTopLevelFields(null, null, null, null, null, 1, a, ;)
|
||||
listener: endTopLevelDeclaration(@)
|
||||
parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
|
||||
parseMetadataStar(;)
|
||||
listener: beginMetadataStar(@)
|
||||
parseMetadata(;)
|
||||
listener: beginMetadata(@)
|
||||
ensureIdentifier(@, metadataReference)
|
||||
listener: handleIdentifier(metadata, metadataReference)
|
||||
parseQualifiedRestOpt(metadata, metadataContinuation)
|
||||
listener: beginTypeArguments(<)
|
||||
listener: handleIdentifier(T, typeReference)
|
||||
listener: handleNoTypeArguments(>)
|
||||
listener: handleType(T, null)
|
||||
listener: endTypeArguments(1, <, >)
|
||||
parseArgumentsOptMetadata(>)
|
||||
parseArguments(>)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
parseExpression(()
|
||||
parsePrecedenceExpression((, 1, true)
|
||||
parseUnaryExpression((, true)
|
||||
parsePrimary((, expression)
|
||||
parseSendOrFunctionLiteral((, expression)
|
||||
parseSend((, expression)
|
||||
isNextIdentifier(()
|
||||
ensureIdentifier((, expression)
|
||||
listener: handleIdentifier(x, expression)
|
||||
listener: handleNoTypeArguments(,)
|
||||
parseArgumentsOpt(x)
|
||||
listener: handleNoArguments(,)
|
||||
listener: handleSend(x, ,)
|
||||
parseExpression(,)
|
||||
parsePrecedenceExpression(,, 1, true)
|
||||
parseUnaryExpression(,, true)
|
||||
parsePrimary(,, expression)
|
||||
parseSendOrFunctionLiteral(,, expression)
|
||||
parseSend(,, expression)
|
||||
isNextIdentifier(,)
|
||||
ensureIdentifier(,, expression)
|
||||
listener: handleIdentifier(y, expression)
|
||||
listener: handleNoTypeArguments())
|
||||
parseArgumentsOpt(y)
|
||||
listener: handleNoArguments())
|
||||
listener: handleSend(y, ))
|
||||
listener: endArguments(2, (, ))
|
||||
listener: endMetadata(@, null, a)
|
||||
listener: endMetadataStar(1)
|
||||
parseTopLevelMemberImpl())
|
||||
listener: beginTopLevelMember(a)
|
||||
isReservedKeyword(;)
|
||||
parseFields(), null, null, null, null, null, null, null, ), Instance of 'NoType', a, DeclarationKind.TopLevel, null, false)
|
||||
listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, ))
|
||||
reportRecoverableError(a, MissingConstFinalVarOrType)
|
||||
listener: handleRecoverableError(MissingConstFinalVarOrType, a, a)
|
||||
listener: handleNoType())
|
||||
ensureIdentifierPotentiallyRecovered(), topLevelVariableDeclaration, false)
|
||||
listener: handleIdentifier(a, topLevelVariableDeclaration)
|
||||
parseFieldInitializerOpt(a, a, null, null, null, null, null, DeclarationKind.TopLevel, null)
|
||||
listener: handleNoFieldInitializer(;)
|
||||
listener: endTopLevelFields(null, null, null, null, null, 1, a, ;)
|
||||
listener: endTopLevelDeclaration(@)
|
||||
parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
|
||||
parseMetadataStar(;)
|
||||
listener: beginMetadataStar(@)
|
||||
parseMetadata(;)
|
||||
listener: beginMetadata(@)
|
||||
ensureIdentifier(@, metadataReference)
|
||||
listener: handleIdentifier(metadata, metadataReference)
|
||||
parseQualifiedRestOpt(metadata, metadataContinuation)
|
||||
listener: handleNoTypeArguments(()
|
||||
parseArgumentsOptMetadata(metadata)
|
||||
listener: handleNoArguments(()
|
||||
listener: endMetadata(@, null, ()
|
||||
listener: endMetadataStar(1)
|
||||
parseTopLevelMemberImpl(metadata)
|
||||
listener: beginTopLevelMember(()
|
||||
parseFields(metadata, null, null, null, null, null, null, null, metadata, Instance of 'ComplexTypeInfo', a, DeclarationKind.TopLevel, null, false)
|
||||
listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, metadata)
|
||||
parseRecordType((, metadata, false)
|
||||
listener: beginRecordType(()
|
||||
parseRecordTypeField((, identifierIsOptional: true)
|
||||
listener: beginRecordTypeEntry()
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(x)
|
||||
listener: endMetadataStar(0)
|
||||
listener: handleIdentifier(x, typeReference)
|
||||
listener: handleNoTypeArguments(,)
|
||||
listener: handleType(x, null)
|
||||
listener: handleNoName(,)
|
||||
listener: endRecordTypeEntry()
|
||||
parseRecordTypeField(,, identifierIsOptional: true)
|
||||
listener: beginRecordTypeEntry()
|
||||
parseMetadataStar(,)
|
||||
listener: beginMetadataStar(y)
|
||||
listener: endMetadataStar(0)
|
||||
listener: handleIdentifier(y, typeReference)
|
||||
listener: handleNoTypeArguments())
|
||||
listener: handleType(y, null)
|
||||
listener: handleNoName())
|
||||
listener: endRecordTypeEntry()
|
||||
listener: endRecordType((, null, 2, false)
|
||||
ensureIdentifierPotentiallyRecovered(), topLevelVariableDeclaration, false)
|
||||
listener: handleIdentifier(a, topLevelVariableDeclaration)
|
||||
parseFieldInitializerOpt(a, a, null, null, null, null, null, DeclarationKind.TopLevel, null)
|
||||
listener: handleNoFieldInitializer(;)
|
||||
listener: endTopLevelFields(null, null, null, null, null, 1, (, ;)
|
||||
listener: endTopLevelDeclaration(@)
|
||||
parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
|
||||
parseMetadataStar(;)
|
||||
listener: beginMetadataStar(@)
|
||||
parseMetadata(;)
|
||||
listener: beginMetadata(@)
|
||||
ensureIdentifier(@, metadataReference)
|
||||
listener: handleIdentifier(metadata, metadataReference)
|
||||
parseQualifiedRestOpt(metadata, metadataContinuation)
|
||||
listener: handleNoTypeArguments(()
|
||||
parseArgumentsOptMetadata(metadata)
|
||||
listener: handleNoArguments(()
|
||||
listener: endMetadata(@, null, ()
|
||||
listener: endMetadataStar(1)
|
||||
parseTopLevelMemberImpl(metadata)
|
||||
listener: beginTopLevelMember(()
|
||||
parseFields(metadata, null, null, null, null, null, null, null, metadata, Instance of 'ComplexTypeInfo', a, DeclarationKind.TopLevel, null, false)
|
||||
listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, metadata)
|
||||
parseRecordType((, metadata, false)
|
||||
listener: beginRecordType(()
|
||||
parseRecordTypeField((, identifierIsOptional: true)
|
||||
listener: beginRecordTypeEntry()
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(x)
|
||||
listener: endMetadataStar(0)
|
||||
listener: handleIdentifier(x, typeReference)
|
||||
listener: handleNoTypeArguments(,)
|
||||
listener: handleType(x, null)
|
||||
listener: handleNoName(,)
|
||||
listener: endRecordTypeEntry()
|
||||
parseRecordTypeField(,, identifierIsOptional: true)
|
||||
listener: beginRecordTypeEntry()
|
||||
parseMetadataStar(,)
|
||||
listener: beginMetadataStar(y)
|
||||
listener: endMetadataStar(0)
|
||||
listener: handleIdentifier(y, typeReference)
|
||||
listener: handleNoTypeArguments())
|
||||
listener: handleType(y, null)
|
||||
listener: handleNoName())
|
||||
listener: endRecordTypeEntry()
|
||||
listener: endRecordType((, null, 2, false)
|
||||
ensureIdentifierPotentiallyRecovered(), topLevelVariableDeclaration, false)
|
||||
listener: handleIdentifier(a, topLevelVariableDeclaration)
|
||||
parseFieldInitializerOpt(a, a, null, null, null, null, null, DeclarationKind.TopLevel, null)
|
||||
listener: handleNoFieldInitializer(;)
|
||||
listener: endTopLevelFields(null, null, null, null, null, 1, (, ;)
|
||||
listener: endTopLevelDeclaration(@)
|
||||
parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
|
||||
parseMetadataStar(;)
|
||||
listener: beginMetadataStar(@)
|
||||
parseMetadata(;)
|
||||
listener: beginMetadata(@)
|
||||
ensureIdentifier(@, metadataReference)
|
||||
listener: handleIdentifier(metadata, metadataReference)
|
||||
parseQualifiedRestOpt(metadata, metadataContinuation)
|
||||
listener: handleNoTypeArguments(()
|
||||
parseArgumentsOptMetadata(metadata)
|
||||
listener: handleNoArguments(()
|
||||
listener: endMetadata(@, null, ()
|
||||
listener: endMetadataStar(1)
|
||||
parseTopLevelMemberImpl(metadata)
|
||||
listener: beginTopLevelMember(()
|
||||
parseFields(metadata, null, null, null, null, null, null, null, metadata, Instance of 'ComplexTypeInfo', a, DeclarationKind.TopLevel, null, false)
|
||||
listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, metadata)
|
||||
parseRecordType((, metadata, false)
|
||||
listener: beginRecordType(()
|
||||
parseRecordTypeField((, identifierIsOptional: true)
|
||||
listener: beginRecordTypeEntry()
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(x)
|
||||
listener: endMetadataStar(0)
|
||||
listener: handleIdentifier(x, typeReference)
|
||||
listener: handleNoTypeArguments(,)
|
||||
listener: handleType(x, null)
|
||||
listener: handleNoName(,)
|
||||
listener: endRecordTypeEntry()
|
||||
parseRecordTypeField(,, identifierIsOptional: true)
|
||||
listener: beginRecordTypeEntry()
|
||||
parseMetadataStar(,)
|
||||
listener: beginMetadataStar(y)
|
||||
listener: endMetadataStar(0)
|
||||
listener: handleIdentifier(y, typeReference)
|
||||
listener: handleNoTypeArguments())
|
||||
listener: handleType(y, null)
|
||||
listener: handleNoName())
|
||||
listener: endRecordTypeEntry()
|
||||
listener: endRecordType((, null, 2, false)
|
||||
ensureIdentifierPotentiallyRecovered(), topLevelVariableDeclaration, false)
|
||||
listener: handleIdentifier(a, topLevelVariableDeclaration)
|
||||
parseFieldInitializerOpt(a, a, null, null, null, null, null, DeclarationKind.TopLevel, null)
|
||||
listener: handleNoFieldInitializer(;)
|
||||
listener: endTopLevelFields(null, null, null, null, null, 1, (, ;)
|
||||
listener: endTopLevelDeclaration(@)
|
||||
parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
|
||||
parseMetadataStar(;)
|
||||
listener: beginMetadataStar(@)
|
||||
parseMetadata(;)
|
||||
listener: beginMetadata(@)
|
||||
ensureIdentifier(@, metadataReference)
|
||||
listener: handleIdentifier(metadata, metadataReference)
|
||||
parseQualifiedRestOpt(metadata, metadataContinuation)
|
||||
listener: handleNoTypeArguments(()
|
||||
parseArgumentsOptMetadata(metadata)
|
||||
listener: handleNoArguments(()
|
||||
listener: endMetadata(@, null, ()
|
||||
listener: endMetadataStar(1)
|
||||
parseTopLevelMemberImpl(metadata)
|
||||
listener: beginTopLevelMember(()
|
||||
parseFields(metadata, null, null, null, null, null, null, null, metadata, Instance of 'ComplexTypeInfo', a, DeclarationKind.TopLevel, null, false)
|
||||
listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, metadata)
|
||||
parseRecordType((, metadata, false)
|
||||
listener: beginRecordType(()
|
||||
parseRecordTypeField((, identifierIsOptional: true)
|
||||
listener: beginRecordTypeEntry()
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(x)
|
||||
listener: endMetadataStar(0)
|
||||
listener: handleIdentifier(x, typeReference)
|
||||
listener: handleNoTypeArguments(,)
|
||||
listener: handleType(x, null)
|
||||
listener: handleNoName(,)
|
||||
listener: endRecordTypeEntry()
|
||||
listener: endRecordType((, null, 1, false)
|
||||
ensureIdentifierPotentiallyRecovered(), topLevelVariableDeclaration, false)
|
||||
listener: handleIdentifier(a, topLevelVariableDeclaration)
|
||||
parseFieldInitializerOpt(a, a, null, null, null, null, null, DeclarationKind.TopLevel, null)
|
||||
listener: handleNoFieldInitializer(;)
|
||||
listener: endTopLevelFields(null, null, null, null, null, 1, (, ;)
|
||||
listener: endTopLevelDeclaration(@)
|
||||
parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
|
||||
parseMetadataStar(;)
|
||||
listener: beginMetadataStar(@)
|
||||
parseMetadata(;)
|
||||
listener: beginMetadata(@)
|
||||
ensureIdentifier(@, metadataReference)
|
||||
listener: handleIdentifier(metadata, metadataReference)
|
||||
parseQualifiedRestOpt(metadata, metadataContinuation)
|
||||
listener: handleNoTypeArguments(()
|
||||
parseArgumentsOptMetadata(metadata)
|
||||
listener: handleNoArguments(()
|
||||
listener: endMetadata(@, null, ()
|
||||
listener: endMetadataStar(1)
|
||||
parseTopLevelMemberImpl(metadata)
|
||||
listener: beginTopLevelMember(()
|
||||
isReservedKeyword(x)
|
||||
parseInvalidTopLevelDeclaration(metadata)
|
||||
reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
|
||||
listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '('., null, {lexeme: (}], (, ()
|
||||
listener: handleInvalidTopLevelDeclaration(()
|
||||
listener: endTopLevelDeclaration(x)
|
||||
parseTopLevelDeclarationImpl((, Instance of 'DirectiveContext')
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(x)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelMemberImpl(()
|
||||
listener: beginTopLevelMember(x)
|
||||
isReservedKeyword(,)
|
||||
parseFields((, null, null, null, null, null, null, null, (, Instance of 'NoType', x, DeclarationKind.TopLevel, null, false)
|
||||
listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, ()
|
||||
reportRecoverableError(x, MissingConstFinalVarOrType)
|
||||
listener: handleRecoverableError(MissingConstFinalVarOrType, x, x)
|
||||
listener: handleNoType(()
|
||||
ensureIdentifierPotentiallyRecovered((, topLevelVariableDeclaration, false)
|
||||
listener: handleIdentifier(x, topLevelVariableDeclaration)
|
||||
parseFieldInitializerOpt(x, x, null, null, null, null, null, DeclarationKind.TopLevel, null)
|
||||
listener: handleNoFieldInitializer(,)
|
||||
ensureIdentifier(,, topLevelVariableDeclaration)
|
||||
listener: handleIdentifier(y, topLevelVariableDeclaration)
|
||||
parseFieldInitializerOpt(y, y, null, null, null, null, null, DeclarationKind.TopLevel, null)
|
||||
listener: handleNoFieldInitializer())
|
||||
ensureSemicolon(y)
|
||||
reportRecoverableError(y, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
|
||||
listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], y, y)
|
||||
rewriter()
|
||||
listener: endTopLevelFields(null, null, null, null, null, 2, x, ;)
|
||||
listener: endTopLevelDeclaration())
|
||||
parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
|
||||
parseMetadataStar(;)
|
||||
listener: beginMetadataStar())
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginTopLevelMember())
|
||||
parseInvalidTopLevelDeclaration(;)
|
||||
reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
|
||||
listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got ')'., null, {lexeme: )}], ), ))
|
||||
listener: handleInvalidTopLevelDeclaration())
|
||||
listener: endTopLevelDeclaration(class)
|
||||
parseTopLevelDeclarationImpl(), Instance of 'DirectiveContext')
|
||||
parseMetadataStar())
|
||||
listener: beginMetadataStar(class)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(), class, null, null, null, Instance of 'DirectiveContext')
|
||||
parseClassOrNamedMixinApplication(null, null, null, null, null, null, class)
|
||||
listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
|
||||
ensureIdentifier(class, classOrMixinDeclaration)
|
||||
listener: handleIdentifier(C, classOrMixinDeclaration)
|
||||
listener: handleNoTypeVariables({)
|
||||
listener: beginClassDeclaration(class, null, null, null, null, null, null, C)
|
||||
parseClass(C, class, class, C)
|
||||
parseClassHeaderOpt(C, class, class)
|
||||
parseClassExtendsOpt(C)
|
||||
listener: handleNoType(C)
|
||||
listener: handleClassExtends(null, 1)
|
||||
parseClassWithClauseOpt(C)
|
||||
listener: handleClassNoWithClause()
|
||||
parseClassOrMixinOrEnumImplementsOpt(C)
|
||||
listener: handleImplements(null, 0)
|
||||
listener: handleClassHeader(class, class, null)
|
||||
parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
|
||||
listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
|
||||
notEofOrValue(}, })
|
||||
listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
|
||||
listener: endClassDeclaration(class, })
|
||||
listener: endTopLevelDeclaration(@)
|
||||
parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
|
||||
parseMetadataStar(})
|
||||
listener: beginMetadataStar(@)
|
||||
parseMetadata(})
|
||||
listener: beginMetadata(@)
|
||||
ensureIdentifier(@, metadataReference)
|
||||
listener: handleIdentifier(metadata, metadataReference)
|
||||
parseQualifiedRestOpt(metadata, metadataContinuation)
|
||||
listener: beginTypeArguments(<)
|
||||
listener: handleIdentifier(T, typeReference)
|
||||
listener: handleNoTypeArguments(>)
|
||||
listener: handleType(T, null)
|
||||
listener: endTypeArguments(1, <, >)
|
||||
parseArgumentsOptMetadata(>)
|
||||
listener: handleNoArguments(()
|
||||
listener: endMetadata(@, null, ()
|
||||
listener: endMetadataStar(1)
|
||||
parseTopLevelMemberImpl(>)
|
||||
listener: beginTopLevelMember(()
|
||||
parseFields(>, null, null, null, null, null, null, null, >, Instance of 'ComplexTypeInfo', a, DeclarationKind.TopLevel, null, false)
|
||||
listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, >)
|
||||
parseRecordType((, >, false)
|
||||
listener: beginRecordType(()
|
||||
parseRecordTypeField((, identifierIsOptional: true)
|
||||
listener: beginRecordTypeEntry()
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(x)
|
||||
listener: endMetadataStar(0)
|
||||
listener: handleIdentifier(x, typeReference)
|
||||
listener: handleNoTypeArguments(,)
|
||||
listener: handleType(x, null)
|
||||
listener: handleNoName(,)
|
||||
listener: endRecordTypeEntry()
|
||||
parseRecordTypeField(,, identifierIsOptional: true)
|
||||
listener: beginRecordTypeEntry()
|
||||
parseMetadataStar(,)
|
||||
listener: beginMetadataStar(y)
|
||||
listener: endMetadataStar(0)
|
||||
listener: handleIdentifier(y, typeReference)
|
||||
listener: handleNoTypeArguments())
|
||||
listener: handleType(y, null)
|
||||
listener: handleNoName())
|
||||
listener: endRecordTypeEntry()
|
||||
listener: endRecordType((, null, 2, false)
|
||||
ensureIdentifierPotentiallyRecovered(), topLevelVariableDeclaration, false)
|
||||
listener: handleIdentifier(a, topLevelVariableDeclaration)
|
||||
parseFieldInitializerOpt(a, a, null, null, null, null, null, DeclarationKind.TopLevel, null)
|
||||
listener: handleNoFieldInitializer(;)
|
||||
listener: endTopLevelFields(null, null, null, null, null, 1, (, ;)
|
||||
listener: endTopLevelDeclaration()
|
||||
reportAllErrorTokens(@)
|
||||
listener: endCompilationUnit(12, )
|
|
@ -0,0 +1,75 @@
|
|||
NOTICE: Stream was rewritten by parser!
|
||||
|
||||
@metadata(x, y) a;
|
||||
|
||||
@metadata<T>(x, y) a;
|
||||
|
||||
@metadata <T>(x, y) a;
|
||||
|
||||
|
||||
@metadata (x, y) a;
|
||||
|
||||
@metadata
|
||||
(x, y) a;
|
||||
|
||||
@metadata (x, y) a;
|
||||
|
||||
@metadata
|
||||
(x,) a;
|
||||
|
||||
|
||||
|
||||
|
||||
@metadata (x, y;)
|
||||
class C {}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@metadata<T> (x, y) a;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@[SimpleToken]metadata[StringToken]([BeginToken]x[StringToken],[SimpleToken] y[StringToken])[SimpleToken] a[StringToken];[SimpleToken]
|
||||
|
||||
@[SimpleToken]metadata[StringToken]<[BeginToken]T[StringToken]>[SimpleToken]([BeginToken]x[StringToken],[SimpleToken] y[StringToken])[SimpleToken] a[StringToken];[SimpleToken]
|
||||
|
||||
@[SimpleToken]metadata[StringToken] <[BeginToken]T[StringToken]>[SimpleToken]([BeginToken]x[StringToken],[SimpleToken] y[StringToken])[SimpleToken] a[StringToken];[SimpleToken]
|
||||
|
||||
|
||||
@[SimpleToken]metadata[StringToken] ([BeginToken]x[StringToken],[SimpleToken] y[StringToken])[SimpleToken] a[StringToken];[SimpleToken]
|
||||
|
||||
@[SimpleToken]metadata[StringToken]
|
||||
([BeginToken]x[StringToken],[SimpleToken] y[StringToken])[SimpleToken] a[StringToken];[SimpleToken]
|
||||
|
||||
@[SimpleToken]metadata[StringToken] ([BeginToken]x[StringToken],[SimpleToken] y[StringToken])[SimpleToken] a[StringToken];[SimpleToken]
|
||||
|
||||
@[SimpleToken]metadata[StringToken]
|
||||
([BeginToken]x[StringToken],[SimpleToken])[SimpleToken] a[StringToken];[SimpleToken]
|
||||
|
||||
|
||||
|
||||
|
||||
@[SimpleToken]metadata[StringToken] ([BeginToken]x[StringToken],[SimpleToken] y[StringToken];[SyntheticToken])[SimpleToken]
|
||||
class[KeywordToken] C[StringToken] {[BeginToken]}[SimpleToken]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@[SimpleToken]metadata[StringToken]<[BeginToken]T[StringToken]>[SimpleToken] ([BeginToken]x[StringToken],[SimpleToken] y[StringToken])[SimpleToken] a[StringToken];[SimpleToken]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[SimpleToken]
|
|
@ -0,0 +1,73 @@
|
|||
@metadata(x, y) a;
|
||||
|
||||
@metadata<T>(x, y) a;
|
||||
|
||||
@metadata <T>(x, y) a;
|
||||
|
||||
|
||||
@metadata (x, y) a;
|
||||
|
||||
@metadata
|
||||
(x, y) a;
|
||||
|
||||
@metadata (x, y) a;
|
||||
|
||||
@metadata
|
||||
(x,) a;
|
||||
|
||||
|
||||
|
||||
|
||||
@metadata (x, y)
|
||||
class C {}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@metadata<T> (x, y) a;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@[SimpleToken]metadata[StringToken]([BeginToken]x[StringToken],[SimpleToken] y[StringToken])[SimpleToken] a[StringToken];[SimpleToken]
|
||||
|
||||
@[SimpleToken]metadata[StringToken]<[BeginToken]T[StringToken]>[SimpleToken]([BeginToken]x[StringToken],[SimpleToken] y[StringToken])[SimpleToken] a[StringToken];[SimpleToken]
|
||||
|
||||
@[SimpleToken]metadata[StringToken] <[BeginToken]T[StringToken]>[SimpleToken]([BeginToken]x[StringToken],[SimpleToken] y[StringToken])[SimpleToken] a[StringToken];[SimpleToken]
|
||||
|
||||
|
||||
@[SimpleToken]metadata[StringToken] ([BeginToken]x[StringToken],[SimpleToken] y[StringToken])[SimpleToken] a[StringToken];[SimpleToken]
|
||||
|
||||
@[SimpleToken]metadata[StringToken]
|
||||
([BeginToken]x[StringToken],[SimpleToken] y[StringToken])[SimpleToken] a[StringToken];[SimpleToken]
|
||||
|
||||
@[SimpleToken]metadata[StringToken] ([BeginToken]x[StringToken],[SimpleToken] y[StringToken])[SimpleToken] a[StringToken];[SimpleToken]
|
||||
|
||||
@[SimpleToken]metadata[StringToken]
|
||||
([BeginToken]x[StringToken],[SimpleToken])[SimpleToken] a[StringToken];[SimpleToken]
|
||||
|
||||
|
||||
|
||||
|
||||
@[SimpleToken]metadata[StringToken] ([BeginToken]x[StringToken],[SimpleToken] y[StringToken])[SimpleToken]
|
||||
class[KeywordToken] C[StringToken] {[BeginToken]}[SimpleToken]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@[SimpleToken]metadata[StringToken]<[BeginToken]T[StringToken]>[SimpleToken] ([BeginToken]x[StringToken],[SimpleToken] y[StringToken])[SimpleToken] a[StringToken];[SimpleToken]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[SimpleToken]
|
|
@ -1908,6 +1908,15 @@ class TestParser extends Parser {
|
|||
return result;
|
||||
}
|
||||
|
||||
@override
|
||||
Token parseArgumentsOptMetadata(Token token) {
|
||||
doPrint('parseArgumentsOptMetadata(' '$token)');
|
||||
indent++;
|
||||
var result = super.parseArgumentsOptMetadata(token);
|
||||
indent--;
|
||||
return result;
|
||||
}
|
||||
|
||||
@override
|
||||
Token parseArgumentsOpt(Token token) {
|
||||
doPrint('parseArgumentsOpt(' '$token)');
|
||||
|
|
13
pkg/front_end/testcases/records/metadata.dart
Normal file
13
pkg/front_end/testcases/records/metadata.dart
Normal file
|
@ -0,0 +1,13 @@
|
|||
// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
class metadata<T> {
|
||||
const metadata();
|
||||
}
|
||||
|
||||
// This is a syntax error because the <int> means there must be an argument list
|
||||
// after it, but the NO_SPACE in metadatum prevents it from being parsed as such
|
||||
// and the result is an error.
|
||||
|
||||
@metadata<int> (int, int) a = (42, 42);
|
20
pkg/front_end/testcases/records/metadata.dart.strong.expect
Normal file
20
pkg/front_end/testcases/records/metadata.dart.strong.expect
Normal file
|
@ -0,0 +1,20 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/records/metadata.dart:13:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
|
||||
// @metadata<int> (int, int) a = (42, 42);
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class metadata<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::metadata<self::metadata::T%>
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
@invalid-expression "pkg/front_end/testcases/records/metadata.dart:13:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
|
||||
@metadata<int> (int, int) a = (42, 42);
|
||||
^"
|
||||
static field (core::int, core::int) a = (42, 42);
|
|
@ -0,0 +1,25 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/records/metadata.dart:13:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
|
||||
// @metadata<int> (int, int) a = (42, 42);
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class metadata<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::metadata<self::metadata::T%>
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
@invalid-expression "pkg/front_end/testcases/records/metadata.dart:13:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
|
||||
@metadata<int> (int, int) a = (42, 42);
|
||||
^"
|
||||
static field (core::int, core::int) a = (42, 42);
|
||||
|
||||
|
||||
Extra constant evaluation status:
|
||||
Evaluated: RecordLiteral @ org-dartlang-testcase:///metadata.dart:13:31 -> RecordConstant(const (42, 42))
|
||||
Extra constant evaluation: evaluated: 1, effectively constant: 1
|
|
@ -0,0 +1,5 @@
|
|||
class metadata<T> {
|
||||
const metadata();
|
||||
}
|
||||
@metadata<int>
|
||||
(int, int) a = (42, 42);
|
20
pkg/front_end/testcases/records/metadata.dart.weak.expect
Normal file
20
pkg/front_end/testcases/records/metadata.dart.weak.expect
Normal file
|
@ -0,0 +1,20 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/records/metadata.dart:13:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
|
||||
// @metadata<int> (int, int) a = (42, 42);
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class metadata<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::metadata<self::metadata::T%>
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
@invalid-expression "pkg/front_end/testcases/records/metadata.dart:13:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
|
||||
@metadata<int> (int, int) a = (42, 42);
|
||||
^"
|
||||
static field (core::int, core::int) a = (42, 42);
|
|
@ -0,0 +1,20 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/records/metadata.dart:13:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
|
||||
// @metadata<int> (int, int) a = (42, 42);
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class metadata<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::metadata<self::metadata::T%>
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
@invalid-expression "pkg/front_end/testcases/records/metadata.dart:13:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
|
||||
@metadata<int> (int, int) a = (42, 42);
|
||||
^"
|
||||
static field (core::int, core::int) a = (42, 42);
|
|
@ -0,0 +1,20 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/records/metadata.dart:13:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
|
||||
// @metadata<int> (int, int) a = (42, 42);
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class metadata<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::metadata<self::metadata::T%>
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
@invalid-expression "pkg/front_end/testcases/records/metadata.dart:13:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
|
||||
@metadata<int> (int, int) a = (42, 42);
|
||||
^" in self::metadata<dynamic>
|
||||
static field (core::int, core::int) a;
|
|
@ -0,0 +1,25 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/records/metadata.dart:13:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
|
||||
// @metadata<int> (int, int) a = (42, 42);
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class metadata<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::metadata<self::metadata::T%>
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
@invalid-expression "pkg/front_end/testcases/records/metadata.dart:13:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
|
||||
@metadata<int> (int, int) a = (42, 42);
|
||||
^"
|
||||
static field (core::int, core::int) a = (42, 42);
|
||||
|
||||
|
||||
Extra constant evaluation status:
|
||||
Evaluated: RecordLiteral @ org-dartlang-testcase:///metadata.dart:13:31 -> RecordConstant(const (42, 42))
|
||||
Extra constant evaluation: evaluated: 1, effectively constant: 1
|
|
@ -168,6 +168,7 @@ records/issue50157: FormatterCrash
|
|||
records/issue50182: FormatterCrash
|
||||
records/issue50514: FormatterCrash
|
||||
records/issue50515: FormatterCrash
|
||||
records/metadata: FormatterCrash
|
||||
records/named_fields_clashing_with_positional: FormatterCrash
|
||||
records/names_of_positional_fields_same_as_object_members: FormatterCrash
|
||||
records/null_shorting: FormatterCrash
|
||||
|
|
Loading…
Reference in a new issue