Make abstract: do not suggest for inline classes #KT-28268 Fixed

This commit is contained in:
Toshiaki Kameyama
2018-11-17 20:55:25 +09:00
committed by Mikhail Glukhikh
parent e671318653
commit 89ba7a7ae8
3 changed files with 22 additions and 0 deletions
@@ -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");