diff --git a/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/DefaultArgumentsConversion.kt b/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/DefaultArgumentsConversion.kt index fad7825a48f..951c10c960a 100644 --- a/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/DefaultArgumentsConversion.kt +++ b/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/DefaultArgumentsConversion.kt @@ -48,6 +48,8 @@ class DefaultArgumentsConversion(context: NewJ2kConverterContext) : RecursiveApp || callee.name != method.name.value || calledMethod.returnType.type != method.returnType.type || call.arguments.arguments.size <= method.parameters.size + || call.arguments.arguments.size < calledMethod.parameters.size //calledMethod has varargs param or call expr has errors + || calledMethod.parameters.any(JKParameter::isVarArgs) ) { continue } @@ -141,7 +143,6 @@ class DefaultArgumentsConversion(context: NewJ2kConverterContext) : RecursiveApp } return recurse(element) - } private fun areTheSameExpressions(first: JKElement, second: JKElement): Boolean { diff --git a/nj2k/testData/newJ2k/methodCallExpression/defaultParamsWithVararg.java b/nj2k/testData/newJ2k/methodCallExpression/defaultParamsWithVararg.java new file mode 100644 index 00000000000..8f7772c02e8 --- /dev/null +++ b/nj2k/testData/newJ2k/methodCallExpression/defaultParamsWithVararg.java @@ -0,0 +1,8 @@ +public final class Test { + public static void checkState(boolean condition, String message, Object... args) { + } + + public static void checkState(boolean condition) { + checkState(condition, "condition not met"); + } +} diff --git a/nj2k/testData/newJ2k/methodCallExpression/defaultParamsWithVararg.kt b/nj2k/testData/newJ2k/methodCallExpression/defaultParamsWithVararg.kt new file mode 100644 index 00000000000..9af7b9bc26d --- /dev/null +++ b/nj2k/testData/newJ2k/methodCallExpression/defaultParamsWithVararg.kt @@ -0,0 +1,6 @@ +object Test { + fun checkState(condition: Boolean, message: String?, vararg args: Any?) {} + fun checkState(condition: Boolean) { + checkState(condition, "condition not met") + } +} diff --git a/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java b/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java index b915573bea7..e520fa200ea 100644 --- a/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java +++ b/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java @@ -3591,6 +3591,11 @@ public class NewJavaToKotlinConverterSingleFileTestGenerated extends AbstractNew runTest("nj2k/testData/newJ2k/methodCallExpression/conflictJavaMethodCallWithExplicitImports.java"); } + @TestMetadata("defaultParamsWithVararg.java") + public void testDefaultParamsWithVararg() throws Exception { + runTest("nj2k/testData/newJ2k/methodCallExpression/defaultParamsWithVararg.java"); + } + @TestMetadata("emptyCall.java") public void testEmptyCall() throws Exception { runTest("nj2k/testData/newJ2k/methodCallExpression/emptyCall.java");