[ 
https://issues.apache.org/jira/browse/GROOVY-8005?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Daniel.Sun closed GROOVY-8005.
------------------------------
    Resolution: Fixed

> [parrot] NPE when using try-with-resources with a missing semi-colon
> --------------------------------------------------------------------
>
>                 Key: GROOVY-8005
>                 URL: https://issues.apache.org/jira/browse/GROOVY-8005
>             Project: Groovy
>          Issue Type: Bug
>            Reporter: Guillaume Laforge
>            Assignee: Daniel.Sun
>
> When testing the try-with-resouces construct in the Groovy console, I did a 
> mistake, and forgot the semi-colon in between resources:
> {code}
> def input = new File('./NOTICE')
> try (
>     FileInputStream fin = new FileInputStream(input)
>     GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(output))
> ) {
>     byte[] buffer = new byte[4096]
>     int nread = 0
>     while ((nread = fin.read(buffer)) != -1) {
>         out.write(buffer, 0, nread)
>     }
> }
> {code}
> And I got the following NPE:
> {code}
> java.lang.NullPointerException
>       at 
> org.apache.groovy.parser.antlr4.AstBuilder.configureAST(AstBuilder.java:3775)
>       at 
> org.apache.groovy.parser.antlr4.AstBuilder.visitCommandExpression(AstBuilder.java:1484)
>       at 
> org.apache.groovy.parser.antlr4.AstBuilder.visitCommandExprAlt(AstBuilder.java:1449)
>       at 
> org.apache.groovy.parser.antlr4.AstBuilder.visitCommandExprAlt(AstBuilder.java:67)
>       at 
> org.apache.groovy.parser.antlr4.GroovyParser$CommandExprAltContext.accept(GroovyParser.java:7491)
>       at 
> org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visit(AbstractParseTreeVisitor.java:44)
>       at 
> org.apache.groovy.parser.antlr4.AstBuilder.visit(AstBuilder.java:3408)
>       at 
> org.apache.groovy.parser.antlr4.AstBuilder.visitVariableInitializer(AstBuilder.java:1408)
>       at 
> org.apache.groovy.parser.antlr4.AstBuilder.visitVariableDeclarator(AstBuilder.java:1392)
>       at 
> org.apache.groovy.parser.antlr4.AstBuilder.lambda$visitVariableDeclarators$17(AstBuilder.java:1365)
>       at 
> java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
>       at 
> java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
>       at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
>       at 
> java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
>       at 
> java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
>       at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
>       at 
> java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
>       at 
> org.apache.groovy.parser.antlr4.AstBuilder.visitVariableDeclarators(AstBuilder.java:1368)
>       at 
> org.apache.groovy.parser.antlr4.AstBuilder.visitVariableDeclaration(AstBuilder.java:1257)
>       at 
> org.apache.groovy.parser.antlr4.AstBuilder.visitLocalVariableDeclaration(AstBuilder.java:1210)
>       at 
> org.apache.groovy.parser.antlr4.AstBuilder.visitResource(AstBuilder.java:447)
>       at 
> java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
>       at 
> java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
>       at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
>       at 
> java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
>       at 
> java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
>       at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
>       at 
> java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
>       at 
> org.apache.groovy.parser.antlr4.AstBuilder.visitResourceList(AstBuilder.java:442)
>       at 
> org.apache.groovy.parser.antlr4.AstBuilder.visitResources(AstBuilder.java:437)
>       at 
> org.apache.groovy.parser.antlr4.AstBuilder.visitTryCatchStatement(AstBuilder.java:417)
>       at 
> org.apache.groovy.parser.antlr4.AstBuilder.visitTryCatchStmtAlt(AstBuilder.java:407)
>       at 
> org.apache.groovy.parser.antlr4.AstBuilder.visitTryCatchStmtAlt(AstBuilder.java:67)
>       at 
> org.apache.groovy.parser.antlr4.GroovyParser$TryCatchStmtAltContext.accept(GroovyParser.java:6039)
>       at 
> org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visit(AbstractParseTreeVisitor.java:44)
>       at 
> org.apache.groovy.parser.antlr4.AstBuilder.visit(AstBuilder.java:3408)
>       at 
> java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
>       at 
> java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
>       at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
>       at 
> java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
>       at 
> java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
>       at 
> java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
>       at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
>       at 
> java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
>       at 
> org.apache.groovy.parser.antlr4.AstBuilder.visitCompilationUnit(AstBuilder.java:141)
>       at 
> org.apache.groovy.parser.antlr4.AstBuilder.visitCompilationUnit(AstBuilder.java:67)
>       at 
> org.apache.groovy.parser.antlr4.GroovyParser$CompilationUnitContext.accept(GroovyParser.java:290)
>       at 
> org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visit(AbstractParseTreeVisitor.java:44)
>       at 
> org.apache.groovy.parser.antlr4.AstBuilder.visit(AstBuilder.java:3408)
>       at 
> org.apache.groovy.parser.antlr4.AstBuilder.buildAST(AstBuilder.java:116)
>       at 
> org.apache.groovy.parser.antlr4.Antlr4ParserPlugin.buildAST(Antlr4ParserPlugin.java:43)
>       at org.codehaus.groovy.control.SourceUnit.convert(SourceUnit.java:269)
>       at 
> org.codehaus.groovy.control.CompilationUnit$15.call(CompilationUnit.java:690)
>       at 
> org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:948)
>       at 
> org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:615)
>       at 
> org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:591)
>       at 
> org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:568)
>       at 
> groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:299)
>       at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:269)
>       at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
>       at groovy.lang.GroovyShell.run(GroovyShell.java:517)
>       at groovy.lang.GroovyShell.run(GroovyShell.java:497)
>       at groovy.lang.GroovyShell.run(GroovyShell.java:170)
>       at groovy.lang.GroovyShell$run$1.call(Unknown Source)
>       at 
> groovy.ui.Console$_runScriptImpl_closure17.doCall(Console.groovy:1045)
>       at groovy.ui.Console$_runScriptImpl_closure17.doCall(Console.groovy)
>       at sun.reflect.GeneratedMethodAccessor226.invoke(Unknown Source)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:498)
>       at 
> org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
>       at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
>       at 
> org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294)
>       at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:994)
>       at groovy.lang.Closure.call(Closure.java:415)
>       at groovy.lang.Closure.call(Closure.java:409)
>       at groovy.lang.Closure.run(Closure.java:496)
>       at java.lang.Thread.run(Thread.java:745)
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to