Skip to content

Commit a92074b

Browse files
committed
SONARKT-400 Migrate LiftReturnStatementCheck to kotlin-analysis-api
1 parent e6f4a67 commit a92074b

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import com.intellij.psi.PsiElement
2121
import com.intellij.psi.PsiWhiteSpace
2222
import com.intellij.psi.impl.source.tree.LeafPsiElement
2323
import com.intellij.psi.util.PsiTreeUtil
24+
import org.jetbrains.kotlin.analysis.api.KaIdeApi
2425
import org.jetbrains.kotlin.analysis.api.resolution.KaCall
2526
import org.jetbrains.kotlin.analysis.api.resolution.KaExplicitReceiverValue
2627
import org.jetbrains.kotlin.analysis.api.resolution.KaFunctionCall
@@ -883,8 +884,9 @@ fun SensorContext.hasCacheEnabled(): Boolean {
883884
isCacheEnabled
884885
}
885886

886-
fun KtWhenExpression.isExhaustive(context: KotlinFileContext): Boolean {
887-
return entries.any { it.isElse } || context.bindingContext[BindingContext.EXHAUSTIVE_WHEN, this] == true
887+
@OptIn(KaIdeApi::class)
888+
fun KtWhenExpression.isExhaustive(): Boolean = withKaSession {
889+
return entries.any { it.isElse } || computeMissingCases().isEmpty()
888890
}
889891

890892
val PropertyDescriptor.unwrappedGetMethod: FunctionDescriptor?

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import org.sonarsource.kotlin.api.checks.AbstractCheck
2727
import org.sonarsource.kotlin.api.checks.isExhaustive
2828
import org.sonarsource.kotlin.api.frontend.KotlinFileContext
2929

30-
@org.sonarsource.kotlin.api.frontend.K1only
3130
@Rule(key = "S6510")
3231
class LiftReturnStatementCheck : AbstractCheck() {
3332

@@ -47,7 +46,7 @@ class LiftReturnStatementCheck : AbstractCheck() {
4746
isReturnOrReturnBlock(it.expression!!)
4847
}
4948

50-
if (isAllBranchesReturn && expression.isExhaustive(context)) {
49+
if (isAllBranchesReturn && expression.isExhaustive()) {
5150
reportIssue(expression.whenKeyword, context)
5251
}
5352
}

0 commit comments

Comments
 (0)