Extract Interface/Superclass: Disable "Make abstract" for inline/external/lateinit members
#KT-15602 Fixed
This commit is contained in:
@@ -471,6 +471,7 @@ These artifacts include extensions for the types available in the latter JDKs, s
|
||||
- Project View: Fix presentation of Kotlin files and their members when @JvmName having the same name as the file itself
|
||||
- [`KT-15611`](https://youtrack.jetbrains.com/issue/KT-15611) Extract Interface/Superclass: Disable const-properties
|
||||
- Pull Up: Fix pull-up from object to superclass
|
||||
- [`KT-15602`](https://youtrack.jetbrains.com/issue/KT-15602) Extract Interface/Superclass: Disable "Make abstract" for inline/external/lateinit members
|
||||
|
||||
#### Intention actions, inspections and quickfixes
|
||||
|
||||
|
||||
+1
@@ -55,6 +55,7 @@ class KotlinExtractInterfaceDialog(
|
||||
getInterfaceContainmentVerifier { selectedMembers }
|
||||
) {
|
||||
override fun isAbstractEnabled(memberInfo: KotlinMemberInfo): Boolean {
|
||||
if (!super.isAbstractEnabled(memberInfo)) return false
|
||||
val member = memberInfo.member
|
||||
return member is KtNamedFunction || (member is KtProperty && !member.mustBeAbstractInInterface()) || member is KtParameter
|
||||
}
|
||||
|
||||
+7
@@ -71,6 +71,13 @@ abstract class KotlinExtractSuperDialogBase(
|
||||
return !declaration.hasModifier(KtTokens.CONST_KEYWORD)
|
||||
}
|
||||
|
||||
override fun isAbstractEnabled(memberInfo: KotlinMemberInfo): Boolean {
|
||||
val member = memberInfo.member
|
||||
return !(member.hasModifier(KtTokens.INLINE_KEYWORD) ||
|
||||
member.hasModifier(KtTokens.EXTERNAL_KEYWORD) ||
|
||||
member.hasModifier(KtTokens.LATEINIT_KEYWORD))
|
||||
}
|
||||
|
||||
override fun isFixedAbstract(memberInfo: KotlinMemberInfo?) = true
|
||||
}
|
||||
|
||||
|
||||
+1
@@ -51,6 +51,7 @@ class KotlinExtractSuperclassDialog(
|
||||
getInterfaceContainmentVerifier { selectedMembers }
|
||||
) {
|
||||
override fun isAbstractEnabled(memberInfo: KotlinMemberInfo): Boolean {
|
||||
if (!super.isAbstractEnabled(memberInfo)) return false
|
||||
val member = memberInfo.member
|
||||
return member is KtNamedFunction || member is KtProperty || member is KtParameter
|
||||
}
|
||||
|
||||
@@ -74,6 +74,9 @@ class KotlinPullUpDialog(
|
||||
if (superClass !is KtClass) return false
|
||||
|
||||
val member = memberInfo.member
|
||||
if (member.hasModifier(KtTokens.INLINE_KEYWORD) ||
|
||||
member.hasModifier(KtTokens.EXTERNAL_KEYWORD) ||
|
||||
member.hasModifier(KtTokens.LATEINIT_KEYWORD)) return false
|
||||
if (member.isCompanionMemberOf(sourceClass)) return false
|
||||
|
||||
if (!superClass.isInterface()) return true
|
||||
|
||||
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberInfo
|
||||
import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberSelectionPanel
|
||||
import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinUsesDependencyMemberInfoModel
|
||||
import org.jetbrains.kotlin.idea.refactoring.memberInfo.qualifiedClassNameForRendering
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.psi.KtClass
|
||||
import org.jetbrains.kotlin.psi.KtNamedDeclaration
|
||||
import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||
@@ -89,6 +90,9 @@ class KotlinPushDownDialog(
|
||||
|
||||
override fun isAbstractEnabled(memberInfo: KotlinMemberInfo): Boolean {
|
||||
val member = memberInfo.member
|
||||
if (member.hasModifier(KtTokens.INLINE_KEYWORD) ||
|
||||
member.hasModifier(KtTokens.EXTERNAL_KEYWORD) ||
|
||||
member.hasModifier(KtTokens.LATEINIT_KEYWORD)) return false
|
||||
return member is KtNamedFunction || member is KtProperty
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user