diff --git a/plugins/kotlin/code-insight/api/src/org/jetbrains/kotlin/idea/codeinsight/api/applicable/inspections/AbstractKotlinApplicableInspectionBase.kt b/plugins/kotlin/code-insight/api/src/org/jetbrains/kotlin/idea/codeinsight/api/applicable/inspections/AbstractKotlinApplicableInspectionBase.kt index ecdedf85e106..79043cd6762b 100644 --- a/plugins/kotlin/code-insight/api/src/org/jetbrains/kotlin/idea/codeinsight/api/applicable/inspections/AbstractKotlinApplicableInspectionBase.kt +++ b/plugins/kotlin/code-insight/api/src/org/jetbrains/kotlin/idea/codeinsight/api/applicable/inspections/AbstractKotlinApplicableInspectionBase.kt @@ -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 : 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) } diff --git a/plugins/kotlin/code-insight/impl-base/src/org/jetbrains/kotlin/idea/codeinsights/impl/base/inspections/RedundantModifierInspectionBase.kt b/plugins/kotlin/code-insight/impl-base/src/org/jetbrains/kotlin/idea/codeinsights/impl/base/inspections/RedundantModifierInspectionBase.kt index 168c8e7cb0fd..b828101c54fd 100644 --- a/plugins/kotlin/code-insight/impl-base/src/org/jetbrains/kotlin/idea/codeinsights/impl/base/inspections/RedundantModifierInspectionBase.kt +++ b/plugins/kotlin/code-insight/impl-base/src/org/jetbrains/kotlin/idea/codeinsights/impl/base/inspections/RedundantModifierInspectionBase.kt @@ -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(), 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) diff --git a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/CanBePrimaryConstructorPropertyInspection.kt b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/CanBePrimaryConstructorPropertyInspection.kt index e53e0a1ce909..0d6bffdecabf 100644 --- a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/CanBePrimaryConstructorPropertyInspection.kt +++ b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/CanBePrimaryConstructorPropertyInspection.kt @@ -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() { - 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 ?: "???" ) diff --git a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/FoldInitializerAndIfToElvisInspection.kt b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/FoldInitializerAndIfToElvisInspection.kt index 31d11dcfe18a..31d3e6cd34c2 100644 --- a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/FoldInitializerAndIfToElvisInspection.kt +++ b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/FoldInitializerAndIfToElvisInspection.kt @@ -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) } } diff --git a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/ImplicitThisInspection.kt b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/ImplicitThisInspection.kt index 8a4b352363e9..56bfc9288657 100644 --- a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/ImplicitThisInspection.kt +++ b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/ImplicitThisInspection.kt @@ -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() { - 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") diff --git a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/JoinDeclarationAndAssignmentInspection.kt b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/JoinDeclarationAndAssignmentInspection.kt index 63a9c8f50481..1e86af22748b 100644 --- a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/JoinDeclarationAndAssignmentInspection.kt +++ b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/JoinDeclarationAndAssignmentInspection.kt @@ -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) } } diff --git a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/MoveLambdaOutsideParenthesesInspection.kt b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/MoveLambdaOutsideParenthesesInspection.kt index bf3f34473dd9..fadf6b972111 100644 --- a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/MoveLambdaOutsideParenthesesInspection.kt +++ b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/MoveLambdaOutsideParenthesesInspection.kt @@ -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) } } diff --git a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/NullableBooleanElvisInspection.kt b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/NullableBooleanElvisInspection.kt index ee872967cdcc..1bf62cbf9dc0 100644 --- a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/NullableBooleanElvisInspection.kt +++ b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/NullableBooleanElvisInspection.kt @@ -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() { - 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") diff --git a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/RedundantElseInIfInspection.kt b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/RedundantElseInIfInspection.kt index 3965e5f5dece..a4467123c514 100644 --- a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/RedundantElseInIfInspection.kt +++ b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/RedundantElseInIfInspection.kt @@ -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 = applicabilityRange { it.lastSingleElseKeyword()?.textRange?.shiftRight(-it.startOffset) diff --git a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/RedundantElvisReturnNullInspection.kt b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/RedundantElvisReturnNullInspection.kt index 1b689f8750ef..c560df97210d 100644 --- a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/RedundantElvisReturnNullInspection.kt +++ b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/RedundantElvisReturnNullInspection.kt @@ -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() { - 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") diff --git a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/RemoveSingleExpressionStringTemplateInspection.kt b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/RemoveSingleExpressionStringTemplateInspection.kt index 1f39e00670c7..6199583b63a6 100644 --- a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/RemoveSingleExpressionStringTemplateInspection.kt +++ b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/RemoveSingleExpressionStringTemplateInspection.kt @@ -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() { - 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 = diff --git a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/RemoveToStringInStringTemplateInspection.kt b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/RemoveToStringInStringTemplateInspection.kt index 21fca0ea6c65..a8fece71e3a2 100644 --- a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/RemoveToStringInStringTemplateInspection.kt +++ b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/RemoveToStringInStringTemplateInspection.kt @@ -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(), 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") diff --git a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/ReplaceArrayOfWithLiteralInspection.kt b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/ReplaceArrayOfWithLiteralInspection.kt index 86bb9d2b2bca..bc448606ee07 100644 --- a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/ReplaceArrayOfWithLiteralInspection.kt +++ b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/ReplaceArrayOfWithLiteralInspection.kt @@ -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 = ApplicabilityRanges.SELF diff --git a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/ReplaceGetOrSetInspection.kt b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/ReplaceGetOrSetInspection.kt index a9dad8e1c259..39b4da39e625 100644 --- a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/ReplaceGetOrSetInspection.kt +++ b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/ReplaceGetOrSetInspection.kt @@ -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() { - 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 = diff --git a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/SelfAssignmentInspection.kt b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/SelfAssignmentInspection.kt index 29f4f52694e5..3991411e7da8 100644 --- a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/SelfAssignmentInspection.kt +++ b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/SelfAssignmentInspection.kt @@ -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(), 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") diff --git a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/declarations/UseExpressionBodyInspection.kt b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/declarations/UseExpressionBodyInspection.kt index 6e09633776d0..419b691217d2 100644 --- a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/declarations/UseExpressionBodyInspection.kt +++ b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/declarations/UseExpressionBodyInspection.kt @@ -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) } } diff --git a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/diagnosticBased/UnusedVariableInspection.kt b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/diagnosticBased/UnusedVariableInspection.kt index 2509026bed7e..dea9413d554b 100644 --- a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/diagnosticBased/UnusedVariableInspection.kt +++ b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/diagnosticBased/UnusedVariableInspection.kt @@ -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(), AbstractKotlinApplicableDiagnosticInspection { - 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") diff --git a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/expressions/KotlinDoubleNegationInspection.kt b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/expressions/KotlinDoubleNegationInspection.kt index 802635ac8670..2180aa1a2811 100644 --- a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/expressions/KotlinDoubleNegationInspection.kt +++ b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/expressions/KotlinDoubleNegationInspection.kt @@ -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() { - 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") diff --git a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/expressions/ReplaceCallWithBinaryOperatorInspection.kt b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/expressions/ReplaceCallWithBinaryOperatorInspection.kt index f1d3fa2f9db7..c30cd195a0c6 100644 --- a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/expressions/ReplaceCallWithBinaryOperatorInspection.kt +++ b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/expressions/ReplaceCallWithBinaryOperatorInspection.kt @@ -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() { - 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) diff --git a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/expressions/ReplaceCollectionCountWithSizeInspection.kt b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/expressions/ReplaceCollectionCountWithSizeInspection.kt index 1ee74361cdf7..43553b9128fb 100644 --- a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/expressions/ReplaceCollectionCountWithSizeInspection.kt +++ b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/expressions/ReplaceCollectionCountWithSizeInspection.kt @@ -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() { - 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) } } diff --git a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/expressions/ReplaceSizeCheckInspectionBase.kt b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/expressions/ReplaceSizeCheckInspectionBase.kt index d5b0f7e59b35..37764d4bfc17 100644 --- a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/expressions/ReplaceSizeCheckInspectionBase.kt +++ b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/expressions/ReplaceSizeCheckInspectionBase.kt @@ -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() { - 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()") } diff --git a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/expressions/WhenWithOnlyElseInspection.kt b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/expressions/WhenWithOnlyElseInspection.kt index 94c24582a9c5..69ff9ba2c7e4 100644 --- a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/expressions/WhenWithOnlyElseInspection.kt +++ b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/expressions/WhenWithOnlyElseInspection.kt @@ -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() { - 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, val initializer: SmartPsiElementPointer?, diff --git a/plugins/kotlin/code-insight/inspections-shared/src/org/jetbrains/kotlin/idea/codeInsight/inspections/shared/FilterIsInstanceCallWithClassLiteralArgumentInspection.kt b/plugins/kotlin/code-insight/inspections-shared/src/org/jetbrains/kotlin/idea/codeInsight/inspections/shared/FilterIsInstanceCallWithClassLiteralArgumentInspection.kt index 996f60a2b9ec..660f41441d47 100644 --- a/plugins/kotlin/code-insight/inspections-shared/src/org/jetbrains/kotlin/idea/codeInsight/inspections/shared/FilterIsInstanceCallWithClassLiteralArgumentInspection.kt +++ b/plugins/kotlin/code-insight/inspections-shared/src/org/jetbrains/kotlin/idea/codeInsight/inspections/shared/FilterIsInstanceCallWithClassLiteralArgumentInspection.kt @@ -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(), 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") diff --git a/plugins/kotlin/code-insight/inspections-shared/src/org/jetbrains/kotlin/idea/codeInsight/inspections/shared/InfixCallToOrdinaryInspection.kt b/plugins/kotlin/code-insight/inspections-shared/src/org/jetbrains/kotlin/idea/codeInsight/inspections/shared/InfixCallToOrdinaryInspection.kt index 5e0b30657cc2..893ec28522fb 100644 --- a/plugins/kotlin/code-insight/inspections-shared/src/org/jetbrains/kotlin/idea/codeInsight/inspections/shared/InfixCallToOrdinaryInspection.kt +++ b/plugins/kotlin/code-insight/inspections-shared/src/org/jetbrains/kotlin/idea/codeInsight/inspections/shared/InfixCallToOrdinaryInspection.kt @@ -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() { 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") diff --git a/plugins/kotlin/code-insight/inspections-shared/src/org/jetbrains/kotlin/idea/codeInsight/inspections/shared/RedundantLabeledReturnOnLastExpressionInLambdaInspection.kt b/plugins/kotlin/code-insight/inspections-shared/src/org/jetbrains/kotlin/idea/codeInsight/inspections/shared/RedundantLabeledReturnOnLastExpressionInLambdaInspection.kt index b0856244e93b..f3b4fd017cd6 100644 --- a/plugins/kotlin/code-insight/inspections-shared/src/org/jetbrains/kotlin/idea/codeInsight/inspections/shared/RedundantLabeledReturnOnLastExpressionInLambdaInspection.kt +++ b/plugins/kotlin/code-insight/inspections-shared/src/org/jetbrains/kotlin/idea/codeInsight/inspections/shared/RedundantLabeledReturnOnLastExpressionInLambdaInspection.kt @@ -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 diff --git a/plugins/kotlin/code-insight/inspections-shared/src/org/jetbrains/kotlin/idea/codeInsight/inspections/shared/RemoveEmptyParenthesesFromLambdaCallInspection.kt b/plugins/kotlin/code-insight/inspections-shared/src/org/jetbrains/kotlin/idea/codeInsight/inspections/shared/RemoveEmptyParenthesesFromLambdaCallInspection.kt index 7f87e4026245..e53de88e56e6 100644 --- a/plugins/kotlin/code-insight/inspections-shared/src/org/jetbrains/kotlin/idea/codeInsight/inspections/shared/RemoveEmptyParenthesesFromLambdaCallInspection.kt +++ b/plugins/kotlin/code-insight/inspections-shared/src/org/jetbrains/kotlin/idea/codeInsight/inspections/shared/RemoveEmptyParenthesesFromLambdaCallInspection.kt @@ -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(), 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") diff --git a/plugins/kotlin/code-insight/intentions-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/ConvertToStringTemplateInspection.kt b/plugins/kotlin/code-insight/intentions-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/ConvertToStringTemplateInspection.kt index 6c517d68e55d..f3d030c8510d 100644 --- a/plugins/kotlin/code-insight/intentions-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/ConvertToStringTemplateInspection.kt +++ b/plugins/kotlin/code-insight/intentions-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/ConvertToStringTemplateInspection.kt @@ -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() { - 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) override fun apply(element: KtBinaryExpression, context: Context, project: Project, updater: ModPsiUpdater) { diff --git a/plugins/kotlin/code-insight/intentions-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/intentions/IntroduceWhenSubjectInspection.kt b/plugins/kotlin/code-insight/intentions-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/intentions/IntroduceWhenSubjectInspection.kt index a866438a21bb..af265469b60f 100644 --- a/plugins/kotlin/code-insight/intentions-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/intentions/IntroduceWhenSubjectInspection.kt +++ b/plugins/kotlin/code-insight/intentions-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/intentions/IntroduceWhenSubjectInspection.kt @@ -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 = applicabilityTarget { it.whenKeyword }