diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/KotlinAwareMoveFilesOrDirectoriesProcessor.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/KotlinAwareMoveFilesOrDirectoriesProcessor.kt index 3978952ce6f5..2cd4305d0d59 100644 --- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/KotlinAwareMoveFilesOrDirectoriesProcessor.kt +++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/KotlinAwareMoveFilesOrDirectoriesProcessor.kt @@ -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>): Boolean { - val (conflicts, usages) = MoveToKotlinFileProcessor.preprocessConflictUsages(refUsages) + val (conflicts, usages) = MoveConflictUsages.preprocess(refUsages) return showConflicts(conflicts, usages) } diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveToKotlinFileProcessor.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveToKotlinFileProcessor.kt index 592d0bf359f4..1dcceb455c3a 100644 --- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveToKotlinFileProcessor.kt +++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveToKotlinFileProcessor.kt @@ -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>): 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, @Suppress("ArrayInDataClass") val usages: Array) - - fun preprocessConflictUsages(refUsages: Ref>): ConflictUsages { - val usages: Array = refUsages.get() - - val (conflictUsages, usagesToProcess) = usages.partition { it is MoveConflictUsageInfo } - - val conflicts = MultiMap() - for (conflictUsage in conflictUsages) { - conflicts.putValues(conflictUsage.element, (conflictUsage as MoveConflictUsageInfo).messages) - } - - refUsages.set(usagesToProcess.toTypedArray()) - - return ConflictUsages(conflicts, usages) - } - } } diff --git a/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/move/MoveConflictUsages.kt b/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/move/MoveConflictUsages.kt new file mode 100644 index 000000000000..40ec1f51c23b --- /dev/null +++ b/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/move/MoveConflictUsages.kt @@ -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, val usages: Array) { + companion object { + fun preprocess(refUsages: Ref>): Pair, Array> { + val usages: Array = refUsages.get() + + val (conflictUsages, usagesToProcess) = usages.partition { it is MoveConflictUsageInfo } + + val conflicts = MultiMap() + for (conflictUsage in conflictUsages) { + conflicts.putValues(conflictUsage.element, (conflictUsage as MoveConflictUsageInfo).messages) + } + + refUsages.set(usagesToProcess.toTypedArray()) + + return Pair(conflicts, usages) + } + } +} \ No newline at end of file