Move: Drop obsolete code

This commit is contained in:
Alexey Sedunov
2017-04-06 18:24:48 +03:00
parent f5d106a68f
commit 22a56a81b9
2 changed files with 10 additions and 23 deletions
@@ -43,7 +43,6 @@ class KotlinMoveDirectoryWithClassesHelper : MoveDirectoryWithClassesHelper() {
private class MoveContext( private class MoveContext(
val newParent: PsiDirectory, val newParent: PsiDirectory,
val internalUsages: MoveKotlinFileHandler.InternalUsagesWrapper,
val moveDeclarationsProcessor: MoveKotlinDeclarationsProcessor? val moveDeclarationsProcessor: MoveKotlinDeclarationsProcessor?
) )
@@ -52,11 +51,10 @@ class KotlinMoveDirectoryWithClassesHelper : MoveDirectoryWithClassesHelper() {
private var fileToMoveContext: MutableMap<PsiFile, MoveContext>? = null private var fileToMoveContext: MutableMap<PsiFile, MoveContext>? = null
private fun getOrCreateMoveContextMap(): MutableMap<PsiFile, MoveContext> { private fun getOrCreateMoveContextMap(): MutableMap<PsiFile, MoveContext> {
return fileToMoveContext return fileToMoveContext ?: HashMap<PsiFile, MoveContext>().apply {
?: HashMap<PsiFile, MoveContext>().apply { fileToMoveContext = this
fileToMoveContext = this
invokeOnceOnCommandFinish { fileToMoveContext = null } invokeOnceOnCommandFinish { fileToMoveContext = null }
} }
} }
override fun findUsages( override fun findUsages(
@@ -87,9 +85,7 @@ class KotlinMoveDirectoryWithClassesHelper : MoveDirectoryWithClassesHelper() {
val moveDeclarationsProcessor = fileHandler.initMoveProcessor(file, moveDestination) val moveDeclarationsProcessor = fileHandler.initMoveProcessor(file, moveDestination)
val moveContextMap = getOrCreateMoveContextMap() val moveContextMap = getOrCreateMoveContextMap()
moveContextMap[file] = MoveContext(moveDestination, moveContextMap[file] = MoveContext(moveDestination, moveDeclarationsProcessor)
fileHandler.findInternalUsages(file, moveDestination),
moveDeclarationsProcessor)
if (moveDeclarationsProcessor != null) { if (moveDeclarationsProcessor != null) {
moveDestination.getPackage()?.let { newPackage -> moveDestination.getPackage()?.let { newPackage ->
file.packageDirective?.fqName = FqName(newPackage.qualifiedName).quoteIfNeeded() file.packageDirective?.fqName = FqName(newPackage.qualifiedName).quoteIfNeeded()
@@ -105,7 +101,7 @@ class KotlinMoveDirectoryWithClassesHelper : MoveDirectoryWithClassesHelper() {
override fun postProcessUsages(usages: Array<out UsageInfo>, newDirMapper: Function<PsiDirectory, PsiDirectory>) { override fun postProcessUsages(usages: Array<out UsageInfo>, newDirMapper: Function<PsiDirectory, PsiDirectory>) {
val fileToMoveContext = fileToMoveContext ?: return val fileToMoveContext = fileToMoveContext ?: return
try { try {
val usagesToProcessAfterMove = ArrayList<FileUsagesWrapper>() val usagesToProcess = ArrayList<FileUsagesWrapper>()
usages usages
.filterIsInstance<FileUsagesWrapper>() .filterIsInstance<FileUsagesWrapper>()
.forEach body@ { .forEach body@ {
@@ -117,10 +113,9 @@ class KotlinMoveDirectoryWithClassesHelper : MoveDirectoryWithClassesHelper() {
val moveDeclarationsProcessor = moveContext.moveDeclarationsProcessor ?: return@body val moveDeclarationsProcessor = moveContext.moveDeclarationsProcessor ?: return@body
val movedFile = moveContext.newParent.findFile(file.name) ?: return@body val movedFile = moveContext.newParent.findFile(file.name) ?: return@body
usagesToProcessAfterMove += usagesToProcess += FileUsagesWrapper(movedFile, it.usages, moveDeclarationsProcessor)
FileUsagesWrapper(movedFile, it.usages + moveContext.internalUsages, moveDeclarationsProcessor)
} }
usagesToProcessAfterMove.forEach { fileHandler.retargetUsages(it.usages, it.moveDeclarationsProcessor!!) } usagesToProcess.forEach { fileHandler.retargetUsages(it.usages, it.moveDeclarationsProcessor!!) }
} }
finally { finally {
this.fileToMoveContext = null this.fileToMoveContext = null
@@ -32,16 +32,15 @@ import org.jetbrains.kotlin.idea.core.getPackage
import org.jetbrains.kotlin.idea.core.packageMatchesDirectory import org.jetbrains.kotlin.idea.core.packageMatchesDirectory
import org.jetbrains.kotlin.idea.core.quoteIfNeeded import org.jetbrains.kotlin.idea.core.quoteIfNeeded
import org.jetbrains.kotlin.idea.refactoring.hasIdentifiersOnly import org.jetbrains.kotlin.idea.refactoring.hasIdentifiersOnly
import org.jetbrains.kotlin.idea.refactoring.move.* import org.jetbrains.kotlin.idea.refactoring.move.ContainerChangeInfo
import org.jetbrains.kotlin.idea.refactoring.move.ContainerInfo
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.* import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.*
import org.jetbrains.kotlin.idea.refactoring.move.updatePackageDirective
import org.jetbrains.kotlin.name.FqNameUnsafe import org.jetbrains.kotlin.name.FqNameUnsafe
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtNamedDeclaration import org.jetbrains.kotlin.psi.KtNamedDeclaration
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
class MoveKotlinFileHandler : MoveFileHandler() { class MoveKotlinFileHandler : MoveFileHandler() {
internal class InternalUsagesWrapper(file: KtFile, val usages: List<UsageInfo>) : UsageInfo(file)
internal class FileInfo(file: KtFile) : UsageInfo(file) internal class FileInfo(file: KtFile) : UsageInfo(file)
// This is special 'PsiElement' whose purpose is to wrap MoveKotlinTopLevelDeclarationsProcessor // This is special 'PsiElement' whose purpose is to wrap MoveKotlinTopLevelDeclarationsProcessor
@@ -107,12 +106,6 @@ class MoveKotlinFileHandler : MoveFileHandler() {
return !JavaProjectRootsUtil.isOutsideJavaSourceRoot(element) return !JavaProjectRootsUtil.isOutsideJavaSourceRoot(element)
} }
internal fun findInternalUsages(file: KtFile, newParent: PsiDirectory): InternalUsagesWrapper {
val packageNameInfo = file.getPackageNameInfo(newParent, false)
val usages = packageNameInfo?.let { file.getInternalReferencesToUpdateOnPackageNameChange(it) } ?: emptyList()
return InternalUsagesWrapper(file, usages)
}
override fun findUsages( override fun findUsages(
psiFile: PsiFile, psiFile: PsiFile,
newParent: PsiDirectory?, newParent: PsiDirectory?,
@@ -149,7 +142,6 @@ class MoveKotlinFileHandler : MoveFileHandler() {
} }
fun retargetUsages(usageInfos: List<UsageInfo>?, moveDeclarationsProcessor: MoveKotlinDeclarationsProcessor) { fun retargetUsages(usageInfos: List<UsageInfo>?, moveDeclarationsProcessor: MoveKotlinDeclarationsProcessor) {
postProcessMoveUsages(usageInfos?.firstIsInstanceOrNull<InternalUsagesWrapper>()?.usages ?: emptyList())
moveDeclarationsProcessor.project.runRefactoringAndKeepDelayedRequests { moveDeclarationsProcessor.project.runRefactoringAndKeepDelayedRequests {
usageInfos?.let { moveDeclarationsProcessor.execute(it) } usageInfos?.let { moveDeclarationsProcessor.execute(it) }
} }