-
Bug
-
Resolution: Fixed
-
P2
-
6u10
-
b123
-
x86
-
windows_7
-
Verified
FULL PRODUCT VERSION :
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7600]
A DESCRIPTION OF THE PROBLEM :
Compilation of java code fails with NPE at "com.sun.tools.javac.code.Symbol$ClassSymbol.isSubClass(Symbol.java:731)".
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Compile provided test case.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
[javac] java.lang.NullPointerException
[javac] at com.sun.tools.javac.code.Symbol$ClassSymbol.isSubClass(Symbol.java:731)
[javac] at com.sun.tools.javac.comp.Lower.accessClass(Lower.java:929)
[javac] at com.sun.tools.javac.comp.Lower.accessSymbol(Lower.java:797)
[javac] at com.sun.tools.javac.comp.Lower.access(Lower.java:1032)
[javac] at com.sun.tools.javac.comp.Lower.visitSelect(Lower.java:3118)
[javac] at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1522)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
[javac] at com.sun.tools.javac.comp.Lower.visitApply(Lower.java:2556)
[javac] at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1210)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
[javac] at com.sun.tools.javac.comp.Lower.visitTypeCast(Lower.java:2359)
[javac] at com.sun.tools.javac.tree.JCTree$JCTypeCast.accept(JCTree.java:1448)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
[javac] at com.sun.tools.javac.comp.Lower.visitTypeCast(Lower.java:2359)
[javac] at com.sun.tools.javac.tree.JCTree$JCTypeCast.accept(JCTree.java:1448)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1913)
[javac] at com.sun.tools.javac.comp.Lower.visitReturn(Lower.java:3053)
[javac] at com.sun.tools.javac.tree.JCTree$JCReturn.accept(JCTree.java:1138)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:56)
[javac] at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:146)
[javac] at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:3026)
[javac] at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:739)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
[javac] at com.sun.tools.javac.tree.TreeTranslator.visitTry(TreeTranslator.java:201)
[javac] at com.sun.tools.javac.tree.JCTree$JCTry.accept(JCTree.java:967)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:56)
[javac] at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:146)
[javac] at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:3026)
[javac] at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:739)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
[javac] at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:130)
[javac] at com.sun.tools.javac.comp.Lower.visitMethodDefInternal(Lower.java:2349)
[javac] at com.sun.tools.javac.comp.Lower.visitMethodDef(Lower.java:2268)
[javac] at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:639)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
[javac] at com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2013)
[javac] at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:575)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1921)
[javac] at com.sun.tools.javac.comp.Lower.translateTopLevelClass(Lower.java:3163)
[javac] at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1199)
[javac] at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1118)
[javac] at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:765)
[javac] at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:730)
[javac] at com.sun.tools.javac.main.Main.compile(Main.java:353)
[javac] at com.sun.tools.javac.main.Main.compile(Main.java:279)
[javac] at com.sun.tools.javac.main.Main.compile(Main.java:270)
[javac] at com.sun.tools.javac.Main.compile(Main.java:69)
[javac] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[javac] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[javac] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[javac] at java.lang.reflect.Method.invoke(Method.java:597)
[javac] at org.apache.tools.ant.taskdefs.compilers.Javac13.execute(Javac13.java:56)
[javac] at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:1065)
[javac] at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:882)
[javac] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
[javac] at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
[javac] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[javac] at java.lang.reflect.Method.invoke(Method.java:597)
[javac] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[javac] at org.apache.tools.ant.Task.perform(Task.java:348)
[javac] at org.apache.tools.ant.Target.execute(Target.java:357)
[javac] at org.apache.tools.ant.Target.performTasks(Target.java:385)
[javac] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
[javac] at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
[javac] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[javac] at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
[javac] at org.apache.tools.ant.Main.runBuild(Main.java:758)
[javac] at org.apache.tools.ant.Main.startAnt(Main.java:217)
[javac] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
[javac] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
public class JavaCastBug {
public static <T extends JavaCastBug & ISomeInterface> T cloneObject(T object) {
try {
return (T) object.clone();
} catch (CloneNotSupportedException e) {
throw new IllegalStateException(e);
}
}
private static interface ISomeInterface {
public Integer doSomething();
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Remove "& ISomeInterface" from "<T extends JavaCastBug & ISomeInterface>".
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7600]
A DESCRIPTION OF THE PROBLEM :
Compilation of java code fails with NPE at "com.sun.tools.javac.code.Symbol$ClassSymbol.isSubClass(Symbol.java:731)".
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Compile provided test case.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
[javac] java.lang.NullPointerException
[javac] at com.sun.tools.javac.code.Symbol$ClassSymbol.isSubClass(Symbol.java:731)
[javac] at com.sun.tools.javac.comp.Lower.accessClass(Lower.java:929)
[javac] at com.sun.tools.javac.comp.Lower.accessSymbol(Lower.java:797)
[javac] at com.sun.tools.javac.comp.Lower.access(Lower.java:1032)
[javac] at com.sun.tools.javac.comp.Lower.visitSelect(Lower.java:3118)
[javac] at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1522)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
[javac] at com.sun.tools.javac.comp.Lower.visitApply(Lower.java:2556)
[javac] at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1210)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
[javac] at com.sun.tools.javac.comp.Lower.visitTypeCast(Lower.java:2359)
[javac] at com.sun.tools.javac.tree.JCTree$JCTypeCast.accept(JCTree.java:1448)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
[javac] at com.sun.tools.javac.comp.Lower.visitTypeCast(Lower.java:2359)
[javac] at com.sun.tools.javac.tree.JCTree$JCTypeCast.accept(JCTree.java:1448)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1913)
[javac] at com.sun.tools.javac.comp.Lower.visitReturn(Lower.java:3053)
[javac] at com.sun.tools.javac.tree.JCTree$JCReturn.accept(JCTree.java:1138)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:56)
[javac] at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:146)
[javac] at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:3026)
[javac] at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:739)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
[javac] at com.sun.tools.javac.tree.TreeTranslator.visitTry(TreeTranslator.java:201)
[javac] at com.sun.tools.javac.tree.JCTree$JCTry.accept(JCTree.java:967)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:56)
[javac] at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:146)
[javac] at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:3026)
[javac] at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:739)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
[javac] at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:130)
[javac] at com.sun.tools.javac.comp.Lower.visitMethodDefInternal(Lower.java:2349)
[javac] at com.sun.tools.javac.comp.Lower.visitMethodDef(Lower.java:2268)
[javac] at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:639)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
[javac] at com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2013)
[javac] at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:575)
[javac] at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
[javac] at com.sun.tools.javac.comp.Lower.translate(Lower.java:1921)
[javac] at com.sun.tools.javac.comp.Lower.translateTopLevelClass(Lower.java:3163)
[javac] at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1199)
[javac] at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1118)
[javac] at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:765)
[javac] at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:730)
[javac] at com.sun.tools.javac.main.Main.compile(Main.java:353)
[javac] at com.sun.tools.javac.main.Main.compile(Main.java:279)
[javac] at com.sun.tools.javac.main.Main.compile(Main.java:270)
[javac] at com.sun.tools.javac.Main.compile(Main.java:69)
[javac] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[javac] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[javac] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[javac] at java.lang.reflect.Method.invoke(Method.java:597)
[javac] at org.apache.tools.ant.taskdefs.compilers.Javac13.execute(Javac13.java:56)
[javac] at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:1065)
[javac] at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:882)
[javac] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
[javac] at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
[javac] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[javac] at java.lang.reflect.Method.invoke(Method.java:597)
[javac] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[javac] at org.apache.tools.ant.Task.perform(Task.java:348)
[javac] at org.apache.tools.ant.Target.execute(Target.java:357)
[javac] at org.apache.tools.ant.Target.performTasks(Target.java:385)
[javac] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
[javac] at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
[javac] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[javac] at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
[javac] at org.apache.tools.ant.Main.runBuild(Main.java:758)
[javac] at org.apache.tools.ant.Main.startAnt(Main.java:217)
[javac] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
[javac] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
public class JavaCastBug {
public static <T extends JavaCastBug & ISomeInterface> T cloneObject(T object) {
try {
return (T) object.clone();
} catch (CloneNotSupportedException e) {
throw new IllegalStateException(e);
}
}
private static interface ISomeInterface {
public Integer doSomething();
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Remove "& ISomeInterface" from "<T extends JavaCastBug & ISomeInterface>".