diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/TrackingRunner.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/TrackingRunner.java index f1b27ab63b21..a76d7cd97474 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/TrackingRunner.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/TrackingRunner.java @@ -927,9 +927,10 @@ public class TrackingRunner extends StandardDataFlowRunner { else { continue; } - return Arrays.asList(getFactory().getRelationFactory().createRelation(left, type, right), - getFactory().getRelationFactory() - .createRelation(actualVar, actualRelation.myRelationType, actualRelation.myCounterpart)); + DfaRelationValue.Factory factory = getFactory().getRelationFactory(); + DfaRelationValue rel1 = factory.createRelation(left, type, right); + DfaRelationValue rel2 = factory.createRelation(actualVar, actualRelation.myRelationType, actualRelation.myCounterpart); + return StreamEx.of(rel1, rel2).nonNull().toImmutableList(); } } } diff --git a/java/java-tests/testData/inspection/dataFlow/tracker/EnumCompare.java b/java/java-tests/testData/inspection/dataFlow/tracker/EnumCompare.java new file mode 100644 index 000000000000..fc6b2ce4a946 --- /dev/null +++ b/java/java-tests/testData/inspection/dataFlow/tracker/EnumCompare.java @@ -0,0 +1,15 @@ +/* +Value is always false (code == ReturnStatus.NOT_FOUND; line#8) + It's known that 'code != ReturnStatus.NOT_FOUND' from line #7 (code != ReturnStatus.SUCCESS; line#7) + */ +class SampleClazz { + public void foo(ReturnStatus code) { + if (code != ReturnStatus.SUCCESS) { + } else if (code == ReturnStatus.NOT_FOUND) { + } + } + + enum ReturnStatus { + SUCCESS, NOT_FOUND + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/DataFlowInspectionTrackerTest.java b/java/java-tests/testSrc/com/intellij/java/codeInspection/DataFlowInspectionTrackerTest.java index 473f62dd2118..031585432770 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInspection/DataFlowInspectionTrackerTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/DataFlowInspectionTrackerTest.java @@ -178,4 +178,5 @@ public class DataFlowInspectionTrackerTest extends LightJavaCodeInsightFixtureTe public void testFinalFieldInitialized() { doTest(); } public void testFinalFieldInitializedCtor() { doTest(); } public void testEqualsNull() { doTest(); } + public void testEnumCompare() { doTest(); } }