From 2639e7a1c2e8e5007231ed2f225d52801688fe15 Mon Sep 17 00:00:00 2001 From: Yuriy Artamonov Date: Sun, 23 Feb 2025 19:45:03 +0100 Subject: [PATCH] [devkit] IJPL-115541 Companion object in AnAction inheritors is not marked with warning GitOrigin-RevId: 7f73a01b01ea46de903b40843891ed1cb77b21fb --- .../CompanionObjectInExtensionInspection.kt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/plugins/devkit/intellij.kotlin.devkit/src/inspections/CompanionObjectInExtensionInspection.kt b/plugins/devkit/intellij.kotlin.devkit/src/inspections/CompanionObjectInExtensionInspection.kt index 6ab5daede990..c0318714b814 100644 --- a/plugins/devkit/intellij.kotlin.devkit/src/inspections/CompanionObjectInExtensionInspection.kt +++ b/plugins/devkit/intellij.kotlin.devkit/src/inspections/CompanionObjectInExtensionInspection.kt @@ -5,9 +5,11 @@ import com.intellij.codeInspection.LocalInspectionTool import com.intellij.codeInspection.ProblemHighlightType import com.intellij.codeInspection.ProblemsHolder import com.intellij.psi.PsiElementVisitor +import com.intellij.psi.util.InheritanceUtil import org.jetbrains.idea.devkit.inspections.DevKitInspectionUtil import org.jetbrains.idea.devkit.inspections.ExtensionUtil import org.jetbrains.idea.devkit.kotlin.DevKitKotlinBundle +import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.KtClass @@ -28,7 +30,7 @@ internal class CompanionObjectInExtensionInspection : LocalInspectionTool() { val ktLightClass = companionObject.getStrictParentOfType()?.toLightClass() ?: return if (!ExtensionUtil.isExtensionPointImplementationCandidate(ktLightClass)) return - if (!ExtensionUtil.isInstantiatedExtension(ktLightClass) { ExtensionUtil.hasServiceBeanFqn(it) }) return + if (!isExtension(ktLightClass) && !isAnAction(ktLightClass)) return val anchor = companionObject.modifierList?.getModifier(KtTokens.COMPANION_KEYWORD) ?: return @@ -54,6 +56,14 @@ internal class CompanionObjectInExtensionInspection : LocalInspectionTool() { } } } + + private fun isAnAction(ktLightClass: KtLightClass): Boolean { + return InheritanceUtil.isInheritor(ktLightClass, "com.intellij.openapi.actionSystem.AnAction") + } + + private fun isExtension(ktLightClass: KtLightClass): Boolean { + return ExtensionUtil.isInstantiatedExtension(ktLightClass) { ExtensionUtil.hasServiceBeanFqn(it) } + } } } }