Skip to content

NullPointerException on invalid attribute reference #1211

@grosenberg

Description

@grosenberg

Antlr 4.5.3 tool jar.

On a rule containing an action

a : b { System.out.println($c.text); } ; // Note: $c is an invalid reference
// Also: on $b.hext (invalid attribute)

The tool fails with:

java.lang.NullPointerException at org.antlr.v4.codegen.ActionTranslator.qualifiedAttr(ActionTranslator.java:214) ~[antlr4.jar:?] at org.antlr.v4.parse.ActionSplitter.mQUALIFIED_ATTR(ActionSplitter.java:394) ~[antlr4.jar:?] at org.antlr.v4.parse.ActionSplitter.mTokens(ActionSplitter.java:868) ~[antlr4.jar:?] at org.antlr.v4.parse.ActionSplitter.nextToken(ActionSplitter.java:89) ~[antlr4.jar:?] at org.antlr.v4.parse.ActionSplitter.getActionTokens(ActionSplitter.java:43) ~[antlr4.jar:?] at org.antlr.v4.codegen.ActionTranslator.translateActionChunk(ActionTranslator.java:170) ~[antlr4.jar:?]

Full error trace in
BadAttrName.txt

ActionTranslator.java:214, unlike the other ActionSplitter delegate AttributeChecks.java:115, does not check for the potential null result of node.resolver.resolveToAttribute, indicating an invalid attribute reference.

The solution may be as simple as replicating the null handling of AttributeChecks in to ActionTranslator (and in the related method attr()).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions