[kotlin] Drop non ModCommand AbstractKotlinApplicableIntentionWithContext

#KTIJ-26974

GitOrigin-RevId: 6f0ad00616c81c9acf86b65be7d60a99536d4956
This commit is contained in:
Vladimir Dolzhenko
2024-01-11 18:19:26 +00:00
committed by intellij-monorepo-bot
parent f53c270c8b
commit ef67215e48
4 changed files with 3 additions and 44 deletions
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.analysis.api.lifetime.allowAnalysisOnEdt
import org.jetbrains.kotlin.psi.KtElement
/**
* A common base interface for [org.jetbrains.kotlin.idea.codeinsight.api.applicable.intentions.AbstractKotlinApplicableIntentionWithContext]
* A common base interface for [org.jetbrains.kotlin.idea.codeinsight.api.applicable.intentions.AbstractKotlinModCommandWithContext]
* and [org.jetbrains.kotlin.idea.codeinsight.api.applicable.inspections.AbstractKotlinApplicableInspectionWithContext].
*/
interface KotlinApplicableToolWithContext<ELEMENT : KtElement, CONTEXT> : KotlinApplicableToolBase<ELEMENT> {
@@ -11,7 +11,7 @@ import kotlin.reflect.KClass
/**
* Applies a fix to the PSI with [apply] if the intention is applicable via [isApplicableByPsi] and [isApplicableByAnalyze].
*
* If [apply] needs to use the Analysis API, inherit from [AbstractKotlinApplicableIntentionWithContext] instead.
* If [apply] needs to use the Analysis API, inherit from [AbstractKotlinModCommandWithContext] instead.
*/
@Deprecated("Use AbstractKotlinApplicableModCommandIntention")
abstract class AbstractKotlinApplicableIntention<ELEMENT : KtElement>(
@@ -5,14 +5,13 @@ import com.intellij.codeInspection.util.IntentionFamilyName
import com.intellij.openapi.editor.Editor
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.KotlinApplicableToolBase
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.isApplicableToElement
import org.jetbrains.kotlin.idea.codeinsight.api.applicators.KotlinApplicabilityRange
import org.jetbrains.kotlin.idea.codeinsight.api.classic.intentions.SelfTargetingIntention
import org.jetbrains.kotlin.psi.KtElement
import kotlin.reflect.KClass
/**
* [AbstractKotlinApplicableIntentionBase] is a base implementation for [AbstractKotlinApplicableIntention] and
* [AbstractKotlinApplicableIntentionWithContext].
* [AbstractKotlinModCommandWithContext].
*
* Note: A [familyNameGetter] for [SelfTargetingIntention] does not have to be set because inheritors of
* [AbstractKotlinApplicableIntentionBase] must override [getFamilyName].
@@ -1,40 +0,0 @@
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.kotlin.idea.codeinsight.api.applicable.intentions
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.KotlinApplicableToolWithContext
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.prepareContextWithAnalyzeAllowEdt
import org.jetbrains.kotlin.idea.util.application.runWriteActionIfNeeded
import org.jetbrains.kotlin.psi.KtElement
import kotlin.reflect.KClass
/**
* Applies a fix to the PSI with [apply] given some [CONTEXT] from [prepareContext] if the intention is applicable via [isApplicableByPsi] and
* [prepareContext].
*/
@Deprecated("use org.jetbrains.kotlin.idea.codeinsight.api.applicable.intentions.AbstractKotlinModCommandWithContext")
abstract class AbstractKotlinApplicableIntentionWithContext<ELEMENT : KtElement, CONTEXT>(
elementType: KClass<ELEMENT>,
) : AbstractKotlinApplicableIntentionBase<ELEMENT>(elementType), KotlinApplicableToolWithContext<ELEMENT, CONTEXT> {
final override fun isApplicableTo(element: ELEMENT, caretOffset: Int): Boolean {
if (!super.isApplicableTo(element, caretOffset)) return false
val context = prepareContextWithAnalyzeAllowEdt(element) ?: return false
val actionText = getActionName(element, context)
setTextGetter { actionText }
return true
}
final override fun applyTo(element: ELEMENT, project: Project, editor: Editor?) {
val context = prepareContextWithAnalyzeAllowEdt(element) ?: return
runWriteActionIfNeeded(shouldApplyInWriteAction() && element.isPhysical) {
apply(element, context, project, editor)
}
}
final override fun startInWriteAction(): Boolean =
// `applyTo` should start without a write action because it first uses `analyse` to get the context. Also,
// `getContext` when called from `applyTo` should not have access to a write action for `element` to discourage mutating `element`.
false
}