From a8202ddcf044326e665d36886bfc2083e024d250 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Thu, 6 Dec 2018 15:08:12 +0700 Subject: [PATCH] ControlFlowAnalyzer: do not generate jump out of switch rule if body cannot complete normally --- .../dataFlow/ControlFlowAnalyzer.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ControlFlowAnalyzer.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ControlFlowAnalyzer.java index fd623d4c30f4..561ead133e00 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ControlFlowAnalyzer.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ControlFlowAnalyzer.java @@ -849,12 +849,13 @@ public class ControlFlowAnalyzer extends JavaElementVisitor { boolean expressionSwitch = myExpressionBlockContext != null && myExpressionBlockContext.myCodeBlock == switchBody; if (expressionSwitch && body instanceof PsiExpressionStatement) { myExpressionBlockContext.generateReturn(((PsiExpressionStatement)body).getExpression(), this); - } - if (body != null) { - body.accept(this); - } - if (!(body instanceof PsiThrowStatement)) { - jumpOut(expressionSwitch ? switchBody : switchBlock); + } else { + if (body != null) { + body.accept(this); + } + if (ControlFlowUtils.statementMayCompleteNormally(body)) { + jumpOut(expressionSwitch ? switchBody : switchBlock); + } } finishElement(statement); }