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);
}