when a nullable parameter is reassigned with an unknown value, don't still consider it nullable (IDEA-54770)

This commit is contained in:
peter
2012-10-29 12:57:21 +01:00
parent 1efafb561a
commit 1ff583bd4a
3 changed files with 15 additions and 0 deletions
@@ -277,6 +277,7 @@ public class DfaMemoryStateImpl implements DfaMemoryState {
applyCondition(compareToNull(var, true));
}
else if (value instanceof DfaTypeValue) {
getVariableState(var).setNullable(((DfaTypeValue)value).isNullable());
DfaRelationValue dfaInstanceof = myFactory.getRelationFactory().createRelation(var, value, JavaTokenType.INSTANCEOF_KEYWORD, false);
applyInstanceofOrNull(dfaInstanceof);
}
@@ -0,0 +1,12 @@
import org.jetbrains.annotations.Nullable;
public class BrokenAlignment {
String unknown(String s) { return s; }
public void example(@Nullable String value) {
value = unknown(<warning descr="Argument 'value' might be null but passed to non annotated parameter">value</warning>);
if (value.contains("%")) {
}
}
}
@@ -83,4 +83,6 @@ public class DataFlowInspectionFixtureTest extends JavaCodeInsightFixtureTestCas
public void testFinalFieldsDifferentInstances() throws Throwable { doTest(); }
public void testChainedFinalFieldAccessorsDfa() throws Throwable { doTest(); }
public void testAssigningUnknownToNullable() throws Throwable { doTest(); }
}