diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaMemoryStateImpl.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaMemoryStateImpl.java index 3442c4e7c75e..a1df3bc6424a 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaMemoryStateImpl.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaMemoryStateImpl.java @@ -614,7 +614,7 @@ public class DfaMemoryStateImpl implements DfaMemoryState { private void updateVarStateOnComparison(DfaVariableValue dfaVar, DfaValue value) { if (!isUnknownState(dfaVar)) { - if (isNull(value)) { + if (value instanceof DfaConstValue && ((DfaConstValue)value).getValue() == null) { setVariableState(dfaVar, getVariableState(dfaVar).withNullability(Nullness.NULLABLE)); } else if (isNotNull(value) && !isNotNull(dfaVar)) { setVariableState(dfaVar, getVariableState(dfaVar).withNullability(Nullness.UNKNOWN)); diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/ComparingToNullableShouldNotAffectNullity.java b/java/java-tests/testData/inspection/dataFlow/fixture/ComparingToNullableShouldNotAffectNullity.java new file mode 100644 index 000000000000..c57e9696bd5f --- /dev/null +++ b/java/java-tests/testData/inspection/dataFlow/fixture/ComparingToNullableShouldNotAffectNullity.java @@ -0,0 +1,15 @@ +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; + +class Bar3 { + + public void main2(Object o1, Object o2) { + if (o1 == null) { + System.out.println(); + } + if (o1 != o2 || o2.hashCode() == 3) { + + } + } +} \ 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 016a60d7d842..0f2124d7d071 100644 --- a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java @@ -79,6 +79,7 @@ public class DataFlowInspectionTest extends LightCodeInsightFixtureTestCase { public void testIDEA84489() throws Throwable { doTest(); } public void testComparingToNotNullShouldNotAffectNullity() throws Throwable { doTest(); } + public void testComparingToNullableShouldNotAffectNullity() throws Throwable { doTest(); } public void testStringTernaryAlwaysTrue() throws Throwable { doTest(); } public void testStringConcatAlwaysNotNull() throws Throwable { doTest(); }