lambda-8-b45: bug report
v.a.ammodytes at googlemail.com
v.a.ammodytes at googlemail.com
Sun Jul 1 16:26:48 PDT 2012
Hi,
I tried out a few things with lambda-8-b45, using lambda-8-b45-windows-i586-
24_jun_2012.zip. The attached file "CardGameB.java" compiled without errors, while the
attached file "CardGameC.java" produced the following output during compilation:
An exception has occurred in the compiler (1.8.0-ea). 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.
java.lang.AssertionError
at com.sun.tools.javac.util.Assert.error(Assert.java:126)
at com.sun.tools.javac.util.Assert.check(Assert.java:45)
at com.sun.tools.javac.comp.Lower.access(Lower.java:1061)
at com.sun.tools.javac.comp.Lower.visitIdent(Lower.java:3174)
at com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:1918)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2212)
at com.sun.tools.javac.comp.Lower.visitBinary(Lower.java:3169)
at com.sun.tools.javac.tree.JCTree$JCBinary.accept(JCTree.java:1698)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2212)
at com.sun.tools.javac.comp.Lower.visitReturn(Lower.java:3385)
at com.sun.tools.javac.tree.JCTree$JCReturn.accept(JCTree.java:1312)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:160)
at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:3358)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:837)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:144)
at com.sun.tools.javac.comp.Lower.visitMethodDefInternal(Lower.java:2667)
at com.sun.tools.javac.comp.Lower.visitMethodDef(Lower.java:2586)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:721)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
at com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2331)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:643)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
at com.sun.tools.javac.comp.Lower.visitNewClass(Lower.java:2726)
at com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1444)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2212)
at com.sun.tools.javac.comp.Lower.visitReturn(Lower.java:3385)
at com.sun.tools.javac.tree.JCTree$JCReturn.accept(JCTree.java:1312)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:160)
at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:3358)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:837)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:144)
at com.sun.tools.javac.comp.Lower.visitMethodDefInternal(Lower.java:2667)
at com.sun.tools.javac.comp.Lower.visitMethodDef(Lower.java:2586)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:721)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
at com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2331)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:643)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
at com.sun.tools.javac.comp.Lower.visitNewClass(Lower.java:2726)
at com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1444)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2212)
at com.sun.tools.javac.comp.Lower.visitVarDef(Lower.java:3344)
at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:781)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:160)
at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:3358)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:837)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:144)
at com.sun.tools.javac.comp.Lower.visitMethodDefInternal(Lower.java:2667)
at com.sun.tools.javac.comp.Lower.visitMethodDef(Lower.java:2586)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:721)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
at com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2331)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:643)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
at com.sun.tools.javac.comp.Lower.visitNewClass(Lower.java:2726)
at com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1444)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2212)
at com.sun.tools.javac.comp.Lower.visitVarDef(Lower.java:3344)
at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:781)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:160)
at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:3358)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:837)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:144)
at com.sun.tools.javac.comp.Lower.visitMethodDefInternal(Lower.java:2667)
at com.sun.tools.javac.comp.Lower.visitMethodDef(Lower.java:2586)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:721)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
at com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2331)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:643)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2220)
at com.sun.tools.javac.comp.Lower.translateTopLevelClass(Lower.java:3709)
at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1418)
at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1295)
at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:892)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:851)
at com.sun.tools.javac.main.Main.compile(Main.java:441)
at com.sun.tools.javac.main.Main.compile(Main.java:358)
at com.sun.tools.javac.main.Main.compile(Main.java:347)
at com.sun.tools.javac.main.Main.compile(Main.java:338)
at com.sun.tools.javac.Main.compile(Main.java:76)
at com.sun.tools.javac.Main.main(Main.java:61)
Process terminated with Exit Code 4
The only notable difference is that in the first program an Iterable is created and used
immediately in a forEach call, while in the second program the Iterable is stored in a variable
before applying forEach:
12a12
> Iterable<Integer> zeroToN =
20,22c21,22
< }.forEach( c -> {
< d.addCard(() -> c);
< });
---
> };
> zeroToN.forEach( c -> { d.addCard(() -> c); });
Inlining the lambda containing this part of the code makes the bug disappear, as in the
attached file CardGameD.java.
Don't know if this is a known bug. I'm not sure if the message about filing the bug on
http://java.sun.com/webapps/bugreport applies for lambda-dev builds.
Regards
Arne Siegel
-------------- next part --------------
The following section of this message contains a file attachment
prepared for transmission using the Internet MIME message format.
If you are using Pegasus Mail, or any other MIME-compliant system,
you should be able to save it or view it from within your mailer.
If you cannot, please ask your system administrator for assistance.
---- File information -----------
File: CardGameB.java
Date: 2 Jul 2012, 0:36
Size: 1978 bytes.
Type: Unknown
-------------- next part --------------
The following section of this message contains a file attachment
prepared for transmission using the Internet MIME message format.
If you are using Pegasus Mail, or any other MIME-compliant system,
you should be able to save it or view it from within your mailer.
If you cannot, please ask your system administrator for assistance.
---- File information -----------
File: CardGameC.java
Date: 2 Jul 2012, 0:36
Size: 2047 bytes.
Type: Unknown
-------------- next part --------------
The following section of this message contains a file attachment
prepared for transmission using the Internet MIME message format.
If you are using Pegasus Mail, or any other MIME-compliant system,
you should be able to save it or view it from within your mailer.
If you cannot, please ask your system administrator for assistance.
---- File information -----------
File: CardGameD.java
Date: 2 Jul 2012, 1:06
Size: 1938 bytes.
Type: Unknown
More information about the lambda-dev
mailing list