summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/parsers/decl/function_decl.cpp10
-rw-r--r--src/parsers/type/method_type.cpp4
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),