aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--code/main.felan7
-rw-r--r--src/compiler/ast-tree.c27
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);