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.refactoring.canRefactor
|
||||||
import org.jetbrains.kotlin.idea.util.runOnExpectAndAllActuals
|
import org.jetbrains.kotlin.idea.util.runOnExpectAndAllActuals
|
||||||
import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
|
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.lexer.KtTokens.*
|
import org.jetbrains.kotlin.lexer.KtTokens.*
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
@@ -130,6 +131,10 @@ open class AddModifierFix(
|
|||||||
if (parentClassOrObject is KtObjectDeclaration) return null
|
if (parentClassOrObject is KtObjectDeclaration) return null
|
||||||
if (parentClassOrObject is KtEnumEntry) return null
|
if (parentClassOrObject is KtEnumEntry) return null
|
||||||
}
|
}
|
||||||
|
if (modifier == ABSTRACT_KEYWORD
|
||||||
|
&& modifierListOwner is KtClass
|
||||||
|
&& modifierListOwner.hasModifier(KtTokens.INLINE_KEYWORD)
|
||||||
|
) return null
|
||||||
}
|
}
|
||||||
INNER_KEYWORD -> {
|
INNER_KEYWORD -> {
|
||||||
if (modifierListOwner is KtObjectDeclaration) return null
|
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");
|
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")
|
@TestMetadata("makeObjectMemberAbstract.kt")
|
||||||
public void testMakeObjectMemberAbstract() throws Exception {
|
public void testMakeObjectMemberAbstract() throws Exception {
|
||||||
runTest("idea/testData/quickfix/abstract/makeObjectMemberAbstract.kt");
|
runTest("idea/testData/quickfix/abstract/makeObjectMemberAbstract.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user