diff --git a/ChangeLog.md b/ChangeLog.md index 9db20430c30..abc73a38f4f 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -276,6 +276,7 @@ Using 'this' as function argument in constructor of non-final class - [`KT-13463`](https://youtrack.jetbrains.com/issue/KT-13463) Rename: Quote parameter name when necessary - [`KT-13476`](https://youtrack.jetbrains.com/issue/KT-13476) Rename: Fix parameter rename when new name matches call selector - [`KT-9381`](https://youtrack.jetbrains.com/issue/KT-9381) Rename: Do not search for component convention usages +- [`KT-13488`](https://youtrack.jetbrains.com/issue/KT-13488) Rename: Support rename of packages with non-standard quoted names ##### New features diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index 74481338492..4fc43eb4805 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml @@ -450,6 +450,7 @@ + diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/KotlinDirectoryAsPackageRenameHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/KotlinDirectoryAsPackageRenameHandler.kt new file mode 100644 index 00000000000..387fe006827 --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/KotlinDirectoryAsPackageRenameHandler.kt @@ -0,0 +1,26 @@ +/* + * Copyright 2010-2016 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.idea.refactoring.rename + +import com.intellij.openapi.project.Project +import com.intellij.refactoring.rename.DirectoryAsPackageRenameHandler +import org.jetbrains.kotlin.idea.core.KotlinNameSuggester +import org.jetbrains.kotlin.idea.core.quoteIfNeeded + +class KotlinDirectoryAsPackageRenameHandler : DirectoryAsPackageRenameHandler() { + override fun isIdentifier(name: String, project: Project) = KotlinNameSuggester.isIdentifier(name.quoteIfNeeded()) +} \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renamePackageWithQuotation/after/test/break/test.kt b/idea/testData/refactoring/rename/renamePackageWithQuotation/after/test/break/test.kt new file mode 100644 index 00000000000..1c4ed985e1a --- /dev/null +++ b/idea/testData/refactoring/rename/renamePackageWithQuotation/after/test/break/test.kt @@ -0,0 +1,3 @@ +package test.`for` + +class Test \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renamePackageWithQuotation/before/test/break/test.kt b/idea/testData/refactoring/rename/renamePackageWithQuotation/before/test/break/test.kt new file mode 100644 index 00000000000..251167a7047 --- /dev/null +++ b/idea/testData/refactoring/rename/renamePackageWithQuotation/before/test/break/test.kt @@ -0,0 +1,3 @@ +package test./*rename*/`for` + +class Test \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renamePackageWithQuotation/renamePackageWithQuotation.test b/idea/testData/refactoring/rename/renamePackageWithQuotation/renamePackageWithQuotation.test new file mode 100644 index 00000000000..b9666fff226 --- /dev/null +++ b/idea/testData/refactoring/rename/renamePackageWithQuotation/renamePackageWithQuotation.test @@ -0,0 +1,7 @@ +{ + "type": "MARKED_ELEMENT", + "mainFile": "test/break/test.kt", + "newName": "for", + "withRuntime": "true", + "byRef": "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 48968ccf46a..8d4eeb1168a 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java @@ -995,6 +995,12 @@ public class RenameTestGenerated extends AbstractRenameTest { doTest(fileName); } + @TestMetadata("renamePackageWithQuotation/renamePackageWithQuotation.test") + public void testRenamePackageWithQuotation_RenamePackageWithQuotation() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/rename/renamePackageWithQuotation/renamePackageWithQuotation.test"); + doTest(fileName); + } + @TestMetadata("renamePlus/plus.test") public void testRenamePlus_Plus() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/rename/renamePlus/plus.test");