Skip to content

endToken.previous is null in FunctionExpressionInvocation #46150

Closed
@scheglov

Description

@scheglov

It happens here.

Don't know on which code.
@stereotype441 you might have changed something related in the parser recently.

Thread 0 main thread_CastError: Null check operator used on a null value
at NodeLocator.visitNode(utilities.dart:2541)
at UnifyingAstVisitor.visitFunctionExpressionInvocation(visitor.dart:3363)
at FunctionExpressionInvocationImpl.accept(ast.dart:5006)
at ExpressionStatementImpl.visitChildren(ast.dart:3636)
at NodeLocator.visitNode(utilities.dart:2550)
at UnifyingAstVisitor.visitExpressionStatement(visitor.dart:3309)
at ExpressionStatementImpl.accept(ast.dart:3632)
at NodeListImpl.accept(ast.dart:7581)
at BlockImpl.visitChildren(ast.dart:1056)
at NodeLocator.visitNode(utilities.dart:2550)
at UnifyingAstVisitor.visitBlock(visitor.dart:3217)
at BlockImpl.accept(ast.dart:1052)
at BlockFunctionBodyImpl.visitChildren(ast.dart:1011)
at NodeLocator.visitNode(utilities.dart:2550)
at UnifyingAstVisitor.visitBlockFunctionBody(visitor.dart:3220)
at BlockFunctionBodyImpl.accept(ast.dart:1007)
at MethodDeclarationImpl.visitChildren(ast.dart:7016)
at NodeLocator.visitNode(utilities.dart:2550)
at UnifyingAstVisitor.visitMethodDeclaration(visitor.dart:3435)
at MethodDeclarationImpl.accept(ast.dart:7007)
at NodeListImpl.accept(ast.dart:7581)
at ClassDeclarationImpl.visitChildren(ast.dart:1530)
at NodeLocator.visitNode(utilities.dart:2550)
at UnifyingAstVisitor.visitClassDeclaration(visitor.dart:3235)
at ClassDeclarationImpl.accept(ast.dart:1500)
at NodeListImpl.accept(ast.dart:7581)
at CompilationUnitImpl.visitChildren(ast.dart:2091)
at NodeLocator.visitNode(utilities.dart:2550)
at UnifyingAstVisitor.visitCompilationUnit(visitor.dart:3247)
at CompilationUnitImpl.accept(ast.dart:2084)
at NodeLocator.searchWithin(utilities.dart:2511)
at BaseProcessor.findSelectedNode(base_processor.dart:47)
at AssistProcessor._containsErrorCode(assist_internal.dart:272)
at AssistProcessor._addFromProducers(assist_internal.dart:257)
at <asynchronous gap>(async)
at AssistProcessor.compute(assist_internal.dart:170)
at <asynchronous gap>(async)
at EditDomainHandler._computeServerAssists(edit_domain.dart:772)
at <asynchronous gap>(async)
at EditDomainHandler.getAssists(edit_domain.dart:223)

Activity

added
P2A bug or feature request we're likely to work on
analyzer-crash-reportIssues which have been reported due to an analysis server crash
on May 26, 2021
scheglov

scheglov commented on May 26, 2021

@scheglov
ContributorAuthor

I see it in internal crash reporting for about 10 users.

stereotype441

stereotype441 commented on May 26, 2021

@stereotype441
Member

Hmm, this was likely introduced in 126c5fa. In the case where type arguments are applied to an expression but there are no parentheses that follow, the AstBuilder introduces a synthetic pair of ( and ), but it doesn't put these synthetic parens in the token stream (see #46148 for more details about why)

I believe https://dart-review.googlesource.com/c/sdk/+/199682 should fix this particular issue. I'll get that cleaned up and sent out for review ASAP.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

P2A bug or feature request we're likely to work onanalyzer-crash-reportIssues which have been reported due to an analysis server crashlegacy-area-analyzerUse area-devexp instead.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

    Development

    No branches or pull requests

      Participants

      @stereotype441@scheglov

      Issue actions

        endToken.previous is null in FunctionExpressionInvocation · Issue #46150 · dart-lang/sdk