diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-06-15 02:19:02 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-06-15 02:19:02 +0300 |
commit | f2f31ff386a2823a6b71634ab5d6b414fbd9f9d3 (patch) | |
tree | 5cf502bf1c2a69cea9fd42e010796a58b5ee7962 | |
parent | 054e89055decdf6b61a5f9430fc430b5704b4539 (diff) | |
download | paranucker-f2f31ff386a2823a6b71634ab5d6b414fbd9f9d3.tar.gz paranucker-f2f31ff386a2823a6b71634ab5d6b414fbd9f9d3.tar.bz2 paranucker-f2f31ff386a2823a6b71634ab5d6b414fbd9f9d3.tar.xz paranucker-f2f31ff386a2823a6b71634ab5d6b414fbd9f9d3.zip |
Detect nullpointers also in methods.
-rw-r--r-- | src/analysis/function.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/analysis/function.cpp b/src/analysis/function.cpp index 59406ed..37078c3 100644 --- a/src/analysis/function.cpp +++ b/src/analysis/function.cpp @@ -29,6 +29,8 @@ #include "nodes/list/tree_list.h" +#include "nodes/type/method_type.h" + #include <set> #include "localconsts.h" @@ -44,12 +46,16 @@ void getFunctionArgTypes(FunctionDeclNode *node, if (!node->functionType) return; - // need impliment also for METHOD_TYPE - if (node->functionType->nodeType != FUNCTION_TYPE) + TreeListNode *types = nullptr; + if (node->functionType->nodeType == FUNCTION_TYPE) + types = static_cast<FunctionTypeNode*>(node->functionType)->argTypes; + else if (node->functionType->nodeType == METHOD_TYPE) + types = static_cast<MethodTypeNode*>(node->functionType)->argTypes; + else return; // walk in TREE_LIST and get value nodes - FOR_TREE_LIST2(list, static_cast<FunctionTypeNode*>(node->functionType)->argTypes) + FOR_TREE_LIST2(list, types) { arr.push_back(static_cast<TypeNode*>(list->value)); } |