Skip to content

Commit a2e2889

Browse files
committed
SONARKT-400 Migrate SimplifiedPreconditionsCheck to kotlin-analysis-api
1 parent 86877ef commit a2e2889

File tree

1 file changed

+7
-10
lines changed

1 file changed

+7
-10
lines changed

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

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.sonarsource.kotlin.checks
1818

1919
import com.intellij.psi.impl.source.tree.LeafPsiElement
20+
import org.jetbrains.kotlin.analysis.api.resolution.KaFunctionCall
2021
import org.jetbrains.kotlin.lexer.KtSingleValueToken
2122
import org.jetbrains.kotlin.lexer.KtTokens
2223
import org.jetbrains.kotlin.psi.KtBinaryExpression
@@ -32,8 +33,6 @@ import org.jetbrains.kotlin.psi.KtThrowExpression
3233
import org.jetbrains.kotlin.psi.KtWhenConditionWithExpression
3334
import org.jetbrains.kotlin.psi.KtWhenEntry
3435
import org.jetbrains.kotlin.psi.psiUtil.isNull
35-
import org.jetbrains.kotlin.resolve.BindingContext
36-
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
3736
import org.sonar.check.Rule
3837
import org.sonarsource.kotlin.api.checks.CallAbstractCheck
3938
import org.sonarsource.kotlin.api.checks.ConstructorMatcher
@@ -52,7 +51,6 @@ private val ILLEGAL_ARGUMENT_EXCEPTION_CONSTRUCTOR_MATCH = ConstructorMatcher(ty
5251
withArguments("kotlin.String")
5352
}
5453

55-
@org.sonarsource.kotlin.api.frontend.K1only
5654
@Rule(key = "S6532")
5755
class SimplifiedPreconditionsCheck : CallAbstractCheck() {
5856

@@ -65,7 +63,8 @@ class SimplifiedPreconditionsCheck : CallAbstractCheck() {
6563
}
6664
)
6765

68-
override fun visitFunctionCall(callExpression: KtCallExpression, resolvedCall: ResolvedCall<*>, matchedFun: FunMatcherImpl, kotlinFileContext: KotlinFileContext) {
66+
67+
override fun visitFunctionCall(callExpression: KtCallExpression, resolvedCall: KaFunctionCall<*>, kotlinFileContext: KotlinFileContext) {
6968
val conditionExpression = callExpression.valueArguments.first().getArgumentExpression()
7069

7170
if (conditionExpression.isNullCheckCondition(KtTokens.EXCLEQ)) {
@@ -79,15 +78,13 @@ class SimplifiedPreconditionsCheck : CallAbstractCheck() {
7978
}
8079

8180
override fun visitThrowExpression(throwExpression: KtThrowExpression, kotlinFileContext: KotlinFileContext) {
82-
val bindingContext = kotlinFileContext.bindingContext
83-
8481
when {
85-
throwExpression.matchesException(bindingContext, ILLEGAL_STATE_EXCEPTION_CONSTRUCTOR_MATCH) -> {
82+
throwExpression.matchesException(ILLEGAL_STATE_EXCEPTION_CONSTRUCTOR_MATCH) -> {
8683
processException(throwExpression, kotlinFileContext, "check")
8784
processExceptionForError(throwExpression, kotlinFileContext)
8885
}
8986

90-
throwExpression.matchesException(bindingContext, ILLEGAL_ARGUMENT_EXCEPTION_CONSTRUCTOR_MATCH) ->
87+
throwExpression.matchesException(ILLEGAL_ARGUMENT_EXCEPTION_CONSTRUCTOR_MATCH) ->
9188
processException(throwExpression, kotlinFileContext, "require")
9289
}
9390
}
@@ -118,8 +115,8 @@ private fun KtExpression?.isNullCheckCondition(token: KtSingleValueToken) =
118115

119116
private fun KtBinaryExpression.getNullCheckVariable() = with(left!!) { if (isNull()) right!!.text else text }
120117

121-
private fun KtThrowExpression.matchesException(bindingContext: BindingContext, funMatcher: FunMatcherImpl) =
122-
(thrownExpression as? KtCallExpression)?.let { funMatcher.matches(it, bindingContext) } ?: false
118+
private fun KtThrowExpression.matchesException(funMatcher: FunMatcherImpl) =
119+
(thrownExpression as? KtCallExpression)?.let { funMatcher.matches(it) } ?: false
123120

124121
private fun KtThrowExpression.getErrorMessage() =
125122
(thrownExpression as? KtCallExpression)?.valueArguments.let { if (it?.size == 1) it[0].text else null }

0 commit comments

Comments
 (0)