diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-02-23 17:56:14 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-02-23 17:56:14 +0330 |
commit | 8e5ac02b143588f598a058f5a5ae44181e493ef4 (patch) | |
tree | a182356e433ab19f020f752af6f8068af9292198 /src/compiler/ast-tree.c | |
parent | 20f403c5e603cb7df92c67370eaa3a6119d3a166 (diff) |
fix inline if
Diffstat (limited to 'src/compiler/ast-tree.c')
-rw-r--r-- | src/compiler/ast-tree.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/compiler/ast-tree.c b/src/compiler/ast-tree.c index 6f96f49..7c520aa 100644 --- a/src/compiler/ast-tree.c +++ b/src/compiler/ast-tree.c @@ -2048,6 +2048,13 @@ bool typeIsEqual(const AstTree *type0, const AstTree *type1) { if (type0_metadata->arguments_size != type1_metadata->arguments_size) { return false; } + for (size_t i = 0; i < type0_metadata->arguments_size; ++i) { + AstTree *p0 = type0_metadata->arguments[i]; + AstTree *p1 = type1_metadata->arguments[i]; + if (!typeIsEqual(p0, p1)) { + return false; + } + } return true; case AST_TREE_TOKEN_FUNCTION_CALL: printError(type0->str_begin, type0->str_end, "Not implemented yet"); @@ -2713,8 +2720,8 @@ bool setTypesIf(AstTree *tree, AstTreeSetTypesHelper helper, } if (metadata->elseBody != NULL && - typeIsEqual(metadata->ifBody, metadata->elseBody)) { - tree->type = copyAstTree(metadata->ifBody); + typeIsEqual(metadata->ifBody->type, metadata->elseBody->type)) { + tree->type = copyAstTree(metadata->ifBody->type); } else { tree->type = &AST_TREE_VOID_TYPE; } @@ -2745,8 +2752,6 @@ bool setTypesScope(AstTree *tree, AstTreeSetTypesHelper helper, AstTreeFunction *function) { AstTreeScope *metadata = tree->metadata; - tree->type = &AST_TREE_VOID_TYPE; - for (size_t i = 0; i < metadata->expressions_size; ++i) { if (!setAllTypes(metadata->expressions[i], helper, function)) { return false; @@ -2759,6 +2764,13 @@ bool setTypesScope(AstTree *tree, AstTreeSetTypesHelper helper, } } + if (metadata->expressions_size == 0) { + tree->type = &AST_TREE_VOID_VALUE; + } else { + tree->type = copyAstTree( + metadata->expressions[metadata->expressions_size - 1]->type); + } + return true; } |