diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceSession.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceSession.java index 136f101bb106..4c9ca46acde3 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceSession.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceSession.java @@ -1506,7 +1506,7 @@ public class InferenceSession { LOG.assertTrue(parameters1.length == parameters2.length); } - final int paramsLength = !varargs ? parameters1.length : parameters1.length - 1; + final int paramsLength = !varargs ? parameters1.length : Math.max(parameters1.length, parameters2.length) - 1; for (int i = 0; i < paramsLength; i++) { PsiType sType = getParameterType(parameters1, i, siteSubstitutor1, false); PsiType tType = session.substituteWithInferenceVariables(getParameterType(parameters2, i, siteSubstitutor1, varargs)); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/overloadResolution/LongerParamsWhenVarargs.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/overloadResolution/LongerParamsWhenVarargs.java new file mode 100644 index 000000000000..57b52d91d23a --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/overloadResolution/LongerParamsWhenVarargs.java @@ -0,0 +1,21 @@ +interface Node<T> { + + @SafeVarargs + static Node of(T value, Node... children) { + System.out.println(value); + System.out.println(children); + return null; + } + + + @SafeVarargs + static Node of(T1... values) { + System.out.println(values); + return null; + } + + static void test() { + Node.of(1, Node.of(2), Node.of(3)); + Node.of(1, Node.of(2), Node. of(3)); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/OverloadResolutionTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/OverloadResolutionTest.java index 5e7519b18e3e..41d03b6e7d23 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/OverloadResolutionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/OverloadResolutionTest.java @@ -195,6 +195,10 @@ public class OverloadResolutionTest extends LightDaemonAnalyzerTestCase { doTest(); } + public void testLongerParamsWhenVarargs() throws Exception { + doTest(); + } + private void doTest() { doTest(true); }