-
Bug
-
Resolution: Duplicate
-
P4
-
None
-
8u102
-
generic
-
generic
FULL PRODUCT VERSION :
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Darwin 15.6.0 Darwin Kernel Version 15.6.0: Thu Jun 23 18:25:34 PDT 2016; root:xnu-3248.60.10~1/RELEASE_X86_64 x86_64
A DESCRIPTION OF THE PROBLEM :
If a raw type is used with a lambda, javac throws an assertion.
The same code compiles with the Eclipse compiler.
It is similar toJDK-8074381, but that was resolved in b56
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Compile supplied source code using javac
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Succesful compilation or a warning.
ACTUAL -
Assertion from javac
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Information:Using javac 1.8.0_102 to compile java sources
Information:java: An exception has occurred in the compiler (1.8.0_102). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
Information:java: at com.sun.tools.javac.util.Assert.check(Assert.java:45)
Information:java: at com.sun.tools.javac.code.Types.functionalInterfaceBridges(Types.java:659)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor$TranslationContext.<init>(LambdaToMethod.java:1693)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor$LambdaTranslationContext.<init>(LambdaToMethod.java:1776)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.analyzeLambda(LambdaToMethod.java:1276)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.visitLambda(LambdaToMethod.java:1261)
Information:java: at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1624)
Information:java: at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
Information:java: at com.sun.tools.javac.tree.TreeTranslator.visitVarDef(TreeTranslator.java:153)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.visitVarDef(LambdaToMethod.java:1442)
Information:java: at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:852)
Information:2016-08-12 16:54 - Compilation completed with 2 errors and 0 warnings in 760ms
Information:java: at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
Information:java: at com.sun.tools.javac.tree.TreeTranslator.visitClassDef(TreeTranslator.java:134)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.visitClassDef(LambdaToMethod.java:1209)
Information:java: at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.analyzeAndPreprocessClass(LambdaToMethod.java:1160)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.access$300(LambdaToMethod.java:1117)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod.visitClassDef(LambdaToMethod.java:232)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:197)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:190)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod.translateTopLevelClass(LambdaToMethod.java:217)
Information:java: at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1493)
Information:java: at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1356)
Information:java: at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:901)
Information:java: at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:860)
Information:java: at com.sun.tools.javac.main.Main.compile(Main.java:523)
Information:java: at com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:129)
Information:java: at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:138)
Information:java: at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:166)
Information:java: at org.jetbrains.jps.incremental.java.JavaBuilder.compileJava(JavaBuilder.java:423)
Information:java: at org.jetbrains.jps.incremental.java.JavaBuilder.compile(JavaBuilder.java:290)
Information:java: at org.jetbrains.jps.incremental.java.JavaBuilder.doBuild(JavaBuilder.java:197)
Information:java: at org.jetbrains.jps.incremental.java.JavaBuilder.build(JavaBuilder.java:168)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1237)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:911)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:983)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:870)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.access$800(IncProjectBuilder.java:81)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder$BuildParallelizer$2.run(IncProjectBuilder.java:840)
Information:java: at com.intellij.util.concurrency.BoundedTaskExecutor.runFirstTaskThenPollAndRunRest(BoundedTaskExecutor.java:178)
Information:java: at com.intellij.util.concurrency.BoundedTaskExecutor.access$000(BoundedTaskExecutor.java:40)
Information:java: at com.intellij.util.concurrency.BoundedTaskExecutor$2.run(BoundedTaskExecutor.java:197)
Information:java: at org.jetbrains.jps.service.impl.SharedThreadPoolImpl$1.run(SharedThreadPoolImpl.java:44)
Information:java: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
Information:java: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
Information:java: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
Information:java: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
Information:java: at java.lang.Thread.run(Thread.java:745)
Information:java: Errors occurred while compiling module 'radish-core'
Error:java: java.lang.AssertionError
Error:java: at com.sun.tools.javac.util.Assert.error(Assert.java:126)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.util.function.Function;
public class LambdaBug {
public interface Foo<L> extends Function<Number, String> {
String apply(Number p);
}
private static final Foo<Object> HELLO = (p) -> "Hello";
private static final Foo INNER = new Foo<Object>() {
@Override
public String apply(final Number p) {
return "Inner class";
}
};
private static final Foo GOOD_BYE = (p) -> "This will crash javac 1.8.0_102";
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Do not use a Raw type, specify e.g. <Object>
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Darwin 15.6.0 Darwin Kernel Version 15.6.0: Thu Jun 23 18:25:34 PDT 2016; root:xnu-3248.60.10~1/RELEASE_X86_64 x86_64
A DESCRIPTION OF THE PROBLEM :
If a raw type is used with a lambda, javac throws an assertion.
The same code compiles with the Eclipse compiler.
It is similar to
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Compile supplied source code using javac
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Succesful compilation or a warning.
ACTUAL -
Assertion from javac
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Information:Using javac 1.8.0_102 to compile java sources
Information:java: An exception has occurred in the compiler (1.8.0_102). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
Information:java: at com.sun.tools.javac.util.Assert.check(Assert.java:45)
Information:java: at com.sun.tools.javac.code.Types.functionalInterfaceBridges(Types.java:659)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor$TranslationContext.<init>(LambdaToMethod.java:1693)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor$LambdaTranslationContext.<init>(LambdaToMethod.java:1776)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.analyzeLambda(LambdaToMethod.java:1276)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.visitLambda(LambdaToMethod.java:1261)
Information:java: at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1624)
Information:java: at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
Information:java: at com.sun.tools.javac.tree.TreeTranslator.visitVarDef(TreeTranslator.java:153)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.visitVarDef(LambdaToMethod.java:1442)
Information:java: at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:852)
Information:2016-08-12 16:54 - Compilation completed with 2 errors and 0 warnings in 760ms
Information:java: at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
Information:java: at com.sun.tools.javac.tree.TreeTranslator.visitClassDef(TreeTranslator.java:134)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.visitClassDef(LambdaToMethod.java:1209)
Information:java: at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.analyzeAndPreprocessClass(LambdaToMethod.java:1160)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod$LambdaAnalyzerPreprocessor.access$300(LambdaToMethod.java:1117)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod.visitClassDef(LambdaToMethod.java:232)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:197)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod.translate(LambdaToMethod.java:190)
Information:java: at com.sun.tools.javac.comp.LambdaToMethod.translateTopLevelClass(LambdaToMethod.java:217)
Information:java: at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1493)
Information:java: at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1356)
Information:java: at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:901)
Information:java: at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:860)
Information:java: at com.sun.tools.javac.main.Main.compile(Main.java:523)
Information:java: at com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:129)
Information:java: at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:138)
Information:java: at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:166)
Information:java: at org.jetbrains.jps.incremental.java.JavaBuilder.compileJava(JavaBuilder.java:423)
Information:java: at org.jetbrains.jps.incremental.java.JavaBuilder.compile(JavaBuilder.java:290)
Information:java: at org.jetbrains.jps.incremental.java.JavaBuilder.doBuild(JavaBuilder.java:197)
Information:java: at org.jetbrains.jps.incremental.java.JavaBuilder.build(JavaBuilder.java:168)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1237)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:911)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:983)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:870)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder.access$800(IncProjectBuilder.java:81)
Information:java: at org.jetbrains.jps.incremental.IncProjectBuilder$BuildParallelizer$2.run(IncProjectBuilder.java:840)
Information:java: at com.intellij.util.concurrency.BoundedTaskExecutor.runFirstTaskThenPollAndRunRest(BoundedTaskExecutor.java:178)
Information:java: at com.intellij.util.concurrency.BoundedTaskExecutor.access$000(BoundedTaskExecutor.java:40)
Information:java: at com.intellij.util.concurrency.BoundedTaskExecutor$2.run(BoundedTaskExecutor.java:197)
Information:java: at org.jetbrains.jps.service.impl.SharedThreadPoolImpl$1.run(SharedThreadPoolImpl.java:44)
Information:java: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
Information:java: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
Information:java: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
Information:java: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
Information:java: at java.lang.Thread.run(Thread.java:745)
Information:java: Errors occurred while compiling module 'radish-core'
Error:java: java.lang.AssertionError
Error:java: at com.sun.tools.javac.util.Assert.error(Assert.java:126)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.util.function.Function;
public class LambdaBug {
public interface Foo<L> extends Function<Number, String> {
String apply(Number p);
}
private static final Foo<Object> HELLO = (p) -> "Hello";
private static final Foo INNER = new Foo<Object>() {
@Override
public String apply(final Number p) {
return "Inner class";
}
};
private static final Foo GOOD_BYE = (p) -> "This will crash javac 1.8.0_102";
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Do not use a Raw type, specify e.g. <Object>
- duplicates
-
JDK-8074381 java.lang.AssertionError during compiling
-
- Closed
-