diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-02-07 22:21:53 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-02-07 22:21:53 +0330 |
commit | 79360f43b87cbb0e7ec3abca4c08406866fbf26a (patch) | |
tree | 651810cf543e321da01c64ba760d6015d786bc1d /src/compiler | |
parent | 34099f0d7752a2fab5eadccfeb578b77b292c889 (diff) |
fix return for void functions
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/ast-tree.c | 2 | ||||
-rw-r--r-- | src/compiler/parser.c | 10 |
2 files changed, 8 insertions, 4 deletions
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) { |