Thu, 19 Sep 2013 17:05:08 +0200
8022567: Javac Should Generate Warnings For Raw Array Type
Reviewed-by: jjg
1.1 --- a/src/share/classes/com/sun/tools/javac/comp/Check.java Thu Sep 19 17:05:32 2013 +0400 1.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Check.java Thu Sep 19 17:05:08 2013 +0200 1.3 @@ -1245,6 +1245,7 @@ 1.4 */ 1.5 class Validator extends JCTree.Visitor { 1.6 1.7 + boolean checkRaw; 1.8 boolean isOuter; 1.9 Env<AttrContext> env; 1.10 1.11 @@ -1254,7 +1255,7 @@ 1.12 1.13 @Override 1.14 public void visitTypeArray(JCArrayTypeTree tree) { 1.15 - tree.elemtype.accept(this); 1.16 + validateTree(tree.elemtype, checkRaw, isOuter); 1.17 } 1.18 1.19 @Override 1.20 @@ -1345,15 +1346,20 @@ 1.21 } 1.22 1.23 public void validateTree(JCTree tree, boolean checkRaw, boolean isOuter) { 1.24 - try { 1.25 - if (tree != null) { 1.26 - this.isOuter = isOuter; 1.27 + if (tree != null) { 1.28 + boolean prevCheckRaw = this.checkRaw; 1.29 + this.checkRaw = checkRaw; 1.30 + this.isOuter = isOuter; 1.31 + 1.32 + try { 1.33 tree.accept(this); 1.34 if (checkRaw) 1.35 checkRaw(tree, env); 1.36 + } catch (CompletionFailure ex) { 1.37 + completionError(tree.pos(), ex); 1.38 + } finally { 1.39 + this.checkRaw = prevCheckRaw; 1.40 } 1.41 - } catch (CompletionFailure ex) { 1.42 - completionError(tree.pos(), ex); 1.43 } 1.44 } 1.45
2.1 --- a/test/tools/javac/warnings/6747671/T6747671.java Thu Sep 19 17:05:32 2013 +0400 2.2 +++ b/test/tools/javac/warnings/6747671/T6747671.java Thu Sep 19 17:05:08 2013 +0200 2.3 @@ -1,6 +1,6 @@ 2.4 /** 2.5 * @test /nodynamiccopyright/ 2.6 - * @bug 6747671 2.7 + * @bug 6747671 8022567 2.8 * @summary -Xlint:rawtypes 2.9 * @compile/ref=T6747671.out -XDrawDiagnostics -Xlint:rawtypes T6747671.java 2.10 */ 2.11 @@ -32,4 +32,11 @@ 2.12 A a2 = new A() {};//raw warning (2) 2.13 a2.new Z() {};//raw warning 2.14 } 2.15 + 2.16 + @TA B @TA[] arr = new @TA B @TA [0];//JDK-8022567: raw warning (2) 2.17 + Class<B[]> classes1;//no warning 2.18 + Class<B>[] classes2;//no warning 2.19 + 2.20 + @java.lang.annotation.Target(java.lang.annotation.ElementType.TYPE_USE) 2.21 + @interface TA { } 2.22 }
3.1 --- a/test/tools/javac/warnings/6747671/T6747671.out Thu Sep 19 17:05:32 2013 +0400 3.2 +++ b/test/tools/javac/warnings/6747671/T6747671.out Thu Sep 19 17:05:08 2013 +0200 3.3 @@ -7,4 +7,6 @@ 3.4 T6747671.java:32:9: compiler.warn.raw.class.use: T6747671.A, T6747671<E>.A<X> 3.5 T6747671.java:32:20: compiler.warn.raw.class.use: T6747671.A, T6747671<E>.A<X> 3.6 T6747671.java:33:16: compiler.warn.raw.class.use: T6747671.A.Z, T6747671<E>.A<X>.Z<Y> 3.7 -9 warnings 3.8 +T6747671.java:36:9: compiler.warn.raw.class.use: @T6747671.TA T6747671.B, T6747671.B<X> 3.9 +T6747671.java:36:27: compiler.warn.raw.class.use: T6747671.B, T6747671.B<X> 3.10 +11 warnings