diff -r 812c6251ea78 -r 57e3b9bc7fb8 src/share/classes/com/sun/tools/javac/comp/Infer.java --- a/src/share/classes/com/sun/tools/javac/comp/Infer.java Mon Jan 24 15:45:24 2011 +0000 +++ b/src/share/classes/com/sun/tools/javac/comp/Infer.java Mon Jan 24 15:45:41 2011 +0000 @@ -407,7 +407,9 @@ // for varargs arguments as well if (useVarargs) { - Type elemType = types.elemtype(varargsFormal); + //note: if applicability check is triggered by most specific test, + //the last argument of a varargs is _not_ an array type (see JLS 15.12.2.5) + Type elemType = types.elemtypeOrType(varargsFormal); Type elemUndet = types.subst(elemType, tvars, undetvars); while (actuals.nonEmpty()) { Type actual = actuals.head.baseType();