From c11e524636d823572abbdba5319d8233d6d46c0e Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Thu, 14 Oct 2021 22:00:31 -0500 Subject: [PATCH] random bugfixes and changes --- bin/onyx | Bin 439840 -> 439840 bytes core/container/bucket_array.onyx | 5 +++++ core/random.onyx | 4 ++++ include/astnodes.h | 2 +- misc/onyx.sublime-syntax | 9 +++++++++ src/polymorph.c | 4 ++-- src/types.c | 7 +++---- src/utils.c | 5 +++++ tests/bucket_array | 1 + tests/bucket_array.onyx | 2 ++ 10 files changed, 32 insertions(+), 7 deletions(-) diff --git a/bin/onyx b/bin/onyx index 6fa13f9163fa200f8ba1a688c691d7518ecde651..4cea0fe177a853269df8d3abfe4d77ba522ee6ad 100755 GIT binary patch delta 48459 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 delta 48446 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
8E=#gPLrwTXf{H=TZw-O8k}W+?a8w0LE8r8rKxS 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

CX~-A4LPKGFA0ce3t_b3ZBN{J~SKNP5QEp?=#H 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 T { + get :: get + return get(^b, idx); +} + get :: (use b: ^Bucket_Array($T), idx: i32) -> T { bucket_index := idx / elements_per_bucket; elem_index := idx % elements_per_bucket; diff --git a/core/random.onyx b/core/random.onyx index bd8ba8b3..0bc3e50e 100644 --- a/core/random.onyx +++ b/core/random.onyx @@ -21,3 +21,7 @@ between :: (lo: i32, hi: i32) -> i32 do return int () % (hi + 1 - lo) + lo; float :: (lo := 0.0f, hi := 1.0f) -> f32 { return (cast(f32) (int() % (1 << 20)) / cast(f32) (1 << 20)) * (hi - lo) + lo; } + +choice :: (a: [] $T) -> T { + return a[between(0, a.count - 1)]; +} \ No newline at end of file diff --git a/include/astnodes.h b/include/astnodes.h index c6da2856..20966dd9 100644 --- a/include/astnodes.h +++ b/include/astnodes.h @@ -1419,7 +1419,7 @@ void report_unable_to_match_overload(AstCall* call); void expand_macro(AstCall** pcall, AstFunction* template); AstFunction* macro_resolve_header(AstMacro* macro, Arguments* args, OnyxToken* callsite); -AstStructType* polymorphic_struct_lookup(AstPolyStructType* ps_type, bh_arr(AstPolySolution) slns, OnyxFilePos pos); +Type* polymorphic_struct_lookup(AstPolyStructType* ps_type, bh_arr(AstPolySolution) slns, OnyxFilePos pos); // NOTE: Useful inlined functions static inline b32 is_lval(AstNode* node) { diff --git a/misc/onyx.sublime-syntax b/misc/onyx.sublime-syntax index d07244e5..1dd09072 100644 --- a/misc/onyx.sublime-syntax +++ b/misc/onyx.sublime-syntax @@ -9,6 +9,9 @@ contexts: main: # Strings begin and end with quotes, and use backslashes as an escape # character + - match: '"""' + scope: punctuation.definition.string.begin.onyx + push: triple_quoted_string - match: '"' scope: punctuation.definition.string.begin.onyx push: double_quoted_string @@ -97,6 +100,12 @@ contexts: scope: punctuation.definition.string.end.onyx pop: true + triple_quoted_string: + - meta_scope: string.quoted.triple.onyx + - match: '"""' + scope: punctuation.definition.string.end.onyx + pop: true + line_comment: - meta_scope: comment.line.onyx - match: $ diff --git a/src/polymorph.c b/src/polymorph.c index 335eec9d..cd479e9e 100644 --- a/src/polymorph.c +++ b/src/polymorph.c @@ -814,7 +814,7 @@ char* build_poly_struct_name(AstPolyStructType* ps_type, Type* cs_type) { return bh_aprintf(global_heap_allocator, "%s", name_buf); } -AstStructType* polymorphic_struct_lookup(AstPolyStructType* ps_type, bh_arr(AstPolySolution) slns, OnyxFilePos pos) { +Type* polymorphic_struct_lookup(AstPolyStructType* ps_type, bh_arr(AstPolySolution) slns, OnyxFilePos pos) { // @Cleanup assert(ps_type->scope != NULL); @@ -890,7 +890,7 @@ AstStructType* polymorphic_struct_lookup(AstPolyStructType* ps_type, bh_arr(AstP if (cs_type->Struct.poly_sln == NULL) cs_type->Struct.poly_sln = bh_arr_copy(global_heap_allocator, slns); if (cs_type->Struct.name == NULL) cs_type->Struct.name = build_poly_struct_name(ps_type, cs_type); - return concrete_struct; + return cs_type; } Scope* sln_scope = scope_create(context.ast_alloc, ps_type->scope, ps_type->token->pos); diff --git a/src/types.c b/src/types.c index 58e3dc08..dcb3d041 100644 --- a/src/types.c +++ b/src/types.c @@ -550,16 +550,15 @@ Type* type_build_from_ast(bh_allocator alloc, AstType* type_node) { } } - AstStructType* concrete = polymorphic_struct_lookup(ps_type, slns, pc_type->token->pos); + Type* concrete = polymorphic_struct_lookup(ps_type, slns, pc_type->token->pos); // This should be copied in the previous function. // CLEANUP: Maybe don't copy it and just use this one since it is allocated on the heap? bh_arr_free(slns); if (!concrete) return NULL; - Type* struct_type = type_build_from_ast(alloc, (AstType *) concrete); - struct_type->Struct.constructed_from = (AstType *) ps_type; - return struct_type; + concrete->Struct.constructed_from = (AstType *) ps_type; + return concrete; } case Ast_Kind_Type_Compound: { diff --git a/src/utils.c b/src/utils.c index 52fbb2cf..ef91b57c 100644 --- a/src/utils.c +++ b/src/utils.c @@ -229,6 +229,11 @@ all_types_peeled_off: AstStructType* stype = ((AstPolyStructType *) node)->base_struct; return symbol_raw_resolve(stype->scope, symbol); } + + case Ast_Kind_Poly_Call_Type: { + AstNode* callee = (AstNode *) ((AstPolyCallType *) node)->callee; + return try_symbol_raw_resolve_from_node(callee, symbol); + } } return NULL; diff --git a/tests/bucket_array b/tests/bucket_array index 0daca9e2..2f8f1c0b 100644 --- a/tests/bucket_array +++ b/tests/bucket_array @@ -1,3 +1,4 @@ +ba[10] is 10. [0] -> 0 [1] -> 1 [2] -> 2 diff --git a/tests/bucket_array.onyx b/tests/bucket_array.onyx index d94ae518..9307dca9 100644 --- a/tests/bucket_array.onyx +++ b/tests/bucket_array.onyx @@ -6,6 +6,8 @@ main :: (args: [] cstr) { ba := bucket_array.make(i32, 4); for i: 24 do ba << i; + printf("ba[10] is {}.\n", ba[10]); + sum := 0; bucket_array.for_each(ba, #code { printf("[{}] -> {}\n", bucket_index, *it); -- 2.25.1