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 7ef19f2b73d0..7539d7195701 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 @@ -591,12 +591,14 @@ public class ControlFlowAnalyzer extends JavaElementVisitor { generateBoxingUnboxingInstructionFor(caseExpression, PsiType.INT); final PsiClass psiClass = PsiUtil.resolveClassInType(caseExpression.getType()); - if (psiClass != null && psiClass.isEnum()) { + if (psiClass != null) { addInstruction(new FieldReferenceInstruction(caseExpression, "switch statement expression")); - enumValues = new HashSet(); - for (PsiField f : psiClass.getFields()) { - if (f instanceof PsiEnumConstant) { - enumValues.add((PsiEnumConstant)f); + if (psiClass.isEnum()) { + enumValues = new HashSet(); + for (PsiField f : psiClass.getFields()) { + if (f instanceof PsiEnumConstant) { + enumValues.add((PsiEnumConstant)f); + } } } } else { diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/SwitchOnNullable.java b/java/java-tests/testData/inspection/dataFlow/fixture/SwitchOnNullable.java new file mode 100644 index 000000000000..c74852064bf4 --- /dev/null +++ b/java/java-tests/testData/inspection/dataFlow/fixture/SwitchOnNullable.java @@ -0,0 +1,10 @@ +import org.jetbrains.annotations.Nullable; + +class BrokenAlignment { + + void test(@Nullable String n) { + switch (n) { + + } + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java index bd129b7aa3a6..a10d02d31fca 100644 --- a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java @@ -109,6 +109,7 @@ public class DataFlowInspectionTest extends LightCodeInsightFixtureTestCase { public void testAssigningClassLiteralToNullable() throws Throwable { doTest(); } public void testSynchronizingOnNullable() throws Throwable { doTest(); } + public void testSwitchOnNullable() { doTest(); } public void testReturningNullFromVoidMethod() throws Throwable { doTest(); } public void testCatchRuntimeException() throws Throwable { doTest(); }