#KT-29622: Support sealed classes with nested impls move
This commit is contained in:
committed by
Igor Yakovlev
parent
a8e0dfabc7
commit
a16551557c
+8
-1
@@ -22,14 +22,18 @@ import org.jetbrains.kotlin.idea.core.moveCaret
|
|||||||
import org.jetbrains.kotlin.idea.intentions.SelfTargetingRangeIntention
|
import org.jetbrains.kotlin.idea.intentions.SelfTargetingRangeIntention
|
||||||
import org.jetbrains.kotlin.idea.refactoring.createKotlinFile
|
import org.jetbrains.kotlin.idea.refactoring.createKotlinFile
|
||||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.ui.MoveKotlinTopLevelDeclarationsDialog
|
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.ui.MoveKotlinTopLevelDeclarationsDialog
|
||||||
|
import org.jetbrains.kotlin.ir.util.startOffset
|
||||||
|
import org.jetbrains.kotlin.js.resolve.diagnostics.findPsi
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.psi.KtClass
|
import org.jetbrains.kotlin.psi.KtClass
|
||||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.psi.KtObjectDeclaration
|
import org.jetbrains.kotlin.psi.KtObjectDeclaration
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||||
|
import org.jetbrains.kotlin.psi.psiUtil.isAncestor
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassNotAny
|
import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassNotAny
|
||||||
|
import org.jetbrains.kotlin.resolve.source.getPsi
|
||||||
|
|
||||||
private const val TIMEOUT_FOR_IMPORT_OPTIMIZING_MS: Long = 700L
|
private const val TIMEOUT_FOR_IMPORT_OPTIMIZING_MS: Long = 700L
|
||||||
|
|
||||||
@@ -43,7 +47,10 @@ class ExtractDeclarationFromCurrentFileIntention :
|
|||||||
if (element.containingKtFile.declarations.size == 1) return null
|
if (element.containingKtFile.declarations.size == 1) return null
|
||||||
|
|
||||||
val descriptor = element.resolveToDescriptorIfAny() ?: return null
|
val descriptor = element.resolveToDescriptorIfAny() ?: return null
|
||||||
if (descriptor.sealedSubclasses.isNotEmpty()) return null
|
if (descriptor.sealedSubclasses
|
||||||
|
.mapNotNull { it.source.getPsi() }
|
||||||
|
.any { !element.isAncestor(it) }
|
||||||
|
) return null
|
||||||
if (descriptor.getSuperClassNotAny()?.modality == Modality.SEALED) return null
|
if (descriptor.getSuperClassNotAny()?.modality == Modality.SEALED) return null
|
||||||
|
|
||||||
val keyword = when (element) {
|
val keyword = when (element) {
|
||||||
|
|||||||
Reference in New Issue
Block a user