-
Notifications
You must be signed in to change notification settings - Fork 12
Open
Description
When adding an element to a collection inside a method that creates a rule, a NullPointerException occurs during "createParser".
Example:
package test;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.parboiled.Parboiled;
import org.parboiled.Rule;
import org.parboiled.support.Var;
import com.github.parboiled1.grappa.parsers.EventBusParser;
public class NpeOnMap {
public static void main(String[] args) {
TestParser parser = Parboiled.createParser(TestParser.class);
}
public static class TestParser extends EventBusParser<String> {
Rule relativity() {
final Map<String, String> map = new LinkedHashMap<>();
// map.put("x", "y"); // NPE
final List<String> list = new LinkedList<>();
// list.add("x"); // NPE
Var<String> m = new Var<>();
return sequence("a", m.set(match()));
// return sequence("a", "b"); // No NPE in any case
}
}
}The NPE only occurs when using "match()" inside the returned rule. If no "match()" is used, then any other code works fine.
StackTrace:
Exception in thread "main" java.lang.RuntimeException: Error creating extended parser class: null
at org.parboiled.Parboiled.createParser(Parboiled.java:75)
at test.NpeOnMap.main(NpeOnMap.java:17)
Caused by: java.lang.NullPointerException
at org.parboiled.transform.process.ImplicitActionsConverter.getDependents(ImplicitActionsConverter.java:180)
at org.parboiled.transform.process.ImplicitActionsConverter.isImplicitAction(ImplicitActionsConverter.java:110)
at org.parboiled.transform.process.ImplicitActionsConverter.walkNode(ImplicitActionsConverter.java:83)
at org.parboiled.transform.process.ImplicitActionsConverter.walkNode(ImplicitActionsConverter.java:92)
at org.parboiled.transform.process.ImplicitActionsConverter.walkNode(ImplicitActionsConverter.java:92)
at org.parboiled.transform.process.ImplicitActionsConverter.process(ImplicitActionsConverter.java:73)
at org.parboiled.transform.ParserTransformer.runMethodTransformers(ParserTransformer.java:122)
at org.parboiled.transform.ParserTransformer.extendParserClass(ParserTransformer.java:98)
at org.parboiled.transform.ParserTransformer.transformParser(ParserTransformer.java:66)
at org.parboiled.Parboiled.createParser(Parboiled.java:67)
... 1 more
Metadata
Metadata
Assignees
Labels
No labels