Breaking Changeset: 4802647: Throw required NPEs from removeAll()/retainAll()
Ali Ebrahimi
ali.ebrahimi1781 at gmail.com
Tue Jun 4 09:14:41 UTC 2013
when building openjfx8 with jdk8b92 i encountered this error :
Total time: 5.313 secs
:buildSrc:clean
:buildSrc:generateGrammarSource
error(10): internal error: Can't get property indirectDelegates using
method ge
t/isIndirectDelegates from org.antlr.tool.Grammar instance :
java.lang.NullPointerException
java.util.Objects.requireNonNull(Objects.java:203)
java.util.ArrayList.removeAll(ArrayList.java:674)
org.antlr.tool.CompositeGrammar.getIndirectDelegates(CompositeGrammar.java:222)
org.antlr.tool.Grammar.getIndirectDelegates(Grammar.java:2620)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.jav
a:43)
java.lang.reflect.Method.invoke(Method.java:491)
org.antlr.stringtemplate.language.ASTExpr.invokeMethod(ASTExpr.java:563)
org.antlr.stringtemplate.language.ASTExpr.rawGetObjectProperty(ASTExpr.java:514)
org.antlr.stringtemplate.language.ASTExpr.getObjectProperty(ASTExpr.java:416)
org.antlr.stringtemplate.language.ActionEvaluator.attribute(ActionEvaluator.java
:351)
org.antlr.stringtemplate.language.ActionEvaluator.expr(ActionEvaluator.java:136)
org.antlr.stringtemplate.language.ActionEvaluator.templateApplication(ActionEval
uator.java:216)
org.antlr.stringtemplate.language.ActionEvaluator.expr(ActionEvaluator.java:126)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:84
)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:722)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:659)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86
)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:722)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:659)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86
)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:722)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:659)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86
)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.codegen.CodeGenerator.write(CodeGenerator.java:1278)
org.antlr.codegen.Target.genRecognizerFile(Target.java:94)
org.antlr.codegen.CodeGenerator.genRecognizer(CodeGenerator.java:463)
org.antlr.Tool.generateRecognizer(Tool.java:607)
org.antlr.Tool.process(Tool.java:429)
org.antlr.Tool.main(Tool.java:91)
:buildSrc:generateGrammarSource FAILED
the cause of this error is this new changeset:
4802647: Throw required NPEs from removeAll()/retainAll()
current code assume that collection.removeAll(null) doesn't do anything.
but with this changeset produces NullPointerException that doesn't handled.
following is part of source code org/antlr/tool/CompositeGrammar.java
(see********
)
217 /** Get delegates below direct delegates of g */
218 public List<Grammar> getIndirectDelegates(Grammar g) {
219 List<Grammar> direct = getDirectDelegates(g);
220 List<Grammar> delegates = getDelegates(g); 221
delegates.removeAll(direct);********
222 return delegates;
223 }
224
225 /** Return list of delegate grammars from root down to g.
226 * Order is root, ..., g.parent. (g not included).
227 */
228 public List<Grammar> getDelegators(Grammar g) {
229 if ( g==delegateGrammarTreeRoot.grammar ) {
230 return null;********** 231 }
232 List<Grammar> grammars = new ArrayList();
233 CompositeGrammarTree t = delegateGrammarTreeRoot.findNode(g);
234 // walk backwards to root, collecting grammars
235 CompositeGrammarTree p = t.parent;
236 while ( p!=null ) {
237 grammars.add(0, p.grammar); // add to head so in order later
238 p = p.parent;
239 }
240 return grammars; 241 }
So this changeset at least breaks 'antlr' third-party library and any apps
depends on.
More information about the core-libs-dev
mailing list