Files
sdk/pkg/front_end/parser_testcases/general/function_reference_kinds.dart.intertwined.expect
T
Paul Berry 8aa48712be Patterns parsing: recover from patternVariableDeclaration non-statement.
Previously, if a pattern variable declaration appeared outside of a
function or method, the parser would get very confused.  Now it
recognizes the situation, issues a comprehensible error message, and
replaces the pattern with a synthetic identifier token so that the
analyzer AST is somewhat sensible.

Fixes #51322.

Bug: https://github.com/dart-lang/sdk/issues/51322
Change-Id: Ica5f060cb483a39c4e50942d639939b1fab40bea
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/293087
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2023-04-04 14:55:00 +00:00

215 lines
12 KiB
Plaintext

parseUnit(var)
skipErrorTokens(var)
listener: beginCompilationUnit(var)
syntheticPreviousToken(var)
parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
parseMetadataStar()
listener: beginMetadataStar(var)
listener: endMetadataStar(0)
parseTopLevelMemberImpl()
listener: beginTopLevelMember(var)
skipOuterPattern(var)
skipObjectPatternRest(simpleIdentifier)
parseFields(, null, null, null, null, null, null, var, var, Instance of 'NoType', simpleIdentifier, DeclarationKind.TopLevel, null, false)
listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, var, )
listener: handleNoType(var)
ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
listener: handleIdentifier(simpleIdentifier, topLevelVariableDeclaration)
parseFieldInitializerOpt(simpleIdentifier, simpleIdentifier, null, null, null, null, var, DeclarationKind.TopLevel, null)
listener: beginFieldInitializer(=)
parseExpression(=)
parsePrecedenceExpression(=, 1, true, ConstantPatternContext.none)
parseUnaryExpression(=, true, ConstantPatternContext.none)
parsePrimary(=, expression, ConstantPatternContext.none)
parseSendOrFunctionLiteral(=, expression, ConstantPatternContext.none)
parseSend(=, expression, ConstantPatternContext.none)
isNextIdentifier(=)
ensureIdentifier(=, expression)
listener: handleIdentifier(f, expression)
listener: handleNoTypeArguments(<)
parseArgumentsOpt(f)
listener: handleNoArguments(<)
listener: handleSend(f, <)
listener: beginTypeArguments(<)
listener: handleIdentifier(a, typeReference)
listener: handleNoTypeArguments(,)
listener: handleType(a, null)
listener: handleIdentifier(b, typeReference)
listener: handleNoTypeArguments(>)
listener: handleType(b, null)
listener: endTypeArguments(2, <, >)
listener: handleTypeArgumentApplication(<)
listener: endFieldInitializer(=, ;)
listener: endTopLevelFields(null, null, null, null, var, 1, var, ;)
listener: endTopLevelDeclaration(var)
parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
parseMetadataStar(;)
listener: beginMetadataStar(var)
listener: endMetadataStar(0)
parseTopLevelMemberImpl(;)
listener: beginTopLevelMember(var)
skipOuterPattern(var)
skipObjectPatternRest(method)
parseFields(;, null, null, null, null, null, null, var, var, Instance of 'NoType', method, DeclarationKind.TopLevel, null, false)
listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, var, ;)
listener: handleNoType(var)
ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
listener: handleIdentifier(method, topLevelVariableDeclaration)
parseFieldInitializerOpt(method, method, null, null, null, null, var, DeclarationKind.TopLevel, null)
listener: beginFieldInitializer(=)
parseExpression(=)
parsePrecedenceExpression(=, 1, true, ConstantPatternContext.none)
parseUnaryExpression(=, true, ConstantPatternContext.none)
parsePrimary(=, expression, ConstantPatternContext.none)
parseSendOrFunctionLiteral(=, expression, ConstantPatternContext.none)
looksLikeFunctionBody(.)
parseSend(=, expression, ConstantPatternContext.none)
isNextIdentifier(=)
ensureIdentifier(=, expression)
listener: handleIdentifier(f, expression)
listener: handleNoTypeArguments(()
parseArgumentsOpt(f)
parseArguments(f)
parseArgumentsRest(()
listener: beginArguments(()
listener: endArguments(0, (, ))
listener: handleSend(f, .)
parsePrimary(., expressionContinuation, ConstantPatternContext.none)
parseSendOrFunctionLiteral(., expressionContinuation, ConstantPatternContext.none)
parseSend(., expressionContinuation, ConstantPatternContext.none)
isNextIdentifier(.)
ensureIdentifier(., expressionContinuation)
listener: handleIdentifier(m, expressionContinuation)
listener: handleNoTypeArguments(<)
parseArgumentsOpt(m)
listener: handleNoArguments(<)
listener: handleSend(m, <)
listener: handleEndingBinaryExpression(.)
listener: beginTypeArguments(<)
listener: handleIdentifier(a, typeReference)
listener: handleNoTypeArguments(,)
listener: handleType(a, null)
listener: handleIdentifier(b, typeReference)
listener: handleNoTypeArguments(>)
listener: handleType(b, null)
listener: endTypeArguments(2, <, >)
listener: handleTypeArgumentApplication(<)
listener: endFieldInitializer(=, ;)
listener: endTopLevelFields(null, null, null, null, var, 1, var, ;)
listener: endTopLevelDeclaration(var)
parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
parseMetadataStar(;)
listener: beginMetadataStar(var)
listener: endMetadataStar(0)
parseTopLevelMemberImpl(;)
listener: beginTopLevelMember(var)
skipOuterPattern(var)
skipObjectPatternRest(prefixedIdentifier)
parseFields(;, null, null, null, null, null, null, var, var, Instance of 'NoType', prefixedIdentifier, DeclarationKind.TopLevel, null, false)
listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, var, ;)
listener: handleNoType(var)
ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
listener: handleIdentifier(prefixedIdentifier, topLevelVariableDeclaration)
parseFieldInitializerOpt(prefixedIdentifier, prefixedIdentifier, null, null, null, null, var, DeclarationKind.TopLevel, null)
listener: beginFieldInitializer(=)
parseExpression(=)
parsePrecedenceExpression(=, 1, true, ConstantPatternContext.none)
parseUnaryExpression(=, true, ConstantPatternContext.none)
parsePrimary(=, expression, ConstantPatternContext.none)
parseSendOrFunctionLiteral(=, expression, ConstantPatternContext.none)
parseSend(=, expression, ConstantPatternContext.none)
isNextIdentifier(=)
ensureIdentifier(=, expression)
listener: handleIdentifier(prefix, expression)
listener: handleNoTypeArguments(.)
parseArgumentsOpt(prefix)
listener: handleNoArguments(.)
listener: handleSend(prefix, .)
parsePrimary(., expressionContinuation, ConstantPatternContext.none)
parseSendOrFunctionLiteral(., expressionContinuation, ConstantPatternContext.none)
parseSend(., expressionContinuation, ConstantPatternContext.none)
isNextIdentifier(.)
ensureIdentifier(., expressionContinuation)
listener: handleIdentifier(f, expressionContinuation)
listener: handleNoTypeArguments(<)
parseArgumentsOpt(f)
listener: handleNoArguments(<)
listener: handleSend(f, <)
listener: handleEndingBinaryExpression(.)
listener: beginTypeArguments(<)
listener: handleIdentifier(a, typeReference)
listener: handleNoTypeArguments(,)
listener: handleType(a, null)
listener: handleIdentifier(b, typeReference)
listener: handleNoTypeArguments(>)
listener: handleType(b, null)
listener: endTypeArguments(2, <, >)
listener: handleTypeArgumentApplication(<)
listener: endFieldInitializer(=, ;)
listener: endTopLevelFields(null, null, null, null, var, 1, var, ;)
listener: endTopLevelDeclaration(var)
parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
parseMetadataStar(;)
listener: beginMetadataStar(var)
listener: endMetadataStar(0)
parseTopLevelMemberImpl(;)
listener: beginTopLevelMember(var)
skipOuterPattern(var)
skipObjectPatternRest(three_identifiers)
parseFields(;, null, null, null, null, null, null, var, var, Instance of 'NoType', three_identifiers, DeclarationKind.TopLevel, null, false)
listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, var, ;)
listener: handleNoType(var)
ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
listener: handleIdentifier(three_identifiers, topLevelVariableDeclaration)
parseFieldInitializerOpt(three_identifiers, three_identifiers, null, null, null, null, var, DeclarationKind.TopLevel, null)
listener: beginFieldInitializer(=)
parseExpression(=)
parsePrecedenceExpression(=, 1, true, ConstantPatternContext.none)
parseUnaryExpression(=, true, ConstantPatternContext.none)
parsePrimary(=, expression, ConstantPatternContext.none)
parseSendOrFunctionLiteral(=, expression, ConstantPatternContext.none)
parseSend(=, expression, ConstantPatternContext.none)
isNextIdentifier(=)
ensureIdentifier(=, expression)
listener: handleIdentifier(prefix, expression)
listener: handleNoTypeArguments(.)
parseArgumentsOpt(prefix)
listener: handleNoArguments(.)
listener: handleSend(prefix, .)
parsePrimary(., expressionContinuation, ConstantPatternContext.none)
parseSendOrFunctionLiteral(., expressionContinuation, ConstantPatternContext.none)
parseSend(., expressionContinuation, ConstantPatternContext.none)
isNextIdentifier(.)
ensureIdentifier(., expressionContinuation)
listener: handleIdentifier(ClassName, expressionContinuation)
listener: handleNoTypeArguments(.)
parseArgumentsOpt(ClassName)
listener: handleNoArguments(.)
listener: handleSend(ClassName, .)
listener: handleEndingBinaryExpression(.)
parsePrimary(., expressionContinuation, ConstantPatternContext.none)
parseSendOrFunctionLiteral(., expressionContinuation, ConstantPatternContext.none)
parseSend(., expressionContinuation, ConstantPatternContext.none)
isNextIdentifier(.)
ensureIdentifier(., expressionContinuation)
listener: handleIdentifier(m, expressionContinuation)
listener: handleNoTypeArguments(<)
parseArgumentsOpt(m)
listener: handleNoArguments(<)
listener: handleSend(m, <)
listener: handleEndingBinaryExpression(.)
listener: beginTypeArguments(<)
listener: handleIdentifier(a, typeReference)
listener: handleNoTypeArguments(,)
listener: handleType(a, null)
listener: handleIdentifier(b, typeReference)
listener: handleNoTypeArguments(>)
listener: handleType(b, null)
listener: endTypeArguments(2, <, >)
listener: handleTypeArgumentApplication(<)
listener: endFieldInitializer(=, ;)
listener: endTopLevelFields(null, null, null, null, var, 1, var, ;)
listener: endTopLevelDeclaration()
reportAllErrorTokens(var)
listener: endCompilationUnit(4, )