Pull Up: Default to "Make abstract" when moving to interface

#KT-9832 Fixed
This commit is contained in:
Alexey Sedunov
2015-12-11 18:10:23 +03:00
parent 04c6ea78c7
commit 258a6328a8
@@ -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