-
Bug
-
Resolution: Cannot Reproduce
-
P3
-
None
-
8
Compiling the following program:
public class Tmp {
void test() {
new Object() {
Runnable r = ()->{};
};
class X {
Runnable r = ()->{};
}
}
}
Results in the following error on b105:
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.ClassCastException: com.sun.tools.javac.code.Symbol$ClassSymbol cannot be cast to com.sun.tools.javac.code.Symbol$MethodSymbol
at com.sun.tools.javac.comp.LambdaToMethod.visitLambda(LambdaToMethod.java:252)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1619)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:183)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:176)
at com.sun.tools.javac.tree.TreeTranslator.visitVarDef(TreeTranslator.java:153)
at com.sun.tools.javac.comp.LambdaToMethod.visitVarDef(LambdaToMethod.java:441)
at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:846)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:183)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:176)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitClassDef(TreeTranslator.java:134)
at com.sun.tools.javac.comp.LambdaToMethod.visitClassDef(LambdaToMethod.java:223)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:687)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:183)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:176)
at com.sun.tools.javac.tree.TreeTranslator.visitNewClass(TreeTranslator.java:283)
at com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1510)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:183)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:176)
at com.sun.tools.javac.tree.TreeTranslator.visitExec(TreeTranslator.java:245)
at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1290)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:183)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:176)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:162)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:903)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:183)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:176)
at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:145)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:772)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:183)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:176)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitClassDef(TreeTranslator.java:134)
at com.sun.tools.javac.comp.LambdaToMethod.visitClassDef(LambdaToMethod.java:223)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:687)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:183)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:176)
at com.sun.tools.javac.comp.LambdaToMethod.translateTopLevelClass(LambdaToMethod.java:203)
at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1465)
at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1350)
at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:900)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:859)
at com.sun.tools.javac.main.Main.compile(Main.java:523)
at com.sun.tools.javac.main.Main.compile(Main.java:381)
at com.sun.tools.javac.main.Main.compile(Main.java:370)
at com.sun.tools.javac.main.Main.compile(Main.java:361)
at com.sun.tools.javac.Main.compile(Main.java:64)
at com.sun.tools.javac.Main.main(Main.java:50)
However, the compilation succeeds using b106.
----------
Originally reported by Zhong Yu on lambda-dev:
http://mail.openjdk.java.net/pipermail/lambda-dev/2013-September/010927.html
public class Tmp {
void test() {
new Object() {
Runnable r = ()->{};
};
class X {
Runnable r = ()->{};
}
}
}
Results in the following error on b105:
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.ClassCastException: com.sun.tools.javac.code.Symbol$ClassSymbol cannot be cast to com.sun.tools.javac.code.Symbol$MethodSymbol
at com.sun.tools.javac.comp.LambdaToMethod.visitLambda(LambdaToMethod.java:252)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1619)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:183)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:176)
at com.sun.tools.javac.tree.TreeTranslator.visitVarDef(TreeTranslator.java:153)
at com.sun.tools.javac.comp.LambdaToMethod.visitVarDef(LambdaToMethod.java:441)
at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:846)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:183)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:176)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitClassDef(TreeTranslator.java:134)
at com.sun.tools.javac.comp.LambdaToMethod.visitClassDef(LambdaToMethod.java:223)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:687)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:183)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:176)
at com.sun.tools.javac.tree.TreeTranslator.visitNewClass(TreeTranslator.java:283)
at com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1510)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:183)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:176)
at com.sun.tools.javac.tree.TreeTranslator.visitExec(TreeTranslator.java:245)
at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1290)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:183)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:176)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:162)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:903)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:183)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:176)
at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:145)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:772)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:183)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:176)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at com.sun.tools.javac.tree.TreeTranslator.visitClassDef(TreeTranslator.java:134)
at com.sun.tools.javac.comp.LambdaToMethod.visitClassDef(LambdaToMethod.java:223)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:687)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:183)
at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:176)
at com.sun.tools.javac.comp.LambdaToMethod.translateTopLevelClass(LambdaToMethod.java:203)
at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1465)
at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1350)
at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:900)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:859)
at com.sun.tools.javac.main.Main.compile(Main.java:523)
at com.sun.tools.javac.main.Main.compile(Main.java:381)
at com.sun.tools.javac.main.Main.compile(Main.java:370)
at com.sun.tools.javac.main.Main.compile(Main.java:361)
at com.sun.tools.javac.Main.compile(Main.java:64)
at com.sun.tools.javac.Main.main(Main.java:50)
However, the compilation succeeds using b106.
----------
Originally reported by Zhong Yu on lambda-dev:
http://mail.openjdk.java.net/pipermail/lambda-dev/2013-September/010927.html
- relates to
-
JDK-8020715 Regression: compiling program with lambda crashes compiler
-
- Closed
-