diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/AddModifierFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/AddModifierFix.kt index da4eda46479..9bbc7d32809 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/AddModifierFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/AddModifierFix.kt @@ -19,6 +19,7 @@ package org.jetbrains.kotlin.idea.quickfix import com.intellij.codeInsight.intention.IntentionAction import com.intellij.openapi.editor.Editor import com.intellij.openapi.project.Project +import com.intellij.psi.PsiFile import com.intellij.psi.PsiNameIdentifierOwner import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.ClassDescriptor @@ -32,7 +33,6 @@ 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.* @@ -46,7 +46,7 @@ import org.jetbrains.kotlin.types.TypeUtils open class AddModifierFix( element: KtModifierListOwner, protected val modifier: KtModifierKeywordToken -) : KotlinQuickFixAction(element), KotlinUniversalQuickFix { +) : KotlinCrossLanguageQuickFixAction(element), KotlinUniversalQuickFix { override fun getText(): String { val element = element ?: return "" if (modifier in modalityModifiers || modifier in KtTokens.VISIBILITY_MODIFIERS || modifier == KtTokens.CONST_KEYWORD) { @@ -69,7 +69,7 @@ open class AddModifierFix( } } - override fun invoke(project: Project, editor: Editor?, file: KtFile) { + override fun invokeImpl(project: Project, editor: Editor?, file: PsiFile) { val originalElement = element if (originalElement is KtDeclaration && modifier.isMultiplatformPersistent()) { originalElement.runOnExpectAndAllActuals { invokeOnElement(it) } @@ -77,7 +77,7 @@ open class AddModifierFix( invokeOnElement(originalElement) } - override fun isAvailable(project: Project, editor: Editor?, file: KtFile): Boolean { + override fun isAvailableImpl(project: Project, editor: Editor?, file: PsiFile): Boolean { val element = element ?: return false return element.canRefactor() } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/RemoveModifierFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/RemoveModifierFix.kt index a21ee0380e7..34a4780a903 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/RemoveModifierFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/RemoveModifierFix.kt @@ -18,6 +18,7 @@ package org.jetbrains.kotlin.idea.quickfix import com.intellij.openapi.editor.Editor import com.intellij.openapi.project.Project +import com.intellij.psi.PsiFile import org.jetbrains.kotlin.diagnostics.Diagnostic import org.jetbrains.kotlin.idea.core.quickfix.QuickFixUtil import org.jetbrains.kotlin.lexer.KtModifierKeywordToken @@ -30,7 +31,7 @@ class RemoveModifierFix( element: KtModifierListOwner, private val modifier: KtModifierKeywordToken, private val isRedundant: Boolean -) : KotlinQuickFixAction(element) { +) : KotlinCrossLanguageQuickFixAction(element) { private val text = run { val modifierText = modifier.value @@ -48,9 +49,9 @@ class RemoveModifierFix( override fun getText() = text - override fun isAvailable(project: Project, editor: Editor?, file: KtFile) = (element?.hasModifier(modifier) ?: false) + override fun isAvailableImpl(project: Project, editor: Editor?, file: PsiFile) = (element?.hasModifier(modifier) ?: false) - override fun invoke(project: Project, editor: Editor?, file: KtFile) { + override fun invokeImpl(project: Project, editor: Editor?, file: PsiFile) { invoke() } @@ -68,7 +69,7 @@ class RemoveModifierFix( isRedundant: Boolean = false ): KotlinSingleIntentionActionFactory { return object : KotlinSingleIntentionActionFactory() { - override fun createAction(diagnostic: Diagnostic): KotlinQuickFixAction? { + override fun createAction(diagnostic: Diagnostic): RemoveModifierFix? { val modifierListOwner = QuickFixUtil.getParentElementOfType(diagnostic, KtModifierListOwner::class.java) ?: return null return RemoveModifierFix(modifierListOwner, modifier, isRedundant) } @@ -77,7 +78,7 @@ class RemoveModifierFix( fun createRemoveModifierFactory(isRedundant: Boolean = false): KotlinSingleIntentionActionFactory { return object : KotlinSingleIntentionActionFactory() { - override fun createAction(diagnostic: Diagnostic): KotlinQuickFixAction? { + override fun createAction(diagnostic: Diagnostic): RemoveModifierFix? { val psiElement = diagnostic.psiElement val elementType = psiElement.node.elementType as? KtModifierKeywordToken ?: return null val modifierListOwner = psiElement.getStrictParentOfType() ?: return null @@ -88,7 +89,7 @@ class RemoveModifierFix( fun createRemoveProjectionFactory(isRedundant: Boolean): KotlinSingleIntentionActionFactory { return object : KotlinSingleIntentionActionFactory() { - override fun createAction(diagnostic: Diagnostic): KotlinQuickFixAction? { + override fun createAction(diagnostic: Diagnostic): RemoveModifierFix? { val projection = diagnostic.psiElement as KtTypeProjection val elementType = projection.projectionToken?.node?.elementType as? KtModifierKeywordToken ?: return null return RemoveModifierFix(projection, elementType, isRedundant) @@ -98,7 +99,7 @@ class RemoveModifierFix( fun createRemoveVarianceFactory(): KotlinSingleIntentionActionFactory { return object : KotlinSingleIntentionActionFactory() { - override fun createAction(diagnostic: Diagnostic): KotlinQuickFixAction? { + override fun createAction(diagnostic: Diagnostic): RemoveModifierFix? { val psiElement = diagnostic.psiElement as KtTypeParameter val modifier = when (psiElement.variance) { Variance.IN_VARIANCE -> KtTokens.IN_KEYWORD @@ -112,7 +113,7 @@ class RemoveModifierFix( fun createRemoveSuspendFactory(): KotlinSingleIntentionActionFactory { return object : KotlinSingleIntentionActionFactory() { - override fun createAction(diagnostic: Diagnostic): KotlinQuickFixAction? { + override fun createAction(diagnostic: Diagnostic): RemoveModifierFix? { val suspendKeyword = diagnostic.psiElement val modifierList = suspendKeyword.parent as KtDeclarationModifierList val type = modifierList.parent as KtTypeReference @@ -124,7 +125,7 @@ class RemoveModifierFix( fun createRemoveLateinitFactory(): KotlinSingleIntentionActionFactory { return object : KotlinSingleIntentionActionFactory() { - override fun createAction(diagnostic: Diagnostic): KotlinQuickFixAction? { + override fun createAction(diagnostic: Diagnostic): RemoveModifierFix? { val keyword = diagnostic.psiElement val modifierList = keyword.parent as? KtDeclarationModifierList ?: return null val property = modifierList.parent as? KtProperty ?: return null