From a0988143abd3b725b4aaeea8262a6faa72753ee3 Mon Sep 17 00:00:00 2001 From: A404M Date: Fri, 6 Jun 2025 03:39:40 +0330 Subject: now @insert("") inserts void value --- code/main.felan | 7 +++---- src/compiler/ast-tree.c | 27 ++++++++++++++------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/code/main.felan b/code/main.felan index 36cddd9..55e1252 100644 --- a/code/main.felan +++ b/code/main.felan @@ -15,22 +15,21 @@ t :: (comptime formatter : string) macro -> string { } else if c == '}' { in -= 1; if in == 0{ - str := sub_string(formatter,opening,i); - return str; + return sub_string(formatter,opening,i); } else if in < 0 { in = 0; } } i += 1; } - return "a = '6';"; + return ""; }; main :: () -> void { file.foo(); a := '2'; // @insert("a = '3';a = '5';"); - s :: t("hello"); + s :: t("hello {a = '6';}"); @insert(s); print_char(a); }; diff --git a/src/compiler/ast-tree.c b/src/compiler/ast-tree.c index 299f989..f077f0d 100644 --- a/src/compiler/ast-tree.c +++ b/src/compiler/ast-tree.c @@ -6004,8 +6004,6 @@ bool setTypesFunctionCall(AstTree *tree, AstTreeSetTypesHelper _helper) { LexerNodeArray lexerArray = lexer(code); if (lexerNodeArrayIsError(lexerArray)) { UNREACHABLE; - } else if (lexerArray.size == 0) { - UNREACHABLE; } ParserNode *rootParser = parser(lexerArray); if (rootParser == NULL) { @@ -6025,7 +6023,20 @@ bool setTypesFunctionCall(AstTree *tree, AstTreeSetTypesHelper _helper) { *tree = *ast; free(ast); } else { - if (nodeArray->size != 0) { + size_t parentIndex = _helper.scope->expressions_size; + for (size_t i = 0; i < _helper.scope->expressions_size; ++i) { + if (_helper.scope->expressions[i] == tree) { + parentIndex = i; + break; + } + } + if (parentIndex == _helper.scope->expressions_size) { + UNREACHABLE; + } + if (nodeArray->size == 0) { + astTreeDestroy(*tree); + *tree = AST_TREE_VOID_VALUE; + } else { AstTree *astNodes[nodeArray->size]; for (size_t i = 0; i < nodeArray->size; ++i) { ParserNode *node = nodeArray->data[i]; @@ -6044,16 +6055,6 @@ bool setTypesFunctionCall(AstTree *tree, AstTreeSetTypesHelper _helper) { if (!setAllTypes(tree, _helper, NULL, NULL)) { return false; } - size_t parentIndex = _helper.scope->expressions_size; - for (size_t i = 0; i < _helper.scope->expressions_size; ++i) { - if (_helper.scope->expressions[i] == tree) { - parentIndex = i; - break; - } - } - if (parentIndex == _helper.scope->expressions_size) { - UNREACHABLE; - } size_t expression_capacity = a404m_malloc_usable_size(_helper.scope->expressions) / sizeof(*_helper.scope->expressions); -- cgit v1.2.3