Move Out Of Object Intention: Fix assertion error

#KT-22983 Fixed
This commit is contained in:
Alexey Sedunov
2018-03-21 16:01:49 +03:00
parent 14b1bdf627
commit b0a99c7945
@@ -21,6 +21,7 @@ import com.intellij.psi.PsiElement
import com.intellij.util.containers.MultiMap import com.intellij.util.containers.MultiMap
import org.jetbrains.kotlin.idea.refactoring.checkConflictsInteractively import org.jetbrains.kotlin.idea.refactoring.checkConflictsInteractively
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.* import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.*
import org.jetbrains.kotlin.idea.refactoring.runRefactoringWithPostprocessing
import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.idea.util.application.runWriteAction
import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtElement
@@ -47,14 +48,18 @@ abstract class MoveMemberOutOfObjectIntention(text: String) : SelfTargetingRange
} }
if (element is KtClassOrObject) { if (element is KtClassOrObject) {
val moveDescriptor = MoveDeclarationsDescriptor(project, val moveDescriptor = MoveDeclarationsDescriptor(
project,
listOf(element), listOf(element),
KotlinMoveTargetForExistingElement(destination), KotlinMoveTargetForExistingElement(destination),
MoveDeclarationsDelegate.NestedClass()) MoveDeclarationsDelegate.NestedClass()
)
val refactoring = { MoveKotlinDeclarationsProcessor(moveDescriptor).run() }
refactoring.runRefactoringWithPostprocessing(project, MoveKotlinDeclarationsProcessor.REFACTORING_ID) {
runWriteAction { runWriteAction {
MoveKotlinDeclarationsProcessor(moveDescriptor).run()
deleteClassOrObjectIfEmpty() deleteClassOrObjectIfEmpty()
} }
}
return return
} }