Change Signature/Rename: Fix processing of named arguments when renaming parameter of extension function

#KT-8605 Fixed
This commit is contained in:
Alexey Sedunov
2015-10-26 20:10:46 +03:00
parent 18ed3055ee
commit 937b8725c6
4 changed files with 21 additions and 4 deletions
@@ -559,11 +559,12 @@ public class JetFunctionCallUsage extends JetUsageInfo<KtCallElement> {
if (argumentNameExpression != null) {
Integer oldParameterIndex = changeInfo.getOldParameterIndex(argumentNameExpression.getReferencedName());
if (oldParameterIndex == null) continue;
if (oldParameterIndex != null) {
JetParameterInfo parameterInfo = changeInfo.getNewParameters()[oldParameterIndex];
changeArgumentName(argumentNameExpression, parameterInfo);
}
JetParameterInfo parameterInfo = changeInfo.getNewParameters()[
changeInfo.getReceiverParameterInfo() != null ? oldParameterIndex + 1 : oldParameterIndex
];
changeArgumentName(argumentNameExpression, parameterInfo);
}
}
}
@@ -0,0 +1,5 @@
fun Int.<caret>foo(a: Int, bb: Int): Int = a + bb
fun test() {
0.foo(1, bb = 2)
}
@@ -0,0 +1,5 @@
fun Int.<caret>foo(a: Int, b: Int): Int = a + b
fun test() {
0.foo(1, b = 2)
}
@@ -1326,6 +1326,12 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase {
doTest(changeInfo);
}
public void testRenameExtensionParameterWithNamedArgs() throws Exception {
JetChangeInfo changeInfo = getChangeInfo();
changeInfo.getNewParameters()[2].setName("bb");
doTest(changeInfo);
}
private List<Editor> editors = null;
private static final String[] EXTENSIONS = {".kt", ".java"};