From 8158a07063242c50ddaaadfd87b3f9561af2ace6 Mon Sep 17 00:00:00 2001 From: Tianyu Geng Date: Wed, 3 Mar 2021 13:43:04 -0800 Subject: [PATCH] FIR IDE: add quickfix for NESTED_CLASS_NOT_ALLOWED --- .../kotlin/idea/quickfix/MainKtQuickFixRegistrar.kt | 4 ++++ .../kotlin/idea/quickfix/AddModifierFix.kt | 13 ++++++------- .../quickfix/modifiers/nestedAbstractClass.kt | 1 + .../quickfix/modifiers/nestedAbstractClass.kt.after | 1 + .../quickfix/modifiers/nestedClassNotAllowed.kt | 1 + .../modifiers/nestedClassNotAllowed.kt.after | 1 + 6 files changed, 14 insertions(+), 7 deletions(-) diff --git a/idea/idea-fir/src/org/jetbrains/kotlin/idea/quickfix/MainKtQuickFixRegistrar.kt b/idea/idea-fir/src/org/jetbrains/kotlin/idea/quickfix/MainKtQuickFixRegistrar.kt index 0de7874bb51..667839546d5 100644 --- a/idea/idea-fir/src/org/jetbrains/kotlin/idea/quickfix/MainKtQuickFixRegistrar.kt +++ b/idea/idea-fir/src/org/jetbrains/kotlin/idea/quickfix/MainKtQuickFixRegistrar.kt @@ -44,6 +44,10 @@ class MainKtQuickFixRegistrar : KtQuickFixRegistrar() { KtFirDiagnostic.PrivateSetterForAbstractProperty::class, RemoveModifierFix.removePrivateModifier ) + registerPsiQuickFixes( + KtFirDiagnostic.NestedClassNotAllowed::class, + AddModifierFix.addInnerModifier + ) } private val overrides = KtQuickFixesListBuilder.registerPsiQuickFix { diff --git a/idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/quickfix/AddModifierFix.kt b/idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/quickfix/AddModifierFix.kt index d46f01b7af3..55bd5fa324e 100644 --- a/idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/quickfix/AddModifierFix.kt +++ b/idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/quickfix/AddModifierFix.kt @@ -106,13 +106,12 @@ open class AddModifierFix( } companion object : Factory { - val addAbstractModifier: QuickFixesPsiBasedFactory = AddModifierFix.createFactory(KtTokens.ABSTRACT_KEYWORD) - val addAbstractToContainingClass: QuickFixesPsiBasedFactory = - AddModifierFix.createFactory(KtTokens.ABSTRACT_KEYWORD, KtClassOrObject::class.java) - val addOpenToContainingClass: QuickFixesPsiBasedFactory = - AddModifierFix.createFactory(KtTokens.OPEN_KEYWORD, KtClassOrObject::class.java) - val addFinalToProperty: QuickFixesPsiBasedFactory = - AddModifierFix.createFactory(KtTokens.FINAL_KEYWORD, KtProperty::class.java) + val addAbstractModifier = AddModifierFix.createFactory(KtTokens.ABSTRACT_KEYWORD) + val addAbstractToContainingClass = AddModifierFix.createFactory(KtTokens.ABSTRACT_KEYWORD, KtClassOrObject::class.java) + val addOpenToContainingClass = AddModifierFix.createFactory(KtTokens.OPEN_KEYWORD, KtClassOrObject::class.java) + val addFinalToProperty = AddModifierFix.createFactory(KtTokens.FINAL_KEYWORD, KtProperty::class.java) + val addInnerModifier = createFactory(KtTokens.INNER_KEYWORD) + private val modalityModifiers: Set = setOf(KtTokens.ABSTRACT_KEYWORD, KtTokens.OPEN_KEYWORD, KtTokens.FINAL_KEYWORD) diff --git a/idea/testData/quickfix/modifiers/nestedAbstractClass.kt b/idea/testData/quickfix/modifiers/nestedAbstractClass.kt index 12e31ae06ab..5478726f260 100644 --- a/idea/testData/quickfix/modifiers/nestedAbstractClass.kt +++ b/idea/testData/quickfix/modifiers/nestedAbstractClass.kt @@ -4,3 +4,4 @@ class A() { abstract class C } } +/* FIR_COMPARISON */ diff --git a/idea/testData/quickfix/modifiers/nestedAbstractClass.kt.after b/idea/testData/quickfix/modifiers/nestedAbstractClass.kt.after index 0525a8c1f2f..6703712237d 100644 --- a/idea/testData/quickfix/modifiers/nestedAbstractClass.kt.after +++ b/idea/testData/quickfix/modifiers/nestedAbstractClass.kt.after @@ -4,3 +4,4 @@ class A() { abstract inner class C } } +/* FIR_COMPARISON */ diff --git a/idea/testData/quickfix/modifiers/nestedClassNotAllowed.kt b/idea/testData/quickfix/modifiers/nestedClassNotAllowed.kt index a4304a27098..88c59ffa795 100644 --- a/idea/testData/quickfix/modifiers/nestedClassNotAllowed.kt +++ b/idea/testData/quickfix/modifiers/nestedClassNotAllowed.kt @@ -5,3 +5,4 @@ class A() { } } } +/* FIR_COMPARISON */ diff --git a/idea/testData/quickfix/modifiers/nestedClassNotAllowed.kt.after b/idea/testData/quickfix/modifiers/nestedClassNotAllowed.kt.after index 0c894b0e185..b537b39ae94 100644 --- a/idea/testData/quickfix/modifiers/nestedClassNotAllowed.kt.after +++ b/idea/testData/quickfix/modifiers/nestedClassNotAllowed.kt.after @@ -5,3 +5,4 @@ class A() { } } } +/* FIR_COMPARISON */