mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[kotlin] Move MoveSource to common refactoring module
^KTIJ-23273 Also renames it to `KotlinMoveSource` to make it similar to `KotlinMoveTarget` GitOrigin-RevId: 813909d52de9efd8359528cdc2a330af56c12381
This commit is contained in:
committed by
intellij-monorepo-bot
parent
a0137aca0c
commit
f8d79cb446
+6
-2
@@ -9,8 +9,12 @@ import com.intellij.util.containers.MultiMap
|
||||
import org.jetbrains.kotlin.idea.codeinsight.api.classic.intentions.SelfTargetingRangeIntention
|
||||
import org.jetbrains.kotlin.idea.refactoring.CompositeRefactoringRunner
|
||||
import org.jetbrains.kotlin.idea.refactoring.checkConflictsInteractively
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.KotlinMoveSource
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.KotlinMoveTarget
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.*
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveDeclarationsDelegate
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveDeclarationsDescriptor
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveKotlinDeclarationsProcessor
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.Mover
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
@@ -43,7 +47,7 @@ abstract class MoveMemberOutOfObjectIntention(textGetter: () -> String) : SelfTa
|
||||
if (element is KtClassOrObject || !element.isPrivate() && destination is KtFile) {
|
||||
val moveDescriptor = MoveDeclarationsDescriptor(
|
||||
project,
|
||||
MoveSource(element),
|
||||
KotlinMoveSource(element),
|
||||
KotlinMoveTarget.ExistingElement(destination),
|
||||
MoveDeclarationsDelegate.NestedClass()
|
||||
)
|
||||
|
||||
+6
-6
@@ -48,11 +48,11 @@ import org.jetbrains.kotlin.idea.core.ShortenReferences
|
||||
import org.jetbrains.kotlin.idea.core.util.runSynchronouslyWithProgress
|
||||
import org.jetbrains.kotlin.idea.quickfix.KotlinSingleIntentionActionFactory
|
||||
import org.jetbrains.kotlin.idea.refactoring.checkConflictsInteractively
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.KotlinMoveTarget
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.OuterInstanceReferenceUsageInfo
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.collectOuterInstanceReferences
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.*
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.traverseOuterInstanceReferences
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.*
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveDeclarationsDelegate
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveDeclarationsDescriptor
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveKotlinDeclarationsProcessor
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.Mover
|
||||
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
|
||||
import org.jetbrains.kotlin.idea.search.declarationsSearch.HierarchySearchRequest
|
||||
import org.jetbrains.kotlin.idea.search.declarationsSearch.searchOverriders
|
||||
@@ -382,7 +382,7 @@ class MoveMemberToCompanionObjectIntention : SelfTargetingRangeIntention<KtNamed
|
||||
}
|
||||
val moveDescriptor = MoveDeclarationsDescriptor(
|
||||
project,
|
||||
MoveSource(element),
|
||||
KotlinMoveSource(element),
|
||||
KotlinMoveTarget.Companion(containingClass),
|
||||
MoveDeclarationsDelegate.NestedClass(null, outerInstanceName),
|
||||
moveCallback = MoveCallback { runTemplateForInstanceParam(movedClass!!, nameSuggestions, editor) }
|
||||
|
||||
+6
-2
@@ -18,8 +18,12 @@ import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.shorten.runRefactoringAndKeepDelayedRequests
|
||||
import org.jetbrains.kotlin.idea.core.util.runSynchronouslyWithProgress
|
||||
import org.jetbrains.kotlin.idea.refactoring.cutPaste.MoveDeclarationsTransferableData.Companion.STUB_RENDERER
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.KotlinMoveSource
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.KotlinMoveTarget
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.*
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveDeclarationsDelegate
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveDeclarationsDescriptor
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveKotlinDeclarationsProcessor
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.Mover
|
||||
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
||||
import org.jetbrains.kotlin.idea.util.getSourceRoot
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
@@ -138,7 +142,7 @@ class MoveDeclarationsProcessor(
|
||||
|
||||
val declarationProcessor = MoveKotlinDeclarationsProcessor(
|
||||
MoveDeclarationsDescriptor(
|
||||
moveSource = MoveSource(stubDeclarations),
|
||||
moveSource = KotlinMoveSource(stubDeclarations),
|
||||
moveTarget = KotlinMoveTarget.ExistingElement(targetPsiFile),
|
||||
delegate = MoveDeclarationsDelegate.TopLevel,
|
||||
project = project
|
||||
|
||||
+1
-2
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.idea.refactoring.move.*
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveDeclarationsDelegate
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveDeclarationsDescriptor
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveKotlinDeclarationsProcessor
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveSource
|
||||
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
@@ -28,7 +27,7 @@ class KotlinChangePackageRefactoring(val file: KtFile) {
|
||||
val declarationProcessor = MoveKotlinDeclarationsProcessor(
|
||||
MoveDeclarationsDescriptor(
|
||||
project = project,
|
||||
moveSource = MoveSource(file),
|
||||
moveSource = KotlinMoveSource(file),
|
||||
moveTarget = KotlinMoveTarget.Directory(newFqName, file.containingDirectory!!.virtualFile),
|
||||
delegate = MoveDeclarationsDelegate.TopLevel,
|
||||
searchInCommentsAndStrings = KotlinRefactoringSettings.instance.MOVE_SEARCH_IN_COMMENTS,
|
||||
|
||||
+3
-2
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||
import org.jetbrains.kotlin.idea.codeinsight.api.classic.intentions.SelfTargetingRangeIntention
|
||||
import org.jetbrains.kotlin.idea.core.moveCaret
|
||||
import org.jetbrains.kotlin.idea.refactoring.createKotlinFile
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.KotlinMoveSource
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.KotlinMoveTarget
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.ui.MoveKotlinTopLevelDeclarationsDialog
|
||||
import org.jetbrains.kotlin.idea.refactoring.showWithTransaction
|
||||
@@ -105,9 +106,9 @@ class ExtractDeclarationFromCurrentFileIntention : SelfTargetingRangeIntention<K
|
||||
|
||||
val moveSource = element.tryGetExtraClassesToMove()
|
||||
?.let { additionalElements ->
|
||||
MoveSource(additionalElements.toMutableList().also { it.add(0, element) })
|
||||
KotlinMoveSource(additionalElements.toMutableList().also { it.add(0, element) })
|
||||
}
|
||||
?: MoveSource(element)
|
||||
?: KotlinMoveSource(element)
|
||||
|
||||
val moveCallBack = MoveCallback {
|
||||
val newFile = directory.findFile(targetFileName) as KtFile
|
||||
|
||||
+2
-17
@@ -86,24 +86,9 @@ interface Mover : (KtNamedDeclaration, KtElement) -> KtNamedDeclaration {
|
||||
}
|
||||
}
|
||||
|
||||
sealed class MoveSource {
|
||||
abstract val elementsToMove: Collection<KtNamedDeclaration>
|
||||
|
||||
class Elements(override val elementsToMove: Collection<KtNamedDeclaration>) : MoveSource()
|
||||
|
||||
class File(val file: KtFile) : MoveSource() {
|
||||
override val elementsToMove: Collection<KtNamedDeclaration>
|
||||
get() = file.declarations.filterIsInstance<KtNamedDeclaration>()
|
||||
}
|
||||
}
|
||||
|
||||
fun MoveSource(declaration: KtNamedDeclaration) = MoveSource.Elements(listOf(declaration))
|
||||
fun MoveSource(declarations: Collection<KtNamedDeclaration>) = MoveSource.Elements(declarations)
|
||||
fun MoveSource(file: KtFile) = MoveSource.File(file)
|
||||
|
||||
class MoveDeclarationsDescriptor @JvmOverloads constructor(
|
||||
val project: Project,
|
||||
val moveSource: MoveSource,
|
||||
val moveSource: KotlinMoveSource,
|
||||
val moveTarget: KotlinMoveTarget,
|
||||
val delegate: MoveDeclarationsDelegate,
|
||||
val searchInCommentsAndStrings: Boolean = true,
|
||||
@@ -147,7 +132,7 @@ class MoveKotlinDeclarationsProcessor(
|
||||
val project get() = descriptor.project
|
||||
|
||||
private var nonCodeUsages: Array<NonCodeUsageInfo>? = null
|
||||
private val moveEntireFile = descriptor.moveSource is MoveSource.File
|
||||
private val moveEntireFile = descriptor.moveSource is KotlinMoveSource.File
|
||||
private val elementsToMove = descriptor.moveSource.elementsToMove.filter { e ->
|
||||
e.parent != descriptor.moveTarget.getTargetPsiIfExists(e)
|
||||
}
|
||||
|
||||
+2
-1
@@ -9,6 +9,7 @@ import com.intellij.psi.util.PsiTreeUtil
|
||||
import com.intellij.refactoring.RefactoringBundle
|
||||
import com.intellij.refactoring.move.MoveCallback
|
||||
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.KotlinMoveSource
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.KotlinMoveTarget
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.*
|
||||
import org.jetbrains.kotlin.idea.statistics.KotlinMoveRefactoringFUSCollector.MoveRefactoringDestination
|
||||
@@ -57,7 +58,7 @@ internal class MoveKotlinNestedClassesModel(
|
||||
val delegate = MoveDeclarationsDelegate.NestedClass()
|
||||
val descriptor = MoveDeclarationsDescriptor(
|
||||
project,
|
||||
MoveSource(elementsToMove),
|
||||
KotlinMoveSource(elementsToMove),
|
||||
target,
|
||||
delegate,
|
||||
searchInCommentsAndStrings = false,
|
||||
|
||||
+2
-1
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
|
||||
import org.jetbrains.kotlin.idea.base.util.module
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||
import org.jetbrains.kotlin.idea.refactoring.createKotlinFile
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.KotlinMoveSource
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.KotlinMoveTarget
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.getTargetPackageFqName
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.*
|
||||
@@ -195,7 +196,7 @@ internal abstract class MoveKotlinNestedClassesToUpperLevelModel(
|
||||
val delegate = MoveDeclarationsDelegate.NestedClass(className, outerInstanceParameterName)
|
||||
val moveDescriptor = MoveDeclarationsDescriptor(
|
||||
project,
|
||||
MoveSource(innerClass),
|
||||
KotlinMoveSource(innerClass),
|
||||
moveTarget.first,
|
||||
delegate,
|
||||
searchInComments,
|
||||
|
||||
+1
-1
@@ -311,7 +311,7 @@ internal class MoveKotlinTopLevelDeclarationsModel(
|
||||
|
||||
val options = MoveDeclarationsDescriptor(
|
||||
project,
|
||||
MoveSource(elementsWithMPPIfNeeded),
|
||||
KotlinMoveSource(elementsWithMPPIfNeeded),
|
||||
target,
|
||||
MoveDeclarationsDelegate.TopLevel,
|
||||
isSearchInComments,
|
||||
|
||||
+1
-2
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.idea.refactoring.move.*
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveDeclarationsDelegate
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveDeclarationsDescriptor
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveKotlinDeclarationsProcessor
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveSource
|
||||
import org.jetbrains.kotlin.idea.roots.isOutsideKotlinAwareSourceRoot
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
|
||||
@@ -85,7 +84,7 @@ class MoveKotlinFileHandler : MoveFileHandler() {
|
||||
return MoveKotlinDeclarationsProcessor(
|
||||
MoveDeclarationsDescriptor(
|
||||
project = project,
|
||||
moveSource = MoveSource(psiFile),
|
||||
moveSource = KotlinMoveSource(psiFile),
|
||||
moveTarget = moveTarget,
|
||||
delegate = MoveDeclarationsDelegate.TopLevel,
|
||||
allElementsToMove = psiFile.allElementsToMove,
|
||||
|
||||
+2
-3
@@ -31,7 +31,6 @@ import org.jetbrains.kotlin.idea.refactoring.move.moveClassesOrPackages.KotlinAw
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveDeclarationsDelegate
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveDeclarationsDescriptor
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveKotlinDeclarationsProcessor
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveSource
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveMethod.MoveKotlinMethodProcessor
|
||||
import org.jetbrains.kotlin.idea.refactoring.runRefactoringTest
|
||||
import org.jetbrains.kotlin.idea.stubindex.KotlinFullClassNameIndex
|
||||
@@ -241,7 +240,7 @@ enum class MoveAction : AbstractMultifileRefactoringTest.RefactoringAction {
|
||||
)
|
||||
}
|
||||
|
||||
val descriptor = MoveDeclarationsDescriptor(project, MoveSource(elementsToMove), moveTarget, MoveDeclarationsDelegate.TopLevel)
|
||||
val descriptor = MoveDeclarationsDescriptor(project, KotlinMoveSource(elementsToMove), moveTarget, MoveDeclarationsDelegate.TopLevel)
|
||||
MoveKotlinDeclarationsProcessor(descriptor).run()
|
||||
}
|
||||
},
|
||||
@@ -303,7 +302,7 @@ enum class MoveAction : AbstractMultifileRefactoringTest.RefactoringAction {
|
||||
createKotlinFile(fileName, targetDir, targetPackageFqName.asString())
|
||||
}
|
||||
}
|
||||
val descriptor = MoveDeclarationsDescriptor(project, MoveSource(elementToMove), moveTarget, delegate)
|
||||
val descriptor = MoveDeclarationsDescriptor(project, KotlinMoveSource(elementToMove), moveTarget, delegate)
|
||||
MoveKotlinDeclarationsProcessor(descriptor).run()
|
||||
}
|
||||
},
|
||||
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
// 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 org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.psi.KtNamedDeclaration
|
||||
|
||||
fun KotlinMoveSource(declaration: KtNamedDeclaration) = KotlinMoveSource.Elements(listOf(declaration))
|
||||
|
||||
fun KotlinMoveSource(declarations: Collection<KtNamedDeclaration>) = KotlinMoveSource.Elements(declarations)
|
||||
|
||||
fun KotlinMoveSource(file: KtFile) = KotlinMoveSource.File(file)
|
||||
|
||||
sealed interface KotlinMoveSource {
|
||||
val elementsToMove: Collection<KtNamedDeclaration>
|
||||
|
||||
class Elements(override val elementsToMove: Collection<KtNamedDeclaration>) : KotlinMoveSource
|
||||
|
||||
class File(val file: KtFile) : KotlinMoveSource {
|
||||
override val elementsToMove: Collection<KtNamedDeclaration> get() = file.declarations.filterIsInstance<KtNamedDeclaration>()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user