diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-06-28 15:50:54 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-06-28 15:50:54 +0300 |
commit | 51b8da0ae10161612c368bd76a8d611b89f04e67 (patch) | |
tree | dcbfa88f60256d55f8279e9b46a6d95d85502510 /src/analysis/expression.cpp | |
parent | dee5cf7bc6a5e1ffc813c81caac1f711b9d6093e (diff) | |
download | paranucker-51b8da0ae10161612c368bd76a8d611b89f04e67.tar.gz paranucker-51b8da0ae10161612c368bd76a8d611b89f04e67.tar.bz2 paranucker-51b8da0ae10161612c368bd76a8d611b89f04e67.tar.xz paranucker-51b8da0ae10161612c368bd76a8d611b89f04e67.zip |
Add warning for more than one checks for non null variables.
Diffstat (limited to 'src/analysis/expression.cpp')
-rw-r--r-- | src/analysis/expression.cpp | 40 |
1 files changed, 22 insertions, 18 deletions
diff --git a/src/analysis/expression.cpp b/src/analysis/expression.cpp index e521615..4683dee 100644 --- a/src/analysis/expression.cpp +++ b/src/analysis/expression.cpp @@ -193,18 +193,22 @@ void analyseNeExpr(NeExprNode *node, const WalkItem &wi, WalkItem &wo) // if (var != 0) if (!var.empty() && node2 == INTEGER_CST && - wi.checkNullVars.find(var) != wi.checkNullVars.end() && node2->label == "0") { - wo.checkedNonNullVars.insert(var); - wo.cleanExpr = true; - wo.uselessExpr = false; - } - else - { - wo.cleanExpr = false; - wo.uselessExpr = true; + if (wi.checkNullVars.find(var) != wi.checkNullVars.end()) + { + wo.checkedNonNullVars.insert(var); + wo.cleanExpr = true; + wo.uselessExpr = false; + return; + } + else if (wi.knownVars.find(var) != wi.knownVars.end()) + { + reportUselessCheck(node, var); + } } + wo.cleanExpr = false; + wo.uselessExpr = true; } void analyseEqExpr(EqExprNode *node, const WalkItem &wi, WalkItem &wo) @@ -221,18 +225,18 @@ void analyseEqExpr(EqExprNode *node, const WalkItem &wi, WalkItem &wo) // if (var == 0) if (!var.empty() && node2 == INTEGER_CST && - wi.checkNullVars.find(var) != wi.checkNullVars.end() && node2->label == "0") { - wo.checkedNullVars.insert(var); - wo.cleanExpr = true; - wo.uselessExpr = false; - } - else - { - wo.cleanExpr = false; - wo.uselessExpr = true; + if (wi.checkNullVars.find(var) != wi.checkNullVars.end()) + { + wo.checkedNullVars.insert(var); + wo.cleanExpr = true; + wo.uselessExpr = false; + return; + } } + wo.cleanExpr = false; + wo.uselessExpr = true; } void analyseOrCondition(Node *node, Node *node1, Node *node2, const WalkItem &wi, WalkItem &wo) |