Change Signature/Rename: Fix renaming of extension function parameter
This commit is contained in:
+1
-1
@@ -204,7 +204,7 @@ public class JetFunctionDefinitionUsage<T extends PsiElement> extends JetUsageIn
|
||||
processParameterListWithStructuralChanges(changeInfo, element, parameterList, psiFactory);
|
||||
}
|
||||
else if (parameterList != null) {
|
||||
int paramIndex = 0;
|
||||
int paramIndex = originalFunctionDescriptor.getExtensionReceiverParameter() != null ? 1 : 0;
|
||||
|
||||
for (JetParameter parameter : parameterList.getParameters()) {
|
||||
JetParameterInfo parameterInfo = changeInfo.getNewParameters()[paramIndex];
|
||||
|
||||
+2
-1
@@ -51,7 +51,8 @@ public class RenameKotlinParameterProcessor : RenameKotlinPsiProcessor() {
|
||||
|
||||
val changeSignatureConfiguration = object : JetChangeSignatureConfiguration {
|
||||
override fun configure(originalDescriptor: JetMethodDescriptor, bindingContext: BindingContext): JetMethodDescriptor {
|
||||
return originalDescriptor.modify { it.renameParameter(paramIndex, newName) }
|
||||
val paramInfoIndex = if (functionDescriptor.getExtensionReceiverParameter() != null) paramIndex + 1 else paramIndex
|
||||
return originalDescriptor.modify { it.renameParameter(paramInfoIndex, newName) }
|
||||
}
|
||||
|
||||
override fun performSilently(affectedFunctions: Collection<PsiElement>) = true
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fun Int.foo(b: Int): Int {
|
||||
return this + b
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fun Int.<caret>foo(a: Int): Int {
|
||||
return this + a
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
class JavaSub extends testing.Middle {
|
||||
void foo(int receiver, int aa, String b) {
|
||||
}
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package testing
|
||||
|
||||
trait Trait {
|
||||
open fun Int.foo(aa: Int, b: String) {
|
||||
}
|
||||
}
|
||||
|
||||
open class Super {
|
||||
open fun Int.foo(aa: Int, b: String) {
|
||||
}
|
||||
}
|
||||
|
||||
open class Middle : Super(), Trait {
|
||||
override fun Int.foo(/*rename*/aa: Int, b: String) {
|
||||
}
|
||||
}
|
||||
|
||||
class Sub : Middle() {
|
||||
override fun Int.foo(aa: Int, b: String) {
|
||||
}
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
class JavaSub extends testing.Middle {
|
||||
void foo(int receiver, int a, String b) {
|
||||
}
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package testing
|
||||
|
||||
trait Trait {
|
||||
open fun Int.foo(a: Int, b: String) {
|
||||
}
|
||||
}
|
||||
|
||||
open class Super {
|
||||
open fun Int.foo(a: Int, b: String) {
|
||||
}
|
||||
}
|
||||
|
||||
open class Middle : Super(), Trait {
|
||||
override fun Int.foo(/*rename*/a: Int, b: String) {
|
||||
}
|
||||
}
|
||||
|
||||
class Sub : Middle() {
|
||||
override fun Int.foo(a: Int, b: String) {
|
||||
}
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"type": "MARKED_ELEMENT",
|
||||
"newName": "aa",
|
||||
"mainFile": "main.kt"
|
||||
}
|
||||
+6
@@ -918,6 +918,12 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase {
|
||||
doTest(changeInfo);
|
||||
}
|
||||
|
||||
public void testRenameExtensionParameter() throws Exception {
|
||||
JetChangeInfo changeInfo = getChangeInfo();
|
||||
changeInfo.getNewParameters()[1].setName("b");
|
||||
doTest(changeInfo);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
protected String getTestDataPath() {
|
||||
|
||||
@@ -83,6 +83,12 @@ public class RenameTestGenerated extends AbstractRenameTest {
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("automaticRenamerParameterInExtension/parameter.test")
|
||||
public void testAutomaticRenamerParameterInExtension_Parameter() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/rename/automaticRenamerParameterInExtension/parameter.test");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("defaultObject/defaultObject.test")
|
||||
public void testDefaultObject_DefaultObject() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/rename/defaultObject/defaultObject.test");
|
||||
|
||||
Reference in New Issue
Block a user