diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinFunctionCallUsage.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinFunctionCallUsage.kt index b5d95ca3789..255e99a490f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinFunctionCallUsage.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinFunctionCallUsage.kt @@ -75,6 +75,11 @@ class KotlinFunctionCallUsage( changeNameIfNeeded(changeInfo, element) + if (element.valueArgumentList == null && changeInfo.isParameterSetOrOrderChanged && element.lambdaArguments.isNotEmpty()) { + element.calleeExpression?.let { + element.addAfter(KtPsiFactory(element).createCallArguments("()"), it) + } + } if (element.valueArgumentList != null) { if (changeInfo.isParameterSetOrOrderChanged) { result = updateArgumentsAndReceiver(changeInfo, element, allUsages) diff --git a/idea/testData/quickfix/changeSignature/removeFunctionLastLambdaParameter.kt b/idea/testData/quickfix/changeSignature/removeFunctionLastLambdaParameter.kt new file mode 100644 index 00000000000..0ff2480091f --- /dev/null +++ b/idea/testData/quickfix/changeSignature/removeFunctionLastLambdaParameter.kt @@ -0,0 +1,4 @@ +// "Remove parameter 'block'" "true" +fun doNotUse1(block: () -> Unit) {} + +fun useNotUse1() = doNotUse1 { } diff --git a/idea/testData/quickfix/changeSignature/removeFunctionLastLambdaParameter.kt.after b/idea/testData/quickfix/changeSignature/removeFunctionLastLambdaParameter.kt.after new file mode 100644 index 00000000000..0dae434aaaa --- /dev/null +++ b/idea/testData/quickfix/changeSignature/removeFunctionLastLambdaParameter.kt.after @@ -0,0 +1,4 @@ +// "Remove parameter 'block'" "true" +fun doNotUse1() {} + +fun useNotUse1() = doNotUse1() diff --git a/idea/testData/refactoring/changeSignature/AddParameterAfterLambdaParameterAfter.kt b/idea/testData/refactoring/changeSignature/AddParameterAfterLambdaParameterAfter.kt new file mode 100644 index 00000000000..8c69290d4a7 --- /dev/null +++ b/idea/testData/refactoring/changeSignature/AddParameterAfterLambdaParameterAfter.kt @@ -0,0 +1,6 @@ +fun foo(block: () -> Unit, i: Int) { +} + +fun test() { + foo({}, 0) +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/AddParameterAfterLambdaParameterBefore.kt b/idea/testData/refactoring/changeSignature/AddParameterAfterLambdaParameterBefore.kt new file mode 100644 index 00000000000..dfee02bd611 --- /dev/null +++ b/idea/testData/refactoring/changeSignature/AddParameterAfterLambdaParameterBefore.kt @@ -0,0 +1,6 @@ +fun foo(block: () -> Unit) { +} + +fun test() { + foo {} +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/RemoveLambdaParameter2After.kt b/idea/testData/refactoring/changeSignature/RemoveLambdaParameter2After.kt new file mode 100644 index 00000000000..50437a27434 --- /dev/null +++ b/idea/testData/refactoring/changeSignature/RemoveLambdaParameter2After.kt @@ -0,0 +1,6 @@ +fun foo() { +} + +fun test() { + foo() +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/RemoveLambdaParameter2Before.kt b/idea/testData/refactoring/changeSignature/RemoveLambdaParameter2Before.kt new file mode 100644 index 00000000000..dfee02bd611 --- /dev/null +++ b/idea/testData/refactoring/changeSignature/RemoveLambdaParameter2Before.kt @@ -0,0 +1,6 @@ +fun foo(block: () -> Unit) { +} + +fun test() { + foo {} +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java index 2f4794e4a62..742fafc6cac 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -2339,6 +2339,11 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { runTest("idea/testData/quickfix/changeSignature/removeFunctionFirstParameter.kt"); } + @TestMetadata("removeFunctionLastLambdaParameter.kt") + public void testRemoveFunctionLastLambdaParameter() throws Exception { + runTest("idea/testData/quickfix/changeSignature/removeFunctionLastLambdaParameter.kt"); + } + @TestMetadata("removeFunctionSecondParameter1.kt") public void testRemoveFunctionSecondParameter1() throws Exception { runTest("idea/testData/quickfix/changeSignature/removeFunctionSecondParameter1.kt"); diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureTest.kt b/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureTest.kt index ab7a6e03382..36c3116849d 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureTest.kt @@ -1237,4 +1237,18 @@ class KotlinChangeSignatureTest : KotlinLightCodeInsightFixtureTestCase() { fun testKotlinOverridingJavaWithDifferentParamName() = doJavaTest { newParameters.add(ParameterInfoImpl(-1, "n", PsiType.INT)) } + + fun testAddParameterAfterLambdaParameter() = doTest { + addParameter( + KotlinParameterInfo( + callableDescriptor = originalBaseFunctionDescriptor, + name = "i", + originalTypeInfo = KotlinTypeInfo(false, BUILT_INS.intType), + defaultValueForCall = KtPsiFactory(project).createExpression("0") + ) + ) + } + + fun testRemoveLambdaParameter2() = doTest { removeParameter(0) } + }