Change signature: fix it works correctly when call site function has no value argument list

#KT-23510 Fixed
This commit is contained in:
Toshiaki Kameyama
2020-02-19 22:41:25 +09:00
committed by Vladimir Dolzhenko
parent 223ed1ad60
commit f487118be5
9 changed files with 56 additions and 0 deletions
@@ -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)
@@ -0,0 +1,4 @@
// "Remove parameter 'block'" "true"
fun doNotUse1(<caret>block: () -> Unit) {}
fun useNotUse1() = doNotUse1 { }
@@ -0,0 +1,4 @@
// "Remove parameter 'block'" "true"
fun doNotUse1() {}
fun useNotUse1() = doNotUse1()
@@ -0,0 +1,6 @@
fun foo(block: () -> Unit, i: Int) {
}
fun test() {
foo({}, 0)
}
@@ -0,0 +1,6 @@
fun <caret>foo(block: () -> Unit) {
}
fun test() {
foo {}
}
@@ -0,0 +1,6 @@
fun foo() {
}
fun test() {
foo()
}
@@ -0,0 +1,6 @@
fun <caret>foo(block: () -> Unit) {
}
fun test() {
foo {}
}
@@ -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");
@@ -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) }
}