From e57cefff40edf0979c63be45e51c635801b6c25a Mon Sep 17 00:00:00 2001 From: jlahoda Date: Sun, 28 Jul 2013 10:17:45 +0200 Subject: [PATCH] 8021338: Diamond finder may mark a required type argument as unnecessary Reviewed-by: mcimadamore --- .../classes/com/sun/tools/javac/comp/Attr.java | 4 +++- .../javac/generics/diamond/6939780/T6939780.java | 13 ++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/share/classes/com/sun/tools/javac/comp/Attr.java b/src/share/classes/com/sun/tools/javac/comp/Attr.java index 4ff6f178..335c3249 100644 --- a/src/share/classes/com/sun/tools/javac/comp/Attr.java +++ b/src/share/classes/com/sun/tools/javac/comp/Attr.java @@ -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"; diff --git a/test/tools/javac/generics/diamond/6939780/T6939780.java b/test/tools/javac/generics/diamond/6939780/T6939780.java index 57bbe4a9..d3f41e44 100644 --- a/test/tools/javac/generics/diamond/6939780/T6939780.java +++ b/test/tools/javac/generics/diamond/6939780/T6939780.java @@ -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 fn) { } + + static class Foo2 { + X copy(X t) { + return t; + } + } + + void testReciever() { + Number s = new Foo2().copy(0); + } + } -- GitLab