From 6b4891e977d77f40f779d98b86a8dabacbba45b6 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Fri, 17 Jul 2020 21:56:03 -0500 Subject: [PATCH] Added basic function overloading --- include/onyxastnodes.h | 12 +++- onyx | Bin 252496 -> 254592 bytes progs/arrays.onyx | 32 +++++++--- progs/print_funcs.onyx | 8 +++ src/onyxchecker.c | 130 ++++++++++++++++++++++++++++++++--------- src/onyxparser.c | 24 +++++++- src/onyxsymres.c | 13 +++++ src/onyxutils.c | 1 + src/onyxwasm.c | 2 +- 9 files changed, 181 insertions(+), 41 deletions(-) diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index 6e3a2366..ceacab39 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -30,10 +30,10 @@ typedef struct AstPointerType AstPointerType; typedef struct AstFunctionType AstFunctionType; typedef struct AstBinding AstBinding; -typedef struct AstFunction AstFunction; -typedef struct AstForeign AstForeign; -typedef struct AstGlobal AstGlobal; typedef struct AstUse AstUse; +typedef struct AstGlobal AstGlobal; +typedef struct AstFunction AstFunction; +typedef struct AstOverloadedFunction AstOverloadedFunction; typedef enum AstKind { Ast_Kind_Error, @@ -42,6 +42,7 @@ typedef enum AstKind { Ast_Kind_Binding, Ast_Kind_Function, + Ast_Kind_Overloaded_Function, Ast_Kind_Foreign, Ast_Kind_Block, Ast_Kind_Local_Group, @@ -255,6 +256,11 @@ struct AstFunction { }; }; }; +struct AstOverloadedFunction { + AstTyped_base; + + bh_arr(AstTyped *) overloads; +}; // NOTE: Simple data structure for storing what comes out of the parser typedef struct ParserOutput { diff --git a/onyx b/onyx index e31cecd7ec9539929585bb763571728fe42052b6..caa0034a88fcd8f9b213b21ddecf780df073bcd2 100755 GIT binary patch delta 91541 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 SW5Mu@5lwP9(Uu$u`uq##0K;hj diff --git a/progs/arrays.onyx b/progs/arrays.onyx index 24246274..c4f6bd4c 100644 --- a/progs/arrays.onyx +++ b/progs/arrays.onyx @@ -1,6 +1,24 @@ use "progs/intrinsics" use "progs/print_funcs" +global_arr :: global ^i32; + +min_i32 :: proc (a: i32, b: i32) -> i32 { + least := a; + if b < a least = b; + return least; +} + +min_i64 :: proc (a: i64, b: i64) -> i64 { + least := a; + if b < a least = b; + return least; +} + +min :: proc #overloaded { + min_i32, min_i64, min_f32, min_f64 +} + // NOTE: in-place insertion sort sort :: proc (src: ^i32, len: i32) { i := 0; @@ -21,17 +39,17 @@ sort :: proc (src: ^i32, len: i32) { } } -global_arr :: global ^i32; - -print_i32arr :: proc (arr: ^i32, len: i32) { +printarr :: proc (arr: ^i32, len: i32) { i := 0; while i < len { - print_i32(arr[i]); + print(arr[i]); i += 1; } } main :: proc #export { + print(min(10.0, 12.0)); + global_arr = 0 as ^i32; len :: 10; @@ -41,11 +59,11 @@ main :: proc #export { i += 1; } - print_i32arr(global_arr, len); + printarr(global_arr, len); sort(global_arr, len); - print_i32(1234567); - print_i32arr(global_arr, len); + print(1234567); + printarr(global_arr, len); } diff --git a/progs/print_funcs.onyx b/progs/print_funcs.onyx index 3ac27828..ac1e750e 100644 --- a/progs/print_funcs.onyx +++ b/progs/print_funcs.onyx @@ -3,3 +3,11 @@ print_i32 :: proc #foreign "host" "print" (value: i32) --- print_f32 :: proc #foreign "host" "print" (value: f32) --- print_i64 :: proc #foreign "host" "print" (value: i64) --- print_f64 :: proc #foreign "host" "print" (value: f64) --- + +print :: proc #overloaded { + print_bool, + print_i32, + print_f32, + print_i64, + print_f64 +} diff --git a/src/onyxchecker.c b/src/onyxchecker.c index 90a3e6ca..a61df5be 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -2,7 +2,6 @@ #include "onyxsempass.h" #include "onyxparser.h" -static b32 check_function(SemState* state, AstFunction* func); static b32 check_block(SemState* state, AstBlock* block); static b32 check_statement_chain(SemState* state, AstNode* start); static b32 check_statement(SemState* state, AstNode* stmt); @@ -14,6 +13,13 @@ static b32 check_binaryop(SemState* state, AstBinaryOp* binop); static b32 check_expression(SemState* state, AstTyped* expr); static b32 check_array_access(SemState* state, AstArrayAccess* expr); static b32 check_global(SemState* state, AstGlobal* global); +static b32 check_function(SemState* state, AstFunction* func); +static b32 check_overloaded_function(SemState* state, AstOverloadedFunction* func); + +static inline void fill_in_type(SemState* state, AstTyped* node) { + if (node->type == NULL) + node->type = type_build_from_ast(state->allocator, node->type_node); +} static b32 check_return(SemState* state, AstReturn* retnode) { if (retnode->expr) { @@ -71,6 +77,46 @@ static b32 check_while(SemState* state, AstWhile* whilenode) { return check_statement(state, whilenode->stmt); } +static AstTyped* match_overloaded_function(SemState* state, AstCall* call, AstOverloadedFunction* ofunc) { + u64 param_count = 0; + for (AstArgument* arg = call->arguments; + arg != NULL; + arg = (AstArgument *) arg->next) param_count++; + + bh_arr_each(AstTyped *, node, ofunc->overloads) { + AstFunction* overload = (AstFunction *) *node; + + fill_in_type(state, (AstTyped *) overload); + + TypeFunction* ol_type = &overload->type->Function; + + if (ol_type->param_count != param_count) continue; + + AstArgument* arg = call->arguments; + Type** param_type = ol_type->params; + while (arg != NULL) { + fill_in_type(state, (AstTyped *) arg); + + if (!types_are_compatible(*param_type, arg->type)) goto no_match; + + param_type++; + arg = (AstArgument *) arg->next; + } + + return (AstTyped *) overload; + +no_match: + continue; + } + + onyx_message_add(state->msgs, + ONYX_MESSAGE_TYPE_LITERAL, + call->token->pos, + "unable to match overloaded function"); + + return NULL; +} + static b32 check_call(SemState* state, AstCall* call) { AstFunction* callee = (AstFunction *) call->callee; @@ -82,10 +128,23 @@ static b32 check_call(SemState* state, AstCall* call) { return 1; } - if (callee->type == NULL) { - callee->type = type_build_from_ast(state->node_allocator, callee->type_node); + // NOTE: Check arguments + AstArgument* actual_param = call->arguments; + while (actual_param != NULL) { + if (check_expression(state, (AstTyped *) actual_param)) return 1; + actual_param = (AstArgument *) actual_param->next; + } + + if (callee->kind == Ast_Kind_Overloaded_Function) { + call->callee = (AstNode *) match_overloaded_function(state, call, (AstOverloadedFunction *) callee); + callee = (AstFunction *) call->callee; + + if (callee == NULL) return 1; } + // NOTE: Build callee's type + fill_in_type(state, (AstTyped *) callee); + if (callee->type->kind != Type_Kind_Function) { onyx_message_add(state->msgs, ONYX_MESSAGE_TYPE_CALL_NON_FUNCTION, @@ -160,15 +219,11 @@ static b32 check_call(SemState* state, AstCall* call) { call->type = callee->type->Function.return_type; AstLocal* formal_param = callee->params; - AstArgument* actual_param = call->arguments; + actual_param = call->arguments; i32 arg_pos = 0; while (formal_param != NULL && actual_param != NULL) { - if (check_expression(state, (AstTyped *) actual_param)) return 1; - - if (formal_param->type == NULL) { - formal_param->type = type_build_from_ast(state->node_allocator, formal_param->type_node); - } + fill_in_type(state, (AstTyped *) formal_param); if (!types_are_compatible(formal_param->type, actual_param->type)) { onyx_message_add(state->msgs, @@ -338,9 +393,7 @@ static b32 check_expression(SemState* state, AstTyped* expr) { return 1; } - if (expr->type == NULL) { - expr->type = type_build_from_ast(state->node_allocator, expr->type_node); - } + fill_in_type(state, expr); i32 retval = 0; switch (expr->kind) { @@ -403,6 +456,7 @@ static b32 check_expression(SemState* state, AstTyped* expr) { break; case Ast_Kind_Function: break; + case Ast_Kind_Overloaded_Function: break; default: retval = 1; @@ -414,8 +468,7 @@ static b32 check_expression(SemState* state, AstTyped* expr) { } static b32 check_global(SemState* state, AstGlobal* global) { - if (global->type == NULL) - global->type = type_build_from_ast(state->allocator, global->type_node); + fill_in_type(state, (AstTyped *) global); if (global->type == NULL) { onyx_message_add(state->msgs, @@ -471,9 +524,7 @@ static b32 check_block(SemState* state, AstBlock* block) { static b32 check_function(SemState* state, AstFunction* func) { for (AstLocal *param = func->params; param != NULL; param = (AstLocal *) param->next) { - if (param->type == NULL) { - param->type = type_build_from_ast(state->node_allocator, param->type_node); - } + fill_in_type(state, (AstTyped *) param); if (param->type == NULL) { onyx_message_add(state->msgs, @@ -492,9 +543,7 @@ static b32 check_function(SemState* state, AstFunction* func) { } } - if (func->type == NULL) { - func->type = type_build_from_ast(state->node_allocator, func->type_node); - } + fill_in_type(state, (AstTyped *) func); if ((func->flags & Ast_Flag_Exported) != 0) { if ((func->flags & Ast_Flag_Foreign) != 0) { @@ -538,16 +587,41 @@ static b32 check_function(SemState* state, AstFunction* func) { return 0; } +static b32 check_overloaded_function(SemState* state, AstOverloadedFunction* func) { + bh_arr_each(AstTyped *, node, func->overloads) { + if ((*node)->kind == Ast_Kind_Overloaded_Function) { + onyx_message_add(state->msgs, + ONYX_MESSAGE_TYPE_LITERAL, + (*node)->token->pos, + "overload option can not be another overloaded function (yet)"); + + return 1; + } + + if ((*node)->kind != Ast_Kind_Function) { + onyx_message_add(state->msgs, + ONYX_MESSAGE_TYPE_LITERAL, + (*node)->token->pos, + "overload option not function"); + + return 1; + } + } + + return 0; +} + static b32 check_node(SemState* state, AstNode* node) { switch (node->kind) { - case Ast_Kind_Function: return check_function(state, (AstFunction *) node); - case Ast_Kind_Block: return check_block(state, (AstBlock *) node); - case Ast_Kind_Return: return check_return(state, (AstReturn *) node); - case Ast_Kind_If: return check_if(state, (AstIf *) node); - case Ast_Kind_While: return check_while(state, (AstWhile *) node); - case Ast_Kind_Call: return check_call(state, (AstCall *) node); - case Ast_Kind_Binary_Op: return check_binaryop(state, (AstBinaryOp *) node); - default: return check_expression(state, (AstTyped *) node); + case Ast_Kind_Function: return check_function(state, (AstFunction *) node); + case Ast_Kind_Overloaded_Function: return check_overloaded_function(state, (AstOverloadedFunction *) node); + case Ast_Kind_Block: return check_block(state, (AstBlock *) node); + case Ast_Kind_Return: return check_return(state, (AstReturn *) node); + case Ast_Kind_If: return check_if(state, (AstIf *) node); + case Ast_Kind_While: return check_while(state, (AstWhile *) node); + case Ast_Kind_Call: return check_call(state, (AstCall *) node); + case Ast_Kind_Binary_Op: return check_binaryop(state, (AstBinaryOp *) node); + default: return check_expression(state, (AstTyped *) node); } } diff --git a/src/onyxparser.c b/src/onyxparser.c index a6c5d20a..034a6840 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -740,12 +740,32 @@ static b32 parse_possible_directive(OnyxParser* parser, const char* dir) { // 'proc' * ('->' )? static AstFunction* parse_function_definition(OnyxParser* parser) { - AstFunction* func_def = make_node(AstFunction, Ast_Kind_Function); bh_arr_new(global_heap_allocator, func_def->locals, 4); func_def->token = expect_token(parser, Token_Type_Keyword_Proc); while (parser->curr->type == '#') { + if (parse_possible_directive(parser, "overloaded")) { + AstOverloadedFunction* ofunc = make_node(AstOverloadedFunction, Ast_Kind_Overloaded_Function); + ofunc->token = func_def->token; + + bh_arr_new(global_heap_allocator, ofunc->overloads, 4); + + expect_token(parser, '{'); + while (parser->curr->type != '}') { + AstTyped* sym_node = make_node(AstTyped, Ast_Kind_Symbol); + sym_node->token = expect_token(parser, Token_Type_Symbol); + + bh_arr_push(ofunc->overloads, sym_node); + + if (parser->curr->type != '}') + expect_token(parser, ','); + } + + consume_token(parser); + return (AstFunction *) ofunc; + } + if (parse_possible_directive(parser, "intrinsic")) { func_def->flags |= Ast_Flag_Intrinsic; @@ -913,7 +933,7 @@ static AstNode* parse_top_level_statement(OnyxParser* parser) { if (global->exported_name == NULL) global->exported_name = symbol; - } else { + } else if (node->kind != Ast_Kind_Overloaded_Function) { // HACK bh_arr_push(parser->results.nodes_to_process, (AstNode *) node); } diff --git a/src/onyxsymres.c b/src/onyxsymres.c index 58f988bd..37fa5307 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -21,6 +21,7 @@ static b32 symres_statement(SemState* state, AstNode* stmt); static void symres_block(SemState* state, AstBlock* block); static void symres_function(SemState* state, AstFunction* func); static void symres_global(SemState* state, AstGlobal* global); +static void symres_overloaded_function(SemState* state, AstOverloadedFunction* ofunc); static void symbol_introduce(SemState* state, OnyxToken* tkn, AstNode* symbol) { token_toggle_end(tkn); @@ -318,6 +319,14 @@ static void symres_global(SemState* state, AstGlobal* global) { global->type_node = symres_type(state, global->type_node); } +static void symres_overloaded_function(SemState* state, AstOverloadedFunction* ofunc) { + bh_arr_each(AstTyped *, node, ofunc->overloads) { + if ((*node)->kind == Ast_Kind_Symbol) { + *node = (AstTyped *) symbol_resolve(state, (*node)->token); + } + } +} + static void symres_top_node(SemState* state, AstNode** node) { switch ((*node)->kind) { case Ast_Kind_Call: @@ -336,6 +345,10 @@ static void symres_top_node(SemState* state, AstNode** node) { symres_function(state, (AstFunction *) *node); break; + case Ast_Kind_Overloaded_Function: + symres_overloaded_function(state, (AstOverloadedFunction *) *node); + break; + default: DEBUG_HERE; break; diff --git a/src/onyxutils.c b/src/onyxutils.c index d45042ee..24487a7b 100644 --- a/src/onyxutils.c +++ b/src/onyxutils.c @@ -15,6 +15,7 @@ static const char* ast_node_names[] = { "BINDING", "FUNCTION", + "OVERLOADED_FUNCTION", "FOREIGN", "BLOCK", "SCOPE", diff --git a/src/onyxwasm.c b/src/onyxwasm.c index cccb53c5..9ac75ced 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -1213,7 +1213,7 @@ static i32 output_memorysection(OnyxWasmModule* module, bh_buffer* buff) { u8* leb = uint_to_uleb128((u64) 1, &leb_len); bh_buffer_append(&vec_buff, leb, leb_len); - output_limits(4, 20, &vec_buff); + output_limits(4, -1, &vec_buff); leb = uint_to_uleb128((u64) (vec_buff.length), &leb_len); bh_buffer_append(buff, leb, leb_len); -- 2.25.1