diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-07-03 16:22:48 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-07-03 16:22:48 +0300 |
commit | c34af863bf4f6ad74257302c2effb535dd115289 (patch) | |
tree | 3ff0f9e746ae729d3ab9487aae1a9baa9344cc71 /src | |
parent | d41009a87ffaf8b608f5584a0450c634394473aa (diff) | |
download | paranucker-c34af863bf4f6ad74257302c2effb535dd115289.tar.gz paranucker-c34af863bf4f6ad74257302c2effb535dd115289.tar.bz2 paranucker-c34af863bf4f6ad74257302c2effb535dd115289.tar.xz paranucker-c34af863bf4f6ad74257302c2effb535dd115289.zip |
Rename checkedNullVars into checkedThenNullVars and checkedNonNullVars into checkedThenNonNullVars.
Diffstat (limited to 'src')
-rw-r--r-- | src/analysis/checks.cpp | 4 | ||||
-rw-r--r-- | src/analysis/collections.cpp | 28 | ||||
-rw-r--r-- | src/analysis/collections.h | 8 | ||||
-rw-r--r-- | src/analysis/expression.cpp | 54 | ||||
-rw-r--r-- | src/analysis/statement.cpp | 42 | ||||
-rw-r--r-- | src/analysis/walkitem.h | 12 | ||||
-rw-r--r-- | src/logger.cpp | 7 |
7 files changed, 78 insertions, 77 deletions
diff --git a/src/analysis/checks.cpp b/src/analysis/checks.cpp index 15f15bd..7500602 100644 --- a/src/analysis/checks.cpp +++ b/src/analysis/checks.cpp @@ -122,8 +122,8 @@ std::set<std::string> getCollection(Node *node, else convertCollection(removeNullVarsAll) else convertCollection(removeNullVars) else convertCollection(addNullVars) - else convertCollection(checkedNullVars) - else convertCollection(checkedNonNullVars) + else convertCollection(checkedThenNullVars) + else convertCollection(checkedThenNonNullVars) else { reportWrongCheck(node); diff --git a/src/analysis/collections.cpp b/src/analysis/collections.cpp index d11e34a..9dc4429 100644 --- a/src/analysis/collections.cpp +++ b/src/analysis/collections.cpp @@ -159,36 +159,36 @@ void addLinkedVar(WalkItem &wi, } // merger two checked for null var sets -void mergeNullChecked(WalkItem &wi1, WalkItem &wi2) +void mergeThenNullChecked(WalkItem &wi1, WalkItem &wi2) { - wi1.checkedNullVars.insert(wi2.checkedNullVars.begin(), - wi2.checkedNullVars.end()); + wi1.checkedThenNullVars.insert(wi2.checkedThenNullVars.begin(), + wi2.checkedThenNullVars.end()); } // merger two checked for non null var sets -void mergeNonNullChecked(WalkItem &wi1, WalkItem &wi2) +void mergeThenNonNullChecked(WalkItem &wi1, WalkItem &wi2) { - wi1.checkedNonNullVars.insert(wi2.checkedNonNullVars.begin(), - wi2.checkedNonNullVars.end()); + wi1.checkedThenNonNullVars.insert(wi2.checkedThenNonNullVars.begin(), + wi2.checkedThenNonNullVars.end()); } // intersect two checked for null sets -void intersectNullChecked(WalkItem &wi, WalkItem &wi1, WalkItem &wi2) +void intersectThenNullChecked(WalkItem &wi, WalkItem &wi1, WalkItem &wi2) { - FOR_EACH (it, wi1.checkedNullVars) + FOR_EACH (it, wi1.checkedThenNullVars) { - if (isIn(it, wi2.checkedNullVars)) - wi.checkedNullVars.insert(it); + if (isIn(it, wi2.checkedThenNullVars)) + wi.checkedThenNullVars.insert(it); } } // intersect two checked for non null sets -void intersectNonNullChecked(WalkItem &wi, WalkItem &wi1, WalkItem &wi2) +void intersectThenNonNullChecked(WalkItem &wi, WalkItem &wi1, WalkItem &wi2) { - FOR_EACH (it, wi1.checkedNonNullVars) + FOR_EACH (it, wi1.checkedThenNonNullVars) { - if (isIn(it, wi2.checkedNonNullVars)) - wi.checkedNonNullVars.insert(it); + if (isIn(it, wi2.checkedThenNonNullVars)) + wi.checkedThenNonNullVars.insert(it); } } diff --git a/src/analysis/collections.h b/src/analysis/collections.h index 11f88f7..70d8d03 100644 --- a/src/analysis/collections.h +++ b/src/analysis/collections.h @@ -48,13 +48,13 @@ namespace Analysis void removeNeedCheckNullVarsSet(WalkItem &wi, std::set<std::string> &vars); - void mergeNullChecked(WalkItem &wi1, WalkItem &wi2); + void mergeThenNullChecked(WalkItem &wi1, WalkItem &wi2); - void mergeNonNullChecked(WalkItem &wi1, WalkItem &wi2); + void mergeThenNonNullChecked(WalkItem &wi1, WalkItem &wi2); - void intersectNullChecked(WalkItem &wi, WalkItem &wi1, WalkItem &wi2); + void intersectThenNullChecked(WalkItem &wi, WalkItem &wi1, WalkItem &wi2); - void intersectNonNullChecked(WalkItem &wi, WalkItem &wi1, WalkItem &wi2); + void intersectThenNonNullChecked(WalkItem &wi, WalkItem &wi1, WalkItem &wi2); void removeFromNeedCheckNullVars(WalkItem &wi, std::set<std::string> &vars); diff --git a/src/analysis/expression.cpp b/src/analysis/expression.cpp index 113be90..5895d98 100644 --- a/src/analysis/expression.cpp +++ b/src/analysis/expression.cpp @@ -228,7 +228,7 @@ void analyseNeExpr(NeExprNode *node, const WalkItem &wi, WalkItem &wo) { if (isIn(var, wi.needCheckNullVars)) { - wo.checkedNonNullVars.insert(var); + wo.checkedThenNonNullVars.insert(var); wo.knownNonNullVars.insert(var); wo.cleanExpr = true; wo.uselessExpr = false; @@ -339,7 +339,7 @@ void analyseEqExpr(EqExprNode *node, const WalkItem &wi, WalkItem &wo) { if (isIn(var, wi.needCheckNullVars)) { - wo.checkedNullVars.insert(var); + wo.checkedThenNullVars.insert(var); wo.knownNullVars.insert(var); wo.cleanExpr = true; wo.uselessExpr = false; @@ -367,32 +367,32 @@ void analyseOrCondition(Node *node, Node *node1, Node *node2, const WalkItem &wi walkTree(node1, wi, wo1); Log::dumpWI(node, "wo1 ", wo1); WalkItem wi2 = wi; - removeNeedCheckNullVarsSetAll(wi2, wo1.checkedNullVars); - wi2.needCheckNullVars.insert(wo1.checkedNonNullVars.begin(), - wo1.checkedNonNullVars.end()); - wi2.knownVars.insert(wo1.checkedNonNullVars.begin(), - wo1.checkedNonNullVars.end()); - wi2.knownVars.insert(wo1.checkedNullVars.begin(), - wo1.checkedNullVars.end()); + removeNeedCheckNullVarsSetAll(wi2, wo1.checkedThenNullVars); + wi2.needCheckNullVars.insert(wo1.checkedThenNonNullVars.begin(), + wo1.checkedThenNonNullVars.end()); + wi2.knownVars.insert(wo1.checkedThenNonNullVars.begin(), + wo1.checkedThenNonNullVars.end()); + wi2.knownVars.insert(wo1.checkedThenNullVars.begin(), + wo1.checkedThenNullVars.end()); Log::dumpWI(node, "wi2 ", wi2); walkTree(node2, wi2, wo2); Log::dumpWI(node, "wo2 ", wo2); // probably condition wrong // if (wo1.cleanExpr) -// mergeNullChecked(wo, wo1); +// mergeThenNullChecked(wo, wo1); // probably condition wrong // if (wo2.cleanExpr) -// mergeNullChecked(wo, wo2); +// mergeThenNullChecked(wo, wo2); // if (wo1.cleanExpr && !wo2.cleanExpr) // { -// mergeNonNullChecked(wo, wo1); +// mergeThenNonNullChecked(wo, wo1); // } // if (wo2.cleanExpr && !wo1.cleanExpr) // { -// mergeNonNullChecked(wo, wo2); +// mergeThenNonNullChecked(wo, wo2); // } - intersectNonNullChecked(wo, wo1, wo2); - intersectNullChecked(wo, wo1, wo2); + intersectThenNonNullChecked(wo, wo1, wo2); + intersectThenNullChecked(wo, wo1, wo2); // need intersect knownNull/knownNonNull @@ -408,13 +408,13 @@ void analyseAndCondition(Node *node, Node *node1, Node *node2, const WalkItem &w walkTree(node1, wi, wo1); Log::dumpWI(node, "wo1 ", wo1); WalkItem wi2 = wi; - removeNeedCheckNullVarsSetAll(wi2, wo1.checkedNonNullVars); - wi2.needCheckNullVars.insert(wo1.checkedNullVars.begin(), - wo1.checkedNullVars.end()); - wi2.knownNullVars.insert(wo1.checkedNullVars.begin(), - wo1.checkedNullVars.end()); - wi2.knownNonNullVars.insert(wo1.checkedNonNullVars.begin(), - wo1.checkedNonNullVars.end()); + removeNeedCheckNullVarsSetAll(wi2, wo1.checkedThenNonNullVars); + wi2.needCheckNullVars.insert(wo1.checkedThenNullVars.begin(), + wo1.checkedThenNullVars.end()); + wi2.knownNullVars.insert(wo1.checkedThenNullVars.begin(), + wo1.checkedThenNullVars.end()); + wi2.knownNonNullVars.insert(wo1.checkedThenNonNullVars.begin(), + wo1.checkedThenNonNullVars.end()); Log::dumpWI(node, "wi2 ", wi2); walkTree(node2, wi2, wo2); Log::dumpWI(node, "wo2 ", wo2); @@ -423,15 +423,15 @@ void analyseAndCondition(Node *node, Node *node1, Node *node2, const WalkItem &w // probably condition wrong if (!wo1.uselessExpr && !wo2.uselessExpr) { // need combine wo1 and wo2 - intersectNullChecked(wo, wo1, wo2); + intersectThenNullChecked(wo, wo1, wo2); } if (!wo1.uselessExpr) { - mergeNonNullChecked(wo, wo1); + mergeThenNonNullChecked(wo, wo1); } if (!wo2.uselessExpr) { - mergeNonNullChecked(wo, wo2); + mergeThenNonNullChecked(wo, wo2); } wo.knownNullVars.insert(wo1.knownNullVars.begin(), wo1.knownNullVars.end()); @@ -520,8 +520,8 @@ void analyseCompoundExpr(CompoundExprNode *node, const WalkItem &wi, WalkItem &w // probably condition wrong if (wo2.cleanExpr) { - mergeNullChecked(wo, wo2); - mergeNonNullChecked(wo, wo2); + mergeThenNullChecked(wo, wo2); + mergeThenNonNullChecked(wo, wo2); } wo.cleanExpr = true; diff --git a/src/analysis/statement.cpp b/src/analysis/statement.cpp index 14387d3..3a89d65 100644 --- a/src/analysis/statement.cpp +++ b/src/analysis/statement.cpp @@ -63,17 +63,17 @@ void analyseCondition(Node *node, WalkItem wi2 = wi; if (wco.cleanExpr) - removeNeedCheckNullVarsSetAll(wi2, wco.checkedNonNullVars); - wi2.needCheckNullVars.insert(wco.checkedNullVars.begin(), - wco.checkedNullVars.end()); + removeNeedCheckNullVarsSetAll(wi2, wco.checkedThenNonNullVars); + wi2.needCheckNullVars.insert(wco.checkedThenNullVars.begin(), + wco.checkedThenNullVars.end()); // wi2.knownNonNullVars.insert(wco.knownNonNullVars.begin(), // wco.knownNonNullVars.end()); // wi2.knownNullVars.insert(wco.knownNullVars.begin(), // wco.knownNullVars.end()); - wi2.knownNullVars.insert(wco.checkedNullVars.begin(), - wco.checkedNullVars.end()); - wi2.knownNonNullVars.insert(wco.checkedNonNullVars.begin(), - wco.checkedNonNullVars.end()); + wi2.knownNullVars.insert(wco.checkedThenNullVars.begin(), + wco.checkedThenNullVars.end()); + wi2.knownNonNullVars.insert(wco.checkedThenNonNullVars.begin(), + wco.checkedThenNonNullVars.end()); wi2.needCheckNullVars = wi2.knownVars; removeFromNeedCheckNullVars(wi2, wi2.knownNonNullVars); wo2 = wi2; @@ -87,9 +87,9 @@ void analyseCondition(Node *node, WalkItem wi3 = wi; // if (wco.cleanExpr) -// removeNeedCheckNullVarsSetAll(wi3, wco.checkedNullVars); -// wi3.needCheckNullVars.insert(wco.checkedNonNullVars.begin(), -// wco.checkedNonNullVars.end()); +// removeNeedCheckNullVarsSetAll(wi3, wco.checkedThenNullVars); +// wi3.needCheckNullVars.insert(wco.checkedThenNonNullVars.begin(), +// wco.checkedThenNonNullVars.end()); // wi3.knownNonNullVars.insert(wco.knownNullVars.begin(), // wco.knownNullVars.end()); // wi3.knownNullVars.insert(wco.knownNonNullVars.begin(), @@ -97,13 +97,13 @@ void analyseCondition(Node *node, // wi3.needCheckNullVars = wi3.knownVars; // removeFromNeedCheckNullVars(wi3, wi3.knownNonNullVars); if (wo2.cleanExpr) - mergeNullChecked(wi3, wo2); + mergeThenNullChecked(wi3, wo2); // ? - mergeNonNullChecked(wi3, wo2); + mergeThenNonNullChecked(wi3, wo2); if (wo2.isReturned) { // add variable for ignore for all parent nodes except special like IF_STMT - FOR_EACH (it, wco.checkedNullVars) + FOR_EACH (it, wco.checkedThenNullVars) { wi3.removeNullVarsAll.insert(it); wi3.knownNonNullVars.insert(it); @@ -111,7 +111,7 @@ void analyseCondition(Node *node, } if (wco.cleanExpr) { - FOR_EACH (it, wco.checkedNonNullVars) + FOR_EACH (it, wco.checkedThenNonNullVars) { wi3.knownNullVars.insert(it); } @@ -130,17 +130,17 @@ void analyseCondition(Node *node, // probably condition wrong if (wo2.cleanExpr) - mergeNullChecked(wo, wo2); + mergeThenNullChecked(wo, wo2); // probably condition wrong if (wo3.cleanExpr) - mergeNullChecked(wo, wo3); + mergeThenNullChecked(wo, wo3); // need check for cleanExpr? - intersectNonNullChecked(wo, wo2, wo3); + intersectThenNonNullChecked(wo, wo2, wo3); if (wo2.isReturned) { // add variable for ignore for all parent nodes except special like IF_STMT - FOR_EACH (it, wco.checkedNullVars) + FOR_EACH (it, wco.checkedThenNullVars) { wo.removeNullVarsAll.insert(it); wo.knownNonNullVars.insert(it); @@ -148,7 +148,7 @@ void analyseCondition(Node *node, } if (wco.cleanExpr) { - FOR_EACH (it, wco.checkedNonNullVars) + FOR_EACH (it, wco.checkedThenNonNullVars) { wo.knownNullVars.insert(it); } @@ -157,7 +157,7 @@ void analyseCondition(Node *node, if (wo3.isReturned) { // add variable for ignore for all parent nodes except special like IF_STMT - FOR_EACH (it, wco.checkedNonNullVars) + FOR_EACH (it, wco.checkedThenNonNullVars) { wo.removeNullVarsAll.insert(it); wo.knownNonNullVars.insert(it); @@ -165,7 +165,7 @@ void analyseCondition(Node *node, } if (wco.cleanExpr) { - FOR_EACH (it, wco.checkedNullVars) + FOR_EACH (it, wco.checkedThenNullVars) { wo.knownNullVars.insert(it); } diff --git a/src/analysis/walkitem.h b/src/analysis/walkitem.h index c5bcb5a..60bd30d 100644 --- a/src/analysis/walkitem.h +++ b/src/analysis/walkitem.h @@ -38,8 +38,8 @@ struct WalkItem removeNullVarsAll(), removeNullVars(), addNullVars(), - checkedNullVars(), - checkedNonNullVars(), + checkedThenNullVars(), + checkedThenNonNullVars(), linkedVars(), linkedReverseVars(), stopWalking(false), @@ -57,8 +57,8 @@ struct WalkItem removeNullVarsAll(item.removeNullVarsAll), removeNullVars(item.removeNullVars), addNullVars(item.addNullVars), - checkedNullVars(item.checkedNullVars), - checkedNonNullVars(item.checkedNonNullVars), + checkedThenNullVars(item.checkedThenNullVars), + checkedThenNonNullVars(item.checkedThenNonNullVars), linkedVars(item.linkedVars), linkedReverseVars(item.linkedReverseVars), stopWalking(item.stopWalking), @@ -75,8 +75,8 @@ struct WalkItem StringSet removeNullVarsAll; // need remove vars from parent checkNullVars with linked vars StringSet removeNullVars; // need remove vars from parent checkNullVars without linked vars StringSet addNullVars; // need add vars to parent checkNullVars - StringSet checkedNullVars; // vars checked for null in expressions - StringSet checkedNonNullVars; // vars checked for nonnull in expressions + StringSet checkedThenNullVars; // vars checked for null in expressions + StringSet checkedThenNonNullVars; // vars checked for nonnull in expressions StringMapSet linkedVars; // linked vars. map <parent, set(vars)> StringMap linkedReverseVars; // linked vars. map <child, parent> bool stopWalking; // stop walking on tree after this node diff --git a/src/logger.cpp b/src/logger.cpp index 1667832..93e4140 100644 --- a/src/logger.cpp +++ b/src/logger.cpp @@ -206,7 +206,8 @@ void dumpWI(Node *const node, const std::string &name, const WalkItem &wi) { - //return; + if (name != "wco " && (node->parent || node != FUNCTION_DECL || name != "analyseNode wi in ")) + return; Log::log("%s%s%s %s", node->getIndent().c_str(), name.c_str(), @@ -218,8 +219,8 @@ void dumpWI(Node *const node, Log::log(" useless"); if (wi.isReturned) Log::log(" returned"); - dumpWIProps(" checkedNullVars:", wi.checkedNullVars) - dumpWIProps(" checkedNonNullVars:", wi.checkedNonNullVars) + dumpWIProps(" checkedThenNullVars:", wi.checkedThenNullVars) + dumpWIProps(" checkedThenNonNullVars:", wi.checkedThenNonNullVars) dumpWIProps(" needCheckNullVars:", wi.needCheckNullVars) dumpWIProps(" knownVars:", wi.knownVars) dumpWIProps(" knownNullVars:", wi.knownNullVars) |