fix: some analysis stage problems
This commit is contained in:
@@ -106,9 +106,9 @@ fzl_an_res_t analyze_call(fzl_analyzer_t *analyzer, fzl_node_t *call_node)
|
||||
.error = false, .type = FZL_TYPE_NULL, .classname = NULL};
|
||||
}
|
||||
|
||||
fzl_an_res_t callee_res = analyze_common(analyzer, callee);
|
||||
if (callee_res.error)
|
||||
return (fzl_an_res_t){.error = true};
|
||||
// fzl_an_res_t callee_res = analyze_common(analyzer, callee);
|
||||
// if (callee_res.error)
|
||||
// return (fzl_an_res_t){.error = true};
|
||||
|
||||
fzl_sym_t sym;
|
||||
bool sym_found = false;
|
||||
@@ -148,11 +148,12 @@ fzl_an_res_t analyze_call(fzl_analyzer_t *analyzer, fzl_node_t *call_node)
|
||||
return (fzl_an_res_t){.error = true};
|
||||
}
|
||||
|
||||
if (sym.node->fn.args_count != call_node->call.args_count)
|
||||
size_t start_i = is_method ? 1 : 0;
|
||||
if ((sym.node->fn.args_count - start_i) != call_node->call.args_count)
|
||||
{
|
||||
snprintf(call_problem, sizeof(call_problem),
|
||||
"expected %zu argument(s) while %zu is specified",
|
||||
sym.node->fn.args_count, call_node->call.args_count);
|
||||
sym.node->fn.args_count, call_node->call.args_count - start_i);
|
||||
an_push_error(analyzer, call_node->token, call_problem);
|
||||
|
||||
if (tmp_method_name != NULL)
|
||||
@@ -164,7 +165,6 @@ fzl_an_res_t analyze_call(fzl_analyzer_t *analyzer, fzl_node_t *call_node)
|
||||
return (fzl_an_res_t){.error = true};
|
||||
}
|
||||
|
||||
size_t start_i = is_method ? 1 : 0;
|
||||
for (size_t i = start_i; i < sym.node->fn.args_count; i++)
|
||||
{
|
||||
fzl_node_t *arg = sym.node->fn.args[i];
|
||||
@@ -173,7 +173,8 @@ fzl_an_res_t analyze_call(fzl_analyzer_t *analyzer, fzl_node_t *call_node)
|
||||
if (req_type == FZL_TYPE_OBJECT)
|
||||
req_classname = arg->var.type->value;
|
||||
|
||||
fzl_an_res_t got = analyze_common(analyzer, call_node->call.args[i]);
|
||||
fzl_an_res_t got =
|
||||
analyze_common(analyzer, call_node->call.args[i - start_i]);
|
||||
if (got.error)
|
||||
{
|
||||
if (tmp_method_name != NULL)
|
||||
|
||||
Reference in New Issue
Block a user