diff --git a/java/java-impl/src/com/intellij/codeInspection/dataFlow/DfaMemoryStateImpl.java b/java/java-impl/src/com/intellij/codeInspection/dataFlow/DfaMemoryStateImpl.java
index 1dc5e2985589..e8b74efd73d0 100644
--- a/java/java-impl/src/com/intellij/codeInspection/dataFlow/DfaMemoryStateImpl.java
+++ b/java/java-impl/src/com/intellij/codeInspection/dataFlow/DfaMemoryStateImpl.java
@@ -549,8 +549,7 @@ public class DfaMemoryStateImpl implements DfaMemoryState {
DfaTypeValue dfaType = (DfaTypeValue)dfaCond.getRightOperand();
final DfaVariableState varState = getVariableState(dfaVar);
- varState.setNullable(varState.isNullable() || dfaType.isNullable());
- return !isNotNull(dfaVar) || varState.setInstanceofValue(dfaType);
+ return isNull(dfaVar) || varState.setInstanceofValue(dfaType);
}
public boolean applyCondition(DfaValue dfaCond) {
diff --git a/java/java-tests/testData/inspection/dataFlow/TryWithResources.java b/java/java-tests/testData/inspection/dataFlow/TryWithResources.java
index a04488139ca6..ce172cb267f9 100644
--- a/java/java-tests/testData/inspection/dataFlow/TryWithResources.java
+++ b/java/java-tests/testData/inspection/dataFlow/TryWithResources.java
@@ -36,7 +36,7 @@ class Test {
System.out.println(r);
}
catch (Exception e) {
- if (e instanceof ResourcefulException1) {
+ if (e instanceof ResourcefulException1) {
System.out.println("1");
}
else if (e instanceof ResourcefulException2) {
diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/NullCheckDoesntAffectUncheckedCast.java b/java/java-tests/testData/inspection/dataFlow/fixture/NullCheckDoesntAffectUncheckedCast.java
new file mode 100644
index 000000000000..2f85648a8413
--- /dev/null
+++ b/java/java-tests/testData/inspection/dataFlow/fixture/NullCheckDoesntAffectUncheckedCast.java
@@ -0,0 +1,15 @@
+public class DataFlowBug {
+
+ public int add2(Object left, Object right) {
+ if (left != null && !(left instanceof String)) {
+ return ((String) left).length();
+
+ }
+ if (!(right instanceof String)) {
+ return ((String) right).length();
+
+ }
+ return 2;
+ }
+
+}
\ No newline at end of file
diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionFixtureTest.java b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionFixtureTest.java
index 4b93063ce552..600b822e2780 100644
--- a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionFixtureTest.java
+++ b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionFixtureTest.java
@@ -150,6 +150,7 @@ public class DataFlowInspectionFixtureTest extends JavaCodeInsightFixtureTestCas
public void testTransientFinalField() { doTest(); }
public void _testSymmetricUncheckedCast() { doTest(); }
+ public void testNullCheckDoesntAffectUncheckedCast() { doTest(); }
public void testNullableForeachVariable() {
setupCustomAnnotations();