Skip to content

Commit a1dd1d1

Browse files
committed
SONARKT-400 Migrate UselessIncrementCheck to kotlin-analysis-api
1 parent a92074b commit a1dd1d1

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

sonar-kotlin-api/src/main/java/org/sonarsource/kotlin/api/checks/ApiExtensions.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.analysis.api.resolution.successfulCallOrNull
3030
import org.jetbrains.kotlin.analysis.api.resolution.successfulFunctionCallOrNull
3131
import org.jetbrains.kotlin.analysis.api.resolution.symbol
3232
import org.jetbrains.kotlin.analysis.api.symbols.KaAnonymousFunctionSymbol
33+
import org.jetbrains.kotlin.analysis.api.symbols.KaLocalVariableSymbol
3334
import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol
3435
import org.jetbrains.kotlin.analysis.api.symbols.KaValueParameterSymbol
3536
import org.jetbrains.kotlin.analysis.api.symbols.KaVariableSymbol
@@ -764,9 +765,15 @@ fun KtExpression.isInitializedPredictably(searchStartNode: KtExpression, binding
764765
/**
765766
* Checks if an expression is a function local variable
766767
*/
768+
@Deprecated("use kotlin-analysis-api instead", replaceWith = ReplaceWith("isLocalVariable()"))
767769
fun KtExpression?.isLocalVariable(bindingContext: BindingContext) =
768770
(this is KtNameReferenceExpression) && (bindingContext[BindingContext.REFERENCE_TARGET, this] is LocalVariableDescriptor)
769771

772+
fun KtExpression?.isLocalVariable(): Boolean = withKaSession {
773+
if (this@isLocalVariable !is KtNameReferenceExpression) return false
774+
return mainReference.resolveToSymbol() is KaLocalVariableSymbol
775+
}
776+
770777
fun KtExpression?.setterMatches(bindingContext: BindingContext, propertyName: String, matcher: FunMatcherImpl): Boolean = when (this) {
771778
is KtNameReferenceExpression -> (getReferencedName() == propertyName) &&
772779
(matcher.matches((bindingContext[BindingContext.REFERENCE_TARGET, this] as? PropertyDescriptor)?.unwrappedSetMethod))

sonar-kotlin-checks/src/main/java/org/sonarsource/kotlin/checks/UselessIncrementCheck.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,12 @@ import org.sonarsource.kotlin.api.frontend.KotlinFileContext
3030
private val POSTFIX_INCREMENT_OPERATORS = listOf(KtTokens.PLUSPLUS, KtTokens.MINUSMINUS)
3131
private const val MESSAGE = "Remove this increment or correct the code not to waste it."
3232

33-
@org.sonarsource.kotlin.api.frontend.K1only
3433
@Rule(key = "S2123")
3534
class UselessIncrementCheck : AbstractCheck() {
3635

3736
override fun visitReturnExpression(returnExpression: KtReturnExpression, ctx: KotlinFileContext) {
3837
returnExpression.returnedExpression.asPostfixIncrement()?.let {
39-
if (it.baseExpression.isLocalVariable(ctx.bindingContext)) {
38+
if (it.baseExpression.isLocalVariable()) {
4039
ctx.reportIssue(it, MESSAGE)
4140
}
4241
}

0 commit comments

Comments
 (0)