IDEA-183217 Nullability problem is not reported for field when it's marked as unknown after loading on stack

This commit is contained in:
Tagir Valeev
2017-12-05 11:20:14 +07:00
parent 90a7c7576d
commit 76a9cd9e15
3 changed files with 17 additions and 0 deletions
@@ -1305,6 +1305,9 @@ public class DfaMemoryStateImpl implements DfaMemoryState {
}
void doFlush(@NotNull DfaVariableValue varPlain, boolean markUnknown) {
if(isNull(varPlain)) {
myStack.replaceAll(val -> val == varPlain ? myFactory.getConstFactory().getNull() : val);
}
DfaVariableValue varNegated = varPlain.getNegatedValue();
removeEquivalenceRelations(varPlain);
@@ -0,0 +1,13 @@
import java.util.*;
import java.util.concurrent.atomic.*;
// IDEA-183217
class Test {
private AtomicLong timeStamp;
private void method() {
if (timeStamp == null) {
timeStamp.<warning descr="Method invocation 'set' may produce 'java.lang.NullPointerException'">set</warning>(Calendar.getInstance().getTimeInMillis()); // not reported
}
}
}
@@ -218,4 +218,5 @@ public class DataFlowInspection8Test extends DataFlowInspectionTestCase {
}
public void testPrimitiveGetters() { doTest(); }
public void testUnknownOnStack() { doTest(); }
}