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 new file mode 100644 index 00000000000..9c65bf68da5 --- /dev/null +++ b/idea/idea-fir/src/org/jetbrains/kotlin/idea/quickfix/MainKtQuickFixRegistrar.kt @@ -0,0 +1,34 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.quickfix + +import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.idea.frontend.api.fir.diagnostics.KtFirDiagnostic +import org.jetbrains.kotlin.idea.quickfix.fixes.ChangeTypeQuickFix +import org.jetbrains.kotlin.lexer.KtToken +import org.jetbrains.kotlin.lexer.KtTokens +import org.jetbrains.kotlin.psi.KtCallableDeclaration +import org.jetbrains.kotlin.psi.KtModifierListOwner + +class MainKtQuickFixRegistrar : KtQuickFixRegistrar() { + private val modifiers = KtQuickFixesListBuilder.register { + register(RemoveModifierFix.createRemoveModifierFactory(isRedundant = true)) + register(RemoveModifierFix.createRemoveModifierFactory(isRedundant = false)) + register(RemoveModifierFix.createRemoveModifierFactory(isRedundant = false)) + register(RemoveModifierFix.createRemoveModifierFactory(isRedundant = true)) + register(RemoveModifierFix.createRemoveModifierFactory(isRedundant = true)) + register( + RemoveModifierFix.createRemoveModifierFromListOwnerFactoryByModifierListOwner( + modifier = KtTokens.OPEN_KEYWORD, + isRedundant = true + ) + ) + } + + override val list: KtQuickFixesList = KtQuickFixesList.createCombined( + modifiers, + ) +} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/RemoveModifierFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/RemoveModifierFix.kt index 3571ea13c37..da71a2b01c3 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/RemoveModifierFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/RemoveModifierFix.kt @@ -53,13 +53,17 @@ class RemoveModifierFix( fun createRemoveModifierFromListOwnerFactory( modifier: KtModifierKeywordToken, isRedundant: Boolean = false - ): QuickFixesPsiBasedFactory { - return object : QuickFixesPsiBasedFactory() { - override fun createQuickFix(psiElement: PsiElement): RemoveModifierFix? { - val modifierListOwner = PsiTreeUtil.getParentOfType(psiElement, KtModifierListOwner::class.java, false) ?: return null - return RemoveModifierFix(modifierListOwner, modifier, isRedundant) - } - } + ): QuickFixesPsiBasedFactory = + createRemoveModifierFromListOwnerFactoryByModifierListOwner( + modifier, + isRedundant + ).coMap { PsiTreeUtil.getParentOfType(it, KtModifierListOwner::class.java, false) } + + fun createRemoveModifierFromListOwnerFactoryByModifierListOwner( + modifier: KtModifierKeywordToken, + isRedundant: Boolean = false + ) = quickFixesPsiBasedFactory { + listOf(RemoveModifierFix(it, modifier, isRedundant)) } fun createRemoveModifierFactory(isRedundant: Boolean = false): QuickFixesPsiBasedFactory {