Move: Optimize imports after applying "Move declaration to separate file" intention
#KT-10174 Fixed
This commit is contained in:
@@ -41,6 +41,7 @@ Issues fixed:
|
||||
- [KT-11483](https://youtrack.jetbrains.com/issue/KT-11483) Pass implicit receiver as argument when moving member function to companion object
|
||||
- [KT-11512](https://youtrack.jetbrains.com/issue/KT-11512) Allow choosing any source root in "Move file to directory" intention
|
||||
- [KT-10950](https://youtrack.jetbrains.com/issue/KT-10950) Keep original file package name when moving top-level declarations to separate file (provided it's not ambiguous)
|
||||
- [KT-10174](https://youtrack.jetbrains.com/issue/KT-10174) Optimize imports after applying "Move declaration to separate file" intention
|
||||
|
||||
#### Debugger
|
||||
|
||||
|
||||
+6
-1
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations
|
||||
|
||||
import com.intellij.codeInsight.actions.OptimizeImportsProcessor
|
||||
import com.intellij.codeInsight.intention.LowPriorityAction
|
||||
import com.intellij.codeInsight.navigation.NavigationUtil
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
@@ -28,6 +29,7 @@ import org.jetbrains.kotlin.idea.intentions.SelfTargetingRangeIntention
|
||||
import org.jetbrains.kotlin.idea.core.moveCaret
|
||||
import org.jetbrains.kotlin.idea.refactoring.createKotlinFile
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.ui.MoveKotlinTopLevelDeclarationsDialog
|
||||
import org.jetbrains.kotlin.idea.refactoring.runRefactoringWithPostprocessing
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.psi.KtClass
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
@@ -103,6 +105,9 @@ class MoveDeclarationToSeparateFileIntention :
|
||||
FileEditorManager.getInstance(project).selectedTextEditor?.moveCaret(newDeclaration.startOffset + originalOffset)
|
||||
}
|
||||
)
|
||||
MoveKotlinDeclarationsProcessor(project, moveOptions).run()
|
||||
|
||||
val move = { MoveKotlinDeclarationsProcessor(project, moveOptions).run() }
|
||||
val optimizeImports = { OptimizeImportsProcessor(project, file).run() }
|
||||
move.runRefactoringWithPostprocessing(project, MoveKotlinDeclarationsProcessor.REFACTORING_ID, optimizeImports)
|
||||
}
|
||||
}
|
||||
+3
@@ -108,6 +108,7 @@ class MoveKotlinDeclarationsProcessor(
|
||||
val mover: Mover = Mover.Default) : BaseRefactoringProcessor(project) {
|
||||
companion object {
|
||||
private val REFACTORING_NAME = "Move declarations"
|
||||
val REFACTORING_ID = "move.kotlin.declarations"
|
||||
}
|
||||
|
||||
private var nonCodeUsages: Array<NonCodeUsageInfo>? = null
|
||||
@@ -119,6 +120,8 @@ class MoveKotlinDeclarationsProcessor(
|
||||
|
||||
private val resolutionFacade by lazy { KotlinCacheService.getInstance(project).getResolutionFacade(elementsToMove) }
|
||||
|
||||
override fun getRefactoringId() = REFACTORING_ID
|
||||
|
||||
override fun createUsageViewDescriptor(usages: Array<out UsageInfo>): UsageViewDescriptor {
|
||||
val targetContainerFqName = descriptor.moveTarget.targetContainerFqName?.let {
|
||||
if (it.isRoot) UsageViewBundle.message("default.package.presentable.name") else it.asString()
|
||||
|
||||
idea/testData/multiFileIntentions/moveDeclarationToSeparateFile/moveClassToFile/after/source/test.kt
Vendored
-2
@@ -1,7 +1,5 @@
|
||||
package p
|
||||
|
||||
import q.bar
|
||||
|
||||
fun foo() {
|
||||
|
||||
}
|
||||
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
package baz
|
||||
|
||||
class Baz {
|
||||
}
|
||||
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
package foo.bar
|
||||
|
||||
import baz.Baz
|
||||
|
||||
class Foo {
|
||||
val b = Baz()
|
||||
}
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
package foo.bar
|
||||
|
||||
class Bar
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
package baz
|
||||
|
||||
class Baz {
|
||||
}
|
||||
Vendored
+9
@@ -0,0 +1,9 @@
|
||||
package foo.bar
|
||||
|
||||
import baz.Baz
|
||||
|
||||
class <caret>Foo {
|
||||
val b = Baz()
|
||||
}
|
||||
|
||||
class Bar
|
||||
idea/testData/multiFileIntentions/moveDeclarationToSeparateFile/optimizeImports/optimizeImports.test
Vendored
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"mainFile": "test.kt",
|
||||
"intentionClass": "org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveDeclarationToSeparateFileIntention",
|
||||
"isApplicable": "true"
|
||||
}
|
||||
@@ -83,6 +83,12 @@ public class MultiFileIntentionTestGenerated extends AbstractMultiFileIntentionT
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("moveDeclarationToSeparateFile/optimizeImports/optimizeImports.test")
|
||||
public void testMoveDeclarationToSeparateFile_optimizeImports_OptimizeImports() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/multiFileIntentions/moveDeclarationToSeparateFile/optimizeImports/optimizeImports.test");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("moveFileToPackageMatchingDirectory/moveToDefaultDirectory/moveToDefaultDirectory.test")
|
||||
public void testMoveFileToPackageMatchingDirectory_moveToDefaultDirectory_MoveToDefaultDirectory() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/multiFileIntentions/moveFileToPackageMatchingDirectory/moveToDefaultDirectory/moveToDefaultDirectory.test");
|
||||
|
||||
Reference in New Issue
Block a user