diff --git a/ChangeLog.md b/ChangeLog.md index 8892401b392..3753c753990 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -273,6 +273,7 @@ Using 'this' as function argument in constructor of non-final class - [`KT-12971`](https://youtrack.jetbrains.com/issue/KT-12971) Push Down: Do not specifiy visibility on generated overriding members - [`KT-13124`](https://youtrack.jetbrains.com/issue/KT-13124) Pull Up: Skip super members without explicit declarations - [`KT-13032`](https://youtrack.jetbrains.com/issue/KT-13032) Rename: Support accessors with non-conventional names +- [`KT-13463`](https://youtrack.jetbrains.com/issue/KT-13463) Rename: Quote parameter name when necessary ##### New features diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinParameterProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinParameterProcessor.kt index e5ec68bd61f..9db69ac23a7 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinParameterProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinParameterProcessor.kt @@ -28,6 +28,7 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.VariableDescriptor import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor import org.jetbrains.kotlin.idea.core.getDeepestSuperDeclarations +import org.jetbrains.kotlin.idea.core.quoteIfNeeded import org.jetbrains.kotlin.idea.refactoring.canRefactor import org.jetbrains.kotlin.idea.refactoring.getAffectedCallables import org.jetbrains.kotlin.psi.KtCallableDeclaration @@ -84,7 +85,7 @@ class RenameKotlinParameterProcessor : RenameKotlinPsiProcessor() { else -> null } if (parameter == null) continue - allRenames[parameter] = newName + allRenames[parameter] = newName.quoteIfNeeded() } } diff --git a/idea/testData/refactoring/rename/automaticVariableRenamerWithQuotation/after/test/test.kt b/idea/testData/refactoring/rename/automaticVariableRenamerWithQuotation/after/test/test.kt index 4132eb16ac1..a7949174db3 100644 --- a/idea/testData/refactoring/rename/automaticVariableRenamerWithQuotation/after/test/test.kt +++ b/idea/testData/refactoring/rename/automaticVariableRenamerWithQuotation/after/test/test.kt @@ -3,7 +3,7 @@ class `A B` {} val THAT_A_B: `A B` = `A B`() val A_B: `A B` = `A B`() -fun localize(anA: `A B`, aPrefixedA: `A B`) { +fun localize(`anA BPar`: `A B`, `aPrefixedA BPar`: `A B`) { val `a BVal`: `A B` = `A B`() val `prefixedA BVal`: `A B` = `A B`() } \ No newline at end of file diff --git a/idea/testData/refactoring/rename/parameterWithQuotation/after/test/test.kt b/idea/testData/refactoring/rename/parameterWithQuotation/after/test/test.kt new file mode 100644 index 00000000000..11880339460 --- /dev/null +++ b/idea/testData/refactoring/rename/parameterWithQuotation/after/test/test.kt @@ -0,0 +1,5 @@ +package test + +fun foo(`22`: Int) { + +} \ No newline at end of file diff --git a/idea/testData/refactoring/rename/parameterWithQuotation/before/test/test.kt b/idea/testData/refactoring/rename/parameterWithQuotation/before/test/test.kt new file mode 100644 index 00000000000..385269097f8 --- /dev/null +++ b/idea/testData/refactoring/rename/parameterWithQuotation/before/test/test.kt @@ -0,0 +1,5 @@ +package test + +fun foo(/*rename*/a: Int) { + +} \ No newline at end of file diff --git a/idea/testData/refactoring/rename/parameterWithQuotation/parameterWithQuotation.test b/idea/testData/refactoring/rename/parameterWithQuotation/parameterWithQuotation.test new file mode 100644 index 00000000000..421928ca0bd --- /dev/null +++ b/idea/testData/refactoring/rename/parameterWithQuotation/parameterWithQuotation.test @@ -0,0 +1,6 @@ +{ + "type": "MARKED_ELEMENT", + "mainFile": "test/test.kt", + "newName": "22", + "withRuntime": "true" +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java index 4540a087fd6..8dccaa7ae50 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java @@ -245,6 +245,12 @@ public class RenameTestGenerated extends AbstractRenameTest { doTest(fileName); } + @TestMetadata("parameterWithQuotation/parameterWithQuotation.test") + public void testParameterWithQuotation_ParameterWithQuotation() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/rename/parameterWithQuotation/parameterWithQuotation.test"); + doTest(fileName); + } + @TestMetadata("primaryConstructorParameterRedeclaration/primaryConstructorParameterRedeclaration.test") public void testPrimaryConstructorParameterRedeclaration_PrimaryConstructorParameterRedeclaration() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/rename/primaryConstructorParameterRedeclaration/primaryConstructorParameterRedeclaration.test");