diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-06-18 00:07:12 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-06-18 00:07:12 +0300 |
commit | ca7fb26da9b7c4d3d32ebd7739b937ccf591167b (patch) | |
tree | df8c2899261734cf85c68cb4201cebadab633723 /src/analysis/analysis.cpp | |
parent | ada4bce8b0199d2f5c42a64f391ccab441ec6429 (diff) | |
download | paranucker-ca7fb26da9b7c4d3d32ebd7739b937ccf591167b.tar.gz paranucker-ca7fb26da9b7c4d3d32ebd7739b937ccf591167b.tar.bz2 paranucker-ca7fb26da9b7c4d3d32ebd7739b937ccf591167b.tar.xz paranucker-ca7fb26da9b7c4d3d32ebd7739b937ccf591167b.zip |
Add support for checking is return present inside if statement.
Diffstat (limited to 'src/analysis/analysis.cpp')
-rw-r--r-- | src/analysis/analysis.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/analysis/analysis.cpp b/src/analysis/analysis.cpp index d4d0917..9a890dd 100644 --- a/src/analysis/analysis.cpp +++ b/src/analysis/analysis.cpp @@ -75,7 +75,9 @@ void walkTree(Node *node, const WalkItem &wi, WalkItem &wo) WalkItem wi2 = wi; analyseNode(node, wi2, wo); removeCheckNullVars(wi2); +// Log::dumpAttr(node, 1, wo.isReturned); + const bool isReturned = wo.isReturned; if (wo.stopWalking) { wo.stopWalking = false; @@ -87,9 +89,13 @@ void walkTree(Node *node, const WalkItem &wi, WalkItem &wo) { walkTree(*it, wi2, wo2); wi2.removeNullVars = wo2.removeNullVars; + wi2.isReturned = wi2.isReturned || wo2.isReturned; wo2.stopWalking = false; } wo.removeNullVars = wi2.removeNullVars; + wo.isReturned = wo.isReturned || isReturned || wo2.isReturned; + +// Log::dumpAttr(node, 2, wo.isReturned); } int findBackLocation(Node *node) |