From 6af48bbd0a7e92e25d5ad16c46af33a1976fccab Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 12 Sep 2013 22:00:17 +0400 Subject: [PATCH] dfa: fix & treatment --- .../dataFlow/ControlFlowAnalyzer.java | 2 +- .../dataFlow/boxingBoolean/expected.xml | 5 ----- .../dataFlow/fixture/LongCircuitOperations.java | 17 ++++++++++++++++- 3 files changed, 17 insertions(+), 7 deletions(-) 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 8e63fdb91e0b..6e42269132bb 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 @@ -1163,7 +1163,7 @@ class ControlFlowAnalyzer extends JavaElementVisitor { if (!shortCircuit) { if (i > 0) { - combineStackBooleans(false, operand); + combineStackBooleans(true, operand); } continue; } diff --git a/java/java-tests/testData/inspection/dataFlow/boxingBoolean/expected.xml b/java/java-tests/testData/inspection/dataFlow/boxingBoolean/expected.xml index eb4d42c5bf86..d04ea2815d43 100644 --- a/java/java-tests/testData/inspection/dataFlow/boxingBoolean/expected.xml +++ b/java/java-tests/testData/inspection/dataFlow/boxingBoolean/expected.xml @@ -36,9 +36,4 @@ Condition <code>o</code> at the left side of assignment expression is always <code>false</code>. Can be simplified to normal assignment. - - Test.java - 52 - Condition <code>o</code> is always <code>true</code> - diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/LongCircuitOperations.java b/java/java-tests/testData/inspection/dataFlow/fixture/LongCircuitOperations.java index e05c670be6af..d9e998461aaf 100644 --- a/java/java-tests/testData/inspection/dataFlow/fixture/LongCircuitOperations.java +++ b/java/java-tests/testData/inspection/dataFlow/fixture/LongCircuitOperations.java @@ -1,3 +1,5 @@ +import org.jetbrains.annotations.NotNull; + class X { int foo(String d1, String d2) { @@ -7,7 +9,7 @@ class X { } void foo2(String d1, String d2) { - if(d1 == null & d1 != null) + if(d1 == null & d1 != null) System.out.println("impossible"); } @@ -17,3 +19,16 @@ class X { } } +class Doo { + + void zoo(@NotNull Object t, @NotNull Object s) { + } + + + private void goo(Object t, Object t2) { + if (t != null & t2 != null) { + zoo(t, t2); + } + } + +}