summaryrefslogtreecommitdiff
path: root/src/analysis/expression.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/analysis/expression.cpp')
-rw-r--r--src/analysis/expression.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/analysis/expression.cpp b/src/analysis/expression.cpp
index 5895d98..443a410 100644
--- a/src/analysis/expression.cpp
+++ b/src/analysis/expression.cpp
@@ -229,6 +229,7 @@ void analyseNeExpr(NeExprNode *node, const WalkItem &wi, WalkItem &wo)
if (isIn(var, wi.needCheckNullVars))
{
wo.checkedThenNonNullVars.insert(var);
+ wo.checkedElseNullVars.insert(var);
wo.knownNonNullVars.insert(var);
wo.cleanExpr = true;
wo.uselessExpr = false;
@@ -340,6 +341,7 @@ void analyseEqExpr(EqExprNode *node, const WalkItem &wi, WalkItem &wo)
if (isIn(var, wi.needCheckNullVars))
{
wo.checkedThenNullVars.insert(var);
+ wo.checkedElseNonNullVars.insert(var);
wo.knownNullVars.insert(var);
wo.cleanExpr = true;
wo.uselessExpr = false;
@@ -393,6 +395,8 @@ void analyseOrCondition(Node *node, Node *node1, Node *node2, const WalkItem &wi
// }
intersectThenNonNullChecked(wo, wo1, wo2);
intersectThenNullChecked(wo, wo1, wo2);
+ intersectElseNonNullChecked(wo, wo1, wo2);
+ intersectElseNullChecked(wo, wo1, wo2);
// need intersect knownNull/knownNonNull