From f012d6fe414eeb4a7e552261ab1d1ae4bc8dc363 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 19 Jan 2016 17:32:34 +0100 Subject: [PATCH] dfa: flush only ++ unary operator arguments (IDEA-150271) --- .../dataFlow/ControlFlowAnalyzer.java | 2 +- .../dataFlow/fixture/BitwiseNegatedBoxed.java | 14 ++++++++++++++ .../codeInspection/DataFlowInspectionTest.java | 1 + 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/inspection/dataFlow/fixture/BitwiseNegatedBoxed.java diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ControlFlowAnalyzer.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ControlFlowAnalyzer.java index 6880a6645710..d702d17b74fa 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ControlFlowAnalyzer.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ControlFlowAnalyzer.java @@ -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); diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/BitwiseNegatedBoxed.java b/java/java-tests/testData/inspection/dataFlow/fixture/BitwiseNegatedBoxed.java new file mode 100644 index 000000000000..f07b4dfbe1dc --- /dev/null +++ b/java/java-tests/testData/inspection/dataFlow/fixture/BitwiseNegatedBoxed.java @@ -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; + } + +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java index 828881e73006..3b4ed323e6cf 100644 --- a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java @@ -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();