提交 0f95b77f 编写于 作者: M mcimadamore

8019340: varargs-related warnings are meaningless on signature-polymorphic...

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
上级 d0c55cf9
...@@ -897,7 +897,8 @@ public class Check { ...@@ -897,7 +897,8 @@ public class Check {
assertConvertible(arg, arg.type, varArg, warn); assertConvertible(arg, arg.type, varArg, warn);
args = args.tail; 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 // non-varargs call to varargs method
Type varParam = owntype.getParameterTypes().last(); Type varParam = owntype.getParameterTypes().last();
Type lastArg = argtypes.last(); Type lastArg = argtypes.last();
......
/*
* @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!
}
}
VarargsWarn.java:15:32: compiler.warn.inexact.non-varargs.call: java.lang.Object, java.lang.Object[]
- compiler.err.warnings.and.werror
1 error
1 warning
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册