Pull Up: Default to "Make abstract" when moving to interface
#KT-9832 Fixed
This commit is contained in:
@@ -23,6 +23,7 @@ import com.intellij.psi.PsiComment
|
|||||||
import com.intellij.psi.PsiNamedElement
|
import com.intellij.psi.PsiNamedElement
|
||||||
import com.intellij.refactoring.JavaRefactoringSettings
|
import com.intellij.refactoring.JavaRefactoringSettings
|
||||||
import com.intellij.refactoring.classMembers.AbstractMemberInfoModel
|
import com.intellij.refactoring.classMembers.AbstractMemberInfoModel
|
||||||
|
import com.intellij.refactoring.classMembers.MemberInfoChange
|
||||||
import com.intellij.refactoring.classMembers.MemberInfoModel
|
import com.intellij.refactoring.classMembers.MemberInfoModel
|
||||||
import com.intellij.refactoring.memberPullUp.PullUpProcessor
|
import com.intellij.refactoring.memberPullUp.PullUpProcessor
|
||||||
import com.intellij.refactoring.util.DocCommentPolicy
|
import com.intellij.refactoring.util.DocCommentPolicy
|
||||||
@@ -44,6 +45,8 @@ public class KotlinPullUpDialog(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private inner class MemberInfoModelImpl : AbstractMemberInfoModel<KtNamedDeclaration, KotlinMemberInfo>() {
|
private inner class MemberInfoModelImpl : AbstractMemberInfoModel<KtNamedDeclaration, KotlinMemberInfo>() {
|
||||||
|
private var lastSuperClass: PsiNamedElement? = null
|
||||||
|
|
||||||
// Abstract members remain abstract
|
// Abstract members remain abstract
|
||||||
override fun isFixedAbstract(memberInfo: KotlinMemberInfo?) = true
|
override fun isFixedAbstract(memberInfo: KotlinMemberInfo?) = true
|
||||||
|
|
||||||
@@ -79,6 +82,15 @@ public class KotlinPullUpDialog(
|
|||||||
if (member in memberInfoStorage.getExtending(superClass)) return false
|
if (member in memberInfoStorage.getExtending(superClass)) return false
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun memberInfoChanged(event: MemberInfoChange<KtNamedDeclaration, KotlinMemberInfo>) {
|
||||||
|
val superClass = superClass ?: return
|
||||||
|
if (superClass != lastSuperClass) {
|
||||||
|
lastSuperClass = superClass
|
||||||
|
val isInterface = superClass is KtClass && superClass.isInterface()
|
||||||
|
event.changedMembers.forEach { it.isToAbstract = isInterface }
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected val memberInfoStorage: KotlinMemberInfoStorage get() = myMemberInfoStorage
|
protected val memberInfoStorage: KotlinMemberInfoStorage get() = myMemberInfoStorage
|
||||||
|
|||||||
Reference in New Issue
Block a user