From 258a6328a84ee38ecfa36b0c734686ede4ef62c8 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Fri, 11 Dec 2015 18:10:23 +0300 Subject: [PATCH] Pull Up: Default to "Make abstract" when moving to interface #KT-9832 Fixed --- .../idea/refactoring/pullUp/KotlinPullUpDialog.kt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/KotlinPullUpDialog.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/KotlinPullUpDialog.kt index 1e13dc8ecdf..91c52a0ae65 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/KotlinPullUpDialog.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/KotlinPullUpDialog.kt @@ -23,6 +23,7 @@ import com.intellij.psi.PsiComment import com.intellij.psi.PsiNamedElement import com.intellij.refactoring.JavaRefactoringSettings import com.intellij.refactoring.classMembers.AbstractMemberInfoModel +import com.intellij.refactoring.classMembers.MemberInfoChange import com.intellij.refactoring.classMembers.MemberInfoModel import com.intellij.refactoring.memberPullUp.PullUpProcessor import com.intellij.refactoring.util.DocCommentPolicy @@ -44,6 +45,8 @@ public class KotlinPullUpDialog( } private inner class MemberInfoModelImpl : AbstractMemberInfoModel() { + private var lastSuperClass: PsiNamedElement? = null + // Abstract members remain abstract override fun isFixedAbstract(memberInfo: KotlinMemberInfo?) = true @@ -79,6 +82,15 @@ public class KotlinPullUpDialog( if (member in memberInfoStorage.getExtending(superClass)) return false return true } + + override fun memberInfoChanged(event: MemberInfoChange) { + 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