Move: Do not search/process usages if package is not changed

This commit is contained in:
Alexey Sedunov
2015-05-15 15:22:27 +03:00
parent da6b8b75ea
commit 6c4b895f72
5 changed files with 8 additions and 2 deletions
@@ -42,6 +42,7 @@ public class KotlinChangePackageRefactoring(val file: JetFile) {
val declarationProcessor = MoveKotlinTopLevelDeclarationsProcessor(
project,
MoveKotlinTopLevelDeclarationsOptions(
sourceFile = file,
elementsToMove = file.getDeclarations().filterIsInstance<JetNamedDeclaration>(),
moveTarget = object: KotlinMoveTarget {
override val packageWrapper = PackageWrapper(file.getManager(), newFqName.asString())
@@ -70,6 +70,7 @@ public class MoveKotlinFileHandler : MoveFileHandler() {
val declarationMoveProcessor = MoveKotlinTopLevelDeclarationsProcessor(
project,
MoveKotlinTopLevelDeclarationsOptions(
sourceFile = psiFile,
elementsToMove = psiFile.getDeclarations().filterIsInstance<JetNamedDeclaration>(),
moveTarget = DeferredJetFileKotlinMoveTarget(project, packageNameInfo.newPackageName) {
MoveFilesOrDirectoriesUtil.doMoveFile(psiFile, newParent)
@@ -80,6 +80,7 @@ trait Mover: (originalElement: JetNamedDeclaration, targetFile: JetFile) -> JetN
}
public class MoveKotlinTopLevelDeclarationsOptions(
val sourceFile: JetFile,
val elementsToMove: Collection<JetNamedDeclaration>,
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()
@@ -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$));
}
@@ -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()
}
},