fix: fix parser/generator issues

This commit is contained in:
samsonium
2026-11-05 03:46:16 +03:00
parent bd8272abc7
commit 66f31ab865
23 changed files with 264 additions and 1721 deletions
+5 -6
View File
@@ -63,7 +63,6 @@ gen_res_t gen_call(fzl_gen_t *gen, fzl_node_t *node)
if (!found)
return gen_error;
gen_res_t result;
if (sym.node->type == FZL_NODETYPE_EXTERN_FN)
{
size_t fn_n = 0;
@@ -146,6 +145,9 @@ gen_res_t gen_call(fzl_gen_t *gen, fzl_node_t *node)
}
}
break;
default:
return gen_error;
}
}
@@ -166,8 +168,6 @@ gen_res_t gen_call(fzl_gen_t *gen, fzl_node_t *node)
return (gen_res_t){
.error = false, .type = sym.type, .classname = sym.classname};
}
return result;
}
if (node->call.callee->type == FZL_NODETYPE_FIELD)
@@ -200,7 +200,7 @@ gen_res_t gen_call(fzl_gen_t *gen, fzl_node_t *node)
size_t fnlen = strlen(method_node->token->value);
char *methodname = malloc(classlen + fnlen + 2);
strcpy(methodname, classname);
strcpy((methodname + classlen + 1), node->call.callee->token->value);
strcpy((methodname + classlen + 1), method_node->token->value);
methodname[classlen] = '_';
methodname[classlen + fnlen + 1] = 0;
@@ -210,11 +210,10 @@ gen_res_t gen_call(fzl_gen_t *gen, fzl_node_t *node)
if ((found_method = fzl_symt_get(gen->syms[i], methodname, &fn_sym)))
break;
free(methodname);
if (!found_method)
return gen_error;
free(methodname);
if (node->call.args_count > 0)
for (size_t i = 0; i < node->call.args_count; i++)
if (gen_common(gen, node->call.args[i]).error)