Make abstract: do not suggest for inline classes #KT-28268 Fixed
This commit is contained in:
committed by
Mikhail Glukhikh
parent
e671318653
commit
89ba7a7ae8
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.idea.inspections.KotlinUniversalQuickFix
|
||||
import org.jetbrains.kotlin.idea.refactoring.canRefactor
|
||||
import org.jetbrains.kotlin.idea.util.runOnExpectAndAllActuals
|
||||
import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
|
||||
import org.jetbrains.kotlin.lexer.KtToken
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.lexer.KtTokens.*
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
@@ -130,6 +131,10 @@ open class AddModifierFix(
|
||||
if (parentClassOrObject is KtObjectDeclaration) return null
|
||||
if (parentClassOrObject is KtEnumEntry) return null
|
||||
}
|
||||
if (modifier == ABSTRACT_KEYWORD
|
||||
&& modifierListOwner is KtClass
|
||||
&& modifierListOwner.hasModifier(KtTokens.INLINE_KEYWORD)
|
||||
) return null
|
||||
}
|
||||
INNER_KEYWORD -> {
|
||||
if (modifierListOwner is KtObjectDeclaration) return null
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
// "Make 'A' abstract" "false"
|
||||
// ERROR: Class 'A' is not abstract and does not implement abstract member public abstract fun foo(): String defined in I
|
||||
// ERROR: Primary constructor is required for inline class
|
||||
// ACTION: Create test
|
||||
// ACTION: Implement members
|
||||
// ACTION: Move 'A' to separate file
|
||||
// ACTION: Rename file to A.kt
|
||||
interface I {
|
||||
fun foo(): String
|
||||
}
|
||||
|
||||
inline class A<caret> : I
|
||||
@@ -136,6 +136,11 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
|
||||
runTest("idea/testData/quickfix/abstract/makeEnumEntryAbstract.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("makeInlineClassAbstract.kt")
|
||||
public void testMakeInlineClassAbstract() throws Exception {
|
||||
runTest("idea/testData/quickfix/abstract/makeInlineClassAbstract.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("makeObjectMemberAbstract.kt")
|
||||
public void testMakeObjectMemberAbstract() throws Exception {
|
||||
runTest("idea/testData/quickfix/abstract/makeObjectMemberAbstract.kt");
|
||||
|
||||
Reference in New Issue
Block a user