[kotlin] New Inspection API: Minor fixes

- Replace `sealed` with `abstract` in inspection/intention base classes, as it causes sporadic exceptions in IntelliJ. (Likely an issue with binary compatibility of locally compiled classes.)

GitOrigin-RevId: 60005049a42b7f19a207f733ef9ce809fce8ed70
This commit is contained in:
Marco Pennekamp
2022-11-14 20:43:49 +00:00
committed by intellij-monorepo-bot
parent e9e761caf3
commit a83fe50e9b
4 changed files with 10 additions and 6 deletions
@@ -18,7 +18,7 @@ import kotlin.reflect.KClass
* [AbstractKotlinApplicableInspectionBase] is a base implementation for [AbstractKotlinApplicableInspection] and
* [AbstractKotlinApplicableInspectionWithContext].
*/
sealed class AbstractKotlinApplicableInspectionBase<ELEMENT : KtElement>(
abstract class AbstractKotlinApplicableInspectionBase<ELEMENT : KtElement>(
elementType: KClass<ELEMENT>,
) : KotlinSingleElementInspection<ELEMENT>(elementType), KotlinApplicableToolBase<ELEMENT> {
/**
@@ -17,7 +17,7 @@ import kotlin.reflect.KClass
* Note: A [familyNameGetter] for [SelfTargetingIntention] does not have to be set because inheritors of
* [AbstractKotlinApplicableIntentionBase] must override [getFamilyName].
*/
sealed class AbstractKotlinApplicableIntentionBase<ELEMENT : KtElement>(
abstract class AbstractKotlinApplicableIntentionBase<ELEMENT : KtElement>(
elementType: KClass<ELEMENT>,
) : SelfTargetingIntention<ELEMENT>(elementType.java, { "" }), KotlinApplicableToolBase<ELEMENT> {
/**
@@ -5,7 +5,7 @@ import com.intellij.openapi.editor.Editor
import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.KotlinApplicableIntentionWithContext
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.intentions.AbstractKotlinApplicableIntentionWithContext
import org.jetbrains.kotlin.idea.codeinsight.api.applicators.KotlinApplicabilityRange
import org.jetbrains.kotlin.idea.codeinsight.utils.dereferenceValidKeys
import org.jetbrains.kotlin.idea.codeinsights.impl.base.NameCommentsByArgument
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.psi.KtPsiFactory
import org.jetbrains.kotlin.psi.KtValueArgument
internal class AddNamesInCommentToJavaCallArgumentsIntention
: KotlinApplicableIntentionWithContext<KtCallElement, AddNamesInCommentToJavaCallArgumentsIntention.Context>(KtCallElement::class) {
: AbstractKotlinApplicableIntentionWithContext<KtCallElement, AddNamesInCommentToJavaCallArgumentsIntention.Context>(KtCallElement::class) {
class Context(val nameCommentsByArgument: NameCommentsByArgument)
@@ -7,8 +7,10 @@ import com.intellij.psi.SmartPsiElementPointer
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionSymbol
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.KotlinApplicableIntentionWithContext
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.intentions.AbstractKotlinApplicableIntentionWithContext
import org.jetbrains.kotlin.idea.codeinsight.api.applicators.KotlinApplicabilityRange
import org.jetbrains.kotlin.idea.codeinsight.utils.dereferenceValidPointers
import org.jetbrains.kotlin.idea.codeinsights.impl.base.applicators.ApplicabilityRanges
import org.jetbrains.kotlin.idea.references.mainReference
import org.jetbrains.kotlin.idea.util.CommentSaver
import org.jetbrains.kotlin.name.CallableId
@@ -28,7 +30,7 @@ private val FOR_EACH_CALLABLE_IDS = setOf(
private typealias ReturnsToReplace = List<SmartPsiElementPointer<KtReturnExpression>>
internal class ConvertForEachToForLoopIntention
: KotlinApplicableIntentionWithContext<KtCallExpression, ConvertForEachToForLoopIntention.Context>(
: AbstractKotlinApplicableIntentionWithContext<KtCallExpression, ConvertForEachToForLoopIntention.Context>(
KtCallExpression::class
) {
@@ -40,6 +42,8 @@ internal class ConvertForEachToForLoopIntention
override fun getFamilyName(): String = KotlinBundle.message("replace.with.a.for.loop")
override fun getActionName(element: KtCallExpression, context: Context): String = familyName
override fun getApplicabilityRange(): KotlinApplicabilityRange<KtCallExpression> = ApplicabilityRanges.SELF
override fun isApplicableByPsi(element: KtCallExpression): Boolean {
if (element.getCallNameExpression()?.getReferencedName() != FOR_EACH_NAME.asString()) return false