[kotlin] KTIJ-29133 only kotlin visitors are acceptable

GitOrigin-RevId: dd0f52a5f7c3f66ffe72d9c9e34c78a920de300a
This commit is contained in:
Andrew Kozlov
2024-03-17 12:03:34 +00:00
committed by intellij-monorepo-bot
parent c4623831b3
commit 0141610b39
29 changed files with 237 additions and 201 deletions
@@ -8,6 +8,7 @@ import com.intellij.openapi.util.TextRange
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.KotlinApplicableToolBase
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtVisitor
/**
* [AbstractKotlinApplicableInspectionBase] is a base implementation for [AbstractKotlinApplicableInspection] and
@@ -64,5 +65,14 @@ abstract class AbstractKotlinApplicableInspectionBase<ELEMENT : KtElement> : Loc
}
}
abstract override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor
abstract override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
): KtVisitor<*, *>
final override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
session: LocalInspectionToolSession,
): PsiElementVisitor = super.buildVisitor(holder, isOnTheFly, session)
}
@@ -2,11 +2,9 @@
package org.jetbrains.kotlin.idea.codeinsights.impl.base.inspections
import com.intellij.codeInspection.CleanupLocalInspectionTool
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
import com.intellij.psi.tree.TokenSet
import org.jetbrains.kotlin.analysis.api.diagnostics.KtDiagnosticWithPsi
import org.jetbrains.kotlin.idea.base.psi.isRedundant
@@ -23,11 +21,13 @@ abstract class RedundantModifierInspectionBase<DIAGNOSTIC : KtDiagnosticWithPsi<
) : AbstractKotlinApplicableDiagnosticInspectionWithContext<KtModifierListOwner, DIAGNOSTIC, RedundantModifierInspectionBase.ModifierContext>(),
CleanupLocalInspectionTool {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitDeclaration(dcl: KtDeclaration) {
visitTargetElement(dcl, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitDeclaration(dcl: KtDeclaration) {
visitTargetElement(dcl, holder, isOnTheFly)
}
}
class ModifierContext(val modifier: KtModifierKeywordToken)
@@ -1,11 +1,9 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.kotlin.idea.k2.codeinsight.inspections
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.symbols.KtValueParameterSymbol
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
@@ -22,13 +20,16 @@ import org.jetbrains.kotlin.psi.KtVisitorVoid
internal class CanBePrimaryConstructorPropertyInspection
: AbstractKotlinApplicableInspectionWithContext<KtProperty, MovePropertyToConstructorInfo>() {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitProperty(property: KtProperty) {
visitTargetElement(property, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitProperty(property: KtProperty) {
visitTargetElement(property, holder, isOnTheFly)
}
}
override fun getProblemDescription(element: KtProperty, context: MovePropertyToConstructorInfo): String = KotlinBundle.message(
"property.is.explicitly.assigned.to.parameter.0.can", element.name ?: "???"
)
@@ -2,13 +2,11 @@
package org.jetbrains.kotlin.idea.k2.codeinsight.inspections
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemHighlightType
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.TextRange
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.idea.base.psi.isMultiLine
import org.jetbrains.kotlin.idea.base.psi.textRangeIn
@@ -21,7 +19,10 @@ import org.jetbrains.kotlin.idea.codeinsight.api.applicators.KotlinApplicability
import org.jetbrains.kotlin.idea.codeinsight.api.applicators.applicabilityRange
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.*
import org.jetbrains.kotlin.psi.psiUtil.anyDescendantOfType
import org.jetbrains.kotlin.psi.psiUtil.endOffset
import org.jetbrains.kotlin.psi.psiUtil.siblings
import org.jetbrains.kotlin.psi.psiUtil.startOffset
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
class FoldInitializerAndIfToElvisInspection :
@@ -57,11 +58,13 @@ class FoldInitializerAndIfToElvisInspection :
override fun getActionFamilyName() = KotlinBundle.message("replace.if.with.elvis.operator")
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitIfExpression(expression: KtIfExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitIfExpression(expression: KtIfExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
}
@@ -1,11 +1,9 @@
// 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.k2.codeinsight.inspections
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.inspections.AbstractKotlinApplicableInspectionWithContext
@@ -19,13 +17,16 @@ import org.jetbrains.kotlin.renderer.render
internal class ImplicitThisInspection :
AbstractKotlinApplicableInspectionWithContext<KtExpression, ImplicitReceiverInfo>() {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitExpression(expression: KtExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitExpression(expression: KtExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
}
override fun getProblemDescription(element: KtExpression, context: ImplicitReceiverInfo): String =
KotlinBundle.message("inspection.implicit.this.display.name")
@@ -2,13 +2,15 @@
package org.jetbrains.kotlin.idea.k2.codeinsight.inspections
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.codeInspection.options.OptPane
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.TextRange
import com.intellij.psi.*
import com.intellij.psi.PsiComment
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiReferenceService
import com.intellij.psi.PsiWhiteSpace
import com.intellij.psi.util.PsiTreeUtil
import com.intellij.psi.util.parentOfType
import com.intellij.psi.util.parents
@@ -59,11 +61,13 @@ class JoinDeclarationAndAssignmentInspection :
override fun getProblemDescription(element: KtProperty, context: Context) = KotlinBundle.message("can.be.joined.with.assignment")
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitProperty(property: KtProperty) {
visitTargetElement(property, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitProperty(property: KtProperty) {
visitTargetElement(property, holder, isOnTheFly)
}
}
@@ -1,14 +1,12 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.kotlin.idea.k2.codeinsight.inspections
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemHighlightType
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.codeInspection.util.InspectionMessage
import com.intellij.codeInspection.util.IntentionFamilyName
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.idea.base.psi.textRangeIn
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.inspections.AbstractKotlinApplicableInspection
@@ -36,12 +34,10 @@ class MoveLambdaOutsideParenthesesInspection : AbstractKotlinApplicableInspectio
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
session: LocalInspectionToolSession
): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitCallExpression(expression: KtCallExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
) = object : KtVisitorVoid() {
override fun visitCallExpression(expression: KtCallExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
}
@@ -1,11 +1,9 @@
// 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.k2.codeinsight.inspections
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.idea.base.psi.replaced
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
@@ -24,11 +22,14 @@ import org.jetbrains.kotlin.psi.*
* See plugins/kotlin/code-insight/descriptions/resources-en/inspectionDescriptions/NullableBooleanElvis.html for details.
*/
internal class NullableBooleanElvisInspection : AbstractKotlinApplicableInspection<KtBinaryExpression>() {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitBinaryExpression(expression: KtBinaryExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitBinaryExpression(expression: KtBinaryExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
}
override fun getProblemDescription(element: KtBinaryExpression): String = KotlinBundle.message("inspection.nullable.boolean.elvis.display.name")
@@ -1,7 +1,6 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.kotlin.idea.k2.codeinsight.inspections
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
@@ -50,12 +49,15 @@ class RedundantElseInIfInspection : AbstractKotlinApplicableInspection<KtIfExpre
override fun getActionFamilyName(): String = KotlinBundle.message("remove.redundant.else.fix.text")
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession) =
object : KtVisitorVoid() {
override fun visitIfExpression(expression: KtIfExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitIfExpression(expression: KtIfExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
}
override fun getApplicabilityRange(): KotlinApplicabilityRange<KtIfExpression> = applicabilityRange {
it.lastSingleElseKeyword()?.textRange?.shiftRight(-it.startOffset)
@@ -1,12 +1,10 @@
// 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.k2.codeinsight.inspections
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.TextRange
import com.intellij.psi.PsiElementVisitor
import com.intellij.psi.util.elementType
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.idea.base.psi.safeDeparenthesize
@@ -23,13 +21,17 @@ import org.jetbrains.kotlin.psi.psiUtil.startOffset
import org.jetbrains.kotlin.psi.stubs.elements.KtStubElementTypes
internal class RedundantElvisReturnNullInspection : AbstractKotlinApplicableInspection<KtBinaryExpression>() {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitBinaryExpression(expression: KtBinaryExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitBinaryExpression(expression: KtBinaryExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
}
override fun getProblemDescription(element: KtBinaryExpression): String = KotlinBundle.message("inspection.redundant.elvis.return.null.descriptor")
override fun getActionFamilyName(): String = KotlinBundle.message("remove.redundant.elvis.return.null.text")
@@ -1,12 +1,10 @@
// 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.k2.codeinsight.inspections
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemHighlightType
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.inspections.AbstractKotlinApplicableInspectionWithContext
@@ -17,13 +15,16 @@ import org.jetbrains.kotlin.psi.*
internal class RemoveSingleExpressionStringTemplateInspection :
AbstractKotlinApplicableInspectionWithContext<KtStringTemplateExpression, RemoveSingleExpressionStringTemplateInspection.Context>() {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitStringTemplateExpression(expression: KtStringTemplateExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitStringTemplateExpression(expression: KtStringTemplateExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
}
class Context(val isString: Boolean)
override fun getProblemDescription(element: KtStringTemplateExpression, context: Context): String =
@@ -2,11 +2,9 @@
package org.jetbrains.kotlin.idea.k2.codeinsight.inspections
import com.intellij.codeInspection.CleanupLocalInspectionTool
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
import com.intellij.refactoring.suggested.startOffset
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.calls.successfulFunctionCallOrNull
@@ -27,13 +25,16 @@ internal class RemoveToStringInStringTemplateInspection :
AbstractKotlinApplicableInspection<KtDotQualifiedExpression>(),
CleanupLocalInspectionTool {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitDotQualifiedExpression(expression: KtDotQualifiedExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitDotQualifiedExpression(expression: KtDotQualifiedExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
}
override fun getProblemDescription(element: KtDotQualifiedExpression): String = KotlinBundle.message("remove.to.string.fix.text")
override fun getActionFamilyName(): String = KotlinBundle.message("remove.to.string.fix.text")
@@ -2,11 +2,9 @@
package org.jetbrains.kotlin.idea.k2.codeinsight.inspections
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.inspections.AbstractKotlinApplicableInspection
@@ -43,12 +41,15 @@ class ReplaceArrayOfWithLiteralInspection : AbstractKotlinApplicableInspection<K
override fun getActionFamilyName(): String = KotlinBundle.message("replace.with.array.literal.fix.family.name")
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor =
object : KtVisitorVoid() {
override fun visitCallExpression(expression: KtCallExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitCallExpression(expression: KtCallExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
}
override fun getApplicabilityRange(): KotlinApplicabilityRange<KtCallExpression> = ApplicabilityRanges.SELF
@@ -1,14 +1,12 @@
// 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.k2.codeinsight.inspections
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemHighlightType
import com.intellij.codeInspection.ProblemHighlightType.GENERIC_ERROR_OR_WARNING
import com.intellij.codeInspection.ProblemHighlightType.INFORMATION
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.calls.KtSimpleFunctionCall
import org.jetbrains.kotlin.analysis.api.calls.successfulCallOrNull
@@ -33,13 +31,15 @@ import org.jetbrains.kotlin.util.OperatorNameConventions
internal class ReplaceGetOrSetInspection :
AbstractKotlinApplicableInspectionWithContext<KtDotQualifiedExpression, ReplaceGetOrSetInspection.Context>() {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitDotQualifiedExpression(expression: KtDotQualifiedExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitDotQualifiedExpression(expression: KtDotQualifiedExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
}
class Context(val calleeName: Name, val problemHighlightType: ProblemHighlightType)
override fun getProblemDescription(element: KtDotQualifiedExpression, context: Context): String =
@@ -2,11 +2,9 @@
package org.jetbrains.kotlin.idea.k2.codeinsight.inspections
import com.intellij.codeInspection.CleanupLocalInspectionTool
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.calls.singleVariableAccessCall
import org.jetbrains.kotlin.analysis.api.calls.symbol
@@ -31,11 +29,13 @@ class SelfAssignmentInspection : AbstractKotlinApplicableInspectionWithContext<K
override fun getActionFamilyName(): String = KotlinBundle.message("remove.self.assignment.fix.text")
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitBinaryExpression(expression: KtBinaryExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitBinaryExpression(expression: KtBinaryExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
}
@@ -3,11 +3,9 @@
package org.jetbrains.kotlin.idea.k2.codeinsight.inspections.declarations
import com.intellij.codeInspection.CleanupLocalInspectionTool
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.inspections.AbstractKotlinApplicableInspectionWithContext
@@ -21,13 +19,16 @@ internal class RedundantUnitReturnTypeInspection :
AbstractKotlinApplicableInspectionWithContext<KtNamedFunction, TypeInfo>(),
CleanupLocalInspectionTool {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitNamedFunction(function: KtNamedFunction) {
visitTargetElement(function, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitNamedFunction(function: KtNamedFunction) {
visitTargetElement(function, holder, isOnTheFly)
}
}
override fun getProblemDescription(element: KtNamedFunction, context: TypeInfo): String =
KotlinBundle.message("inspection.redundant.unit.return.type.display.name")
@@ -1,7 +1,6 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.kotlin.idea.k2.codeinsight.inspections.declarations
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemHighlightType
import com.intellij.codeInspection.ProblemHighlightType.GENERIC_ERROR_OR_WARNING
import com.intellij.codeInspection.ProblemHighlightType.INFORMATION
@@ -12,7 +11,6 @@ import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.TextRange
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.idea.base.psi.isOneLiner
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
@@ -39,15 +37,17 @@ class UseExpressionBodyInspection :
element: KtDeclarationWithBody, context: Context
): @InspectionMessage String = KotlinBundle.message("use.expression.body.instead.of.0", context.subject)
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitNamedFunction(function: KtNamedFunction) {
visitTargetElement(function, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitPropertyAccessor(accessor: KtPropertyAccessor) {
visitTargetElement(accessor, holder, isOnTheFly)
}
override fun visitNamedFunction(function: KtNamedFunction) {
visitTargetElement(function, holder, isOnTheFly)
}
override fun visitPropertyAccessor(accessor: KtPropertyAccessor) {
visitTargetElement(accessor, holder, isOnTheFly)
}
}
@@ -2,11 +2,9 @@
package org.jetbrains.kotlin.idea.k2.codeinsight.inspections.diagnosticBased
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.components.KtDiagnosticCheckerFilter
import org.jetbrains.kotlin.analysis.api.fir.diagnostics.KtFirDiagnostic
@@ -21,13 +19,17 @@ import org.jetbrains.kotlin.psi.*
internal class UnusedVariableInspection
: AbstractKotlinApplicableInspection<KtNamedDeclaration>(), AbstractKotlinApplicableDiagnosticInspection<KtNamedDeclaration, KtFirDiagnostic.UnusedVariable> {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitNamedDeclaration(declaration: KtNamedDeclaration) {
visitTargetElement(declaration, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitNamedDeclaration(declaration: KtNamedDeclaration) {
visitTargetElement(declaration, holder, isOnTheFly)
}
}
override fun getProblemDescription(element: KtNamedDeclaration): String =
KotlinBundle.message("inspection.kotlin.unused.variable.display.name")
@@ -1,12 +1,10 @@
// 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.k2.codeinsight.inspections.expressions
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.inspections.AbstractKotlinApplicableInspection
@@ -18,13 +16,17 @@ import org.jetbrains.kotlin.psi.KtPrefixExpression
import org.jetbrains.kotlin.psi.KtVisitorVoid
internal class KotlinDoubleNegationInspection : AbstractKotlinApplicableInspection<KtPrefixExpression>() {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitPrefixExpression(expression: KtPrefixExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitPrefixExpression(expression: KtPrefixExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
}
override fun getProblemDescription(element: KtPrefixExpression): String =
KotlinBundle.message("inspection.kotlin.double.negation.display.name")
@@ -3,12 +3,10 @@
package org.jetbrains.kotlin.idea.k2.codeinsight.inspections.expressions
import com.intellij.codeInsight.intention.FileModifier
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemHighlightType
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.analyze
import org.jetbrains.kotlin.analysis.api.calls.KtSimpleFunctionCall
@@ -34,13 +32,16 @@ import org.jetbrains.kotlin.util.OperatorNameConventions
internal class ReplaceCallWithBinaryOperatorInspection :
AbstractKotlinApplicableInspectionWithContext<KtDotQualifiedExpression, ReplaceCallWithBinaryOperatorInspection.Context>() {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitDotQualifiedExpression(expression: KtDotQualifiedExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitDotQualifiedExpression(expression: KtDotQualifiedExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
}
@FileModifier.SafeTypeForPreview
data class Context(val operation: KtSingleValueToken, val isFloatingPointEquals: Boolean)
@@ -1,11 +1,9 @@
// 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.k2.codeinsight.inspections.expressions
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionSymbol
import org.jetbrains.kotlin.analysis.api.symbols.receiverType
@@ -28,11 +26,14 @@ private val COLLECTION_CLASS_IDS = setOf(StandardClassIds.Collection, StandardCl
StandardClassIds.elementTypeByPrimitiveArrayType.keys + StandardClassIds.unsignedArrayTypeByElementType.keys
internal class ReplaceCollectionCountWithSizeInspection : AbstractKotlinApplicableInspection<KtCallExpression>() {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitCallExpression(expression: KtCallExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitCallExpression(expression: KtCallExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
}
@@ -1,11 +1,9 @@
// 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.k2.codeinsight.inspections.expressions
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.calls.*
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.inspections.AbstractKotlinApplicableInspectionWithContext
@@ -19,13 +17,16 @@ import org.jetbrains.kotlin.psi.*
internal sealed class ReplaceSizeCheckInspectionBase :
AbstractKotlinApplicableInspectionWithContext<KtBinaryExpression, ReplaceSizeCheckInspectionBase.ReplacementInfo>() {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitBinaryExpression(expression: KtBinaryExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitBinaryExpression(expression: KtBinaryExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
}
enum class EmptinessCheckMethod(val callString: String) {
IS_EMPTY("isEmpty()"), IS_NOT_EMPTY("isNotEmpty()")
}
@@ -1,13 +1,11 @@
// 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.k2.codeinsight.inspections.expressions
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.TextRange
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiElementVisitor
import com.intellij.psi.SmartPsiElementPointer
import com.intellij.psi.search.searches.ReferencesSearch
import com.intellij.refactoring.suggested.startOffset
@@ -45,13 +43,16 @@ import org.jetbrains.kotlin.psi.psiUtil.createSmartPointer
internal class WhenWithOnlyElseInspection
: AbstractKotlinApplicableInspectionWithContext<KtWhenExpression, WhenWithOnlyElseInspection.Context>() {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitWhenExpression(expression: KtWhenExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitWhenExpression(expression: KtWhenExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
}
data class WhenSubjectVariableInfo(
val subjectVariable: SmartPsiElementPointer<KtProperty>,
val initializer: SmartPsiElementPointer<KtExpression>?,
@@ -2,11 +2,9 @@
package org.jetbrains.kotlin.idea.codeInsight.inspections.shared
import com.intellij.codeInspection.CleanupLocalInspectionTool
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol
@@ -27,13 +25,16 @@ private val FILTER_IS_INSTANCE_CALLABLE_ID = CallableId(StandardClassIds.BASE_CO
internal class FilterIsInstanceCallWithClassLiteralArgumentInspection :
AbstractKotlinApplicableInspection<KtCallExpression>(), CleanupLocalInspectionTool {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitCallExpression(expression: KtCallExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitCallExpression(expression: KtCallExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
}
override fun getProblemDescription(element: KtCallExpression): String =
KotlinBundle.message("inspection.filter.is.instance.call.with.class.literal.argument.display.name")
@@ -1,19 +1,15 @@
// Copyright 2000-2024 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.inspections.shared
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.inspections.AbstractKotlinApplicableInspection
import org.jetbrains.kotlin.idea.codeinsight.api.applicators.KotlinApplicabilityRange
import org.jetbrains.kotlin.idea.codeinsight.api.applicators.applicabilityRange
import org.jetbrains.kotlin.idea.codeinsights.impl.base.applicators.ApplicabilityRanges
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.startOffset
internal class InfixCallToOrdinaryInspection : AbstractKotlinApplicableInspection<KtBinaryExpression>() {
override fun getProblemDescription(element: KtBinaryExpression) = KotlinBundle.message("replace.infix.call.with.ordinary.call")
@@ -24,10 +20,12 @@ internal class InfixCallToOrdinaryInspection : AbstractKotlinApplicableInspectio
override fun getActionFamilyName() = KotlinBundle.message("replace.infix.call.with.ordinary.call")
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor =
binaryExpressionVisitor {
visitTargetElement(it, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = binaryExpressionVisitor {
visitTargetElement(it, holder, isOnTheFly)
}
override fun getActionName(element: KtBinaryExpression): String = KotlinBundle.message("replace.infix.call.with.ordinary.call")
@@ -1,13 +1,11 @@
// Copyright 2000-2024 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.inspections.shared
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.codeInspection.util.InspectionMessage
import com.intellij.codeInspection.util.IntentionFamilyName
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.idea.base.psi.getParentLambdaLabelName
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.inspections.AbstractKotlinApplicableInspection
@@ -15,6 +13,7 @@ import org.jetbrains.kotlin.idea.codeinsight.api.applicators.KotlinApplicability
import org.jetbrains.kotlin.idea.codeinsight.api.applicators.applicabilityRange
import org.jetbrains.kotlin.psi.KtBlockExpression
import org.jetbrains.kotlin.psi.KtReturnExpression
import org.jetbrains.kotlin.psi.KtVisitorVoid
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
import org.jetbrains.kotlin.psi.returnExpressionVisitor
@@ -37,10 +36,12 @@ internal class RedundantLabeledReturnOnLastExpressionInLambdaInspection : Abstra
return KotlinBundle.message("remove.return.0", labelName)
}
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor =
returnExpressionVisitor {
visitTargetElement(it, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
): KtVisitorVoid = returnExpressionVisitor {
visitTargetElement(it, holder, isOnTheFly)
}
override fun isApplicableByPsi(element: KtReturnExpression): Boolean {
val labelName = element.getLabelName() ?: return false
@@ -2,11 +2,9 @@
package org.jetbrains.kotlin.idea.codeInsight.inspections.shared
import com.intellij.codeInspection.CleanupLocalInspectionTool
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.calls.KtSuccessCallInfo
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
@@ -21,13 +19,16 @@ import org.jetbrains.kotlin.psi.KtVisitorVoid
internal class RemoveEmptyParenthesesFromLambdaCallInspection : AbstractKotlinApplicableInspection<KtValueArgumentList>(),
CleanupLocalInspectionTool {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitValueArgumentList(list: KtValueArgumentList) {
visitTargetElement(list, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitValueArgumentList(list: KtValueArgumentList) {
visitTargetElement(list, holder, isOnTheFly)
}
}
override fun getProblemDescription(element: KtValueArgumentList): String =
KotlinBundle.message("inspection.remove.empty.parentheses.from.lambda.call.display.name")
@@ -1,11 +1,9 @@
// 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.k2.codeinsight.inspections
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
import com.intellij.psi.SmartPsiElementPointer
import com.intellij.refactoring.suggested.createSmartPointer
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
@@ -24,13 +22,17 @@ import org.jetbrains.kotlin.psi.KtStringTemplateExpression
import org.jetbrains.kotlin.psi.KtVisitorVoid
internal class ConvertToStringTemplateInspection : AbstractKotlinApplicableInspectionWithContext<KtBinaryExpression, ConvertToStringTemplateInspection.Context>() {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor {
return object : KtVisitorVoid() {
override fun visitBinaryExpression(expression: KtBinaryExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitBinaryExpression(expression: KtBinaryExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
}
class Context(val replacement: SmartPsiElementPointer<KtStringTemplateExpression>)
override fun apply(element: KtBinaryExpression, context: Context, project: Project, updater: ModPsiUpdater) {
@@ -1,12 +1,10 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.kotlin.idea.k2.codeinsight.intentions
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemHighlightType
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.inspections.AbstractKotlinApplicableInspectionWithContext
@@ -36,12 +34,15 @@ class IntroduceWhenSubjectInspection : AbstractKotlinApplicableInspectionWithCon
override fun getActionFamilyName(): String = KotlinBundle.message("introduce.when.subject")
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession): PsiElementVisitor =
object : KtVisitorVoid() {
override fun visitWhenExpression(expression: KtWhenExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
override fun buildVisitor(
holder: ProblemsHolder,
isOnTheFly: Boolean,
) = object : KtVisitorVoid() {
override fun visitWhenExpression(expression: KtWhenExpression) {
visitTargetElement(expression, holder, isOnTheFly)
}
}
override fun getApplicabilityRange(): KotlinApplicabilityRange<KtWhenExpression> = applicabilityTarget { it.whenKeyword }