summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-07-01 15:22:59 +0300
committerAndrei Karas <akaras@inbox.ru>2015-07-01 15:22:59 +0300
commit9c4caab8a31dabb497c860ed340a97f6a429ed52 (patch)
tree867d5fbdfd754129c72af6099aa5abd993d2e5df
parent87a31d8618c0d47a646677118f3f85352c4a528f (diff)
downloadparanucker-9c4caab8a31dabb497c860ed340a97f6a429ed52.tar.gz
paranucker-9c4caab8a31dabb497c860ed340a97f6a429ed52.tar.bz2
paranucker-9c4caab8a31dabb497c860ed340a97f6a429ed52.tar.xz
paranucker-9c4caab8a31dabb497c860ed340a97f6a429ed52.zip
Report useless checks if variable was checked for null and non null in all cases.
-rw-r--r--src/analysis/expression.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/analysis/expression.cpp b/src/analysis/expression.cpp
index 87ee12f..6a4be5b 100644
--- a/src/analysis/expression.cpp
+++ b/src/analysis/expression.cpp
@@ -216,7 +216,8 @@ void analyseNeExpr(NeExprNode *node, const WalkItem &wi, WalkItem &wo)
wo.uselessExpr = false;
return;
}
- else if (wi.knownNonNullVars.find(var) != wi.knownNonNullVars.end())
+ else if (wi.knownNonNullVars.find(var) != wi.knownNonNullVars.end() ||
+ wi.knownNullVars.find(var) != wi.knownNullVars.end())
{
bool doReport(true);
// exception for delete operator. it check for var != 0 before really delete
@@ -324,13 +325,15 @@ void analyseEqExpr(EqExprNode *node, const WalkItem &wi, WalkItem &wo)
wo.knownNullVars.insert(var);
wo.cleanExpr = true;
wo.uselessExpr = false;
- if (wi.knownNullVars.find(var) != wi.knownNullVars.end())
+ if (wi.knownNullVars.find(var) != wi.knownNullVars.end() ||
+ wi.knownNonNullVars.find(var) != wi.knownNonNullVars.end())
{
reportUselessCheck(node, var);
}
return;
}
- else if (wi.knownNullVars.find(var) != wi.knownNullVars.end())
+ else if (wi.knownNullVars.find(var) != wi.knownNullVars.end() ||
+ wi.knownNonNullVars.find(var) != wi.knownNonNullVars.end())
{
reportUselessCheck(node, var);
}