summaryrefslogtreecommitdiff
path: root/src/compiler/ast-tree.c
diff options
context:
space:
mode:
authorA404M <ahmadmahmoudiprogrammer@gmail.com>2025-04-01 12:54:56 +0330
committerA404M <ahmadmahmoudiprogrammer@gmail.com>2025-04-01 12:54:56 +0330
commit052ff9cc03544f29e1c3c79f09b6b0f3fb989532 (patch)
tree31c21a99336c6bde18aaabb3efb2a69ace833174 /src/compiler/ast-tree.c
parenta0a1b0e555526fa0dc7628b921c5ffa3f391b2c3 (diff)
trying to fix functions as argument and more dynamically calling
functions
Diffstat (limited to 'src/compiler/ast-tree.c')
-rw-r--r--src/compiler/ast-tree.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/compiler/ast-tree.c b/src/compiler/ast-tree.c
index 2f9c27c..a0bc974 100644
--- a/src/compiler/ast-tree.c
+++ b/src/compiler/ast-tree.c
@@ -2103,6 +2103,10 @@ AstTreeFunction *getFunction(AstTree *value) {
UNREACHABLE;
}
+bool isFunction(AstTree *value) {
+ return value->type->token == AST_TREE_TOKEN_TYPE_FUNCTION;
+}
+
bool isConst(AstTree *tree, AstTreeHelper *helper) {
switch (tree->token) {
case AST_TREE_TOKEN_TYPE_TYPE:
@@ -2954,6 +2958,10 @@ bool setTypesFunctionCall(AstTree *tree, AstTreeSetTypesHelper helper) {
if (!setAllTypes(metadata->function, helper, NULL)) {
return false;
+ } else if (!isFunction(metadata->function)) {
+ printError(metadata->function->str_begin, metadata->function->str_end,
+ "Object is not a function");
+ return false;
}
AstTreeFunction *function = getFunction(metadata->function);