4629bff7e9
Add a syntactic diagnostic for extension type augmentations that declare representation fields. Extension type augmentations may augment the declaration, but they must not redeclare the representation. Thread an explicit parser option through primary constructor parsing so extension type augmentations can omit a representation without producing the usual missing-primary-constructor diagnostics, while still reporting an error when a representation is present. Register the new diagnostic in the shared and analyzer generated diagnostic tables and add it to fix status tracking. Change-Id: I84815bb0669a76126564e590760e93096a3af046 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/505860 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Reviewed-by: Paul Berry <paulberry@google.com> SLSA-Policy-Verified: SLSA Policy Verification Service <devtools-gerritcodereview-exitgate@google.com> Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
906 lines
60 KiB
Plaintext
906 lines
60 KiB
Plaintext
parseUnit(class)
|
|
skipErrorTokens(class)
|
|
listener: beginCompilationUnit(class)
|
|
syntheticPreviousToken(class)
|
|
parseTopLevelDeclarationImpl(, DirectiveContext(DirectiveState.Unknown))
|
|
parseMetadataStar()
|
|
listener: beginMetadataStar(class)
|
|
listener: endMetadataStar(0)
|
|
parseTopLevelKeywordDeclaration(class, , class, null, null, null, DirectiveContext(DirectiveState.Unknown))
|
|
parseClassOrNamedMixinApplication(class, null, null, null, null, null, null, null, class)
|
|
listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
|
|
ensureIdentifier(class, classOrMixinDeclaration)
|
|
listener: handleIdentifier(Class, classOrMixinDeclaration)
|
|
listener: handleNoTypeVariables({)
|
|
listener: beginClassDeclaration(class, null, null, null, null, null, null, null, Class)
|
|
parseClass(Class, class, class, null, Class)
|
|
parsePrimaryConstructorOpt(DeclarationKind.Class, Class, null, allowExtensionTypeRepresentation: true)
|
|
listener: handleNoPrimaryConstructor(DeclarationKind.Class, Class, null)
|
|
parseClassHeaderOpt(Class, class, class)
|
|
parseClassExtendsOpt(Class, DeclarationHeaderKind.Class)
|
|
listener: handleNoType(Class)
|
|
listener: handleClassExtends(null, 1)
|
|
parseClassWithClauseOpt(Class)
|
|
listener: handleClassNoWithClause()
|
|
parseClassOrMixinOrEnumImplementsOpt(Class)
|
|
listener: handleImplements(null, 0)
|
|
listener: handleClassHeader(class, class, null)
|
|
parseClassOrMixinOrExtensionBody(Class, DeclarationKind.Class, Class)
|
|
listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
|
|
notEofOrType(CLOSE_CURLY_BRACKET, dynamic)
|
|
parseClassOrMixinOrExtensionOrEnumMemberImpl({, DeclarationKind.Class, Class)
|
|
parseMetadataStar({)
|
|
listener: beginMetadataStar(dynamic)
|
|
listener: endMetadataStar(0)
|
|
listener: beginMember()
|
|
parseFields({, null, null, null, null, null, null, null, {, SimpleType(), field, DeclarationKind.Class, Class, false)
|
|
listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, {)
|
|
listener: handleIdentifier(dynamic, typeReference)
|
|
listener: handleNoTypeArguments(field)
|
|
listener: handleType(dynamic, null)
|
|
ensureIdentifierPotentiallyRecovered(dynamic, fieldDeclaration, false)
|
|
listener: handleIdentifier(field, fieldDeclaration)
|
|
parseFieldInitializerOpt(field, field, null, null, null, null, null, DeclarationKind.Class, Class)
|
|
listener: handleNoFieldInitializer(;)
|
|
listener: endFields(DeclarationKind.Class, null, null, null, null, null, null, null, 1, dynamic, ;)
|
|
listener: endMember()
|
|
notEofOrType(CLOSE_CURLY_BRACKET, Class)
|
|
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Class)
|
|
parseMetadataStar(;)
|
|
listener: beginMetadataStar(Class)
|
|
listener: endMetadataStar(0)
|
|
listener: beginMember()
|
|
isReservedKeyword(()
|
|
parseMethod(;, null, null, null, null, null, null, null, ;, NoType(), null, null, Class, DeclarationKind.Class, Class, false)
|
|
listener: beginConstructor(DeclarationKind.Class, null, null, null, null, null, null, null, Class, Class)
|
|
listener: handleNoType(;)
|
|
ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
|
|
listener: handleIdentifier(Class, methodDeclaration)
|
|
parseQualifiedRestOpt(Class, methodDeclarationContinuation)
|
|
parseMethodTypeVar(Class)
|
|
listener: handleNoTypeVariables(()
|
|
parseGetterOrFormalParameters(Class, Class, false, MemberKind.NonStaticMethod)
|
|
parseFormalParameters(Class, MemberKind.NonStaticMethod)
|
|
parseFormalParametersRest((, MemberKind.NonStaticMethod)
|
|
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
|
|
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
|
|
parseMetadataStar(()
|
|
listener: beginMetadataStar(this)
|
|
listener: endMetadataStar(0)
|
|
listener: beginFormalParameter(this, MemberKind.NonStaticMethod, null, null, null)
|
|
listener: handleNoType(()
|
|
ensureIdentifier(., fieldInitializer)
|
|
listener: handleIdentifier(field, fieldInitializer)
|
|
listener: handleFormalParameterWithoutValue())
|
|
listener: endFormalParameter(null, this, null, ., field, null, null, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
|
|
listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
|
|
parseInitializersOpt())
|
|
listener: handleNoInitializers()
|
|
parseAsyncModifierOpt())
|
|
listener: handleAsyncModifier(null, null)
|
|
inPlainSync()
|
|
inPlainSync()
|
|
parseFunctionBody(), false, true)
|
|
listener: handleEmptyFunctionBody(;)
|
|
listener: endConstructor(DeclarationKind.Class, Class, null, (, null, ;)
|
|
listener: endMember()
|
|
notEofOrType(CLOSE_CURLY_BRACKET, })
|
|
listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
|
|
listener: endClassDeclaration(class, })
|
|
listener: endTopLevelDeclaration(})
|
|
parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
|
|
parseMetadataStar(})
|
|
listener: beginMetadataStar(test)
|
|
listener: endMetadataStar(0)
|
|
parseTopLevelMemberImpl(})
|
|
listener: beginTopLevelMember(test)
|
|
isReservedKeyword(()
|
|
parseTopLevelMethod(}, null, null, }, NoType(), null, test, false)
|
|
listener: beginTopLevelMethod(}, null, null)
|
|
listener: handleNoType(})
|
|
ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
|
|
listener: handleIdentifier(test, topLevelFunctionDeclaration)
|
|
parseMethodTypeVar(test)
|
|
listener: handleNoTypeVariables(()
|
|
parseGetterOrFormalParameters(test, test, false, MemberKind.TopLevelMethod)
|
|
parseFormalParameters(test, MemberKind.TopLevelMethod)
|
|
parseFormalParametersRest((, MemberKind.TopLevelMethod)
|
|
listener: beginFormalParameters((, MemberKind.TopLevelMethod)
|
|
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
|
|
parseMetadataStar(()
|
|
listener: beginMetadataStar(a)
|
|
listener: endMetadataStar(0)
|
|
listener: beginFormalParameter(a, MemberKind.TopLevelMethod, null, null, null)
|
|
listener: handleNoType(()
|
|
ensureIdentifier((, formalParameterDeclaration)
|
|
listener: handleIdentifier(a, formalParameterDeclaration)
|
|
listener: handleFormalParameterWithoutValue())
|
|
listener: endFormalParameter(null, null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
|
|
listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
|
|
parseAsyncModifierOpt())
|
|
listener: handleAsyncModifier(null, null)
|
|
inPlainSync()
|
|
parseFunctionBody(), false, false)
|
|
listener: beginBlockFunctionBody({)
|
|
notEofOrType(CLOSE_CURLY_BRACKET, switch)
|
|
parseStatement({)
|
|
parseStatementX({)
|
|
parseSwitchStatement({)
|
|
listener: beginSwitchStatement(switch)
|
|
ensureParenthesizedCondition(switch, allowCase: false)
|
|
parseExpressionInParenthesisRest((, allowCase: false)
|
|
parseExpression(()
|
|
looksLikeOuterPatternEquals(()
|
|
skipOuterPattern(()
|
|
skipObjectPatternRest(a)
|
|
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
|
parseUnaryExpression((, true, ConstantPatternContext.none)
|
|
parsePrimary((, expression, ConstantPatternContext.none)
|
|
parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
|
|
parseSend((, expression, ConstantPatternContext.none)
|
|
ensureIdentifier((, expression)
|
|
listener: handleIdentifier(a, expression)
|
|
listener: handleNoTypeArguments())
|
|
parseArgumentsOpt(a)
|
|
listener: handleNoArguments())
|
|
listener: handleSend(a, a)
|
|
ensureCloseParen(a, ()
|
|
listener: handleParenthesizedCondition((, null, null)
|
|
parseSwitchBlock())
|
|
ensureBlock(), BlockKind(switch statement))
|
|
listener: beginSwitchBlock({)
|
|
notEofOrType(CLOSE_CURLY_BRACKET, case)
|
|
peekPastLabels(case)
|
|
listener: beginCaseExpression(case)
|
|
parsePattern(case, PatternContext.matching, precedence: 1)
|
|
listener: beginPattern(case)
|
|
parsePrimaryPattern(case, PatternContext.matching)
|
|
parseParenthesizedPatternOrRecordPattern(case, PatternContext.matching)
|
|
ensureIdentifier((, namedRecordFieldReference)
|
|
listener: handleIdentifier(foo, namedRecordFieldReference)
|
|
parsePattern(:, PatternContext.matching, precedence: 1)
|
|
listener: beginPattern(:)
|
|
parsePrimaryPattern(:, PatternContext.matching)
|
|
parseVariablePattern(:, PatternContext.matching, typeInfo: SimpleType())
|
|
listener: handleIdentifier(int, typeReference)
|
|
listener: handleNoTypeArguments(b)
|
|
listener: handleType(int, null)
|
|
listener: handleDeclaredVariablePattern(null, b, false)
|
|
listener: endPattern(b)
|
|
listener: handlePatternField(:)
|
|
ensureCloseParen(b, ()
|
|
listener: handleRecordPattern((, 1)
|
|
listener: endPattern())
|
|
listener: beginSwitchCaseWhenClause(when)
|
|
parseExpression(when)
|
|
looksLikeOuterPatternEquals(when)
|
|
skipOuterPattern(when)
|
|
skipObjectPatternRest(b)
|
|
parsePrecedenceExpression(when, 1, true, ConstantPatternContext.none)
|
|
parseUnaryExpression(when, true, ConstantPatternContext.none)
|
|
parsePrimary(when, expression, ConstantPatternContext.none)
|
|
parseSendOrFunctionLiteral(when, expression, ConstantPatternContext.none)
|
|
parseSend(when, expression, ConstantPatternContext.none)
|
|
ensureIdentifier(when, expression)
|
|
listener: handleIdentifier(b, expression)
|
|
listener: handleNoTypeArguments(!=)
|
|
parseArgumentsOpt(b)
|
|
listener: handleNoArguments(!=)
|
|
listener: handleSend(b, b)
|
|
listener: beginBinaryExpression(!=)
|
|
parsePrecedenceExpression(!=, 8, true, ConstantPatternContext.none)
|
|
parseUnaryExpression(!=, true, ConstantPatternContext.none)
|
|
parsePrimary(!=, expression, ConstantPatternContext.none)
|
|
parseLiteralInt(!=)
|
|
listener: handleLiteralInt(2)
|
|
listener: endBinaryExpression(!=, 2)
|
|
listener: endSwitchCaseWhenClause(2)
|
|
ensureColon(2)
|
|
listener: endCaseExpression(case, when, :)
|
|
peekPastLabels(print)
|
|
parseStatementsInSwitchCase(:, print, case, 0, 1, null, null)
|
|
listener: beginSwitchCase(0, 1, case)
|
|
parseStatement(:)
|
|
parseStatementX(:)
|
|
parseExpressionStatementOrDeclarationAfterModifiers(:, :, null, null, null, null)
|
|
looksLikeLocalFunction(print)
|
|
parseExpressionStatement(:)
|
|
parseExpression(:)
|
|
looksLikeOuterPatternEquals(:)
|
|
skipOuterPattern(:)
|
|
skipObjectPatternRest(print)
|
|
parsePrecedenceExpression(:, 1, true, ConstantPatternContext.none)
|
|
parseUnaryExpression(:, true, ConstantPatternContext.none)
|
|
parsePrimary(:, expression, ConstantPatternContext.none)
|
|
parseSendOrFunctionLiteral(:, expression, ConstantPatternContext.none)
|
|
looksLikeFunctionBody(;)
|
|
parseSend(:, expression, ConstantPatternContext.none)
|
|
ensureIdentifier(:, expression)
|
|
listener: handleIdentifier(print, expression)
|
|
listener: handleNoTypeArguments(()
|
|
parseArgumentsOpt(print)
|
|
parseArguments(print)
|
|
parseArgumentsRest(()
|
|
listener: beginArguments(()
|
|
allowedToShortcutParseExpression()
|
|
listener: handleIdentifier(b, expression)
|
|
listener: handleNoTypeArguments())
|
|
listener: handleNoArguments())
|
|
listener: handleSend(b, b)
|
|
listener: handlePositionalArgument(b)
|
|
listener: endArguments(1, (, ))
|
|
listener: handleSend(print, ))
|
|
ensureSemicolon())
|
|
listener: handleExpressionStatement(print, ;)
|
|
peekPastLabels(case)
|
|
listener: endSwitchCase(0, 1, null, null, 1, case, ;)
|
|
notEofOrType(CLOSE_CURLY_BRACKET, case)
|
|
peekPastLabels(case)
|
|
listener: beginCaseExpression(case)
|
|
parsePattern(case, PatternContext.matching, precedence: 1)
|
|
listener: beginPattern(case)
|
|
parsePrimaryPattern(case, PatternContext.matching)
|
|
parseParenthesizedPatternOrRecordPattern(case, PatternContext.matching)
|
|
ensureIdentifier((, namedRecordFieldReference)
|
|
listener: handleIdentifier(foo, namedRecordFieldReference)
|
|
parsePattern(:, PatternContext.matching, precedence: 1)
|
|
listener: beginPattern(:)
|
|
parsePrimaryPattern(:, PatternContext.matching)
|
|
parseVariablePattern(:, PatternContext.matching, typeInfo: ComplexTypeInfo(start: (, typeArguments: NoTypeParamOrArg(), beforeQuestionMark: null, end: ), typeVariableStarters: [], gftHasReturnType: null, isRecordType: true, gftReturnTypeHasRecordType: false, recovered: false))
|
|
parseRecordType((, :, false)
|
|
listener: beginRecordType(()
|
|
parseRecordTypeField((, identifierIsOptional: true)
|
|
listener: beginRecordTypeEntry()
|
|
parseMetadataStar(()
|
|
listener: beginMetadataStar(int)
|
|
listener: endMetadataStar(0)
|
|
listener: handleIdentifier(int, typeReference)
|
|
listener: handleNoTypeArguments(,)
|
|
listener: handleType(int, null)
|
|
listener: handleNoName(,)
|
|
listener: endRecordTypeEntry()
|
|
parseRecordTypeField(,, identifierIsOptional: true)
|
|
listener: beginRecordTypeEntry()
|
|
parseMetadataStar(,)
|
|
listener: beginMetadataStar(int)
|
|
listener: endMetadataStar(0)
|
|
listener: handleIdentifier(int, typeReference)
|
|
listener: handleNoTypeArguments())
|
|
listener: handleType(int, null)
|
|
listener: handleNoName())
|
|
listener: endRecordTypeEntry()
|
|
listener: endRecordType((, null, 2, false)
|
|
listener: handleDeclaredVariablePattern(null, b, false)
|
|
listener: endPattern(b)
|
|
listener: handlePatternField(:)
|
|
ensureCloseParen(b, ()
|
|
listener: handleRecordPattern((, 1)
|
|
listener: endPattern())
|
|
listener: beginSwitchCaseWhenClause(when)
|
|
parseExpression(when)
|
|
looksLikeOuterPatternEquals(when)
|
|
skipOuterPattern(when)
|
|
skipObjectPatternRest(b)
|
|
parsePrecedenceExpression(when, 1, true, ConstantPatternContext.none)
|
|
parseUnaryExpression(when, true, ConstantPatternContext.none)
|
|
parsePrimary(when, expression, ConstantPatternContext.none)
|
|
parseSendOrFunctionLiteral(when, expression, ConstantPatternContext.none)
|
|
parseSend(when, expression, ConstantPatternContext.none)
|
|
ensureIdentifier(when, expression)
|
|
listener: handleIdentifier(b, expression)
|
|
listener: handleNoTypeArguments(!=)
|
|
parseArgumentsOpt(b)
|
|
listener: handleNoArguments(!=)
|
|
listener: handleSend(b, b)
|
|
listener: beginBinaryExpression(!=)
|
|
parsePrecedenceExpression(!=, 8, true, ConstantPatternContext.none)
|
|
parseUnaryExpression(!=, true, ConstantPatternContext.none)
|
|
parsePrimary(!=, expression, ConstantPatternContext.none)
|
|
parseParenthesizedExpressionFunctionLiteralOrRecordLiteral(!=, ConstantPatternContext.none)
|
|
parseParenthesizedExpressionOrRecordLiteral(!=, null, ConstantPatternContext.none)
|
|
listener: beginParenthesizedExpressionOrRecordLiteral(()
|
|
parseExpression(()
|
|
looksLikeOuterPatternEquals(()
|
|
skipOuterPattern(()
|
|
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
|
parseUnaryExpression((, true, ConstantPatternContext.none)
|
|
parsePrimary((, expression, ConstantPatternContext.none)
|
|
parseLiteralInt(()
|
|
listener: handleLiteralInt(2)
|
|
listener: handlePositionalRecordField(2)
|
|
parseExpression(,)
|
|
looksLikeOuterPatternEquals(,)
|
|
skipOuterPattern(,)
|
|
parsePrecedenceExpression(,, 1, true, ConstantPatternContext.none)
|
|
parseUnaryExpression(,, true, ConstantPatternContext.none)
|
|
parsePrimary(,, expression, ConstantPatternContext.none)
|
|
parseLiteralInt(,)
|
|
listener: handleLiteralInt(3)
|
|
listener: handlePositionalRecordField(3)
|
|
ensureCloseParen(3, ()
|
|
listener: endRecordLiteral((, 2, null)
|
|
listener: endBinaryExpression(!=, ))
|
|
listener: endSwitchCaseWhenClause())
|
|
ensureColon())
|
|
listener: endCaseExpression(case, when, :)
|
|
peekPastLabels(print)
|
|
parseStatementsInSwitchCase(:, print, case, 0, 1, null, null)
|
|
listener: beginSwitchCase(0, 1, case)
|
|
parseStatement(:)
|
|
parseStatementX(:)
|
|
parseExpressionStatementOrDeclarationAfterModifiers(:, :, null, null, null, null)
|
|
looksLikeLocalFunction(print)
|
|
parseExpressionStatement(:)
|
|
parseExpression(:)
|
|
looksLikeOuterPatternEquals(:)
|
|
skipOuterPattern(:)
|
|
skipObjectPatternRest(print)
|
|
parsePrecedenceExpression(:, 1, true, ConstantPatternContext.none)
|
|
parseUnaryExpression(:, true, ConstantPatternContext.none)
|
|
parsePrimary(:, expression, ConstantPatternContext.none)
|
|
parseSendOrFunctionLiteral(:, expression, ConstantPatternContext.none)
|
|
looksLikeFunctionBody(;)
|
|
parseSend(:, expression, ConstantPatternContext.none)
|
|
ensureIdentifier(:, expression)
|
|
listener: handleIdentifier(print, expression)
|
|
listener: handleNoTypeArguments(()
|
|
parseArgumentsOpt(print)
|
|
parseArguments(print)
|
|
parseArgumentsRest(()
|
|
listener: beginArguments(()
|
|
allowedToShortcutParseExpression()
|
|
listener: handleIdentifier(b, expression)
|
|
listener: handleNoTypeArguments())
|
|
listener: handleNoArguments())
|
|
listener: handleSend(b, b)
|
|
listener: handlePositionalArgument(b)
|
|
listener: endArguments(1, (, ))
|
|
listener: handleSend(print, ))
|
|
ensureSemicolon())
|
|
listener: handleExpressionStatement(print, ;)
|
|
peekPastLabels(case)
|
|
listener: endSwitchCase(0, 1, null, null, 1, case, ;)
|
|
notEofOrType(CLOSE_CURLY_BRACKET, case)
|
|
peekPastLabels(case)
|
|
listener: beginCaseExpression(case)
|
|
parsePattern(case, PatternContext.matching, precedence: 1)
|
|
listener: beginPattern(case)
|
|
parsePrimaryPattern(case, PatternContext.matching)
|
|
listener: handleNoTypeArguments(()
|
|
parseObjectPatternRest(Class, PatternContext.matching)
|
|
ensureIdentifier((, namedArgumentReference)
|
|
listener: handleIdentifier(field, namedArgumentReference)
|
|
parsePattern(:, PatternContext.matching, precedence: 1)
|
|
listener: beginPattern(:)
|
|
parsePrimaryPattern(:, PatternContext.matching)
|
|
parseVariablePattern(:, PatternContext.matching, typeInfo: SimpleType())
|
|
listener: handleIdentifier(int, typeReference)
|
|
listener: handleNoTypeArguments(b)
|
|
listener: handleType(int, null)
|
|
listener: handleDeclaredVariablePattern(null, b, false)
|
|
listener: endPattern(b)
|
|
listener: handlePatternField(:)
|
|
listener: handleObjectPatternFields(1, (, ))
|
|
listener: handleObjectPattern(Class, null, null)
|
|
listener: endPattern())
|
|
listener: beginSwitchCaseWhenClause(when)
|
|
parseExpression(when)
|
|
looksLikeOuterPatternEquals(when)
|
|
skipOuterPattern(when)
|
|
skipObjectPatternRest(b)
|
|
parsePrecedenceExpression(when, 1, true, ConstantPatternContext.none)
|
|
parseUnaryExpression(when, true, ConstantPatternContext.none)
|
|
parsePrimary(when, expression, ConstantPatternContext.none)
|
|
parseSendOrFunctionLiteral(when, expression, ConstantPatternContext.none)
|
|
parseSend(when, expression, ConstantPatternContext.none)
|
|
ensureIdentifier(when, expression)
|
|
listener: handleIdentifier(b, expression)
|
|
listener: handleNoTypeArguments(!=)
|
|
parseArgumentsOpt(b)
|
|
listener: handleNoArguments(!=)
|
|
listener: handleSend(b, b)
|
|
listener: beginBinaryExpression(!=)
|
|
parsePrecedenceExpression(!=, 8, true, ConstantPatternContext.none)
|
|
parseUnaryExpression(!=, true, ConstantPatternContext.none)
|
|
parsePrimary(!=, expression, ConstantPatternContext.none)
|
|
parseLiteralInt(!=)
|
|
listener: handleLiteralInt(2)
|
|
listener: endBinaryExpression(!=, 2)
|
|
listener: endSwitchCaseWhenClause(2)
|
|
ensureColon(2)
|
|
listener: endCaseExpression(case, when, :)
|
|
peekPastLabels(print)
|
|
parseStatementsInSwitchCase(:, print, case, 0, 1, null, null)
|
|
listener: beginSwitchCase(0, 1, case)
|
|
parseStatement(:)
|
|
parseStatementX(:)
|
|
parseExpressionStatementOrDeclarationAfterModifiers(:, :, null, null, null, null)
|
|
looksLikeLocalFunction(print)
|
|
parseExpressionStatement(:)
|
|
parseExpression(:)
|
|
looksLikeOuterPatternEquals(:)
|
|
skipOuterPattern(:)
|
|
skipObjectPatternRest(print)
|
|
parsePrecedenceExpression(:, 1, true, ConstantPatternContext.none)
|
|
parseUnaryExpression(:, true, ConstantPatternContext.none)
|
|
parsePrimary(:, expression, ConstantPatternContext.none)
|
|
parseSendOrFunctionLiteral(:, expression, ConstantPatternContext.none)
|
|
looksLikeFunctionBody(;)
|
|
parseSend(:, expression, ConstantPatternContext.none)
|
|
ensureIdentifier(:, expression)
|
|
listener: handleIdentifier(print, expression)
|
|
listener: handleNoTypeArguments(()
|
|
parseArgumentsOpt(print)
|
|
parseArguments(print)
|
|
parseArgumentsRest(()
|
|
listener: beginArguments(()
|
|
allowedToShortcutParseExpression()
|
|
listener: handleIdentifier(b, expression)
|
|
listener: handleNoTypeArguments())
|
|
listener: handleNoArguments())
|
|
listener: handleSend(b, b)
|
|
listener: handlePositionalArgument(b)
|
|
listener: endArguments(1, (, ))
|
|
listener: handleSend(print, ))
|
|
ensureSemicolon())
|
|
listener: handleExpressionStatement(print, ;)
|
|
peekPastLabels(case)
|
|
listener: endSwitchCase(0, 1, null, null, 1, case, ;)
|
|
notEofOrType(CLOSE_CURLY_BRACKET, case)
|
|
peekPastLabels(case)
|
|
listener: beginCaseExpression(case)
|
|
parsePattern(case, PatternContext.matching, precedence: 1)
|
|
listener: beginPattern(case)
|
|
parsePrimaryPattern(case, PatternContext.matching)
|
|
listener: handleNoTypeArguments(()
|
|
parseObjectPatternRest(Class, PatternContext.matching)
|
|
ensureIdentifier((, namedArgumentReference)
|
|
listener: handleIdentifier(field, namedArgumentReference)
|
|
parsePattern(:, PatternContext.matching, precedence: 1)
|
|
listener: beginPattern(:)
|
|
parsePrimaryPattern(:, PatternContext.matching)
|
|
parseVariablePattern(:, PatternContext.matching, typeInfo: ComplexTypeInfo(start: (, typeArguments: NoTypeParamOrArg(), beforeQuestionMark: null, end: ), typeVariableStarters: [], gftHasReturnType: null, isRecordType: true, gftReturnTypeHasRecordType: false, recovered: false))
|
|
parseRecordType((, :, false)
|
|
listener: beginRecordType(()
|
|
parseRecordTypeField((, identifierIsOptional: true)
|
|
listener: beginRecordTypeEntry()
|
|
parseMetadataStar(()
|
|
listener: beginMetadataStar(int)
|
|
listener: endMetadataStar(0)
|
|
listener: handleIdentifier(int, typeReference)
|
|
listener: handleNoTypeArguments(,)
|
|
listener: handleType(int, null)
|
|
listener: handleNoName(,)
|
|
listener: endRecordTypeEntry()
|
|
parseRecordTypeField(,, identifierIsOptional: true)
|
|
listener: beginRecordTypeEntry()
|
|
parseMetadataStar(,)
|
|
listener: beginMetadataStar(int)
|
|
listener: endMetadataStar(0)
|
|
listener: handleIdentifier(int, typeReference)
|
|
listener: handleNoTypeArguments())
|
|
listener: handleType(int, null)
|
|
listener: handleNoName())
|
|
listener: endRecordTypeEntry()
|
|
listener: endRecordType((, null, 2, false)
|
|
listener: handleDeclaredVariablePattern(null, b, false)
|
|
listener: endPattern(b)
|
|
listener: handlePatternField(:)
|
|
listener: handleObjectPatternFields(1, (, ))
|
|
listener: handleObjectPattern(Class, null, null)
|
|
listener: endPattern())
|
|
listener: beginSwitchCaseWhenClause(when)
|
|
parseExpression(when)
|
|
looksLikeOuterPatternEquals(when)
|
|
skipOuterPattern(when)
|
|
skipObjectPatternRest(b)
|
|
parsePrecedenceExpression(when, 1, true, ConstantPatternContext.none)
|
|
parseUnaryExpression(when, true, ConstantPatternContext.none)
|
|
parsePrimary(when, expression, ConstantPatternContext.none)
|
|
parseSendOrFunctionLiteral(when, expression, ConstantPatternContext.none)
|
|
parseSend(when, expression, ConstantPatternContext.none)
|
|
ensureIdentifier(when, expression)
|
|
listener: handleIdentifier(b, expression)
|
|
listener: handleNoTypeArguments(!=)
|
|
parseArgumentsOpt(b)
|
|
listener: handleNoArguments(!=)
|
|
listener: handleSend(b, b)
|
|
listener: beginBinaryExpression(!=)
|
|
parsePrecedenceExpression(!=, 8, true, ConstantPatternContext.none)
|
|
parseUnaryExpression(!=, true, ConstantPatternContext.none)
|
|
parsePrimary(!=, expression, ConstantPatternContext.none)
|
|
parseParenthesizedExpressionFunctionLiteralOrRecordLiteral(!=, ConstantPatternContext.none)
|
|
parseParenthesizedExpressionOrRecordLiteral(!=, null, ConstantPatternContext.none)
|
|
listener: beginParenthesizedExpressionOrRecordLiteral(()
|
|
parseExpression(()
|
|
looksLikeOuterPatternEquals(()
|
|
skipOuterPattern(()
|
|
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
|
parseUnaryExpression((, true, ConstantPatternContext.none)
|
|
parsePrimary((, expression, ConstantPatternContext.none)
|
|
parseLiteralInt(()
|
|
listener: handleLiteralInt(2)
|
|
listener: handlePositionalRecordField(2)
|
|
parseExpression(,)
|
|
looksLikeOuterPatternEquals(,)
|
|
skipOuterPattern(,)
|
|
parsePrecedenceExpression(,, 1, true, ConstantPatternContext.none)
|
|
parseUnaryExpression(,, true, ConstantPatternContext.none)
|
|
parsePrimary(,, expression, ConstantPatternContext.none)
|
|
parseLiteralInt(,)
|
|
listener: handleLiteralInt(3)
|
|
listener: handlePositionalRecordField(3)
|
|
ensureCloseParen(3, ()
|
|
listener: endRecordLiteral((, 2, null)
|
|
listener: endBinaryExpression(!=, ))
|
|
listener: endSwitchCaseWhenClause())
|
|
ensureColon())
|
|
listener: endCaseExpression(case, when, :)
|
|
peekPastLabels(print)
|
|
parseStatementsInSwitchCase(:, print, case, 0, 1, null, null)
|
|
listener: beginSwitchCase(0, 1, case)
|
|
parseStatement(:)
|
|
parseStatementX(:)
|
|
parseExpressionStatementOrDeclarationAfterModifiers(:, :, null, null, null, null)
|
|
looksLikeLocalFunction(print)
|
|
parseExpressionStatement(:)
|
|
parseExpression(:)
|
|
looksLikeOuterPatternEquals(:)
|
|
skipOuterPattern(:)
|
|
skipObjectPatternRest(print)
|
|
parsePrecedenceExpression(:, 1, true, ConstantPatternContext.none)
|
|
parseUnaryExpression(:, true, ConstantPatternContext.none)
|
|
parsePrimary(:, expression, ConstantPatternContext.none)
|
|
parseSendOrFunctionLiteral(:, expression, ConstantPatternContext.none)
|
|
looksLikeFunctionBody(;)
|
|
parseSend(:, expression, ConstantPatternContext.none)
|
|
ensureIdentifier(:, expression)
|
|
listener: handleIdentifier(print, expression)
|
|
listener: handleNoTypeArguments(()
|
|
parseArgumentsOpt(print)
|
|
parseArguments(print)
|
|
parseArgumentsRest(()
|
|
listener: beginArguments(()
|
|
allowedToShortcutParseExpression()
|
|
listener: handleIdentifier(b, expression)
|
|
listener: handleNoTypeArguments())
|
|
listener: handleNoArguments())
|
|
listener: handleSend(b, b)
|
|
listener: handlePositionalArgument(b)
|
|
listener: endArguments(1, (, ))
|
|
listener: handleSend(print, ))
|
|
ensureSemicolon())
|
|
listener: handleExpressionStatement(print, ;)
|
|
peekPastLabels(})
|
|
listener: endSwitchCase(0, 1, null, null, 1, case, ;)
|
|
notEofOrType(CLOSE_CURLY_BRACKET, })
|
|
listener: endSwitchBlock(4, {, })
|
|
listener: endSwitchStatement(switch, })
|
|
notEofOrType(CLOSE_CURLY_BRACKET, })
|
|
listener: endBlockFunctionBody(1, {, })
|
|
listener: endTopLevelMethod(test, null, })
|
|
listener: endTopLevelDeclaration(})
|
|
parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
|
|
parseMetadataStar(})
|
|
listener: beginMetadataStar(testNullable)
|
|
listener: endMetadataStar(0)
|
|
parseTopLevelMemberImpl(})
|
|
listener: beginTopLevelMember(testNullable)
|
|
isReservedKeyword(()
|
|
parseTopLevelMethod(}, null, null, }, NoType(), null, testNullable, false)
|
|
listener: beginTopLevelMethod(}, null, null)
|
|
listener: handleNoType(})
|
|
ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
|
|
listener: handleIdentifier(testNullable, topLevelFunctionDeclaration)
|
|
parseMethodTypeVar(testNullable)
|
|
listener: handleNoTypeVariables(()
|
|
parseGetterOrFormalParameters(testNullable, testNullable, false, MemberKind.TopLevelMethod)
|
|
parseFormalParameters(testNullable, MemberKind.TopLevelMethod)
|
|
parseFormalParametersRest((, MemberKind.TopLevelMethod)
|
|
listener: beginFormalParameters((, MemberKind.TopLevelMethod)
|
|
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
|
|
parseMetadataStar(()
|
|
listener: beginMetadataStar(a)
|
|
listener: endMetadataStar(0)
|
|
listener: beginFormalParameter(a, MemberKind.TopLevelMethod, null, null, null)
|
|
listener: handleNoType(()
|
|
ensureIdentifier((, formalParameterDeclaration)
|
|
listener: handleIdentifier(a, formalParameterDeclaration)
|
|
listener: handleFormalParameterWithoutValue())
|
|
listener: endFormalParameter(null, null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
|
|
listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
|
|
parseAsyncModifierOpt())
|
|
listener: handleAsyncModifier(null, null)
|
|
inPlainSync()
|
|
parseFunctionBody(), false, false)
|
|
listener: beginBlockFunctionBody({)
|
|
notEofOrType(CLOSE_CURLY_BRACKET, switch)
|
|
parseStatement({)
|
|
parseStatementX({)
|
|
parseSwitchStatement({)
|
|
listener: beginSwitchStatement(switch)
|
|
ensureParenthesizedCondition(switch, allowCase: false)
|
|
parseExpressionInParenthesisRest((, allowCase: false)
|
|
parseExpression(()
|
|
looksLikeOuterPatternEquals(()
|
|
skipOuterPattern(()
|
|
skipObjectPatternRest(a)
|
|
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
|
parseUnaryExpression((, true, ConstantPatternContext.none)
|
|
parsePrimary((, expression, ConstantPatternContext.none)
|
|
parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
|
|
parseSend((, expression, ConstantPatternContext.none)
|
|
ensureIdentifier((, expression)
|
|
listener: handleIdentifier(a, expression)
|
|
listener: handleNoTypeArguments())
|
|
parseArgumentsOpt(a)
|
|
listener: handleNoArguments())
|
|
listener: handleSend(a, a)
|
|
ensureCloseParen(a, ()
|
|
listener: handleParenthesizedCondition((, null, null)
|
|
parseSwitchBlock())
|
|
ensureBlock(), BlockKind(switch statement))
|
|
listener: beginSwitchBlock({)
|
|
notEofOrType(CLOSE_CURLY_BRACKET, case)
|
|
peekPastLabels(case)
|
|
listener: beginCaseExpression(case)
|
|
parsePattern(case, PatternContext.matching, precedence: 1)
|
|
listener: beginPattern(case)
|
|
parsePrimaryPattern(case, PatternContext.matching)
|
|
parseParenthesizedPatternOrRecordPattern(case, PatternContext.matching)
|
|
ensureIdentifier((, namedRecordFieldReference)
|
|
listener: handleIdentifier(foo, namedRecordFieldReference)
|
|
parsePattern(:, PatternContext.matching, precedence: 1)
|
|
listener: beginPattern(:)
|
|
parsePrimaryPattern(:, PatternContext.matching)
|
|
parseVariablePattern(:, PatternContext.matching, typeInfo: ComplexTypeInfo(start: (, typeArguments: NoTypeParamOrArg(), beforeQuestionMark: ), end: ?, typeVariableStarters: [], gftHasReturnType: null, isRecordType: true, gftReturnTypeHasRecordType: false, recovered: false))
|
|
parseRecordType((, :, true)
|
|
listener: beginRecordType(()
|
|
parseRecordTypeField((, identifierIsOptional: true)
|
|
listener: beginRecordTypeEntry()
|
|
parseMetadataStar(()
|
|
listener: beginMetadataStar(int)
|
|
listener: endMetadataStar(0)
|
|
listener: handleIdentifier(int, typeReference)
|
|
listener: handleNoTypeArguments(,)
|
|
listener: handleType(int, null)
|
|
listener: handleNoName(,)
|
|
listener: endRecordTypeEntry()
|
|
parseRecordTypeField(,, identifierIsOptional: true)
|
|
listener: beginRecordTypeEntry()
|
|
parseMetadataStar(,)
|
|
listener: beginMetadataStar(int)
|
|
listener: endMetadataStar(0)
|
|
listener: handleIdentifier(int, typeReference)
|
|
listener: handleNoTypeArguments())
|
|
listener: handleType(int, null)
|
|
listener: handleNoName())
|
|
listener: endRecordTypeEntry()
|
|
listener: endRecordType((, ?, 2, false)
|
|
listener: handleDeclaredVariablePattern(null, b, false)
|
|
listener: endPattern(b)
|
|
listener: handlePatternField(:)
|
|
ensureCloseParen(b, ()
|
|
listener: handleRecordPattern((, 1)
|
|
listener: endPattern())
|
|
listener: beginSwitchCaseWhenClause(when)
|
|
parseExpression(when)
|
|
looksLikeOuterPatternEquals(when)
|
|
skipOuterPattern(when)
|
|
skipObjectPatternRest(b)
|
|
parsePrecedenceExpression(when, 1, true, ConstantPatternContext.none)
|
|
parseUnaryExpression(when, true, ConstantPatternContext.none)
|
|
parsePrimary(when, expression, ConstantPatternContext.none)
|
|
parseSendOrFunctionLiteral(when, expression, ConstantPatternContext.none)
|
|
parseSend(when, expression, ConstantPatternContext.none)
|
|
ensureIdentifier(when, expression)
|
|
listener: handleIdentifier(b, expression)
|
|
listener: handleNoTypeArguments(!=)
|
|
parseArgumentsOpt(b)
|
|
listener: handleNoArguments(!=)
|
|
listener: handleSend(b, b)
|
|
listener: beginBinaryExpression(!=)
|
|
parsePrecedenceExpression(!=, 8, true, ConstantPatternContext.none)
|
|
parseUnaryExpression(!=, true, ConstantPatternContext.none)
|
|
parsePrimary(!=, expression, ConstantPatternContext.none)
|
|
parseParenthesizedExpressionFunctionLiteralOrRecordLiteral(!=, ConstantPatternContext.none)
|
|
parseParenthesizedExpressionOrRecordLiteral(!=, null, ConstantPatternContext.none)
|
|
listener: beginParenthesizedExpressionOrRecordLiteral(()
|
|
parseExpression(()
|
|
looksLikeOuterPatternEquals(()
|
|
skipOuterPattern(()
|
|
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
|
parseUnaryExpression((, true, ConstantPatternContext.none)
|
|
parsePrimary((, expression, ConstantPatternContext.none)
|
|
parseLiteralInt(()
|
|
listener: handleLiteralInt(2)
|
|
listener: handlePositionalRecordField(2)
|
|
parseExpression(,)
|
|
looksLikeOuterPatternEquals(,)
|
|
skipOuterPattern(,)
|
|
parsePrecedenceExpression(,, 1, true, ConstantPatternContext.none)
|
|
parseUnaryExpression(,, true, ConstantPatternContext.none)
|
|
parsePrimary(,, expression, ConstantPatternContext.none)
|
|
parseLiteralInt(,)
|
|
listener: handleLiteralInt(3)
|
|
listener: handlePositionalRecordField(3)
|
|
ensureCloseParen(3, ()
|
|
listener: endRecordLiteral((, 2, null)
|
|
listener: endBinaryExpression(!=, ))
|
|
listener: endSwitchCaseWhenClause())
|
|
ensureColon())
|
|
listener: endCaseExpression(case, when, :)
|
|
peekPastLabels(print)
|
|
parseStatementsInSwitchCase(:, print, case, 0, 1, null, null)
|
|
listener: beginSwitchCase(0, 1, case)
|
|
parseStatement(:)
|
|
parseStatementX(:)
|
|
parseExpressionStatementOrDeclarationAfterModifiers(:, :, null, null, null, null)
|
|
looksLikeLocalFunction(print)
|
|
parseExpressionStatement(:)
|
|
parseExpression(:)
|
|
looksLikeOuterPatternEquals(:)
|
|
skipOuterPattern(:)
|
|
skipObjectPatternRest(print)
|
|
parsePrecedenceExpression(:, 1, true, ConstantPatternContext.none)
|
|
parseUnaryExpression(:, true, ConstantPatternContext.none)
|
|
parsePrimary(:, expression, ConstantPatternContext.none)
|
|
parseSendOrFunctionLiteral(:, expression, ConstantPatternContext.none)
|
|
looksLikeFunctionBody(;)
|
|
parseSend(:, expression, ConstantPatternContext.none)
|
|
ensureIdentifier(:, expression)
|
|
listener: handleIdentifier(print, expression)
|
|
listener: handleNoTypeArguments(()
|
|
parseArgumentsOpt(print)
|
|
parseArguments(print)
|
|
parseArgumentsRest(()
|
|
listener: beginArguments(()
|
|
allowedToShortcutParseExpression()
|
|
listener: handleIdentifier(b, expression)
|
|
listener: handleNoTypeArguments())
|
|
listener: handleNoArguments())
|
|
listener: handleSend(b, b)
|
|
listener: handlePositionalArgument(b)
|
|
listener: endArguments(1, (, ))
|
|
listener: handleSend(print, ))
|
|
ensureSemicolon())
|
|
listener: handleExpressionStatement(print, ;)
|
|
peekPastLabels(case)
|
|
listener: endSwitchCase(0, 1, null, null, 1, case, ;)
|
|
notEofOrType(CLOSE_CURLY_BRACKET, case)
|
|
peekPastLabels(case)
|
|
listener: beginCaseExpression(case)
|
|
parsePattern(case, PatternContext.matching, precedence: 1)
|
|
listener: beginPattern(case)
|
|
parsePrimaryPattern(case, PatternContext.matching)
|
|
listener: handleNoTypeArguments(()
|
|
parseObjectPatternRest(Class, PatternContext.matching)
|
|
ensureIdentifier((, namedArgumentReference)
|
|
listener: handleIdentifier(field, namedArgumentReference)
|
|
parsePattern(:, PatternContext.matching, precedence: 1)
|
|
listener: beginPattern(:)
|
|
parsePrimaryPattern(:, PatternContext.matching)
|
|
parseVariablePattern(:, PatternContext.matching, typeInfo: ComplexTypeInfo(start: (, typeArguments: NoTypeParamOrArg(), beforeQuestionMark: ), end: ?, typeVariableStarters: [], gftHasReturnType: null, isRecordType: true, gftReturnTypeHasRecordType: false, recovered: false))
|
|
parseRecordType((, :, true)
|
|
listener: beginRecordType(()
|
|
parseRecordTypeField((, identifierIsOptional: true)
|
|
listener: beginRecordTypeEntry()
|
|
parseMetadataStar(()
|
|
listener: beginMetadataStar(int)
|
|
listener: endMetadataStar(0)
|
|
listener: handleIdentifier(int, typeReference)
|
|
listener: handleNoTypeArguments(,)
|
|
listener: handleType(int, null)
|
|
listener: handleNoName(,)
|
|
listener: endRecordTypeEntry()
|
|
parseRecordTypeField(,, identifierIsOptional: true)
|
|
listener: beginRecordTypeEntry()
|
|
parseMetadataStar(,)
|
|
listener: beginMetadataStar(int)
|
|
listener: endMetadataStar(0)
|
|
listener: handleIdentifier(int, typeReference)
|
|
listener: handleNoTypeArguments())
|
|
listener: handleType(int, null)
|
|
listener: handleNoName())
|
|
listener: endRecordTypeEntry()
|
|
listener: endRecordType((, ?, 2, false)
|
|
listener: handleDeclaredVariablePattern(null, b, false)
|
|
listener: endPattern(b)
|
|
listener: handlePatternField(:)
|
|
listener: handleObjectPatternFields(1, (, ))
|
|
listener: handleObjectPattern(Class, null, null)
|
|
listener: endPattern())
|
|
listener: beginSwitchCaseWhenClause(when)
|
|
parseExpression(when)
|
|
looksLikeOuterPatternEquals(when)
|
|
skipOuterPattern(when)
|
|
skipObjectPatternRest(b)
|
|
parsePrecedenceExpression(when, 1, true, ConstantPatternContext.none)
|
|
parseUnaryExpression(when, true, ConstantPatternContext.none)
|
|
parsePrimary(when, expression, ConstantPatternContext.none)
|
|
parseSendOrFunctionLiteral(when, expression, ConstantPatternContext.none)
|
|
parseSend(when, expression, ConstantPatternContext.none)
|
|
ensureIdentifier(when, expression)
|
|
listener: handleIdentifier(b, expression)
|
|
listener: handleNoTypeArguments(!=)
|
|
parseArgumentsOpt(b)
|
|
listener: handleNoArguments(!=)
|
|
listener: handleSend(b, b)
|
|
listener: beginBinaryExpression(!=)
|
|
parsePrecedenceExpression(!=, 8, true, ConstantPatternContext.none)
|
|
parseUnaryExpression(!=, true, ConstantPatternContext.none)
|
|
parsePrimary(!=, expression, ConstantPatternContext.none)
|
|
parseParenthesizedExpressionFunctionLiteralOrRecordLiteral(!=, ConstantPatternContext.none)
|
|
parseParenthesizedExpressionOrRecordLiteral(!=, null, ConstantPatternContext.none)
|
|
listener: beginParenthesizedExpressionOrRecordLiteral(()
|
|
parseExpression(()
|
|
looksLikeOuterPatternEquals(()
|
|
skipOuterPattern(()
|
|
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
|
parseUnaryExpression((, true, ConstantPatternContext.none)
|
|
parsePrimary((, expression, ConstantPatternContext.none)
|
|
parseLiteralInt(()
|
|
listener: handleLiteralInt(2)
|
|
listener: handlePositionalRecordField(2)
|
|
parseExpression(,)
|
|
looksLikeOuterPatternEquals(,)
|
|
skipOuterPattern(,)
|
|
parsePrecedenceExpression(,, 1, true, ConstantPatternContext.none)
|
|
parseUnaryExpression(,, true, ConstantPatternContext.none)
|
|
parsePrimary(,, expression, ConstantPatternContext.none)
|
|
parseLiteralInt(,)
|
|
listener: handleLiteralInt(3)
|
|
listener: handlePositionalRecordField(3)
|
|
ensureCloseParen(3, ()
|
|
listener: endRecordLiteral((, 2, null)
|
|
listener: endBinaryExpression(!=, ))
|
|
listener: endSwitchCaseWhenClause())
|
|
ensureColon())
|
|
listener: endCaseExpression(case, when, :)
|
|
peekPastLabels(print)
|
|
parseStatementsInSwitchCase(:, print, case, 0, 1, null, null)
|
|
listener: beginSwitchCase(0, 1, case)
|
|
parseStatement(:)
|
|
parseStatementX(:)
|
|
parseExpressionStatementOrDeclarationAfterModifiers(:, :, null, null, null, null)
|
|
looksLikeLocalFunction(print)
|
|
parseExpressionStatement(:)
|
|
parseExpression(:)
|
|
looksLikeOuterPatternEquals(:)
|
|
skipOuterPattern(:)
|
|
skipObjectPatternRest(print)
|
|
parsePrecedenceExpression(:, 1, true, ConstantPatternContext.none)
|
|
parseUnaryExpression(:, true, ConstantPatternContext.none)
|
|
parsePrimary(:, expression, ConstantPatternContext.none)
|
|
parseSendOrFunctionLiteral(:, expression, ConstantPatternContext.none)
|
|
looksLikeFunctionBody(;)
|
|
parseSend(:, expression, ConstantPatternContext.none)
|
|
ensureIdentifier(:, expression)
|
|
listener: handleIdentifier(print, expression)
|
|
listener: handleNoTypeArguments(()
|
|
parseArgumentsOpt(print)
|
|
parseArguments(print)
|
|
parseArgumentsRest(()
|
|
listener: beginArguments(()
|
|
allowedToShortcutParseExpression()
|
|
listener: handleIdentifier(b, expression)
|
|
listener: handleNoTypeArguments())
|
|
listener: handleNoArguments())
|
|
listener: handleSend(b, b)
|
|
listener: handlePositionalArgument(b)
|
|
listener: endArguments(1, (, ))
|
|
listener: handleSend(print, ))
|
|
ensureSemicolon())
|
|
listener: handleExpressionStatement(print, ;)
|
|
peekPastLabels(})
|
|
listener: endSwitchCase(0, 1, null, null, 1, case, ;)
|
|
notEofOrType(CLOSE_CURLY_BRACKET, })
|
|
listener: endSwitchBlock(2, {, })
|
|
listener: endSwitchStatement(switch, })
|
|
notEofOrType(CLOSE_CURLY_BRACKET, })
|
|
listener: endBlockFunctionBody(1, {, })
|
|
listener: endTopLevelMethod(testNullable, null, })
|
|
listener: endTopLevelDeclaration(})
|
|
reportAllErrorTokens(class)
|
|
listener: endCompilationUnit(3, )
|