dfa: flush only ++ unary operator arguments (IDEA-150271)

This commit is contained in:
peter
2016-01-19 18:15:31 +01:00
parent dea647aff3
commit f012d6fe41
3 changed files with 16 additions and 1 deletions
@@ -1667,7 +1667,7 @@ public class ControlFlowAnalyzer extends JavaElementVisitor {
}
private void flushIncrementedValue(@Nullable PsiExpression operand) {
if (operand instanceof PsiReferenceExpression) {
if (operand instanceof PsiReferenceExpression && PsiUtil.isAccessedForWriting(operand)) {
PsiVariable psiVariable = DfaValueFactory.resolveUnqualifiedVariable((PsiReferenceExpression)operand);
if (psiVariable != null) {
DfaVariableValue dfaVariable = myFactory.getVarFactory().createVariableValue(psiVariable, false);
@@ -0,0 +1,14 @@
import org.jetbrains.annotations.Nullable;
class NullTest {
public void clear(@Nullable Integer mask) {
if (mask == null) {
return;
}
int i = ~mask;
int i2 = ~mask;
}
}
@@ -431,6 +431,7 @@ public class DataFlowInspectionTest extends DataFlowInspectionTestCase {
public void testConstantConditionsWithAssignmentsInside() { doTest(); }
public void testIfConditionsWithAssignmentInside() { doTest(); }
public void testBitwiseNegatedBoxed() { doTest(); }
public void testLiteralIfCondition() {
doTest();