7182350: Regression in wording of unchecked warning message

Tue, 20 Aug 2013 17:34:06 +0400

author
kizune
date
Tue, 20 Aug 2013 17:34:06 +0400
changeset 1959
55da6b3a6940
parent 1958
389eaf6ed973
child 1960
e811fb09a1dc

7182350: Regression in wording of unchecked warning message
Reviewed-by: mcimadamore, jjg

src/share/classes/com/sun/tools/javac/comp/Check.java file | annotate | diff | comparison | revisions
test/tools/javac/6758789/T6758789b.out file | annotate | diff | comparison | revisions
test/tools/javac/7182350/T7182350.java file | annotate | diff | comparison | revisions
test/tools/javac/7182350/T7182350.out file | annotate | diff | comparison | revisions
test/tools/javac/generics/7015430/T7015430_1.out file | annotate | diff | comparison | revisions
test/tools/javac/generics/7015430/T7015430_2.out file | annotate | diff | comparison | revisions
test/tools/javac/generics/7151802/T7151802.out file | annotate | diff | comparison | revisions
test/tools/javac/generics/inference/6718364/T6718364.out file | annotate | diff | comparison | revisions
test/tools/javac/generics/inference/7177306/T7177306a.out file | annotate | diff | comparison | revisions
     1.1 --- a/src/share/classes/com/sun/tools/javac/comp/Check.java	Mon Aug 19 07:47:10 2013 -0700
     1.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Check.java	Tue Aug 20 17:34:06 2013 +0400
     1.3 @@ -875,19 +875,23 @@
     1.4          }
     1.5          Type owntype = mtype;
     1.6          List<Type> formals = owntype.getParameterTypes();
     1.7 +        List<Type> nonInferred = sym.type.getParameterTypes();
     1.8 +        if (nonInferred.length() != formals.length()) nonInferred = formals;
     1.9          Type last = useVarargs ? formals.last() : null;
    1.10 -        if (sym.name == names.init &&
    1.11 -                sym.owner == syms.enumSym)
    1.12 -                formals = formals.tail.tail;
    1.13 +        if (sym.name == names.init && sym.owner == syms.enumSym) {
    1.14 +            formals = formals.tail.tail;
    1.15 +            nonInferred = nonInferred.tail.tail;
    1.16 +        }
    1.17          List<JCExpression> args = argtrees;
    1.18          if (args != null) {
    1.19              //this is null when type-checking a method reference
    1.20              while (formals.head != last) {
    1.21                  JCTree arg = args.head;
    1.22 -                Warner warn = convertWarner(arg.pos(), arg.type, formals.head);
    1.23 +                Warner warn = convertWarner(arg.pos(), arg.type, nonInferred.head);
    1.24                  assertConvertible(arg, arg.type, formals.head, warn);
    1.25                  args = args.tail;
    1.26                  formals = formals.tail;
    1.27 +                nonInferred = nonInferred.tail;
    1.28              }
    1.29              if (useVarargs) {
    1.30                  Type varArg = types.elemtype(last);
    1.31 @@ -903,17 +907,17 @@
    1.32                  Type varParam = owntype.getParameterTypes().last();
    1.33                  Type lastArg = argtypes.last();
    1.34                  if (types.isSubtypeUnchecked(lastArg, types.elemtype(varParam)) &&
    1.35 -                        !types.isSameType(types.erasure(varParam), types.erasure(lastArg)))
    1.36 +                    !types.isSameType(types.erasure(varParam), types.erasure(lastArg)))
    1.37                      log.warning(argtrees.last().pos(), "inexact.non-varargs.call",
    1.38 -                            types.elemtype(varParam), varParam);
    1.39 +                                types.elemtype(varParam), varParam);
    1.40              }
    1.41          }
    1.42          if (useVarargs) {
    1.43              Type argtype = owntype.getParameterTypes().last();
    1.44              if (!types.isReifiable(argtype) &&
    1.45 -                    (!allowSimplifiedVarargs ||
    1.46 -                    sym.attribute(syms.trustMeType.tsym) == null ||
    1.47 -                    !isTrustMeAllowedOnMethod(sym))) {
    1.48 +                (!allowSimplifiedVarargs ||
    1.49 +                 sym.attribute(syms.trustMeType.tsym) == null ||
    1.50 +                 !isTrustMeAllowedOnMethod(sym))) {
    1.51                  warnUnchecked(env.tree.pos(),
    1.52                                    "unchecked.generic.array.creation",
    1.53                                    argtype);
    1.54 @@ -929,15 +933,15 @@
    1.55           return owntype;
    1.56      }
    1.57      //where
    1.58 -        private void assertConvertible(JCTree tree, Type actual, Type formal, Warner warn) {
    1.59 -            if (types.isConvertible(actual, formal, warn))
    1.60 -                return;
    1.61 -
    1.62 -            if (formal.isCompound()
    1.63 -                && types.isSubtype(actual, types.supertype(formal))
    1.64 -                && types.isSubtypeUnchecked(actual, types.interfaces(formal), warn))
    1.65 -                return;
    1.66 -        }
    1.67 +    private void assertConvertible(JCTree tree, Type actual, Type formal, Warner warn) {
    1.68 +        if (types.isConvertible(actual, formal, warn))
    1.69 +            return;
    1.70 +
    1.71 +        if (formal.isCompound()
    1.72 +            && types.isSubtype(actual, types.supertype(formal))
    1.73 +            && types.isSubtypeUnchecked(actual, types.interfaces(formal), warn))
    1.74 +            return;
    1.75 +    }
    1.76  
    1.77      /**
    1.78       * Check that type 't' is a valid instantiation of a generic class
     2.1 --- a/test/tools/javac/6758789/T6758789b.out	Mon Aug 19 07:47:10 2013 -0700
     2.2 +++ b/test/tools/javac/6758789/T6758789b.out	Tue Aug 20 17:34:06 2013 +0400
     2.3 @@ -1,5 +1,5 @@
     2.4  T6758789b.java:16:10: compiler.warn.unchecked.meth.invocation.applied: kindname.method, m, T6758789a.Foo<X>, T6758789a.Foo, kindname.class, T6758789a
     2.5 -T6758789b.java:16:11: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), T6758789a.Foo, T6758789a.Foo<java.lang.Object>
     2.6 +T6758789b.java:16:11: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), T6758789a.Foo, T6758789a.Foo<X>
     2.7  - compiler.err.warnings.and.werror
     2.8  1 error
     2.9  2 warnings
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/test/tools/javac/7182350/T7182350.java	Tue Aug 20 17:34:06 2013 +0400
     3.3 @@ -0,0 +1,14 @@
     3.4 +/**
     3.5 + * @test  /nodynamiccopyright/
     3.6 + * @bug 7182350
     3.7 + * @summary verify correct output of -Xlint:unchecked on methods with unchecked conversations in parameters
     3.8 + * @compile/ref=T7182350.out -XDrawDiagnostics -Xlint:unchecked T7182350.java
     3.9 + */
    3.10 +
    3.11 +import java.util.*;
    3.12 +
    3.13 +class T7182350 {
    3.14 +    public static void quicksort(Vector vector, Comparator compare) {
    3.15 +        Collections.sort(vector,compare);
    3.16 +    }
    3.17 +}
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/test/tools/javac/7182350/T7182350.out	Tue Aug 20 17:34:06 2013 +0400
     4.3 @@ -0,0 +1,4 @@
     4.4 +T7182350.java:12:25: compiler.warn.unchecked.meth.invocation.applied: kindname.method, sort, java.util.List<T>,java.util.Comparator<? super T>, java.util.Vector,java.util.Comparator, kindname.class, java.util.Collections
     4.5 +T7182350.java:12:26: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.util.Vector, java.util.List<T>
     4.6 +T7182350.java:12:33: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.util.Comparator, java.util.Comparator<? super T>
     4.7 +3 warnings
     5.1 --- a/test/tools/javac/generics/7015430/T7015430_1.out	Mon Aug 19 07:47:10 2013 -0700
     5.2 +++ b/test/tools/javac/generics/7015430/T7015430_1.out	Tue Aug 20 17:34:06 2013 +0400
     5.3 @@ -1,13 +1,13 @@
     5.4  T7015430.java:42:14: compiler.warn.unchecked.meth.invocation.applied: kindname.method, empty, java.lang.Iterable<E>, java.lang.Iterable, kindname.class, T7015430
     5.5  T7015430.java:42:15: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.lang.Iterable, java.lang.Iterable<E>
     5.6  T7015430.java:51:41: compiler.warn.unchecked.meth.invocation.applied: kindname.method, empty, java.lang.Iterable<E>, java.lang.Iterable, kindname.class, T7015430
     5.7 -T7015430.java:51:42: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.lang.Iterable, java.lang.Iterable<java.lang.RuntimeException>
     5.8 +T7015430.java:51:42: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.lang.Iterable, java.lang.Iterable<E>
     5.9  T7015430.java:69:9: compiler.warn.unchecked.meth.invocation.applied: kindname.constructor, <init>, java.lang.Iterable<E>, java.lang.Iterable, kindname.class, T7015430
    5.10  T7015430.java:69:22: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.lang.Iterable, java.lang.Iterable<E>
    5.11  T7015430.java:78:9: compiler.warn.unchecked.meth.invocation.applied: kindname.constructor, <init>, java.lang.Iterable<E>, java.lang.Iterable, kindname.class, T7015430
    5.12 -T7015430.java:78:40: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.lang.Iterable, java.lang.Iterable<java.lang.RuntimeException>
    5.13 +T7015430.java:78:40: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.lang.Iterable, java.lang.Iterable<E>
    5.14  T7015430.java:105:9: compiler.warn.unchecked.meth.invocation.applied: kindname.constructor, <init>, java.lang.Iterable<E>, java.lang.Iterable, kindname.class, T7015430
    5.15 -T7015430.java:105:41: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.lang.Iterable, java.lang.Iterable<java.lang.RuntimeException>
    5.16 +T7015430.java:105:41: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.lang.Iterable, java.lang.Iterable<E>
    5.17  T7015430.java:114:9: compiler.warn.unchecked.meth.invocation.applied: kindname.constructor, <init>, java.lang.Iterable<E>, java.lang.Iterable, kindname.class, T7015430
    5.18  T7015430.java:114:22: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.lang.Iterable, java.lang.Iterable<E>
    5.19  T7015430.java:42:14: compiler.err.unreported.exception.need.to.catch.or.throw: java.lang.Exception
     6.1 --- a/test/tools/javac/generics/7015430/T7015430_2.out	Mon Aug 19 07:47:10 2013 -0700
     6.2 +++ b/test/tools/javac/generics/7015430/T7015430_2.out	Tue Aug 20 17:34:06 2013 +0400
     6.3 @@ -1,15 +1,15 @@
     6.4  T7015430.java:42:14: compiler.warn.unchecked.meth.invocation.applied: kindname.method, empty, java.lang.Iterable<E>, java.lang.Iterable, kindname.class, T7015430
     6.5 -T7015430.java:42:15: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.lang.Iterable, java.lang.Iterable<java.lang.RuntimeException>
     6.6 +T7015430.java:42:15: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.lang.Iterable, java.lang.Iterable<E>
     6.7  T7015430.java:51:41: compiler.warn.unchecked.meth.invocation.applied: kindname.method, empty, java.lang.Iterable<E>, java.lang.Iterable, kindname.class, T7015430
     6.8 -T7015430.java:51:42: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.lang.Iterable, java.lang.Iterable<java.lang.RuntimeException>
     6.9 +T7015430.java:51:42: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.lang.Iterable, java.lang.Iterable<E>
    6.10  T7015430.java:69:9: compiler.warn.unchecked.meth.invocation.applied: kindname.constructor, <init>, java.lang.Iterable<E>, java.lang.Iterable, kindname.class, T7015430
    6.11 -T7015430.java:69:22: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.lang.Iterable, java.lang.Iterable<java.lang.RuntimeException>
    6.12 +T7015430.java:69:22: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.lang.Iterable, java.lang.Iterable<E>
    6.13  T7015430.java:78:9: compiler.warn.unchecked.meth.invocation.applied: kindname.constructor, <init>, java.lang.Iterable<E>, java.lang.Iterable, kindname.class, T7015430
    6.14 -T7015430.java:78:40: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.lang.Iterable, java.lang.Iterable<java.lang.RuntimeException>
    6.15 +T7015430.java:78:40: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.lang.Iterable, java.lang.Iterable<E>
    6.16  T7015430.java:105:9: compiler.warn.unchecked.meth.invocation.applied: kindname.constructor, <init>, java.lang.Iterable<E>, java.lang.Iterable, kindname.class, T7015430
    6.17 -T7015430.java:105:41: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.lang.Iterable, java.lang.Iterable<java.lang.RuntimeException>
    6.18 +T7015430.java:105:41: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.lang.Iterable, java.lang.Iterable<E>
    6.19  T7015430.java:114:9: compiler.warn.unchecked.meth.invocation.applied: kindname.constructor, <init>, java.lang.Iterable<E>, java.lang.Iterable, kindname.class, T7015430
    6.20 -T7015430.java:114:22: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.lang.Iterable, java.lang.Iterable<java.lang.RuntimeException>
    6.21 +T7015430.java:114:22: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.lang.Iterable, java.lang.Iterable<E>
    6.22  T7015430.java:130:9: compiler.err.unreported.exception.need.to.catch.or.throw: java.lang.Exception
    6.23  1 error
    6.24  12 warnings
     7.1 --- a/test/tools/javac/generics/7151802/T7151802.out	Mon Aug 19 07:47:10 2013 -0700
     7.2 +++ b/test/tools/javac/generics/7151802/T7151802.out	Tue Aug 20 17:34:06 2013 +0400
     7.3 @@ -1,6 +1,6 @@
     7.4  T7151802.java:14:31: compiler.warn.unchecked.meth.invocation.applied: kindname.method, get1, Z, T7151802.Foo, kindname.class, T7151802
     7.5  T7151802.java:22:30: compiler.warn.unchecked.meth.invocation.applied: kindname.method, get3, T7151802.Foo<Z>, T7151802.Foo, kindname.class, T7151802
     7.6 -T7151802.java:22:31: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), T7151802.Foo, T7151802.Foo<java.lang.Object>
     7.7 +T7151802.java:22:31: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), T7151802.Foo, T7151802.Foo<Z>
     7.8  T7151802.java:30:36: compiler.warn.unchecked.meth.invocation.applied: kindname.method, get5, compiler.misc.no.args, compiler.misc.no.args, kindname.class, T7151802
     7.9  T7151802.java:38:31: compiler.warn.unchecked.meth.invocation.applied: kindname.method, get7, T7151802.Foo<java.lang.String>, T7151802.Foo, kindname.class, T7151802
    7.10  T7151802.java:38:32: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), T7151802.Foo, T7151802.Foo<java.lang.String>
     8.1 --- a/test/tools/javac/generics/inference/6718364/T6718364.out	Mon Aug 19 07:47:10 2013 -0700
     8.2 +++ b/test/tools/javac/generics/inference/6718364/T6718364.out	Tue Aug 20 17:34:06 2013 +0400
     8.3 @@ -1,3 +1,3 @@
     8.4  T6718364.java:13:10: compiler.warn.unchecked.meth.invocation.applied: kindname.method, m, T6718364.X<T>,T, T6718364.X<T6718364.X<java.lang.Integer>>,T6718364.X, kindname.class, T6718364
     8.5 -T6718364.java:13:32: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), T6718364.X, T6718364.X<java.lang.Integer>
     8.6 +T6718364.java:13:32: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), T6718364.X, T
     8.7  2 warnings
     9.1 --- a/test/tools/javac/generics/inference/7177306/T7177306a.out	Mon Aug 19 07:47:10 2013 -0700
     9.2 +++ b/test/tools/javac/generics/inference/7177306/T7177306a.out	Tue Aug 20 17:34:06 2013 +0400
     9.3 @@ -1,5 +1,5 @@
     9.4  T7177306a.java:13:33: compiler.warn.unchecked.meth.invocation.applied: kindname.method, m, java.util.List<E>, java.util.List, kindname.class, T7177306a
     9.5 -T7177306a.java:13:34: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.util.List, java.util.List<java.lang.Object>
     9.6 +T7177306a.java:13:34: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), java.util.List, java.util.List<E>
     9.7  T7177306a.java:13:33: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), T7177306a, T7177306a<java.lang.Object>
     9.8  - compiler.err.warnings.and.werror
     9.9  1 error

mercurial