summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-06-17 15:37:37 +0300
committerAndrei Karas <akaras@inbox.ru>2015-06-17 16:01:48 +0300
commit6c625d640db9f992ef5fdba125659160f98ef3f7 (patch)
tree202528345d2470df21f816da10773449836afdb5 /src
parent1f1474467559eb934d60839f13dd90c4a1fff829 (diff)
downloadparanucker-6c625d640db9f992ef5fdba125659160f98ef3f7.tar.gz
paranucker-6c625d640db9f992ef5fdba125659160f98ef3f7.tar.bz2
paranucker-6c625d640db9f992ef5fdba125659160f98ef3f7.tar.xz
paranucker-6c625d640db9f992ef5fdba125659160f98ef3f7.zip
Improve parsing node INDIRECT_REF.
Diffstat (limited to 'src')
-rw-r--r--src/analysis/expression.cpp4
-rw-r--r--src/nodes/ref/indirect_ref.h7
-rw-r--r--src/parsers/ref/indirect_ref.cpp2
3 files changed, 9 insertions, 4 deletions
diff --git a/src/analysis/expression.cpp b/src/analysis/expression.cpp
index 8185419..d3fbf73 100644
--- a/src/analysis/expression.cpp
+++ b/src/analysis/expression.cpp
@@ -49,9 +49,9 @@ void analyseModifyExpr(ModifyExprNode *node, const WalkItem &wi, WalkItem &wo)
{
IndirectRefNode *refNode = static_cast<IndirectRefNode*>(arg);
// need atleast one arg for check
- if (refNode->args.empty())
+ if (refNode->ref == nullptr)
return;
- arg = refNode->args[0];
+ arg = refNode->ref;
if (arg->nodeType == PARM_DECL)
{
if (wi.checkNullVars.find(arg->label) != wi.checkNullVars.end())
diff --git a/src/nodes/ref/indirect_ref.h b/src/nodes/ref/indirect_ref.h
index 18f8321..2173ca7 100644
--- a/src/nodes/ref/indirect_ref.h
+++ b/src/nodes/ref/indirect_ref.h
@@ -22,14 +22,19 @@
#include "nodes/base/ref.h"
+#include "nodes/base/decl.h"
+
#include <string>
struct IndirectRefNode : public RefNode
{
IndirectRefNode() :
- RefNode()
+ RefNode(),
+ ref(nullptr)
{
}
+
+ DeclNode *ref;
};
#endif // NODES_REF_INDIRECTREFNODE_H
diff --git a/src/parsers/ref/indirect_ref.cpp b/src/parsers/ref/indirect_ref.cpp
index d4ef67b..cc93217 100644
--- a/src/parsers/ref/indirect_ref.cpp
+++ b/src/parsers/ref/indirect_ref.cpp
@@ -37,7 +37,7 @@ void parseIndirectRefNode(IndirectRefNode *node)
// if (!node->parseChilds)
// return;
- fillRefOperands(node);
+ node->ref = static_cast<DeclNode*>(getRefOperand(node, 0, "ref"));
}
}