-
Bug
-
Resolution: Fixed
-
P3
-
8, 9
-
b132
-
x86
-
generic
-
Verified
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8163866 | 8-pool | Vicente Arturo Romero Zaldivar | P3 | Closed | Won't Fix |
FULL PRODUCT VERSION :
javac 1.8.0_45
ADDITIONAL OS VERSION INFORMATION :
Darwin 14.5.0 Darwin Kernel Version 14.5.0
A DESCRIPTION OF THE PROBLEM :
NPE
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
compile the code given below
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
compile successfully
ACTUAL -
fail because of NPE
ERROR MESSAGES/STACK TRACES THAT OCCUR :
java.lang.NullPointerException
at com.sun.tools.javac.code.Symbol$ClassSymbol.isSubClass(Symbol.java:1020)
at com.sun.tools.javac.comp.Lower.accessClass(Lower.java:1108)
at com.sun.tools.javac.comp.Lower.accessSymbol(Lower.java:983)
at com.sun.tools.javac.comp.Lower.access(Lower.java:1220)
at com.sun.tools.javac.comp.Lower.access(Lower.java:1253)
at com.sun.tools.javac.comp.Lower.visitAssignop(Lower.java:3218)
at com.sun.tools.javac.tree.JCTree$JCAssignOp.accept(JCTree.java:1716)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
at com.sun.tools.javac.tree.TreeTranslator.visitExec(TreeTranslator.java:245)
at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1296)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
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.comp.Lower.visitBlock(Lower.java:3561)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:145)
at com.sun.tools.javac.comp.Lower.visitMethodDefInternal(Lower.java:2828)
at com.sun.tools.javac.comp.Lower.visitMethodDef(Lower.java:2737)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:778)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
at com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2508)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
at com.sun.tools.javac.comp.Lower.visitNewClass(Lower.java:2915)
at com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1516)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2382)
at com.sun.tools.javac.comp.Lower.visitAssign(Lower.java:3203)
at com.sun.tools.javac.tree.JCTree$JCAssign.accept(JCTree.java:1686)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
at com.sun.tools.javac.tree.TreeTranslator.visitExec(TreeTranslator.java:245)
at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1296)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
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.comp.Lower.visitBlock(Lower.java:3561)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:145)
at com.sun.tools.javac.comp.Lower.visitMethodDefInternal(Lower.java:2828)
at com.sun.tools.javac.comp.Lower.visitMethodDef(Lower.java:2737)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:778)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
at com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2508)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2390)
at com.sun.tools.javac.comp.Lower.translateTopLevelClass(Lower.java:3932)
at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1512)
at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1356)
at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:901)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:860)
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:56)
at com.sun.tools.javac.Main.main(Main.java:42)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
package base;
public abstract class Base {
protected int i = 1;
}
package sub;
import base.Base;
public class Sub extends Base{
private Runnable r;
private int i = 4;
public void func(){
r = new Runnable(){
public void run(){
Sub.super.i+=10;
}
};
r.run();
}
}
---------- END SOURCE ----------
javac 1.8.0_45
ADDITIONAL OS VERSION INFORMATION :
Darwin 14.5.0 Darwin Kernel Version 14.5.0
A DESCRIPTION OF THE PROBLEM :
NPE
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
compile the code given below
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
compile successfully
ACTUAL -
fail because of NPE
ERROR MESSAGES/STACK TRACES THAT OCCUR :
java.lang.NullPointerException
at com.sun.tools.javac.code.Symbol$ClassSymbol.isSubClass(Symbol.java:1020)
at com.sun.tools.javac.comp.Lower.accessClass(Lower.java:1108)
at com.sun.tools.javac.comp.Lower.accessSymbol(Lower.java:983)
at com.sun.tools.javac.comp.Lower.access(Lower.java:1220)
at com.sun.tools.javac.comp.Lower.access(Lower.java:1253)
at com.sun.tools.javac.comp.Lower.visitAssignop(Lower.java:3218)
at com.sun.tools.javac.tree.JCTree$JCAssignOp.accept(JCTree.java:1716)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
at com.sun.tools.javac.tree.TreeTranslator.visitExec(TreeTranslator.java:245)
at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1296)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
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.comp.Lower.visitBlock(Lower.java:3561)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:145)
at com.sun.tools.javac.comp.Lower.visitMethodDefInternal(Lower.java:2828)
at com.sun.tools.javac.comp.Lower.visitMethodDef(Lower.java:2737)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:778)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
at com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2508)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
at com.sun.tools.javac.comp.Lower.visitNewClass(Lower.java:2915)
at com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1516)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2382)
at com.sun.tools.javac.comp.Lower.visitAssign(Lower.java:3203)
at com.sun.tools.javac.tree.JCTree$JCAssign.accept(JCTree.java:1686)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
at com.sun.tools.javac.tree.TreeTranslator.visitExec(TreeTranslator.java:245)
at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1296)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
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.comp.Lower.visitBlock(Lower.java:3561)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:145)
at com.sun.tools.javac.comp.Lower.visitMethodDefInternal(Lower.java:2828)
at com.sun.tools.javac.comp.Lower.visitMethodDef(Lower.java:2737)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:778)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
at com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2508)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:2390)
at com.sun.tools.javac.comp.Lower.translateTopLevelClass(Lower.java:3932)
at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1512)
at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1356)
at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:901)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:860)
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:56)
at com.sun.tools.javac.Main.main(Main.java:42)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
package base;
public abstract class Base {
protected int i = 1;
}
package sub;
import base.Base;
public class Sub extends Base{
private Runnable r;
private int i = 4;
public void func(){
r = new Runnable(){
public void run(){
Sub.super.i+=10;
}
};
r.run();
}
}
---------- END SOURCE ----------
- backported by
-
JDK-8163866 javac is generating let expressions unnecessarily
-
- Closed
-
- relates to
-
JDK-7167125 Two variables after the same operation in a inner class return different results
-
- Closed
-