Playing with new compiler 2: Crash
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Wed Jun 1 09:19:46 PDT 2011
Thanks for the test case, I will take a look.
Maurizio
On 25/05/11 08:33, Ali Ebrahimi wrote:
> Hi ,
>
> I found following crash in compiler.
>
> public class ARM {
> public static<R, T extends Closeable,throws E>
> R using(T s, Block1<R, T, E> block) throws E {
> try {
> return block.call(s);
> } finally {
> try {
> if(s != null)
> s.close();
> } catch (IOException ex) {
> }
> }
> }
>
>
> // *******
> public static<T extends Closeable,throws E>
> void using(T s, Block0<Void, E> block) throws E {
> try {
> block.call();
> } finally {
> try {
> if(s != null)
> s.close();
> } catch (IOException ex) {
> }
> }
> }
>
>
> public static<R extends Closeable,throws E>
> R using(BlockX<R,Void, E> block) throws E {
> R rs = null;
> try {
> rs = block.call();
> return rs;
> } finally {
> try {
> if(rs != null)
> rs.close();
> } catch (IOException ex) {
> }
> }
> }
>
>
> public static<R extends Closeable,throws E>
> R using(Block0<R, E> block) throws E {
> R rs = null;
> try {
> rs = block.call();
> return rs;
> } finally {
> try {
> if(rs != null)
> rs.close();
> } catch (IOException ex) {
> }
> }
> }
>
> public static void main(String[] args) {
> InputStream is = null;
>
> try{
> using(is, #{in ->
> in.read();
> }
> );
> }catch (IOException e) {
>
> }
>
> using(#{
> is
> }
> );
> }
> }
>
> result:
>
> Information:An exception has occurred in the compiler (1.7.0-internal).
> Please file a bug at the Java Developer Connection (
> http://java.sun.com/webapps/bugreport) after checking the Bug Parade for
> duplicates. Include your program and the following diagnostic in your
> report. Thank you.
> Information:java.lang.NullPointerException
> Information: at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:480)
> Information: at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:498)
> Information: at com.sun.tools.javac.comp.Attr.attribType(Attr.java:526)
> Information: at com.sun.tools.javac.comp.Attr.attribType(Attr.java:519)
> Information: at
> com.sun.tools.javac.comp.MemberEnter.visitVarDef(MemberEnter.java:663)
> Information: at
> com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:738)
> Information: at
> com.sun.tools.javac.comp.MemberEnter.memberEnter(MemberEnter.java:399)
> Information: at com.sun.tools.javac.comp.Attr.visitVarDef(Attr.java:906)
> Information: at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:533)
> Information: at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:549)
> Information: at
> com.sun.tools.javac.comp.Attr.attribLambda(Attr.java:2272)
> Information: at
> com.sun.tools.javac.comp.Attr$2.deferredAttr(Attr.java:2213)
> Information: at
> com.sun.tools.javac.comp.Attr$2.deferredAttr(Attr.java:2210)
> Information: at
> com.sun.tools.javac.comp.Attr$SAMDeferredAttribution.complete(Attr.java:2787)
> Information: at
> com.sun.tools.javac.code.Type$ForAll.complete(Type.java:1179)
> Information: at
> com.sun.tools.javac.comp.Infer.instantiateArg(Infer.java:687)
> Information: at
> com.sun.tools.javac.comp.Resolve.checkRawArgumentsAcceptable(Resolve.java:552)
> Information: at
> com.sun.tools.javac.comp.Infer.instantiateMethod(Infer.java:431)
> Information: at
> com.sun.tools.javac.comp.Resolve.rawInstantiate(Resolve.java:396)
> Information: at
> com.sun.tools.javac.comp.Resolve.selectBest(Resolve.java:819)
> Information: at
> com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1063)
> Information: at
> com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1024)
> Information: at
> com.sun.tools.javac.comp.Resolve.findFun(Resolve.java:1157)
> Information: at
> com.sun.tools.javac.comp.Resolve.resolveMethod(Resolve.java:1581)
> Information: at com.sun.tools.javac.comp.Attr.visitIdent(Attr.java:2548)
> Information: at
> com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:1825)
> Information: at com.sun.tools.javac.comp.Attr.visitApply(Attr.java:1592)
> Information: at
> com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1337)
> Information: at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:513)
> Information: at com.sun.tools.javac.comp.Attr.visitExec(Attr.java:1348)
> Information: at
> com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1180)
> Information: at com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:971)
> Information: at
> com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:794)
> Information: at com.sun.tools.javac.comp.Attr.visitTry(Attr.java:1171)
> Information: at
> com.sun.tools.javac.tree.JCTree$JCTry.accept(JCTree.java:1057)
> Information: at
> com.sun.tools.javac.comp.Attr.visitMethodDef(Attr.java:884)
> Information: at
> com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:678)
> Information: at
> com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:3800)
> Information: at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:3722)
> Information: at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:3658)
> Information: at com.sun.tools.javac.comp.Attr.attrib(Attr.java:3632)
> Information: at
> com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1189)
> Information: at
> com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:877)
> Information: at
> com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:836)
> Information: at com.sun.tools.javac.main.Main.compile(Main.java:417)
> Information: at com.sun.tools.javac.main.Main.compile(Main.java:331)
> Information: at com.sun.tools.javac.main.Main.compile(Main.java:322)
> Information: at com.sun.tools.javac.Main.compile(Main.java:76)
> Information: at com.sun.tools.javac.Main.main(Main.java:61)
> Information: at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
> Information: at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> Information: at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> Information: at java.lang.reflect.Method.invoke(Method.java:598)
> Information: at
> com.intellij.rt.compiler.JavacRunner.main(JavacRunner.java:71)
> Information:Compilation completed with 1 error and 0 warnings
> Information:1 error
> Information:0 warnings
> Error:Compiler internal error. Process terminated with exit code 4
>
> If i comment second "using" method (*******), the crash goes away.
>
> Best Regards.
> Ali Ebrahimi
>
More information about the lambda-dev
mailing list