From 8c08c718c49d259fa2071bbc93ce63a1002a7813 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Fri, 18 Jun 2021 12:43:46 -0500 Subject: [PATCH] added precedence option to overloads --- bin/onyx | Bin 405672 -> 409808 bytes core/io/stream.onyx | 4 ++++ include/onyxastnodes.h | 21 +++++++++++++---- include/onyxutils.h | 2 +- src/onyxbuiltins.c | 2 +- src/onyxparser.c | 21 +++++++++++++++-- src/onyxsymres.c | 8 +++---- src/onyxutils.c | 42 ++++++++++++++++++++++++++------- tests/overload_precedence | 4 ++++ tests/overload_precedence.onyx | 20 ++++++++++++++++ 10 files changed, 104 insertions(+), 20 deletions(-) create mode 100644 tests/overload_precedence create mode 100644 tests/overload_precedence.onyx diff --git a/bin/onyx b/bin/onyx index 3d3597925d285b05d50929b590419e2b92345e8e..28ba7ff10dee859e629db557fbefe9c81b26b5b7 100755 GIT binary patch delta 111714 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

9tOT)CRUt4lLS7S{BY<{Bj)DCXxlp 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 DD!8EB delta 111426 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 Dyna }; } +dynamic_string_stream_free :: (use dds: ^DynamicStringStream) { + array.free(^data); +} + dynamic_string_stream_to_str :: (use dds: ^DynamicStringStream) -> str { return data.data[0 .. curr_pos]; } diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index eb9a399f..490976c9 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -830,10 +830,20 @@ struct AstFunction { struct Entity* entity_body; }; +typedef struct OverloadOption OverloadOption; +struct OverloadOption { + // This is u64 because padding will make it that anyway. + // Consider: would there be any practical benefit to having the precedence setting + // be a compile-time known value? as opposed to a hardcoded value? + u64 precedence; + + AstTyped* option; +}; + struct AstOverloadedFunction { AstTyped_base; - bh_arr(AstTyped *) overloads; + bh_arr(OverloadOption) overloads; // CLEANUP: This is unused right now, but should be used to cache // the complete set of overloads that can be used by an overloaded @@ -937,6 +947,8 @@ struct AstDirectiveAddOverload { // then resolved to an overloaded function. AstNode *overloaded_function; + // See note in OverloadOption. This could be refactored into an OverloadOption? + u64 precedence; AstTyped *overload; }; @@ -1207,7 +1219,7 @@ typedef struct IntrinsicMap { extern bh_table(OnyxIntrinsic) intrinsic_table; -extern bh_arr(AstTyped *) operator_overloads[Binary_Op_Count]; +extern bh_arr(OverloadOption) operator_overloads[Binary_Op_Count]; void initialize_builtins(bh_allocator a); void introduce_build_options(bh_allocator a); @@ -1261,8 +1273,9 @@ AstFunction* polymorphic_proc_solidify(AstPolyProc* pp, bh_arr(AstPolySolution) AstNode* polymorphic_proc_try_solidify(AstPolyProc* pp, bh_arr(AstPolySolution) slns, OnyxToken* tkn); AstFunction* polymorphic_proc_build_only_header(AstPolyProc* pp, PolyProcLookupMethod pp_lookup, ptr actual); -AstTyped* find_matching_overload_by_arguments(bh_arr(AstTyped *) overloads, Arguments* args); -AstTyped* find_matching_overload_by_type(bh_arr(AstTyped *) overloads, Type* type); +void add_overload_option(bh_arr(OverloadOption)* poverloads, u64 precedence, AstTyped* overload); +AstTyped* find_matching_overload_by_arguments(bh_arr(OverloadOption) overloads, Arguments* args); +AstTyped* find_matching_overload_by_type(bh_arr(OverloadOption) overloads, Type* type); void report_unable_to_match_overload(AstCall* call); AstStructType* polymorphic_struct_lookup(AstPolyStructType* ps_type, bh_arr(AstPolySolution) slns, OnyxFilePos pos); diff --git a/include/onyxutils.h b/include/onyxutils.h index a67833c9..cd726711 100644 --- a/include/onyxutils.h +++ b/include/onyxutils.h @@ -26,7 +26,7 @@ AstNode* symbol_resolve(Scope* start_scope, OnyxToken* tkn); AstNode* try_symbol_raw_resolve_from_node(AstNode* node, char* symbol); AstNode* try_symbol_resolve_from_node(AstNode* node, OnyxToken* token); -void build_all_overload_options(bh_arr(AstTyped *) overloads, bh_imap* all_overloads); +void build_all_overload_options(bh_arr(OverloadOption) overloads, bh_imap* all_overloads); u32 char_to_base16_value(char x); diff --git a/src/onyxbuiltins.c b/src/onyxbuiltins.c index 0a8abaf0..54475b59 100644 --- a/src/onyxbuiltins.c +++ b/src/onyxbuiltins.c @@ -329,7 +329,7 @@ static IntrinsicMap builtin_intrinsics[] = { { NULL, ONYX_INTRINSIC_UNDEFINED }, }; -bh_arr(AstTyped *) operator_overloads[Binary_Op_Count] = { 0 }; +bh_arr(OverloadOption) operator_overloads[Binary_Op_Count] = { 0 }; void initialize_builtins(bh_allocator a) { // HACK diff --git a/src/onyxparser.c b/src/onyxparser.c index 08a5256f..b5c7d61f 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -1918,12 +1918,19 @@ static AstOverloadedFunction* parse_overloaded_function(OnyxParser* parser, Onyx bh_arr_new(global_heap_allocator, ofunc->overloads, 4); + u64 precedence = 0; while (!consume_token_if_next(parser, '}')) { if (parser->hit_unexpected_token) return ofunc; - AstTyped* o_node = parse_expression(parser, 0); + if (parse_possible_directive(parser, "precedence")) { + AstNumLit* pre = parse_int_literal(parser); + if (parser->hit_unexpected_token) return ofunc; - bh_arr_push(ofunc->overloads, o_node); + precedence = bh_max(pre->value.l, 0); + } + + AstTyped* option = parse_expression(parser, 0); + add_overload_option(&ofunc->overloads, precedence++, option); if (parser->curr->type != '}') expect_token(parser, ','); @@ -2370,6 +2377,16 @@ static void parse_top_level_statement(OnyxParser* parser) { add_overload->overloaded_function = (AstNode *) parse_expression(parser, 0); expect_token(parser, ','); + + if (parse_possible_directive(parser, "precedence")) { + AstNumLit* pre = parse_int_literal(parser); + if (parser->hit_unexpected_token) return; + + add_overload->precedence = bh_max(pre->value.l, 0); + } else { + add_overload->precedence = 0; + } + add_overload->overload = parse_expression(parser, 0); ENTITY_SUBMIT(add_overload); diff --git a/src/onyxsymres.c b/src/onyxsymres.c index deb1bbfe..76e328ca 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -877,8 +877,8 @@ static SymresStatus symres_global(AstGlobal* global) { } static SymresStatus symres_overloaded_function(AstOverloadedFunction* ofunc) { - bh_arr_each(AstTyped *, node, ofunc->overloads) { - SYMRES(expression, node); + bh_arr_each(OverloadOption, overload, ofunc->overloads) { + SYMRES(expression, &overload->option); } return Symres_Success; } @@ -1023,7 +1023,7 @@ static SymresStatus symres_process_directive(AstNode* directive) { } else { AstOverloadedFunction* ofunc = (AstOverloadedFunction *) add_overload->overloaded_function; SYMRES(expression, (AstTyped **) &add_overload->overload); - bh_arr_push(ofunc->overloads, (AstTyped *) add_overload->overload); + add_overload_option(&ofunc->overloads, add_overload->precedence, add_overload->overload); } break; @@ -1050,7 +1050,7 @@ static SymresStatus symres_process_directive(AstNode* directive) { return Symres_Error; } - bh_arr_push(operator_overloads[operator->operator], operator->overload); + add_overload_option(&operator_overloads[operator->operator], 0, operator->overload); break; } diff --git a/src/onyxutils.c b/src/onyxutils.c index cca3892d..e737e804 100644 --- a/src/onyxutils.c +++ b/src/onyxutils.c @@ -978,6 +978,32 @@ AstFunction* polymorphic_proc_build_only_header(AstPolyProc* pp, PolyProcLookupM // * Resolving an overload from a TypeFunction (so an overloaded procedure can be passed as a parameter) // +void add_overload_option(bh_arr(OverloadOption)* poverloads, u64 precedence, AstTyped* overload) { + bh_arr(OverloadOption) overloads = *poverloads; + + i32 index = -1; + fori (i, 0, bh_arr_length(overloads)) { + if (overloads[i].precedence > precedence) { + index = i; + break; + } + } + + if (index < 0) { + bh_arr_push(overloads, ((OverloadOption) { + .precedence = precedence, + .option = overload, + })); + + } else { + bh_arr_insertn(overloads, index, 1); + overloads[index].precedence = precedence; + overloads[index].option = overload; + } + + *poverloads = overloads; +} + // NOTE: The job of this function is to take a set of overloads, and traverse it to add all possible // overloads that are reachable. This is slightly more difficult than it may seem. In this language, // overloaded procedures have a strict ordering to their overloads, which determines how the correct @@ -996,20 +1022,20 @@ AstFunction* polymorphic_proc_build_only_header(AstPolyProc* pp, PolyProcLookupM // an "entries" array that, so long as nothing is ever removed from it, will maintain the order in // which entries were put into the map. This is useful because a simple recursive algorithm can // collect all the overloads into the map, and also use the map to provide a base case. -void build_all_overload_options(bh_arr(AstTyped *) overloads, bh_imap* all_overloads) { - bh_arr_each(AstTyped *, node, overloads) { - if (bh_imap_has(all_overloads, (u64) *node)) continue; +void build_all_overload_options(bh_arr(OverloadOption) overloads, bh_imap* all_overloads) { + bh_arr_each(OverloadOption, overload, overloads) { + if (bh_imap_has(all_overloads, (u64) overload->option)) continue; - bh_imap_put(all_overloads, (u64) *node, 1); + bh_imap_put(all_overloads, (u64) overload->option, 1); - if ((*node)->kind == Ast_Kind_Overloaded_Function) { - AstOverloadedFunction* sub_overload = (AstOverloadedFunction *) *node; + if (overload->option->kind == Ast_Kind_Overloaded_Function) { + AstOverloadedFunction* sub_overload = (AstOverloadedFunction *) overload->option; build_all_overload_options(sub_overload->overloads, all_overloads); } } } -AstTyped* find_matching_overload_by_arguments(bh_arr(AstTyped *) overloads, Arguments* param_args) { +AstTyped* find_matching_overload_by_arguments(bh_arr(OverloadOption) overloads, Arguments* param_args) { Arguments args; arguments_clone(&args, param_args); arguments_ensure_length(&args, bh_arr_length(args.values) + bh_arr_length(args.named_values)); @@ -1077,7 +1103,7 @@ AstTyped* find_matching_overload_by_arguments(bh_arr(AstTyped *) overloads, Argu return matched_overload; } -AstTyped* find_matching_overload_by_type(bh_arr(AstTyped *) overloads, Type* type) { +AstTyped* find_matching_overload_by_type(bh_arr(OverloadOption) overloads, Type* type) { if (type->kind != Type_Kind_Function) return NULL; bh_imap all_overloads; diff --git a/tests/overload_precedence b/tests/overload_precedence new file mode 100644 index 00000000..7f67e0c9 --- /dev/null +++ b/tests/overload_precedence @@ -0,0 +1,4 @@ +Option M +Option X +Option R +Option Z diff --git a/tests/overload_precedence.onyx b/tests/overload_precedence.onyx new file mode 100644 index 00000000..f3f04822 --- /dev/null +++ b/tests/overload_precedence.onyx @@ -0,0 +1,20 @@ +#load "core/std" + +use package core + +overloaded :: #match { + #precedence 10 (x: i32) { println("Option X"); }, + #precedence 5 (y: i32) { println("Option Y"); }, + #precedence 4 (z: i32) { println("Option Z"); }, +} + +main :: (args: [] cstr) { + overloaded(10); + overloaded(x=10); + overloaded(r=10); + overloaded(z=10); +} + +#add_match overloaded, #precedence 3 (q: i32) { println("Option Q"); } +#add_match overloaded, #precedence 2 (r: i32) { println("Option R"); } +#add_match overloaded, #precedence 1 (m: i32) { println("Option M"); } -- 2.25.1