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);
|
processParameterListWithStructuralChanges(changeInfo, element, parameterList, psiFactory);
|
||||||
}
|
}
|
||||||
else if (parameterList != null) {
|
else if (parameterList != null) {
|
||||||
int paramIndex = 0;
|
int paramIndex = originalFunctionDescriptor.getExtensionReceiverParameter() != null ? 1 : 0;
|
||||||
|
|
||||||
for (JetParameter parameter : parameterList.getParameters()) {
|
for (JetParameter parameter : parameterList.getParameters()) {
|
||||||
JetParameterInfo parameterInfo = changeInfo.getNewParameters()[paramIndex];
|
JetParameterInfo parameterInfo = changeInfo.getNewParameters()[paramIndex];
|
||||||
|
|||||||
+2
-1
@@ -51,7 +51,8 @@ public class RenameKotlinParameterProcessor : RenameKotlinPsiProcessor() {
|
|||||||
|
|
||||||
val changeSignatureConfiguration = object : JetChangeSignatureConfiguration {
|
val changeSignatureConfiguration = object : JetChangeSignatureConfiguration {
|
||||||
override fun configure(originalDescriptor: JetMethodDescriptor, bindingContext: BindingContext): JetMethodDescriptor {
|
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
|
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);
|
doTest(changeInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testRenameExtensionParameter() throws Exception {
|
||||||
|
JetChangeInfo changeInfo = getChangeInfo();
|
||||||
|
changeInfo.getNewParameters()[1].setName("b");
|
||||||
|
doTest(changeInfo);
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
protected String getTestDataPath() {
|
protected String getTestDataPath() {
|
||||||
|
|||||||
@@ -83,6 +83,12 @@ public class RenameTestGenerated extends AbstractRenameTest {
|
|||||||
doTest(fileName);
|
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")
|
@TestMetadata("defaultObject/defaultObject.test")
|
||||||
public void testDefaultObject_DefaultObject() throws Exception {
|
public void testDefaultObject_DefaultObject() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/rename/defaultObject/defaultObject.test");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/rename/defaultObject/defaultObject.test");
|
||||||
|
|||||||
Reference in New Issue
Block a user