From d06f23f2ba6837675d28df0c8806d8f212f6aba3 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Wed, 21 Feb 2018 14:23:07 +0300 Subject: [PATCH] Move: Fix replacement of non-code usages with backquoted names #KT-13986 Fixed --- .../moveDeclarations/MoveKotlinDeclarationsProcessor.kt | 6 ++++-- .../after/code/`in`/comments2/MyTest.kt | 3 +++ .../misc/nonCodeUsagesWithQuotedName/after/test.kt | 5 +++++ .../misc/nonCodeUsagesWithQuotedName/before/test.kt | 7 +++++++ .../nonCodeUsageWithQuotedName.test | 5 +++++ .../kotlin/idea/refactoring/move/MoveTestGenerated.java | 6 ++++++ 6 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/nonCodeUsagesWithQuotedName/after/code/`in`/comments2/MyTest.kt create mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/nonCodeUsagesWithQuotedName/after/test.kt create mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/nonCodeUsagesWithQuotedName/before/test.kt create mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/nonCodeUsagesWithQuotedName/nonCodeUsageWithQuotedName.test diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsProcessor.kt index 40018e6f836..41924de66cf 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsProcessor.kt @@ -49,6 +49,7 @@ import org.jetbrains.kotlin.asJava.namedUnwrappedElement import org.jetbrains.kotlin.asJava.toLightElements import org.jetbrains.kotlin.idea.codeInsight.shorten.addToBeShortenedDescendantsToWaitingSet import org.jetbrains.kotlin.idea.core.deleteSingle +import org.jetbrains.kotlin.idea.core.quoteIfNeeded import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName import org.jetbrains.kotlin.idea.refactoring.move.* import org.jetbrains.kotlin.idea.refactoring.move.moveFilesOrDirectories.MoveKotlinClassHandler @@ -56,6 +57,7 @@ import org.jetbrains.kotlin.idea.search.projectScope import org.jetbrains.kotlin.idea.search.restrictByFileType import org.jetbrains.kotlin.idea.util.projectStructure.module import org.jetbrains.kotlin.lexer.KtTokens +import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject import org.jetbrains.kotlin.psi.psiUtil.getElementTextWithContext @@ -198,14 +200,14 @@ class MoveKotlinDeclarationsProcessor( else null } - val name = lightElement.getKotlinFqName()?.asString() + val name = lightElement.getKotlinFqName()?.quoteIfNeeded()?.asString() if (name != null) { TextOccurrencesUtil.findNonCodeUsages( lightElement, name, descriptor.searchInCommentsAndStrings, descriptor.searchInNonCode, - newFqName, + FqName(newFqName).quoteIfNeeded().asString(), results ) } diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/nonCodeUsagesWithQuotedName/after/code/`in`/comments2/MyTest.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/nonCodeUsagesWithQuotedName/after/code/`in`/comments2/MyTest.kt new file mode 100644 index 00000000000..a9776a8c1f1 --- /dev/null +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/nonCodeUsagesWithQuotedName/after/code/`in`/comments2/MyTest.kt @@ -0,0 +1,3 @@ +package code.`in`.comments2 + +class MyTest \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/nonCodeUsagesWithQuotedName/after/test.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/nonCodeUsagesWithQuotedName/after/test.kt new file mode 100644 index 00000000000..113f1f1726c --- /dev/null +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/nonCodeUsagesWithQuotedName/after/test.kt @@ -0,0 +1,5 @@ +package code.`in`.comments + +fun main(args: Array) { +// code.`in`.comments2.MyTest +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/nonCodeUsagesWithQuotedName/before/test.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/nonCodeUsagesWithQuotedName/before/test.kt new file mode 100644 index 00000000000..2e8ab641db1 --- /dev/null +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/nonCodeUsagesWithQuotedName/before/test.kt @@ -0,0 +1,7 @@ +package code.`in`.comments + +class MyTest + +fun main(args: Array) { +// code.`in`.comments.MyTest +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/nonCodeUsagesWithQuotedName/nonCodeUsageWithQuotedName.test b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/nonCodeUsagesWithQuotedName/nonCodeUsageWithQuotedName.test new file mode 100644 index 00000000000..cda7410f9b4 --- /dev/null +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/nonCodeUsagesWithQuotedName/nonCodeUsageWithQuotedName.test @@ -0,0 +1,5 @@ +{ + "mainFile": "test.kt", + "type": "MOVE_KOTLIN_TOP_LEVEL_DECLARATIONS", + "targetPackage": "code.`in`.comments2" +} diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveTestGenerated.java index 7ff6e34d60a..e7c696837ef 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveTestGenerated.java @@ -661,6 +661,12 @@ public class MoveTestGenerated extends AbstractMoveTest { doTest(fileName); } + @TestMetadata("kotlin/moveTopLevelDeclarations/misc/nonCodeUsagesWithQuotedName/nonCodeUsageWithQuotedName.test") + public void testKotlin_moveTopLevelDeclarations_misc_nonCodeUsagesWithQuotedName_NonCodeUsageWithQuotedName() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/nonCodeUsagesWithQuotedName/nonCodeUsageWithQuotedName.test"); + doTest(fileName); + } + @TestMetadata("kotlin/moveTopLevelDeclarations/misc/protectedConstructorRefInSuperListEntry/protectedConstructorRefInSuperListEntry.test") public void testKotlin_moveTopLevelDeclarations_misc_protectedConstructorRefInSuperListEntry_ProtectedConstructorRefInSuperListEntry() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/protectedConstructorRefInSuperListEntry/protectedConstructorRefInSuperListEntry.test");