diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/CascadeIfInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/CascadeIfInspection.kt index fc7fa21b322..8f2d1902519 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/CascadeIfInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/CascadeIfInspection.kt @@ -21,6 +21,7 @@ import com.intellij.codeInspection.LocalInspectionToolSession import com.intellij.codeInspection.ProblemHighlightType import com.intellij.codeInspection.ProblemsHolder import org.jetbrains.kotlin.idea.intentions.branchedTransformations.intentions.IfToWhenIntention +import org.jetbrains.kotlin.idea.intentions.branchedTransformations.isOneLiner import org.jetbrains.kotlin.idea.intentions.branchedTransformations.isIfBranch import org.jetbrains.kotlin.idea.intentions.branches import org.jetbrains.kotlin.lexer.KtTokens @@ -36,6 +37,8 @@ class CascadeIfInspection : AbstractKotlinInspection() { val branches = expression.branches if (branches.size <= 2) return + if (expression.isOneLiner()) return + if (branches.any { it == null || it.lastBlockStatementOrThis() is KtIfExpression diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/UseExpressionBodyInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/UseExpressionBodyInspection.kt index 52464061631..a6e549ad8a5 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/UseExpressionBodyInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/UseExpressionBodyInspection.kt @@ -22,7 +22,6 @@ 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.openapi.fileEditor.FileDocumentManager import com.intellij.openapi.project.Project import com.intellij.psi.PsiElement import org.jetbrains.kotlin.builtins.KotlinBuiltIns @@ -30,6 +29,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.core.canOmitDeclaredType import org.jetbrains.kotlin.idea.core.replaced import org.jetbrains.kotlin.idea.core.setType +import org.jetbrains.kotlin.idea.intentions.branchedTransformations.isOneLiner import org.jetbrains.kotlin.idea.intentions.hasResultingIfWithoutElse import org.jetbrains.kotlin.idea.intentions.resultingWhens import org.jetbrains.kotlin.idea.util.CommentSaver @@ -86,12 +86,6 @@ class UseExpressionBodyInspection(private val convertEmptyToUnit: Boolean) : Abs } } - private fun KtExpression.isOneLiner(): Boolean { - val file = containingFile?.virtualFile ?: return false - val document = FileDocumentManager.getInstance().getDocument(file) ?: return false - return document.getLineNumber(textRange.startOffset) == document.getLineNumber(textRange.endOffset) - } - private fun KtDeclarationWithBody.findValueStatement(): KtExpression? { val body = blockExpression() ?: return null return body.findValueStatement() diff --git a/idea/testData/inspectionsLocal/cascadeIf/oneLiner.kt b/idea/testData/inspectionsLocal/cascadeIf/oneLiner.kt new file mode 100644 index 00000000000..a5215eb92bb --- /dev/null +++ b/idea/testData/inspectionsLocal/cascadeIf/oneLiner.kt @@ -0,0 +1,5 @@ +// PROBLEM: none + +fun foo(a: Boolean, b: Boolean): Int { + return if (a) 42 else if (b) 13 else 0 +} diff --git a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java index 89527b61c7d..c0b7c21f3a2 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java @@ -101,6 +101,12 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest { doTest(fileName); } + @TestMetadata("oneLiner.kt") + public void testOneLiner() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/cascadeIf/oneLiner.kt"); + doTest(fileName); + } + @TestMetadata("shortIf.kt") public void testShortIf() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/cascadeIf/shortIf.kt");