diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-06-23 19:46:24 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-06-23 19:46:24 +0300 |
commit | 8aa42b625d7fd34d22df6690e5b305b5be525eea (patch) | |
tree | f515914c33725728adea08ebb1e7366ced964c0f /src | |
parent | 17932a2f13f35d1ec451af73411898ebb03be5be (diff) | |
download | paranucker-8aa42b625d7fd34d22df6690e5b305b5be525eea.tar.gz paranucker-8aa42b625d7fd34d22df6690e5b305b5be525eea.tar.bz2 paranucker-8aa42b625d7fd34d22df6690e5b305b5be525eea.tar.xz paranucker-8aa42b625d7fd34d22df6690e5b305b5be525eea.zip |
Improve a bit parsing nested FUNCTION_DECL.
Diffstat (limited to 'src')
-rw-r--r-- | src/parsers/decl/function_decl.cpp | 10 | ||||
-rw-r--r-- | src/parsers/type/method_type.cpp | 4 |
2 files changed, 10 insertions, 4 deletions
diff --git a/src/parsers/decl/function_decl.cpp b/src/parsers/decl/function_decl.cpp index c619d86..91eb15b 100644 --- a/src/parsers/decl/function_decl.cpp +++ b/src/parsers/decl/function_decl.cpp @@ -47,14 +47,16 @@ void parseFunctionDeclNode(FunctionDeclNode *node) setPrintField(node, DECL_EXTERNAL, isExternal); setPrintField(node, TREE_PUBLIC, isPublic); - if (!node->parseChilds) - return; - fillDeclAttributes(node); node->functionType = static_cast<TypeNode*>(createParseNode( node, TREE_TYPE(node->gccNode), - "function type")); + "function type", + node->parseChilds)); + + if (!node->parseChilds) + return; + node->result = static_cast<ResultDeclNode*>(createParseNode( node, DECL_RESULT(node->gccNode), diff --git a/src/parsers/type/method_type.cpp b/src/parsers/type/method_type.cpp index 264d539..e8a7119 100644 --- a/src/parsers/type/method_type.cpp +++ b/src/parsers/type/method_type.cpp @@ -33,7 +33,11 @@ void parseMethodTypeNode(MethodTypeNode *node) fillType(node); Log::dump(node); + if (!node->parseChilds) + return; + fillTypeName(node); + node->returnType = static_cast<TypeNode*>(createParseNode( node, TREE_TYPE(node->gccNode), |