Playing with new compiler 2: Crash
Ali Ebrahimi
ali.ebrahimi1781 at gmail.com
Wed May 25 00:33:55 PDT 2011
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