-
Bug
-
Resolution: Fixed
-
P4
-
8
-
b103
-
x86_64
-
windows_7
-
Verified
FULL PRODUCT VERSION :
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7601]
A DESCRIPTION OF THE PROBLEM :
I get the following error when compiling my code (see below).
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Compile the code below.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
An exception has occurred in the compiler (1.8.0_60)...
java.lang.AssertionError: annotation tree hasn't been attributed yet: @NonNull()
at com.sun.tools.javac.util.Assert.error(Assert.java:133)
at com.sun.tools.javac.util.Assert.checkNonNull(Assert.java:118)
at com.sun.tools.javac.comp.Check.validateTypeAnnotation(Check.java:2745)
at com.sun.tools.javac.comp.Attr$TypeAnnotationsValidator.visitAnnotation(Attr.java:4461)
at com.sun.tools.javac.tree.JCTree$JCAnnotation.accept(JCTree.java:2317)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
at com.sun.tools.javac.tree.TreeScanner.visitAnnotatedType(TreeScanner.java:324)
at com.sun.tools.javac.comp.Attr$TypeAnnotationsValidator.visitAnnotatedType(Attr.java:4466)
at com.sun.tools.javac.tree.JCTree$JCAnnotatedType.accept(JCTree.java:2373)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
at com.sun.tools.javac.tree.TreeScanner.visitTypeApply(TreeScanner.java:287)
at com.sun.tools.javac.tree.JCTree$JCTypeApply.accept(JCTree.java:2135)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.tree.TreeScanner.visitTypeCast(TreeScanner.java:249)
at com.sun.tools.javac.comp.Attr$TypeAnnotationsValidator.visitTypeCast(Attr.java:4510)
at com.sun.tools.javac.tree.JCTree$JCTypeCast.accept(JCTree.java:1814)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
at com.sun.tools.javac.tree.TreeScanner.visitNewClass(TreeScanner.java:207)
at com.sun.tools.javac.comp.Attr$TypeAnnotationsValidator.visitNewClass(Attr.java:4529)
at com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1516)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.comp.Attr$TypeAnnotationsValidator.visitVarDef(Attr.java:4504)
at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:852)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
at com.sun.tools.javac.comp.Attr$TypeAnnotationsValidator.visitBlock(Attr.java:4557)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.comp.Attr$TypeAnnotationsValidator.visitMethodDef(Attr.java:4495)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:778)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.comp.Attr$TypeAnnotationsValidator.visitClassDef(Attr.java:4552)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)
at com.sun.tools.javac.comp.Attr.validateTypeAnnotations(Attr.java:4450)
at com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:4374)
at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4249)
at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4178)
at com.sun.tools.javac.comp.Attr.attrib(Attr.java:4153)
at com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1248)
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)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
public static <T> void test() {
final Collection<@NonNull T> c = new LinkedList<>();
final List<@NonNull String> l = new LinkedList<@NonNull String>((Collection<@NonNull String>) c) {
// empty
};
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Cast only to (Collection).
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7601]
A DESCRIPTION OF THE PROBLEM :
I get the following error when compiling my code (see below).
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Compile the code below.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
An exception has occurred in the compiler (1.8.0_60)...
java.lang.AssertionError: annotation tree hasn't been attributed yet: @NonNull()
at com.sun.tools.javac.util.Assert.error(Assert.java:133)
at com.sun.tools.javac.util.Assert.checkNonNull(Assert.java:118)
at com.sun.tools.javac.comp.Check.validateTypeAnnotation(Check.java:2745)
at com.sun.tools.javac.comp.Attr$TypeAnnotationsValidator.visitAnnotation(Attr.java:4461)
at com.sun.tools.javac.tree.JCTree$JCAnnotation.accept(JCTree.java:2317)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
at com.sun.tools.javac.tree.TreeScanner.visitAnnotatedType(TreeScanner.java:324)
at com.sun.tools.javac.comp.Attr$TypeAnnotationsValidator.visitAnnotatedType(Attr.java:4466)
at com.sun.tools.javac.tree.JCTree$JCAnnotatedType.accept(JCTree.java:2373)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
at com.sun.tools.javac.tree.TreeScanner.visitTypeApply(TreeScanner.java:287)
at com.sun.tools.javac.tree.JCTree$JCTypeApply.accept(JCTree.java:2135)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.tree.TreeScanner.visitTypeCast(TreeScanner.java:249)
at com.sun.tools.javac.comp.Attr$TypeAnnotationsValidator.visitTypeCast(Attr.java:4510)
at com.sun.tools.javac.tree.JCTree$JCTypeCast.accept(JCTree.java:1814)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
at com.sun.tools.javac.tree.TreeScanner.visitNewClass(TreeScanner.java:207)
at com.sun.tools.javac.comp.Attr$TypeAnnotationsValidator.visitNewClass(Attr.java:4529)
at com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1516)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.comp.Attr$TypeAnnotationsValidator.visitVarDef(Attr.java:4504)
at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:852)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
at com.sun.tools.javac.comp.Attr$TypeAnnotationsValidator.visitBlock(Attr.java:4557)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.comp.Attr$TypeAnnotationsValidator.visitMethodDef(Attr.java:4495)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:778)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.comp.Attr$TypeAnnotationsValidator.visitClassDef(Attr.java:4552)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)
at com.sun.tools.javac.comp.Attr.validateTypeAnnotations(Attr.java:4450)
at com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:4374)
at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4249)
at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4178)
at com.sun.tools.javac.comp.Attr.attrib(Attr.java:4153)
at com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1248)
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)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
public static <T> void test() {
final Collection<@NonNull T> c = new LinkedList<>();
final List<@NonNull String> l = new LinkedList<@NonNull String>((Collection<@NonNull String>) c) {
// empty
};
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Cast only to (Collection).