changeset 1923:cd9e8cea1b3c

8021338: Diamond finder may mark a required type argument as unnecessary Reviewed-by: mcimadamore
author jlahoda
date Sun, 28 Jul 2013 10:17:45 +0200
parents 8c4b2987edac
children 7696282873f6
files src/share/classes/com/sun/tools/javac/comp/Attr.java test/tools/javac/generics/diamond/6939780/T6939780.java
diffstat 2 files changed, 15 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/classes/com/sun/tools/javac/comp/Attr.java	Sun Jul 28 10:17:45 2013 +0200
+++ b/src/share/classes/com/sun/tools/javac/comp/Attr.java	Sun Jul 28 10:17:45 2013 +0200
@@ -2195,7 +2195,9 @@
                         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";
--- a/test/tools/javac/generics/diamond/6939780/T6939780.java	Sun Jul 28 10:17:45 2013 +0200
+++ b/test/tools/javac/generics/diamond/6939780/T6939780.java	Sun Jul 28 10:17:45 2013 +0200
@@ -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 @@
 
     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);
+    }
+
 }