From 6c4b895f7267cf835c0c6df36166635afe364908 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Fri, 15 May 2015 15:22:27 +0300 Subject: [PATCH] Move: Do not search/process usages if package is not changed --- .../move/changePackage/KotlinChangePackageRefactoring.kt | 1 + .../move/moveFilesOrDirectories/MoveKotlinFileHandler.kt | 1 + .../MoveKotlinTopLevelDeclarationsProcessor.kt | 4 ++++ .../ui/MoveKotlinTopLevelDeclarationsDialog.java | 2 +- .../kotlin/idea/refactoring/move/AbstractJetMoveTest.kt | 2 +- 5 files changed, 8 insertions(+), 2 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/changePackage/KotlinChangePackageRefactoring.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/changePackage/KotlinChangePackageRefactoring.kt index 6c6fee53952..c232f7da5ec 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/changePackage/KotlinChangePackageRefactoring.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/changePackage/KotlinChangePackageRefactoring.kt @@ -42,6 +42,7 @@ public class KotlinChangePackageRefactoring(val file: JetFile) { val declarationProcessor = MoveKotlinTopLevelDeclarationsProcessor( project, MoveKotlinTopLevelDeclarationsOptions( + sourceFile = file, elementsToMove = file.getDeclarations().filterIsInstance(), moveTarget = object: KotlinMoveTarget { override val packageWrapper = PackageWrapper(file.getManager(), newFqName.asString()) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesOrDirectories/MoveKotlinFileHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesOrDirectories/MoveKotlinFileHandler.kt index db4fc06c539..42ee40a5fcf 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesOrDirectories/MoveKotlinFileHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesOrDirectories/MoveKotlinFileHandler.kt @@ -70,6 +70,7 @@ public class MoveKotlinFileHandler : MoveFileHandler() { val declarationMoveProcessor = MoveKotlinTopLevelDeclarationsProcessor( project, MoveKotlinTopLevelDeclarationsOptions( + sourceFile = psiFile, elementsToMove = psiFile.getDeclarations().filterIsInstance(), moveTarget = DeferredJetFileKotlinMoveTarget(project, packageNameInfo.newPackageName) { MoveFilesOrDirectoriesUtil.doMoveFile(psiFile, newParent) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveTopLevelDeclarations/MoveKotlinTopLevelDeclarationsProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveTopLevelDeclarations/MoveKotlinTopLevelDeclarationsProcessor.kt index 87cb3f66166..2800ebcbb7a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveTopLevelDeclarations/MoveKotlinTopLevelDeclarationsProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveTopLevelDeclarations/MoveKotlinTopLevelDeclarationsProcessor.kt @@ -80,6 +80,7 @@ trait Mover: (originalElement: JetNamedDeclaration, targetFile: JetFile) -> JetN } public class MoveKotlinTopLevelDeclarationsOptions( + val sourceFile: JetFile, val elementsToMove: Collection, val moveTarget: KotlinMoveTarget, val searchInCommentsAndStrings: Boolean = true, @@ -217,6 +218,9 @@ public class MoveKotlinTopLevelDeclarationsProcessor( } } + // No need to find and process usages if package is not changed + if (options.sourceFile.getPackageFqName().asString() == newPackageName) return UsageInfo.EMPTY_ARRAY + val usages = collectUsages() collectConflictsInUsages(usages) collectConflictsInDeclarations() diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveTopLevelDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveTopLevelDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java index 5d45ca0f82d..25ca1bfdee3 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveTopLevelDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveTopLevelDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java @@ -565,7 +565,7 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { } MoveKotlinTopLevelDeclarationsOptions options = new MoveKotlinTopLevelDeclarationsOptions( - elementsToMove, target, isSearchInComments(), isSearchInNonJavaFiles(), true, moveCallback + sourceFile, elementsToMove, target, isSearchInComments(), isSearchInNonJavaFiles(), true, moveCallback ); invokeRefactoring(new MoveKotlinTopLevelDeclarationsProcessor(myProject, options, Mover.Default.INSTANCE$)); } diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/AbstractJetMoveTest.kt b/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/AbstractJetMoveTest.kt index e02a42dded8..605a27c9c49 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/AbstractJetMoveTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/AbstractJetMoveTest.kt @@ -253,7 +253,7 @@ enum class MoveAction { JetFileKotlinMoveTarget(PsiManager.getInstance(project).findFile(rootDir.findFileByRelativePath(filePath)!!) as JetFile) } - val options = MoveKotlinTopLevelDeclarationsOptions(listOf(elementToMove), moveTarget) + val options = MoveKotlinTopLevelDeclarationsOptions(mainFile as JetFile, listOf(elementToMove), moveTarget) MoveKotlinTopLevelDeclarationsProcessor(mainFile.getProject(), options).run() } },