From 1d59c7e0e442f0435782816fbdb4fb855091ad89 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Thu, 4 Jun 2015 14:20:04 +0300 Subject: [PATCH] Change Signature: Substitute new function name into generated this-expressions #KT-7920 Fixed --- .../changeSignature/usages/JetParameterUsage.kt | 2 +- .../ConvertToExtensionAndRenameAfter.kt | 5 +++++ .../ConvertToExtensionAndRenameBefore.kt | 5 +++++ .../changeSignature/JetChangeSignatureTest.java | 10 +++++++++- 4 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 idea/testData/refactoring/changeSignature/ConvertToExtensionAndRenameAfter.kt create mode 100644 idea/testData/refactoring/changeSignature/ConvertToExtensionAndRenameBefore.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/JetParameterUsage.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/JetParameterUsage.kt index cb98aea4bbb..a92346a0e2a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/JetParameterUsage.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/JetParameterUsage.kt @@ -56,7 +56,7 @@ public class JetParameterUsage( override fun getReplacementText(changeInfo: JetChangeInfo): String = if (changeInfo.receiverParameterInfo != parameterInfo) { parameterInfo.getInheritedName(containingFunction) - } else "this@${containingFunction.getOriginalFunctionDescriptor().getName().asString()}" + } else "this@${changeInfo.getNewName()}" } public class JetNonQualifiedOuterThisUsage( diff --git a/idea/testData/refactoring/changeSignature/ConvertToExtensionAndRenameAfter.kt b/idea/testData/refactoring/changeSignature/ConvertToExtensionAndRenameAfter.kt new file mode 100644 index 00000000000..fac6f1f9597 --- /dev/null +++ b/idea/testData/refactoring/changeSignature/ConvertToExtensionAndRenameAfter.kt @@ -0,0 +1,5 @@ +class C { + fun String.foo1() { + print(this) + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/ConvertToExtensionAndRenameBefore.kt b/idea/testData/refactoring/changeSignature/ConvertToExtensionAndRenameBefore.kt new file mode 100644 index 00000000000..9b4d27556b7 --- /dev/null +++ b/idea/testData/refactoring/changeSignature/ConvertToExtensionAndRenameBefore.kt @@ -0,0 +1,5 @@ +class C { + fun foo(p: String) { + print(p) + } +} \ 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 bf024a24092..d5df2ec09de 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureTest.java @@ -772,7 +772,8 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase { JetPsiFactory psiFactory = new JetPsiFactory(getProject()); changeInfo.addParameter( new JetParameterInfo(changeInfo.getMethodDescriptor().getBaseDescriptor(), - -1, "s", KotlinBuiltIns.getInstance().getStringType(), null, psiFactory.createExpression("\"foo\""), JetValVar.None, null)); + -1, "s", KotlinBuiltIns.getInstance().getStringType(), null, psiFactory.createExpression("\"foo\""), + JetValVar.None, null)); doTest(changeInfo); } @@ -910,6 +911,13 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase { doTest(changeInfo); } + public void testConvertToExtensionAndRename() throws Exception { + JetChangeInfo changeInfo = getChangeInfo(); + changeInfo.setReceiverParameterInfo(changeInfo.getNewParameters()[0]); + changeInfo.setNewName("foo1"); + doTest(changeInfo); + } + @NotNull @Override protected String getTestDataPath() {