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
|
- 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
|
- [`KT-15611`](https://youtrack.jetbrains.com/issue/KT-15611) Extract Interface/Superclass: Disable const-properties
|
||||||
- Pull Up: Fix pull-up from object to superclass
|
- 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
|
#### Intention actions, inspections and quickfixes
|
||||||
|
|
||||||
|
|||||||
+1
@@ -55,6 +55,7 @@ class KotlinExtractInterfaceDialog(
|
|||||||
getInterfaceContainmentVerifier { selectedMembers }
|
getInterfaceContainmentVerifier { selectedMembers }
|
||||||
) {
|
) {
|
||||||
override fun isAbstractEnabled(memberInfo: KotlinMemberInfo): Boolean {
|
override fun isAbstractEnabled(memberInfo: KotlinMemberInfo): Boolean {
|
||||||
|
if (!super.isAbstractEnabled(memberInfo)) return false
|
||||||
val member = memberInfo.member
|
val member = memberInfo.member
|
||||||
return member is KtNamedFunction || (member is KtProperty && !member.mustBeAbstractInInterface()) || member is KtParameter
|
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)
|
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
|
override fun isFixedAbstract(memberInfo: KotlinMemberInfo?) = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
@@ -51,6 +51,7 @@ class KotlinExtractSuperclassDialog(
|
|||||||
getInterfaceContainmentVerifier { selectedMembers }
|
getInterfaceContainmentVerifier { selectedMembers }
|
||||||
) {
|
) {
|
||||||
override fun isAbstractEnabled(memberInfo: KotlinMemberInfo): Boolean {
|
override fun isAbstractEnabled(memberInfo: KotlinMemberInfo): Boolean {
|
||||||
|
if (!super.isAbstractEnabled(memberInfo)) return false
|
||||||
val member = memberInfo.member
|
val member = memberInfo.member
|
||||||
return member is KtNamedFunction || member is KtProperty || member is KtParameter
|
return member is KtNamedFunction || member is KtProperty || member is KtParameter
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,6 +74,9 @@ class KotlinPullUpDialog(
|
|||||||
if (superClass !is KtClass) return false
|
if (superClass !is KtClass) return false
|
||||||
|
|
||||||
val member = memberInfo.member
|
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 (member.isCompanionMemberOf(sourceClass)) return false
|
||||||
|
|
||||||
if (!superClass.isInterface()) return true
|
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.KotlinMemberSelectionPanel
|
||||||
import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinUsesDependencyMemberInfoModel
|
import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinUsesDependencyMemberInfoModel
|
||||||
import org.jetbrains.kotlin.idea.refactoring.memberInfo.qualifiedClassNameForRendering
|
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.KtClass
|
||||||
import org.jetbrains.kotlin.psi.KtNamedDeclaration
|
import org.jetbrains.kotlin.psi.KtNamedDeclaration
|
||||||
import org.jetbrains.kotlin.psi.KtNamedFunction
|
import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||||
@@ -89,6 +90,9 @@ class KotlinPushDownDialog(
|
|||||||
|
|
||||||
override fun isAbstractEnabled(memberInfo: KotlinMemberInfo): Boolean {
|
override fun isAbstractEnabled(memberInfo: KotlinMemberInfo): Boolean {
|
||||||
val member = memberInfo.member
|
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
|
return member is KtNamedFunction || member is KtProperty
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user