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,13 +48,17 @@ abstract class MoveMemberOutOfObjectIntention(text: String) : SelfTargetingRange
} }
if (element is KtClassOrObject) { if (element is KtClassOrObject) {
val moveDescriptor = MoveDeclarationsDescriptor(project, val moveDescriptor = MoveDeclarationsDescriptor(
listOf(element), project,
KotlinMoveTargetForExistingElement(destination), listOf(element),
MoveDeclarationsDelegate.NestedClass()) KotlinMoveTargetForExistingElement(destination),
runWriteAction { MoveDeclarationsDelegate.NestedClass()
MoveKotlinDeclarationsProcessor(moveDescriptor).run() )
deleteClassOrObjectIfEmpty() val refactoring = { MoveKotlinDeclarationsProcessor(moveDescriptor).run() }
refactoring.runRefactoringWithPostprocessing(project, MoveKotlinDeclarationsProcessor.REFACTORING_ID) {
runWriteAction {
deleteClassOrObjectIfEmpty()
}
} }
return return
} }