From e2d5e9a1840fbab5bbcea3bca5bdf021f73a4600 Mon Sep 17 00:00:00 2001 From: Dmitry Gridin Date: Wed, 29 May 2019 14:23:43 +0700 Subject: [PATCH] Only `when` keyword should be highlighted in WhenWithOnlyElseInspection #KT-31673 Fixed --- .../idea/inspections/WhenWithOnlyElseInspection.kt | 11 +++++++---- .../subjectVariable/blockElse/multiReference.kt | 4 ++-- .../subjectVariable/blockElse/noReference.kt | 4 ++-- .../subjectVariable/blockElse/noReference2.kt | 4 ++-- .../subjectVariable/blockElse/singleReference.kt | 4 ++-- .../blockElseUsedAsExpression/multiReference.kt | 4 ++-- .../blockElseUsedAsExpression/noReference.kt | 4 ++-- .../blockElseUsedAsExpression/noReference2.kt | 4 ++-- .../blockElseUsedAsExpression/singleReference.kt | 4 ++-- .../whenWithOnlyElse/subjectVariable/hasAnnotation.kt | 4 ++-- .../subjectVariable/singleElse/multiReference.kt | 4 ++-- .../singleElse/multiReferenceUsedAsExpression.kt | 4 ++-- .../subjectVariable/singleElse/noReference.kt | 4 ++-- .../subjectVariable/singleElse/noReference2.kt | 4 ++-- .../singleElse/noReferenceUsedAsExpression.kt | 4 ++-- .../singleElse/noReferenceUsedAsExpression2.kt | 4 ++-- .../subjectVariable/singleElse/singleReference.kt | 4 ++-- .../singleElse/singleReferenceUsedAsExpression.kt | 4 ++-- 18 files changed, 41 insertions(+), 38 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/WhenWithOnlyElseInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/WhenWithOnlyElseInspection.kt index ff4eb5ca4a2..a690dd62e80 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/WhenWithOnlyElseInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/WhenWithOnlyElseInspection.kt @@ -13,6 +13,7 @@ import com.intellij.openapi.project.Project import com.intellij.psi.PsiElementVisitor import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.psi.KtWhenExpression +import org.jetbrains.kotlin.psi.psiUtil.startOffset import org.jetbrains.kotlin.psi.whenExpressionVisitor import org.jetbrains.kotlin.resolve.bindingContextUtil.isUsedAsExpression @@ -24,15 +25,17 @@ class WhenWithOnlyElseInspection : AbstractKotlinInspection() { val usedAsExpression = expression.isUsedAsExpression(expression.analyze()) - holder.registerProblem(expression, - "'when' has only 'else' branch and should be simplified", - SimplifyFix(usedAsExpression) + holder.registerProblem( + expression, + expression.whenKeyword.textRange.shiftLeft(expression.startOffset), + "'when' has only 'else' branch and should be simplified", + SimplifyFix(usedAsExpression) ) } } private class SimplifyFix( - private val isUsedAsExpression: Boolean + private val isUsedAsExpression: Boolean ) : LocalQuickFix { override fun getFamilyName() = name diff --git a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElse/multiReference.kt b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElse/multiReference.kt index 1a48d874379..3eb070f2c66 100644 --- a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElse/multiReference.kt +++ b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElse/multiReference.kt @@ -1,10 +1,10 @@ fun test() { - when (val a = create()) { + when (val a = create()) { else -> { use(a, a) foo() } - } + } } fun create(): String = "" diff --git a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElse/noReference.kt b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElse/noReference.kt index e713672b797..20d920706f6 100644 --- a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElse/noReference.kt +++ b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElse/noReference.kt @@ -1,10 +1,10 @@ fun test() { - when (val a = create()) { + when (val a = create()) { else -> { use("") foo() } - } + } } fun create(): String = "" diff --git a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElse/noReference2.kt b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElse/noReference2.kt index da088194031..f9b90738f0a 100644 --- a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElse/noReference2.kt +++ b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElse/noReference2.kt @@ -1,10 +1,10 @@ fun test() { - when (val a = 42) { + when (val a = 42) { else -> { use("") foo() } - } + } } fun use(s: String) {} diff --git a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElse/singleReference.kt b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElse/singleReference.kt index 761af5566bf..d93e2e0a076 100644 --- a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElse/singleReference.kt +++ b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElse/singleReference.kt @@ -1,10 +1,10 @@ fun test() { - when (val a = create()) { + when (val a = create()) { else -> { use(a) foo() } - } + } } fun create(): String = "" diff --git a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElseUsedAsExpression/multiReference.kt b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElseUsedAsExpression/multiReference.kt index e083cd87d13..0162fb2f457 100644 --- a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElseUsedAsExpression/multiReference.kt +++ b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElseUsedAsExpression/multiReference.kt @@ -1,10 +1,10 @@ // WITH_RUNTIME fun test() { - val x = when (val a = create()) { + val x = when (val a = create()) { else -> { use(a, a) } - } + } } fun create(): String = "" diff --git a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElseUsedAsExpression/noReference.kt b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElseUsedAsExpression/noReference.kt index ab61e9ddf07..ac9484d0fd3 100644 --- a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElseUsedAsExpression/noReference.kt +++ b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElseUsedAsExpression/noReference.kt @@ -1,10 +1,10 @@ // WITH_RUNTIME fun test() { - val x = when (val a = create()) { + val x = when (val a = create()) { else -> { use("") } - } + } } fun create(): String = "" diff --git a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElseUsedAsExpression/noReference2.kt b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElseUsedAsExpression/noReference2.kt index 3508544c04f..c861d3084d3 100644 --- a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElseUsedAsExpression/noReference2.kt +++ b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElseUsedAsExpression/noReference2.kt @@ -1,10 +1,10 @@ // WITH_RUNTIME fun test() { - val x = when (val a = 42) { + val x = when (val a = 42) { else -> { use("") } - } + } } fun use(s: String) {} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElseUsedAsExpression/singleReference.kt b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElseUsedAsExpression/singleReference.kt index 0349bde9f76..f4dc693807e 100644 --- a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElseUsedAsExpression/singleReference.kt +++ b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/blockElseUsedAsExpression/singleReference.kt @@ -1,10 +1,10 @@ // WITH_RUNTIME fun test() { - val x = when (val a = create()) { + val x = when (val a = create()) { else -> { use(a) } - } + } } fun create(): String = "" diff --git a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/hasAnnotation.kt b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/hasAnnotation.kt index 73a5ed10e05..0de070b5861 100644 --- a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/hasAnnotation.kt +++ b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/hasAnnotation.kt @@ -1,7 +1,7 @@ fun hasAnnotation() { - when (@Bar val a = create()) { + when (@Bar val a = create()) { else -> use(a) - } + } } fun create(): String = "" diff --git a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/multiReference.kt b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/multiReference.kt index d8633826887..592b2ec7c79 100644 --- a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/multiReference.kt +++ b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/multiReference.kt @@ -1,7 +1,7 @@ fun test() { - when (val a = create()) { + when (val a = create()) { else -> use(a, a) - } + } } fun create(): String = "" diff --git a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/multiReferenceUsedAsExpression.kt b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/multiReferenceUsedAsExpression.kt index dd17b1d4c1f..cb2dd161596 100644 --- a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/multiReferenceUsedAsExpression.kt +++ b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/multiReferenceUsedAsExpression.kt @@ -1,8 +1,8 @@ // WITH_RUNTIME fun test() { - val x = when (val a = create()) { + val x = when (val a = create()) { else -> use(a, a) - } + } } fun create(): String = "" diff --git a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/noReference.kt b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/noReference.kt index 0131beaa32c..383e9f243e2 100644 --- a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/noReference.kt +++ b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/noReference.kt @@ -1,7 +1,7 @@ fun test() { - when (val a = create()) { + when (val a = create()) { else -> use("") - } + } } fun create(): String = "" diff --git a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/noReference2.kt b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/noReference2.kt index 4f489cb5f3c..51c06d8ccad 100644 --- a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/noReference2.kt +++ b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/noReference2.kt @@ -1,7 +1,7 @@ fun test() { - when (val a = 42) { + when (val a = 42) { else -> use("") - } + } } fun use(s: String) {} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/noReferenceUsedAsExpression.kt b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/noReferenceUsedAsExpression.kt index 356d0df4a1f..6bb117bd224 100644 --- a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/noReferenceUsedAsExpression.kt +++ b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/noReferenceUsedAsExpression.kt @@ -1,8 +1,8 @@ // WITH_RUNTIME fun test() { - val x = when (val a = create()) { + val x = when (val a = create()) { else -> use("") - } + } } fun create(): String = "" diff --git a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/noReferenceUsedAsExpression2.kt b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/noReferenceUsedAsExpression2.kt index 44c272a7777..b191f02b165 100644 --- a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/noReferenceUsedAsExpression2.kt +++ b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/noReferenceUsedAsExpression2.kt @@ -1,8 +1,8 @@ // WITH_RUNTIME fun test() { - val x = when (val a = 42) { + val x = when (val a = 42) { else -> use("") - } + } } fun use(s: String) {} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/singleReference.kt b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/singleReference.kt index 0c14a75b43c..def82072cb9 100644 --- a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/singleReference.kt +++ b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/singleReference.kt @@ -1,7 +1,7 @@ fun test() { - when (val a = create()) { + when (val a = create()) { else -> use(a) - } + } } fun create(): String = "" diff --git a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/singleReferenceUsedAsExpression.kt b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/singleReferenceUsedAsExpression.kt index 001f999f648..a3f111a43fe 100644 --- a/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/singleReferenceUsedAsExpression.kt +++ b/idea/testData/inspectionsLocal/whenWithOnlyElse/subjectVariable/singleElse/singleReferenceUsedAsExpression.kt @@ -1,8 +1,8 @@ // WITH_RUNTIME fun test() { - val x = when (val a = create()) { + val x = when (val a = create()) { else -> use(a) - } + } } fun create(): String = ""