From c0dcdcd22cc022bd489297567fe08dad104fd063 Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Thu, 15 Mar 2012 16:58:30 +0400 Subject: [PATCH] "Can be null" doesn't imply "is null" --- .../codeInspection/dataFlow/StandardInstructionVisitor.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/codeInspection/dataFlow/StandardInstructionVisitor.java b/java/java-impl/src/com/intellij/codeInspection/dataFlow/StandardInstructionVisitor.java index 5ce2fbd6c1f5..ee177909adad 100644 --- a/java/java-impl/src/com/intellij/codeInspection/dataFlow/StandardInstructionVisitor.java +++ b/java/java-impl/src/com/intellij/codeInspection/dataFlow/StandardInstructionVisitor.java @@ -123,7 +123,11 @@ public class StandardInstructionVisitor extends InstructionVisitor { final DfaValue qualifier = memState.pop(); if (instruction.getExpression().isPhysical() && !memState.applyNotNull(qualifier)) { onInstructionProducesNPE(instruction, runner); - return DfaInstructionState.EMPTY_ARRAY; + + if (qualifier instanceof DfaVariableValue) { + final DfaNotNullValue.Factory factory = runner.getFactory().getNotNullFactory(); + memState.setVarValue((DfaVariableValue)qualifier, factory.create(((DfaVariableValue)qualifier).getPsiVariable().getType())); + } } return nextInstruction(instruction, runner, memState);