From 45d3ddfc2f351b5e3dae196bff73acaf9e01a525 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Wed, 23 Dec 2020 12:28:02 -0600 Subject: [PATCH] better error message on mismatched function arguments --- include/onyxastnodes.h | 5 +++++ include/onyxutils.h | 2 +- onyx | Bin 282568 -> 282608 bytes src/onyxchecker.c | 8 ++++---- src/onyxparser.c | 12 ++++++++++++ src/onyxsymres.c | 6 +++++- src/onyxutils.c | 26 ++++++++++++++++++++++---- 7 files changed, 49 insertions(+), 10 deletions(-) diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index ffb8c60d..35d32a21 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -640,6 +640,8 @@ struct AstAlias { struct AstGlobal { AstTyped_base; + OnyxToken* name; + union { // NOTE: Used when a global is exported with a specific name OnyxToken* exported_name; @@ -675,6 +677,8 @@ struct AstFunction { // then resolved to an overloaded function. AstNode *overloaded_function; + OnyxToken* name; + union { // NOTE: Used when a function is exported with a specific name OnyxToken* exported_name; @@ -860,6 +864,7 @@ void promote_numlit_to_larger(AstNumLit* num); b32 convert_numlit_to_type(AstNumLit* num, Type* type); b32 type_check_or_auto_cast(AstTyped** pnode, Type* type); Type* resolve_expression_type(AstTyped* node); +char* get_function_name(AstFunction* func); typedef enum PolyProcLookupMethod { PPLM_By_Call, diff --git a/include/onyxutils.h b/include/onyxutils.h index 78ba0a4e..dd7492dd 100644 --- a/include/onyxutils.h +++ b/include/onyxutils.h @@ -14,7 +14,7 @@ void program_info_init(ProgramInfo* prog, bh_allocator alloc); Package* program_info_package_lookup(ProgramInfo* prog, char* package_name); Package* program_info_package_lookup_or_create(ProgramInfo* prog, char* package_name, Scope* parent_scope, bh_allocator alloc); -void scope_include(Scope* target, Scope* source); +void scope_include(Scope* target, Scope* source, OnyxFilePos pos); b32 symbol_introduce(Scope* scope, OnyxToken* tkn, AstNode* symbol); b32 symbol_raw_introduce(Scope* scope, char* tkn, OnyxFilePos pos, AstNode* symbol); void symbol_builtin_introduce(Scope* scope, char* sym, AstNode *node); diff --git a/onyx b/onyx index 1ae07bcc524c07076828cca628df310216a1b647..2b80fa462d6484562d2b5a5e8756dccf51848cf5 100755 GIT binary patch delta 55686 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 diff --git a/src/onyxchecker.c b/src/onyxchecker.c index 7af9ab88..e6598289 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -421,8 +421,8 @@ b32 check_call(AstCall* call) { if (arg_pos >= bh_arr_length(arg_arr)) goto type_checking_done; if (!type_check_or_auto_cast(&arg_arr[arg_pos]->value, formal_params[arg_pos])) { onyx_report_error(arg_arr[arg_pos]->token->pos, - "The function '%b' expects a value of type '%s' for %d%s parameter, got '%s'.", - callee->token->text, callee->token->length, + "The procedure '%s' expects a value of type '%s' for %d%s parameter, got '%s'.", + get_function_name(callee), type_get_name(formal_params[arg_pos]), arg_pos + 1, bh_num_suffix(arg_pos + 1), @@ -440,8 +440,8 @@ b32 check_call(AstCall* call) { if (arg_pos >= bh_arr_length(arg_arr)) goto type_checking_done; if (!type_check_or_auto_cast(&arg_arr[arg_pos]->value, variadic_type)) { onyx_report_error(arg_arr[arg_pos]->token->pos, - "The function '%b' expects a value of type '%s' for the variadic parameter, '%b', got '%s'.", - callee->token->text, callee->token->length, + "The procedure '%s' expects a value of type '%s' for the variadic parameter, '%b', got '%s'.", + get_function_name(callee), type_get_name(variadic_type), variadic_param->local->token->text, variadic_param->local->token->length, diff --git a/src/onyxparser.c b/src/onyxparser.c index 33a54797..2f7e7a5b 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -1972,12 +1972,24 @@ static AstNode* parse_top_level_statement(OnyxParser* parser) { if (func->exported_name == NULL) func->exported_name = symbol; + func->name = symbol; + + } else if (node->kind == Ast_Kind_Polymorphic_Proc) { + AstPolyProc* proc = (AstPolyProc *) node; + + if (proc->base_func->exported_name == NULL) + proc->base_func->exported_name = symbol; + + proc->base_func->name = symbol; + } else if (node->kind == Ast_Kind_Global) { AstGlobal* global = (AstGlobal *) node; if (global->exported_name == NULL) global->exported_name = symbol; + global->name = symbol; + } else if (node->kind != Ast_Kind_Overloaded_Function && node->kind != Ast_Kind_StrLit) { diff --git a/src/onyxsymres.c b/src/onyxsymres.c index e3327c8e..0e7fe68c 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -796,7 +796,11 @@ static void symres_use_package(AstUsePackage* package) { } if (package->alias == NULL && package->only == NULL) { - scope_include(semstate.curr_scope, p->scope); + OnyxFilePos pos = { 0 }; + if (package->token != NULL) + pos = package->token->pos; + + scope_include(semstate.curr_scope, p->scope, pos); } } diff --git a/src/onyxutils.c b/src/onyxutils.c index 714f47f4..85bb259d 100644 --- a/src/onyxutils.c +++ b/src/onyxutils.c @@ -177,9 +177,9 @@ Scope* scope_create(bh_allocator a, Scope* parent, OnyxFilePos created_at) { return scope; } -void scope_include(Scope* target, Scope* source) { +void scope_include(Scope* target, Scope* source, OnyxFilePos pos) { bh_table_each_start(AstNode *, source->symbols); - symbol_raw_introduce(target, (char *) key, value->token->pos, value); + symbol_raw_introduce(target, (char *) key, pos, value); bh_table_each_end; } @@ -194,8 +194,12 @@ b32 symbol_introduce(Scope* scope, OnyxToken* tkn, AstNode* symbol) { b32 symbol_raw_introduce(Scope* scope, char* name, OnyxFilePos pos, AstNode* symbol) { if (bh_table_has(AstNode *, scope->symbols, name)) { - onyx_report_error(pos, "Redeclaration of symbol '%s'.", name); - return 0; + if (bh_table_get(AstNode *, scope->symbols, name) != symbol) { + onyx_report_error(pos, "Redeclaration of symbol '%s'.", name); + return 0; + } + + return 1; } bh_table_put(AstNode *, scope->symbols, name, symbol); @@ -869,3 +873,17 @@ Type* resolve_expression_type(AstTyped* node) { return node->type; } +char* get_function_name(AstFunction* func) { + if (func->name != NULL) { + return bh_aprintf(global_scratch_allocator, "%b", func->name->text, func->name->length); + } + + if (func->exported_name != NULL) { + return bh_aprintf(global_scratch_allocator, + "EXPORTED:%b", + func->exported_name->text, + func->exported_name->length); + } + + return ""; +} -- 2.25.1