From 79360f43b87cbb0e7ec3abca4c08406866fbf26a Mon Sep 17 00:00:00 2001 From: A404M Date: Fri, 7 Feb 2025 22:21:53 +0330 Subject: fix return for void functions --- src/compiler/ast-tree.c | 2 +- src/compiler/parser.c | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) (limited to 'src/compiler') diff --git a/src/compiler/ast-tree.c b/src/compiler/ast-tree.c index c51e836..b340d20 100644 --- a/src/compiler/ast-tree.c +++ b/src/compiler/ast-tree.c @@ -780,7 +780,7 @@ AstTree *astTreeParseReturn(ParserNode *parserNode, ParserNodeReturnMetadata *node_metadata = parserNode->metadata; AstTree *value; - if (node_metadata == NULL) { + if (node_metadata->value == NULL) { value = NULL; } else { value = astTreeParse(node_metadata->value, variables, variables_size); diff --git a/src/compiler/parser.c b/src/compiler/parser.c index 1aa596c..d5f61c5 100644 --- a/src/compiler/parser.c +++ b/src/compiler/parser.c @@ -549,9 +549,13 @@ ParserNode *parserReturn(LexerNode *node, LexerNode *end, ParserNode *parent) { ParserNodeReturnMetadata *metadata = a404m_malloc(sizeof(*metadata)); metadata->value = operand; - return operand->parent = node->parserNode = - newParserNode(PARSER_TOKEN_KEYWORD_RETURN, node->str_begin, - node->str_end, metadata, parent); + node->parserNode = newParserNode(PARSER_TOKEN_KEYWORD_RETURN, node->str_begin, + node->str_end, metadata, parent); + if (operand != NULL) { + operand->parent = node->parserNode; + } + + return node->parserNode; } ParserNode *parserNumber(LexerNode *node, ParserNode *parent) { -- cgit v1.2.3