3a1f732c0f
This CL:
* Changes the events so beginX and endX events always comes in pairs
(though technically not right as some specific events can be beginX
endY --- but in those cases it is at least documented and used in code
that actually tests it).
-> This entails adding some events and converting something from
"beginX" to "handleX" instead.
* Adds a utility that can generate an AST of sorts directly from the
parser via a listener using the begin/end matching (and knowing of the
specific ones that doesn't match directly).
* Adds a test that checks that - at least for all tested (50,000+) files
- the AST actually generate "correctly", i.e. matches up begin/ends
and ends up with a single top entry "CompilationUnit".
* Adds a different visualization to the parser listener events by
displaying the "AST directly from the parser" in a UI that can be
navigated. The visualization may not be the best, but it's certainly
a stepping stone.
Change-Id: I9b27f7bbf3be442adc92f357c7b3c46da6f84cf7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/159664
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
679 lines
40 KiB
Plaintext
679 lines
40 KiB
Plaintext
parseUnit(Order)
|
|
skipErrorTokens(Order)
|
|
listener: beginCompilationUnit(Order)
|
|
syntheticPreviousToken(Order)
|
|
parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
|
|
parseMetadataStar()
|
|
listener: beginMetadataStar(Order)
|
|
listener: endMetadataStar(0)
|
|
parseTopLevelMemberImpl()
|
|
listener: beginTopLevelMember(Order)
|
|
parseTopLevelMethod(, null, , Instance of 'SimpleType', null, method1, false)
|
|
listener: beginTopLevelMethod(, null)
|
|
listener: handleIdentifier(Order, typeReference)
|
|
listener: handleNoTypeArguments(method1)
|
|
listener: handleType(Order, null)
|
|
ensureIdentifierPotentiallyRecovered(Order, topLevelFunctionDeclaration, false)
|
|
listener: handleIdentifier(method1, topLevelFunctionDeclaration)
|
|
parseMethodTypeVar(method1)
|
|
listener: handleNoTypeVariables(()
|
|
parseGetterOrFormalParameters(method1, method1, false, MemberKind.TopLevelMethod)
|
|
parseFormalParameters(method1, MemberKind.TopLevelMethod)
|
|
parseFormalParametersRest((, MemberKind.TopLevelMethod)
|
|
listener: beginFormalParameters((, MemberKind.TopLevelMethod)
|
|
parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
|
|
parseMetadataStar(()
|
|
listener: beginMetadataStar(Map)
|
|
listener: endMetadataStar(0)
|
|
listener: beginFormalParameter(Map, MemberKind.TopLevelMethod, null, null, null)
|
|
ensureIdentifier((, typeReference)
|
|
listener: handleIdentifier(Map, typeReference)
|
|
listener: beginTypeArguments(<)
|
|
listener: handleIdentifier(String, typeReference)
|
|
listener: handleNoTypeArguments(,)
|
|
listener: handleType(String, null)
|
|
listener: handleIdentifier(dynamic, typeReference)
|
|
listener: handleNoTypeArguments(>)
|
|
listener: handleType(dynamic, null)
|
|
listener: endTypeArguments(2, <, >)
|
|
listener: handleType(Map, null)
|
|
ensureIdentifier(>, formalParameterDeclaration)
|
|
listener: handleIdentifier(json, formalParameterDeclaration)
|
|
listener: handleFormalParameterWithoutValue())
|
|
listener: endFormalParameter(null, null, json, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
|
|
listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
|
|
parseAsyncModifierOpt())
|
|
listener: handleAsyncModifier(null, null)
|
|
inPlainSync()
|
|
parseFunctionBody(), false, false)
|
|
listener: beginBlockFunctionBody({)
|
|
notEofOrValue(}, return)
|
|
parseStatement({)
|
|
parseStatementX({)
|
|
parseReturnStatement({)
|
|
listener: beginReturnStatement(return)
|
|
parseExpression(return)
|
|
parsePrecedenceExpression(return, 1, true)
|
|
parseUnaryExpression(return, true)
|
|
parsePrimary(return, expression)
|
|
parseSendOrFunctionLiteral(return, expression)
|
|
looksLikeFunctionBody(..)
|
|
parseSend(return, expression)
|
|
ensureIdentifier(return, expression)
|
|
listener: handleIdentifier(Order, expression)
|
|
listener: handleNoTypeArguments(()
|
|
parseArgumentsOpt(Order)
|
|
parseArguments(Order)
|
|
parseArgumentsRest(()
|
|
listener: beginArguments(()
|
|
listener: endArguments(0, (, ))
|
|
listener: handleSend(Order, ..)
|
|
parseCascadeExpression())
|
|
listener: beginCascade(..)
|
|
parseSend(.., expressionContinuation)
|
|
ensureIdentifier(.., expressionContinuation)
|
|
listener: handleIdentifier(x, expressionContinuation)
|
|
listener: handleNoTypeArguments(=)
|
|
parseArgumentsOpt(x)
|
|
listener: handleNoArguments(=)
|
|
listener: handleSend(x, =)
|
|
listener: handleEndingBinaryExpression(..)
|
|
parseArgumentOrIndexStar(x, Instance of 'NoTypeParamOrArg', false)
|
|
parseExpressionWithoutCascade(=)
|
|
parsePrecedenceExpression(=, 1, false)
|
|
parseUnaryExpression(=, false)
|
|
parsePrimary(=, expression)
|
|
parseSendOrFunctionLiteral(=, expression)
|
|
parseSend(=, expression)
|
|
ensureIdentifier(=, expression)
|
|
listener: handleIdentifier(json, expression)
|
|
listener: handleNoTypeArguments([)
|
|
parseArgumentsOpt(json)
|
|
listener: handleNoArguments([)
|
|
listener: handleSend(json, [)
|
|
parseArgumentOrIndexStar(json, Instance of 'NoTypeParamOrArg', false)
|
|
parseExpression([)
|
|
parsePrecedenceExpression([, 1, true)
|
|
parseUnaryExpression([, true)
|
|
parsePrimary([, expression)
|
|
parseLiteralString([)
|
|
parseSingleLiteralString([)
|
|
listener: beginLiteralString('x')
|
|
listener: endLiteralString(0, ])
|
|
listener: handleIndexedExpression(null, [, ])
|
|
parseAsOperatorRest(])
|
|
listener: beginAsOperatorType(as)
|
|
computeTypeAfterIsOrAs(as)
|
|
listener: handleIdentifier(List, typeReference)
|
|
listener: handleNoTypeArguments(..)
|
|
listener: handleType(List, null)
|
|
listener: endAsOperatorType(as)
|
|
listener: handleAsOperator(as)
|
|
skipChainedAsIsOperators(List)
|
|
listener: handleAssignmentExpression(=)
|
|
listener: endCascade()
|
|
parseCascadeExpression(List)
|
|
listener: beginCascade(..)
|
|
parseSend(.., expressionContinuation)
|
|
ensureIdentifier(.., expressionContinuation)
|
|
listener: handleIdentifier(y, expressionContinuation)
|
|
listener: handleNoTypeArguments(=)
|
|
parseArgumentsOpt(y)
|
|
listener: handleNoArguments(=)
|
|
listener: handleSend(y, =)
|
|
listener: handleEndingBinaryExpression(..)
|
|
parseArgumentOrIndexStar(y, Instance of 'NoTypeParamOrArg', false)
|
|
parseExpressionWithoutCascade(=)
|
|
parsePrecedenceExpression(=, 1, false)
|
|
parseUnaryExpression(=, false)
|
|
parsePrimary(=, expression)
|
|
parseSendOrFunctionLiteral(=, expression)
|
|
parseSend(=, expression)
|
|
ensureIdentifier(=, expression)
|
|
listener: handleIdentifier(json, expression)
|
|
listener: handleNoTypeArguments([)
|
|
parseArgumentsOpt(json)
|
|
listener: handleNoArguments([)
|
|
listener: handleSend(json, [)
|
|
parseArgumentOrIndexStar(json, Instance of 'NoTypeParamOrArg', false)
|
|
parseExpression([)
|
|
parsePrecedenceExpression([, 1, true)
|
|
parseUnaryExpression([, true)
|
|
parsePrimary([, expression)
|
|
parseLiteralString([)
|
|
parseSingleLiteralString([)
|
|
listener: beginLiteralString('y')
|
|
listener: endLiteralString(0, ])
|
|
listener: handleIndexedExpression(null, [, ])
|
|
parseAsOperatorRest(])
|
|
listener: beginAsOperatorType(as)
|
|
computeTypeAfterIsOrAs(as)
|
|
listener: handleIdentifier(int, typeReference)
|
|
listener: handleNoTypeArguments(;)
|
|
listener: handleType(int, null)
|
|
listener: endAsOperatorType(as)
|
|
listener: handleAsOperator(as)
|
|
skipChainedAsIsOperators(int)
|
|
listener: handleAssignmentExpression(=)
|
|
listener: endCascade()
|
|
ensureSemicolon(int)
|
|
listener: endReturnStatement(true, return, ;)
|
|
inGenerator()
|
|
notEofOrValue(}, })
|
|
listener: endBlockFunctionBody(1, {, })
|
|
listener: endTopLevelMethod(Order, null, })
|
|
listener: endTopLevelDeclaration(Order)
|
|
parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
|
|
parseMetadataStar(})
|
|
listener: beginMetadataStar(Order)
|
|
listener: endMetadataStar(0)
|
|
parseTopLevelMemberImpl(})
|
|
listener: beginTopLevelMember(Order)
|
|
parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, method2, false)
|
|
listener: beginTopLevelMethod(}, null)
|
|
listener: handleIdentifier(Order, typeReference)
|
|
listener: handleNoTypeArguments(method2)
|
|
listener: handleType(Order, null)
|
|
ensureIdentifierPotentiallyRecovered(Order, topLevelFunctionDeclaration, false)
|
|
listener: handleIdentifier(method2, topLevelFunctionDeclaration)
|
|
parseMethodTypeVar(method2)
|
|
listener: handleNoTypeVariables(()
|
|
parseGetterOrFormalParameters(method2, method2, false, MemberKind.TopLevelMethod)
|
|
parseFormalParameters(method2, MemberKind.TopLevelMethod)
|
|
parseFormalParametersRest((, MemberKind.TopLevelMethod)
|
|
listener: beginFormalParameters((, MemberKind.TopLevelMethod)
|
|
parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
|
|
parseMetadataStar(()
|
|
listener: beginMetadataStar(Map)
|
|
listener: endMetadataStar(0)
|
|
listener: beginFormalParameter(Map, MemberKind.TopLevelMethod, null, null, null)
|
|
ensureIdentifier((, typeReference)
|
|
listener: handleIdentifier(Map, typeReference)
|
|
listener: beginTypeArguments(<)
|
|
listener: handleIdentifier(String, typeReference)
|
|
listener: handleNoTypeArguments(,)
|
|
listener: handleType(String, null)
|
|
listener: handleIdentifier(dynamic, typeReference)
|
|
listener: handleNoTypeArguments(>)
|
|
listener: handleType(dynamic, null)
|
|
listener: endTypeArguments(2, <, >)
|
|
listener: handleType(Map, null)
|
|
ensureIdentifier(>, formalParameterDeclaration)
|
|
listener: handleIdentifier(json, formalParameterDeclaration)
|
|
listener: handleFormalParameterWithoutValue())
|
|
listener: endFormalParameter(null, null, json, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
|
|
listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
|
|
parseAsyncModifierOpt())
|
|
listener: handleAsyncModifier(null, null)
|
|
inPlainSync()
|
|
parseFunctionBody(), false, false)
|
|
listener: beginBlockFunctionBody({)
|
|
notEofOrValue(}, return)
|
|
parseStatement({)
|
|
parseStatementX({)
|
|
parseReturnStatement({)
|
|
listener: beginReturnStatement(return)
|
|
parseExpression(return)
|
|
parsePrecedenceExpression(return, 1, true)
|
|
parseUnaryExpression(return, true)
|
|
parsePrimary(return, expression)
|
|
parseSendOrFunctionLiteral(return, expression)
|
|
looksLikeFunctionBody(..)
|
|
parseSend(return, expression)
|
|
ensureIdentifier(return, expression)
|
|
listener: handleIdentifier(Order, expression)
|
|
listener: handleNoTypeArguments(()
|
|
parseArgumentsOpt(Order)
|
|
parseArguments(Order)
|
|
parseArgumentsRest(()
|
|
listener: beginArguments(()
|
|
listener: endArguments(0, (, ))
|
|
listener: handleSend(Order, ..)
|
|
parseCascadeExpression())
|
|
listener: beginCascade(..)
|
|
parseSend(.., expressionContinuation)
|
|
ensureIdentifier(.., expressionContinuation)
|
|
listener: handleIdentifier(x, expressionContinuation)
|
|
listener: handleNoTypeArguments(=)
|
|
parseArgumentsOpt(x)
|
|
listener: handleNoArguments(=)
|
|
listener: handleSend(x, =)
|
|
listener: handleEndingBinaryExpression(..)
|
|
parseArgumentOrIndexStar(x, Instance of 'NoTypeParamOrArg', false)
|
|
parseExpressionWithoutCascade(=)
|
|
parsePrecedenceExpression(=, 1, false)
|
|
parseUnaryExpression(=, false)
|
|
parsePrimary(=, expression)
|
|
parseSendOrFunctionLiteral(=, expression)
|
|
parseSend(=, expression)
|
|
ensureIdentifier(=, expression)
|
|
listener: handleIdentifier(json, expression)
|
|
listener: handleNoTypeArguments([)
|
|
parseArgumentsOpt(json)
|
|
listener: handleNoArguments([)
|
|
listener: handleSend(json, [)
|
|
parseArgumentOrIndexStar(json, Instance of 'NoTypeParamOrArg', false)
|
|
parseExpression([)
|
|
parsePrecedenceExpression([, 1, true)
|
|
parseUnaryExpression([, true)
|
|
parsePrimary([, expression)
|
|
parseLiteralString([)
|
|
parseSingleLiteralString([)
|
|
listener: beginLiteralString('x')
|
|
listener: endLiteralString(0, ])
|
|
listener: handleIndexedExpression(null, [, ])
|
|
parseAsOperatorRest(])
|
|
listener: beginAsOperatorType(as)
|
|
computeTypeAfterIsOrAs(as)
|
|
listener: handleIdentifier(List, typeReference)
|
|
listener: handleNoTypeArguments(?)
|
|
listener: handleType(List, ?)
|
|
listener: endAsOperatorType(as)
|
|
listener: handleAsOperator(as)
|
|
skipChainedAsIsOperators(?)
|
|
listener: handleAssignmentExpression(=)
|
|
listener: endCascade()
|
|
parseCascadeExpression(?)
|
|
listener: beginCascade(..)
|
|
parseSend(.., expressionContinuation)
|
|
ensureIdentifier(.., expressionContinuation)
|
|
listener: handleIdentifier(y, expressionContinuation)
|
|
listener: handleNoTypeArguments(=)
|
|
parseArgumentsOpt(y)
|
|
listener: handleNoArguments(=)
|
|
listener: handleSend(y, =)
|
|
listener: handleEndingBinaryExpression(..)
|
|
parseArgumentOrIndexStar(y, Instance of 'NoTypeParamOrArg', false)
|
|
parseExpressionWithoutCascade(=)
|
|
parsePrecedenceExpression(=, 1, false)
|
|
parseUnaryExpression(=, false)
|
|
parsePrimary(=, expression)
|
|
parseSendOrFunctionLiteral(=, expression)
|
|
parseSend(=, expression)
|
|
ensureIdentifier(=, expression)
|
|
listener: handleIdentifier(json, expression)
|
|
listener: handleNoTypeArguments([)
|
|
parseArgumentsOpt(json)
|
|
listener: handleNoArguments([)
|
|
listener: handleSend(json, [)
|
|
parseArgumentOrIndexStar(json, Instance of 'NoTypeParamOrArg', false)
|
|
parseExpression([)
|
|
parsePrecedenceExpression([, 1, true)
|
|
parseUnaryExpression([, true)
|
|
parsePrimary([, expression)
|
|
parseLiteralString([)
|
|
parseSingleLiteralString([)
|
|
listener: beginLiteralString('y')
|
|
listener: endLiteralString(0, ])
|
|
listener: handleIndexedExpression(null, [, ])
|
|
parseAsOperatorRest(])
|
|
listener: beginAsOperatorType(as)
|
|
computeTypeAfterIsOrAs(as)
|
|
listener: handleIdentifier(int, typeReference)
|
|
listener: handleNoTypeArguments(;)
|
|
listener: handleType(int, null)
|
|
listener: endAsOperatorType(as)
|
|
listener: handleAsOperator(as)
|
|
skipChainedAsIsOperators(int)
|
|
listener: handleAssignmentExpression(=)
|
|
listener: endCascade()
|
|
ensureSemicolon(int)
|
|
listener: endReturnStatement(true, return, ;)
|
|
inGenerator()
|
|
notEofOrValue(}, })
|
|
listener: endBlockFunctionBody(1, {, })
|
|
listener: endTopLevelMethod(Order, null, })
|
|
listener: endTopLevelDeclaration(Order)
|
|
parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
|
|
parseMetadataStar(})
|
|
listener: beginMetadataStar(Order)
|
|
listener: endMetadataStar(0)
|
|
parseTopLevelMemberImpl(})
|
|
listener: beginTopLevelMember(Order)
|
|
parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, method3, false)
|
|
listener: beginTopLevelMethod(}, null)
|
|
listener: handleIdentifier(Order, typeReference)
|
|
listener: handleNoTypeArguments(method3)
|
|
listener: handleType(Order, null)
|
|
ensureIdentifierPotentiallyRecovered(Order, topLevelFunctionDeclaration, false)
|
|
listener: handleIdentifier(method3, topLevelFunctionDeclaration)
|
|
parseMethodTypeVar(method3)
|
|
listener: handleNoTypeVariables(()
|
|
parseGetterOrFormalParameters(method3, method3, false, MemberKind.TopLevelMethod)
|
|
parseFormalParameters(method3, MemberKind.TopLevelMethod)
|
|
parseFormalParametersRest((, MemberKind.TopLevelMethod)
|
|
listener: beginFormalParameters((, MemberKind.TopLevelMethod)
|
|
parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
|
|
parseMetadataStar(()
|
|
listener: beginMetadataStar(Map)
|
|
listener: endMetadataStar(0)
|
|
listener: beginFormalParameter(Map, MemberKind.TopLevelMethod, null, null, null)
|
|
ensureIdentifier((, typeReference)
|
|
listener: handleIdentifier(Map, typeReference)
|
|
listener: beginTypeArguments(<)
|
|
listener: handleIdentifier(String, typeReference)
|
|
listener: handleNoTypeArguments(,)
|
|
listener: handleType(String, null)
|
|
listener: handleIdentifier(dynamic, typeReference)
|
|
listener: handleNoTypeArguments(>)
|
|
listener: handleType(dynamic, null)
|
|
listener: endTypeArguments(2, <, >)
|
|
listener: handleType(Map, null)
|
|
ensureIdentifier(>, formalParameterDeclaration)
|
|
listener: handleIdentifier(json, formalParameterDeclaration)
|
|
listener: handleFormalParameterWithoutValue())
|
|
listener: endFormalParameter(null, null, json, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
|
|
listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
|
|
parseAsyncModifierOpt())
|
|
listener: handleAsyncModifier(null, null)
|
|
inPlainSync()
|
|
parseFunctionBody(), false, false)
|
|
listener: beginBlockFunctionBody({)
|
|
notEofOrValue(}, return)
|
|
parseStatement({)
|
|
parseStatementX({)
|
|
parseReturnStatement({)
|
|
listener: beginReturnStatement(return)
|
|
parseExpression(return)
|
|
parsePrecedenceExpression(return, 1, true)
|
|
parseUnaryExpression(return, true)
|
|
parsePrimary(return, expression)
|
|
parseSendOrFunctionLiteral(return, expression)
|
|
looksLikeFunctionBody(..)
|
|
parseSend(return, expression)
|
|
ensureIdentifier(return, expression)
|
|
listener: handleIdentifier(Order, expression)
|
|
listener: handleNoTypeArguments(()
|
|
parseArgumentsOpt(Order)
|
|
parseArguments(Order)
|
|
parseArgumentsRest(()
|
|
listener: beginArguments(()
|
|
listener: endArguments(0, (, ))
|
|
listener: handleSend(Order, ..)
|
|
parseCascadeExpression())
|
|
listener: beginCascade(..)
|
|
parseSend(.., expressionContinuation)
|
|
ensureIdentifier(.., expressionContinuation)
|
|
listener: handleIdentifier(x, expressionContinuation)
|
|
listener: handleNoTypeArguments(=)
|
|
parseArgumentsOpt(x)
|
|
listener: handleNoArguments(=)
|
|
listener: handleSend(x, =)
|
|
listener: handleEndingBinaryExpression(..)
|
|
parseArgumentOrIndexStar(x, Instance of 'NoTypeParamOrArg', false)
|
|
parseExpressionWithoutCascade(=)
|
|
parsePrecedenceExpression(=, 1, false)
|
|
parseUnaryExpression(=, false)
|
|
parsePrimary(=, expression)
|
|
parseParenthesizedExpressionOrFunctionLiteral(=)
|
|
parseParenthesizedExpression(=)
|
|
parseExpressionInParenthesis(=)
|
|
parseExpressionInParenthesisRest(()
|
|
parseExpression(()
|
|
parsePrecedenceExpression((, 1, true)
|
|
parseUnaryExpression((, true)
|
|
parsePrimary((, expression)
|
|
parseSendOrFunctionLiteral((, expression)
|
|
parseSend((, expression)
|
|
ensureIdentifier((, expression)
|
|
listener: handleIdentifier(json, expression)
|
|
listener: handleNoTypeArguments([)
|
|
parseArgumentsOpt(json)
|
|
listener: handleNoArguments([)
|
|
listener: handleSend(json, [)
|
|
parseArgumentOrIndexStar(json, Instance of 'NoTypeParamOrArg', false)
|
|
parseExpression([)
|
|
parsePrecedenceExpression([, 1, true)
|
|
parseUnaryExpression([, true)
|
|
parsePrimary([, expression)
|
|
parseLiteralString([)
|
|
parseSingleLiteralString([)
|
|
listener: beginLiteralString('x')
|
|
listener: endLiteralString(0, ])
|
|
listener: handleIndexedExpression(null, [, ])
|
|
parseAsOperatorRest(])
|
|
listener: beginAsOperatorType(as)
|
|
computeTypeAfterIsOrAs(as)
|
|
listener: handleIdentifier(List, typeReference)
|
|
listener: handleNoTypeArguments(?)
|
|
listener: handleType(List, ?)
|
|
listener: endAsOperatorType(as)
|
|
listener: handleAsOperator(as)
|
|
skipChainedAsIsOperators(?)
|
|
ensureCloseParen(?, ()
|
|
listener: handleParenthesizedExpression(()
|
|
listener: handleAssignmentExpression(=)
|
|
listener: endCascade()
|
|
parseCascadeExpression())
|
|
listener: beginCascade(..)
|
|
parseSend(.., expressionContinuation)
|
|
ensureIdentifier(.., expressionContinuation)
|
|
listener: handleIdentifier(y, expressionContinuation)
|
|
listener: handleNoTypeArguments(=)
|
|
parseArgumentsOpt(y)
|
|
listener: handleNoArguments(=)
|
|
listener: handleSend(y, =)
|
|
listener: handleEndingBinaryExpression(..)
|
|
parseArgumentOrIndexStar(y, Instance of 'NoTypeParamOrArg', false)
|
|
parseExpressionWithoutCascade(=)
|
|
parsePrecedenceExpression(=, 1, false)
|
|
parseUnaryExpression(=, false)
|
|
parsePrimary(=, expression)
|
|
parseSendOrFunctionLiteral(=, expression)
|
|
parseSend(=, expression)
|
|
ensureIdentifier(=, expression)
|
|
listener: handleIdentifier(json, expression)
|
|
listener: handleNoTypeArguments([)
|
|
parseArgumentsOpt(json)
|
|
listener: handleNoArguments([)
|
|
listener: handleSend(json, [)
|
|
parseArgumentOrIndexStar(json, Instance of 'NoTypeParamOrArg', false)
|
|
parseExpression([)
|
|
parsePrecedenceExpression([, 1, true)
|
|
parseUnaryExpression([, true)
|
|
parsePrimary([, expression)
|
|
parseLiteralString([)
|
|
parseSingleLiteralString([)
|
|
listener: beginLiteralString('y')
|
|
listener: endLiteralString(0, ])
|
|
listener: handleIndexedExpression(null, [, ])
|
|
parseAsOperatorRest(])
|
|
listener: beginAsOperatorType(as)
|
|
computeTypeAfterIsOrAs(as)
|
|
listener: handleIdentifier(int, typeReference)
|
|
listener: handleNoTypeArguments(;)
|
|
listener: handleType(int, null)
|
|
listener: endAsOperatorType(as)
|
|
listener: handleAsOperator(as)
|
|
skipChainedAsIsOperators(int)
|
|
listener: handleAssignmentExpression(=)
|
|
listener: endCascade()
|
|
ensureSemicolon(int)
|
|
listener: endReturnStatement(true, return, ;)
|
|
inGenerator()
|
|
notEofOrValue(}, })
|
|
listener: endBlockFunctionBody(1, {, })
|
|
listener: endTopLevelMethod(Order, null, })
|
|
listener: endTopLevelDeclaration(Order)
|
|
parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
|
|
parseMetadataStar(})
|
|
listener: beginMetadataStar(Order)
|
|
listener: endMetadataStar(0)
|
|
parseTopLevelMemberImpl(})
|
|
listener: beginTopLevelMember(Order)
|
|
parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, method4, false)
|
|
listener: beginTopLevelMethod(}, null)
|
|
listener: handleIdentifier(Order, typeReference)
|
|
listener: handleNoTypeArguments(method4)
|
|
listener: handleType(Order, null)
|
|
ensureIdentifierPotentiallyRecovered(Order, topLevelFunctionDeclaration, false)
|
|
listener: handleIdentifier(method4, topLevelFunctionDeclaration)
|
|
parseMethodTypeVar(method4)
|
|
listener: handleNoTypeVariables(()
|
|
parseGetterOrFormalParameters(method4, method4, false, MemberKind.TopLevelMethod)
|
|
parseFormalParameters(method4, MemberKind.TopLevelMethod)
|
|
parseFormalParametersRest((, MemberKind.TopLevelMethod)
|
|
listener: beginFormalParameters((, MemberKind.TopLevelMethod)
|
|
parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
|
|
parseMetadataStar(()
|
|
listener: beginMetadataStar(Map)
|
|
listener: endMetadataStar(0)
|
|
listener: beginFormalParameter(Map, MemberKind.TopLevelMethod, null, null, null)
|
|
ensureIdentifier((, typeReference)
|
|
listener: handleIdentifier(Map, typeReference)
|
|
listener: beginTypeArguments(<)
|
|
listener: handleIdentifier(String, typeReference)
|
|
listener: handleNoTypeArguments(,)
|
|
listener: handleType(String, null)
|
|
listener: handleIdentifier(dynamic, typeReference)
|
|
listener: handleNoTypeArguments(>)
|
|
listener: handleType(dynamic, null)
|
|
listener: endTypeArguments(2, <, >)
|
|
listener: handleType(Map, null)
|
|
ensureIdentifier(>, formalParameterDeclaration)
|
|
listener: handleIdentifier(json, formalParameterDeclaration)
|
|
listener: handleFormalParameterWithoutValue())
|
|
listener: endFormalParameter(null, null, json, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
|
|
listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
|
|
parseAsyncModifierOpt())
|
|
listener: handleAsyncModifier(null, null)
|
|
inPlainSync()
|
|
parseFunctionBody(), false, false)
|
|
listener: beginBlockFunctionBody({)
|
|
notEofOrValue(}, return)
|
|
parseStatement({)
|
|
parseStatementX({)
|
|
parseReturnStatement({)
|
|
listener: beginReturnStatement(return)
|
|
parseExpression(return)
|
|
parsePrecedenceExpression(return, 1, true)
|
|
parseUnaryExpression(return, true)
|
|
parsePrimary(return, expression)
|
|
parseSendOrFunctionLiteral(return, expression)
|
|
looksLikeFunctionBody(..)
|
|
parseSend(return, expression)
|
|
ensureIdentifier(return, expression)
|
|
listener: handleIdentifier(Order, expression)
|
|
listener: handleNoTypeArguments(()
|
|
parseArgumentsOpt(Order)
|
|
parseArguments(Order)
|
|
parseArgumentsRest(()
|
|
listener: beginArguments(()
|
|
listener: endArguments(0, (, ))
|
|
listener: handleSend(Order, ..)
|
|
parseCascadeExpression())
|
|
listener: beginCascade(..)
|
|
parseSend(.., expressionContinuation)
|
|
ensureIdentifier(.., expressionContinuation)
|
|
listener: handleIdentifier(x, expressionContinuation)
|
|
listener: handleNoTypeArguments(=)
|
|
parseArgumentsOpt(x)
|
|
listener: handleNoArguments(=)
|
|
listener: handleSend(x, =)
|
|
listener: handleEndingBinaryExpression(..)
|
|
parseArgumentOrIndexStar(x, Instance of 'NoTypeParamOrArg', false)
|
|
parseExpressionWithoutCascade(=)
|
|
parsePrecedenceExpression(=, 1, false)
|
|
parseUnaryExpression(=, false)
|
|
parsePrimary(=, expression)
|
|
parseSendOrFunctionLiteral(=, expression)
|
|
parseSend(=, expression)
|
|
ensureIdentifier(=, expression)
|
|
listener: handleIdentifier(json, expression)
|
|
listener: handleNoTypeArguments([)
|
|
parseArgumentsOpt(json)
|
|
listener: handleNoArguments([)
|
|
listener: handleSend(json, [)
|
|
parseArgumentOrIndexStar(json, Instance of 'NoTypeParamOrArg', false)
|
|
parseExpression([)
|
|
parsePrecedenceExpression([, 1, true)
|
|
parseUnaryExpression([, true)
|
|
parsePrimary([, expression)
|
|
parseLiteralString([)
|
|
parseSingleLiteralString([)
|
|
listener: beginLiteralString('x')
|
|
listener: endLiteralString(0, ])
|
|
listener: handleIndexedExpression(null, [, ])
|
|
parseAsOperatorRest(])
|
|
listener: beginAsOperatorType(as)
|
|
computeTypeAfterIsOrAs(as)
|
|
listener: handleIdentifier(List, typeReference)
|
|
listener: handleNoTypeArguments(?)
|
|
listener: handleType(List, ?)
|
|
listener: endAsOperatorType(as)
|
|
listener: handleAsOperator(as)
|
|
skipChainedAsIsOperators(?)
|
|
listener: handleAssignmentExpression(=)
|
|
listener: endCascade()
|
|
ensureSemicolon(?)
|
|
listener: endReturnStatement(true, return, ;)
|
|
inGenerator()
|
|
notEofOrValue(}, })
|
|
listener: endBlockFunctionBody(1, {, })
|
|
listener: endTopLevelMethod(Order, null, })
|
|
listener: endTopLevelDeclaration(class)
|
|
parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
|
|
parseMetadataStar(})
|
|
listener: beginMetadataStar(class)
|
|
listener: endMetadataStar(0)
|
|
parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
|
|
parseClassDeclarationModifiers(}, class)
|
|
parseClassOrNamedMixinApplication(null, class)
|
|
listener: beginClassOrNamedMixinApplicationPrelude(class)
|
|
ensureIdentifier(class, classOrMixinDeclaration)
|
|
listener: handleIdentifier(Order, classOrMixinDeclaration)
|
|
listener: handleNoTypeVariables({)
|
|
listener: beginClassDeclaration(class, null, Order)
|
|
parseClass(Order, class, class, Order)
|
|
parseClassHeaderOpt(Order, class, class)
|
|
parseClassExtendsOpt(Order)
|
|
listener: handleNoType(Order)
|
|
listener: handleClassExtends(null, 1)
|
|
parseWithClauseOpt(Order)
|
|
listener: handleClassNoWithClause()
|
|
parseClassOrMixinImplementsOpt(Order)
|
|
listener: handleClassOrMixinImplements(null, 0)
|
|
listener: handleClassHeader(class, class, null)
|
|
parseClassOrMixinOrExtensionBody(Order, DeclarationKind.Class, Order)
|
|
listener: beginClassOrMixinBody(DeclarationKind.Class, {)
|
|
notEofOrValue(}, List)
|
|
parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Order)
|
|
parseMetadataStar({)
|
|
listener: beginMetadataStar(List)
|
|
listener: endMetadataStar(0)
|
|
listener: beginMember()
|
|
parseFields({, null, null, null, null, null, null, {, Instance of 'SimpleNullableType', x, DeclarationKind.Class, Order, false)
|
|
listener: beginFields({)
|
|
listener: handleIdentifier(List, typeReference)
|
|
listener: handleNoTypeArguments(?)
|
|
listener: handleType(List, ?)
|
|
ensureIdentifierPotentiallyRecovered(?, fieldDeclaration, false)
|
|
listener: handleIdentifier(x, fieldDeclaration)
|
|
parseFieldInitializerOpt(x, x, null, null, null, null, DeclarationKind.Class, Order)
|
|
listener: handleNoFieldInitializer(;)
|
|
listener: endClassFields(null, null, null, null, null, null, 1, List, ;)
|
|
listener: endMember()
|
|
notEofOrValue(}, int)
|
|
parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Order)
|
|
parseMetadataStar(;)
|
|
listener: beginMetadataStar(int)
|
|
listener: endMetadataStar(0)
|
|
listener: beginMember()
|
|
parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleNullableType', y, DeclarationKind.Class, Order, false)
|
|
listener: beginFields(;)
|
|
listener: handleIdentifier(int, typeReference)
|
|
listener: handleNoTypeArguments(?)
|
|
listener: handleType(int, ?)
|
|
ensureIdentifierPotentiallyRecovered(?, fieldDeclaration, false)
|
|
listener: handleIdentifier(y, fieldDeclaration)
|
|
parseFieldInitializerOpt(y, y, null, null, null, null, DeclarationKind.Class, Order)
|
|
listener: handleNoFieldInitializer(;)
|
|
listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
|
|
listener: endMember()
|
|
notEofOrValue(}, })
|
|
listener: endClassOrMixinBody(DeclarationKind.Class, 2, {, })
|
|
listener: endClassDeclaration(class, })
|
|
listener: endTopLevelDeclaration()
|
|
reportAllErrorTokens(Order)
|
|
listener: endCompilationUnit(5, )
|