[kotlin] Move ConflictUsages to common refactoring module

^KTIJ-23273 Also makes class more readable.

GitOrigin-RevId: 1337ebdb7d4fa633a9305880ca13576268e7dafe
This commit is contained in:
Bart van Helvert
2023-04-28 13:11:13 +00:00
committed by intellij-monorepo-bot
parent 46f46a4c0a
commit 08e2b8f4d6
3 changed files with 30 additions and 22 deletions
@@ -13,6 +13,7 @@ import com.intellij.refactoring.move.moveFilesOrDirectories.MoveFilesOrDirectori
import com.intellij.usageView.UsageInfo
import com.intellij.usageView.UsageViewDescriptor
import com.intellij.util.containers.MultiMap
import org.jetbrains.kotlin.idea.refactoring.move.MoveConflictUsages
import org.jetbrains.kotlin.idea.refactoring.move.MoveConflictsFoundException
import org.jetbrains.kotlin.idea.refactoring.move.MoveFilesWithDeclarationsViewDescriptor
import org.jetbrains.kotlin.idea.refactoring.move.moveFilesOrDirectories.allElementsToMove
@@ -52,7 +53,7 @@ class KotlinAwareMoveFilesOrDirectoriesProcessor @JvmOverloads constructor(
}
override fun preprocessUsages(refUsages: Ref<Array<UsageInfo>>): Boolean {
val (conflicts, usages) = MoveToKotlinFileProcessor.preprocessConflictUsages(refUsages)
val (conflicts, usages) = MoveConflictUsages.preprocess(refUsages)
return showConflicts(conflicts, usages)
}
@@ -14,7 +14,7 @@ import com.intellij.usageView.UsageViewDescriptor
import com.intellij.util.containers.MultiMap
import com.intellij.util.text.UniqueNameGenerator
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
import org.jetbrains.kotlin.idea.refactoring.move.MoveConflictUsageInfo
import org.jetbrains.kotlin.idea.refactoring.move.MoveConflictUsages
import org.jetbrains.kotlin.idea.refactoring.move.MoveConflictsFoundException
import org.jetbrains.kotlin.idea.refactoring.move.MoveFilesWithDeclarationsViewDescriptor
import org.jetbrains.kotlin.psi.KtFile
@@ -46,7 +46,7 @@ class MoveToKotlinFileProcessor @JvmOverloads constructor(
}
override fun preprocessUsages(refUsages: Ref<Array<UsageInfo>>): Boolean {
val (conflicts, usages) = preprocessConflictUsages(refUsages)
val (conflicts, usages) = MoveConflictUsages.preprocess(refUsages)
return showConflicts(conflicts, usages)
}
@@ -71,23 +71,4 @@ class MoveToKotlinFileProcessor @JvmOverloads constructor(
super.performRefactoring(usages)
sourceFile.name = targetFileName
}
companion object {
data class ConflictUsages(val conflicts: MultiMap<PsiElement, String>, @Suppress("ArrayInDataClass") val usages: Array<UsageInfo>)
fun preprocessConflictUsages(refUsages: Ref<Array<UsageInfo>>): ConflictUsages {
val usages: Array<UsageInfo> = refUsages.get()
val (conflictUsages, usagesToProcess) = usages.partition { it is MoveConflictUsageInfo }
val conflicts = MultiMap<PsiElement, String>()
for (conflictUsage in conflictUsages) {
conflicts.putValues(conflictUsage.element, (conflictUsage as MoveConflictUsageInfo).messages)
}
refUsages.set(usagesToProcess.toTypedArray())
return ConflictUsages(conflicts, usages)
}
}
}
@@ -0,0 +1,26 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.kotlin.idea.refactoring.move
import com.intellij.openapi.util.Ref
import com.intellij.psi.PsiElement
import com.intellij.usageView.UsageInfo
import com.intellij.util.containers.MultiMap
data class MoveConflictUsages(val conflicts: MultiMap<PsiElement, String>, val usages: Array<UsageInfo>) {
companion object {
fun preprocess(refUsages: Ref<Array<UsageInfo>>): Pair<MultiMap<PsiElement, String>, Array<UsageInfo>> {
val usages: Array<UsageInfo> = refUsages.get()
val (conflictUsages, usagesToProcess) = usages.partition { it is MoveConflictUsageInfo }
val conflicts = MultiMap<PsiElement, String>()
for (conflictUsage in conflictUsages) {
conflicts.putValues(conflictUsage.element, (conflictUsage as MoveConflictUsageInfo).messages)
}
refUsages.set(usagesToProcess.toTypedArray())
return Pair(conflicts, usages)
}
}
}