8022567: Javac Should Generate Warnings For Raw Array Type

Thu, 19 Sep 2013 17:05:08 +0200

author
jlahoda
date
Thu, 19 Sep 2013 17:05:08 +0200
changeset 2038
8d1c48de706d
parent 2037
36e342dd57e2
child 2039
0cfd5baa7154

8022567: Javac Should Generate Warnings For Raw Array Type
Reviewed-by: jjg

src/share/classes/com/sun/tools/javac/comp/Check.java file | annotate | diff | comparison | revisions
test/tools/javac/warnings/6747671/T6747671.java file | annotate | diff | comparison | revisions
test/tools/javac/warnings/6747671/T6747671.out file | annotate | diff | comparison | revisions
     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

mercurial