mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[kotlin] Drop non ModCommand AbstractKotlinApplicableIntentionWithContext
#KTIJ-26974 GitOrigin-RevId: 6f0ad00616c81c9acf86b65be7d60a99536d4956
This commit is contained in:
committed by
intellij-monorepo-bot
parent
f53c270c8b
commit
ef67215e48
+1
-1
@@ -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> {
|
||||
|
||||
+1
-1
@@ -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>(
|
||||
|
||||
+1
-2
@@ -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].
|
||||
|
||||
-40
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user