diff --git a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java index 9a1368a32512..ff7721d440df 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java @@ -360,14 +360,11 @@ public final class PsiUtil extends PsiUtilCore { result.add(((PsiExpressionStatement)ruleBody).getExpression()); } else if (ruleBody instanceof PsiBlockStatement) { - collectSwitchResultExpressions(result, (PsiBlockStatement)ruleBody); + collectSwitchResultExpressions(result, ruleBody); } } - else if (statement instanceof PsiBlockStatement) { - collectSwitchResultExpressions(result, (PsiBlockStatement)statement); - } - else if (statement instanceof PsiBreakStatement) { - ContainerUtil.addIfNotNull(result, ((PsiBreakStatement)statement).getExpression()); + else { + collectSwitchResultExpressions(result, statement); } } return result; @@ -375,10 +372,9 @@ public final class PsiUtil extends PsiUtilCore { return Collections.emptyList(); } - private static void collectSwitchResultExpressions(List result, PsiBlockStatement ruleBody) { - PsiCodeBlock codeBlock = ruleBody.getCodeBlock(); + private static void collectSwitchResultExpressions(List result, PsiElement container) { ArrayList breaks = new ArrayList<>(); - addStatements(breaks, codeBlock, PsiBreakStatement.class, element -> element instanceof PsiSwitchBlock); + addStatements(breaks, container, PsiBreakStatement.class, element -> element instanceof PsiSwitchBlock); for (PsiBreakStatement aBreak : breaks) { ContainerUtil.addIfNotNull(result, aBreak.getExpression()); } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting12/SimpleInferenceCases.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting12/SimpleInferenceCases.java index 599359a39f9a..7f2aa1c36773 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting12/SimpleInferenceCases.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting12/SimpleInferenceCases.java @@ -90,6 +90,14 @@ no instance(s) of type variable(s) exist so that Integer conforms to String">() break 1; }; } + case 1: + if (i > 3) break 3; + case 0: + try { + break 42; + } finally { + //do nothing + } default: break 1; };