diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/JetFunctionCallUsage.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/JetFunctionCallUsage.java index 3178770c22f..0a4e81865c8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/JetFunctionCallUsage.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/JetFunctionCallUsage.java @@ -559,11 +559,12 @@ public class JetFunctionCallUsage extends JetUsageInfo { 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); } } } diff --git a/idea/testData/refactoring/changeSignature/RenameExtensionParameterWithNamedArgsAfter.kt b/idea/testData/refactoring/changeSignature/RenameExtensionParameterWithNamedArgsAfter.kt new file mode 100644 index 00000000000..4c1ec50e1ae --- /dev/null +++ b/idea/testData/refactoring/changeSignature/RenameExtensionParameterWithNamedArgsAfter.kt @@ -0,0 +1,5 @@ +fun Int.foo(a: Int, bb: Int): Int = a + bb + +fun test() { + 0.foo(1, bb = 2) +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/RenameExtensionParameterWithNamedArgsBefore.kt b/idea/testData/refactoring/changeSignature/RenameExtensionParameterWithNamedArgsBefore.kt new file mode 100644 index 00000000000..7eaf5696079 --- /dev/null +++ b/idea/testData/refactoring/changeSignature/RenameExtensionParameterWithNamedArgsBefore.kt @@ -0,0 +1,5 @@ +fun Int.foo(a: Int, b: Int): Int = a + b + +fun test() { + 0.foo(1, b = 2) +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureTest.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureTest.java index b0e7dd2a8cd..a0f88351b9b 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureTest.java @@ -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 editors = null; private static final String[] EXTENSIONS = {".kt", ".java"};