8021338: Diamond finder may mark a required type argument as unnecessary

Reviewed-by: mcimadamore
This commit is contained in:
Jan Lahoda 2013-07-28 10:17:45 +02:00
parent 21ab6d5558
commit 0847cbc403
2 changed files with 15 additions and 2 deletions

View File

@ -2195,7 +2195,9 @@ public class Attr extends JCTree.Visitor {
syms.objectType :
clazztype;
if (!inferred.isErroneous() &&
types.isAssignable(inferred, pt().hasTag(NONE) ? polyPt : pt(), types.noWarnings)) {
(allowPoly && pt() == Infer.anyPoly ?
types.isSameType(inferred, clazztype) :
types.isAssignable(inferred, pt().hasTag(NONE) ? polyPt : pt(), types.noWarnings))) {
String key = types.isSameType(clazztype, inferred) ?
"diamond.redundant.args" :
"diamond.redundant.args.1";

View File

@ -1,6 +1,6 @@
/*
* @test /nodynamiccopyright/
* @bug 6939780 7020044 8009459
* @bug 6939780 7020044 8009459 8021338
*
* @summary add a warning to detect diamond sites
* @author mcimadamore
@ -36,4 +36,15 @@ class T6939780 {
void gw(Foo<?> fw) { }
void gn(Foo<Number> fn) { }
static class Foo2<X> {
X copy(X t) {
return t;
}
}
void testReciever() {
Number s = new Foo2<Number>().copy(0);
}
}