Mercurial > hg > openjdk > jdk8 > langtools
changeset 1903:b577222ef7b3
8019340: varargs-related warnings are meaningless on signature-polymorphic methods such as MethodHandle.invokeExact
Summary: Disable certain varargs warnings when compiling polymorphic signature calls
Reviewed-by: jjg
author | mcimadamore |
---|---|
date | Wed, 17 Jul 2013 14:19:25 +0100 |
parents | 155809b1b969 |
children | f65a807714ba |
files | src/share/classes/com/sun/tools/javac/comp/Check.java test/tools/javac/meth/VarargsWarn.java test/tools/javac/meth/VarargsWarn.out |
diffstat | 3 files changed, 23 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/com/sun/tools/javac/comp/Check.java Wed Jul 17 14:19:02 2013 +0100 +++ b/src/share/classes/com/sun/tools/javac/comp/Check.java Wed Jul 17 14:19:25 2013 +0100 @@ -897,7 +897,8 @@ assertConvertible(arg, arg.type, varArg, warn); args = args.tail; } - } else if ((sym.flags() & VARARGS) != 0 && allowVarargs) { + } else if ((sym.flags() & (VARARGS | SIGNATURE_POLYMORPHIC)) == VARARGS && + allowVarargs) { // non-varargs call to varargs method Type varParam = owntype.getParameterTypes().last(); Type lastArg = argtypes.last();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/meth/VarargsWarn.java Wed Jul 17 14:19:25 2013 +0100 @@ -0,0 +1,17 @@ +/* + * @test /nodynamiccopyright/ + * @bug 8019340 + * @summary varargs-related warnings are meaningless on signature-polymorphic methods such as MethodHandle.invokeExact + * + * @compile/fail/ref=VarargsWarn.out -XDrawDiagnostics -Werror VarargsWarn.java + */ + +import java.lang.invoke.*; + +class VarargsWarn { + void test(MethodHandle mh) throws Throwable { + mh.invokeExact((Integer[])null); + mh.invoke((Integer[])null); + mh.invokeWithArguments((Integer[])null); //not a sig poly method - warning here! + } +}