From 1594d4ff8ddcc77c96bdd37c761721d1f497b261 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Mon, 14 Sep 2020 18:08:22 -0500 Subject: [PATCH] fixed bug with polymorphic struct 'using' --- core/i32map.onyx | 64 +++++++++++++++++++++++------------------------ onyx | Bin 704056 -> 704024 bytes src/onyxsymres.c | 4 +-- 3 files changed, 33 insertions(+), 35 deletions(-) diff --git a/core/i32map.onyx b/core/i32map.onyx index 967b0d52..d8ba4675 100644 --- a/core/i32map.onyx +++ b/core/i32map.onyx @@ -11,69 +11,69 @@ I32MapEntry :: struct ($T) { value : T; } -i32map_init :: proc (imap: ^I32Map($T), hash_count: i32 = 16) { - array_init(^imap.hashes, hash_count); - array_init(^imap.entries, 4); +i32map_init :: proc (use imap: ^I32Map($T), hash_count: i32 = 16) { + array_init(^hashes, hash_count); + array_init(^entries, 4); - for i: 0 .. hash_count do array_push(^imap.hashes, -1); + for i: 0 .. hash_count do array_push(^hashes, -1); } -i32map_free :: proc (imap: ^I32Map($T)) { - array_free(^imap.hashes); - array_free(^imap.entries); +i32map_free :: proc (use imap: ^I32Map($T)) { + array_free(^hashes); + array_free(^entries); } -i32map_put :: proc (imap: ^I32Map($T), key: i32, value: T) { +i32map_put :: proc (use imap: ^I32Map($T), key: i32, value: T) { lr := i32map_lookup(imap, key); if lr.entry_index >= 0 { - imap.entries[lr.entry_index].value = value; + entries[lr.entry_index].value = value; return; } entry : I32MapEntry(T); entry.key = key; entry.value = value; - entry.next = imap.hashes[lr.hash_index]; + entry.next = hashes[lr.hash_index]; - array_push(^imap.entries, entry); + array_push(^entries, entry); - imap.hashes[lr.hash_index] = imap.entries.count - 1; + hashes[lr.hash_index] = entries.count - 1; } -i32map_has :: proc (imap: ^I32Map($T), key: i32) -> bool { +i32map_has :: proc (use imap: ^I32Map($T), key: i32) -> bool { lr := i32map_lookup(imap, key); return lr.entry_index >= 0; } -i32map_get :: proc (imap: ^I32Map($T), key: i32, default := cast(T) 0) -> T { +i32map_get :: proc (use imap: ^I32Map($T), key: i32, default := cast(T) 0) -> T { lr := i32map_lookup(imap, key); - if lr.entry_index >= 0 do return imap.entries[lr.entry_index].value; + if lr.entry_index >= 0 do return entries[lr.entry_index].value; return default; } -i32map_delete :: proc (imap: ^I32Map($T), key: i32) { +i32map_delete :: proc (use imap: ^I32Map($T), key: i32) { lr := i32map_lookup(imap, key); if lr.entry_index < 0 do return; - if lr.entry_prev < 0 do imap.hashes[lr.hash_index] = imap.entries[lr.entry_index].next; - else do imap.hashes[lr.entry_prev] = imap.entries[lr.entry_index].next; + if lr.entry_prev < 0 do hashes[lr.hash_index] = entries[lr.entry_index].next; + else do hashes[lr.entry_prev] = entries[lr.entry_index].next; - if lr.entry_index == imap.entries.count - 1 { - array_pop(^imap.entries); + if lr.entry_index == entries.count - 1 { + array_pop(^entries); return; } - array_fast_delete(^imap.entries, lr.entry_index); - last := i32map_lookup(imap, imap.entries[lr.entry_index].key); - if last.entry_prev >= 0 do imap.entries[last.entry_prev].next = lr.entry_index; - else do imap.hashes[last.hash_index] = lr.entry_index; + array_fast_delete(^entries, lr.entry_index); + last := i32map_lookup(imap, entries[lr.entry_index].key); + if last.entry_prev >= 0 do entries[last.entry_prev].next = lr.entry_index; + else do hashes[last.hash_index] = lr.entry_index; } -i32map_clear :: proc (imap: ^I32Map($T)) { - for i: 0 .. imap.hashes.count do imap.hashes.data[i] = -1; - imap.entries.count = 0; +i32map_clear :: proc (use imap: ^I32Map($T)) { + for i: 0 .. hashes.count do hashes.data[i] = -1; + entries.count = 0; } @@ -90,19 +90,19 @@ I32MapLookupResult :: struct { } #private -i32map_lookup :: proc (imap: ^I32Map($T), key: i32) -> I32MapLookupResult { +i32map_lookup :: proc (use imap: ^I32Map($T), key: i32) -> I32MapLookupResult { lr := I32MapLookupResult.{}; hash := cast(u32) 0xcbf29ce7 ^ cast(u32) key; - lr.hash_index = hash % imap.hashes.count; - lr.entry_index = imap.hashes[lr.hash_index]; + lr.hash_index = hash % hashes.count; + lr.entry_index = hashes[lr.hash_index]; while lr.entry_index >= 0 { - if imap.entries[lr.entry_index].key == key do return lr; + if entries[lr.entry_index].key == key do return lr; lr.entry_prev = lr.entry_index; - lr.entry_index = imap.entries[lr.entry_index].next; + lr.entry_index = entries[lr.entry_index].next; } return lr; diff --git a/onyx b/onyx index ec1d3be948189aa8a245629cca11b817cc7efebc..146b26681895975c82400c4619eead529cd62f28 100755 GIT binary patch delta 38296 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 delta 38648 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 diff --git a/src/onyxsymres.c b/src/onyxsymres.c index 7257eb85..85a4bd6a 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -570,14 +570,12 @@ void symres_function(AstFunction* func) { } if (st->kind == Ast_Kind_Poly_Call_Type) { - onyx_report_error(param->local->token->pos, "Currently, cannot 'use' a polymorphic struct type. This will be added in the future."); - return; + st = (AstStructType *) (((AstPolyStructType *) (((AstPolyCallType *) st)->callee))->base_struct); } bh_arr_each(AstStructMember *, mem, st->members) { AstFieldAccess* fa = onyx_ast_node_new(semstate.node_allocator, sizeof(AstFieldAccess), Ast_Kind_Field_Access); fa->token = (*mem)->token; - fa->type_node = (*mem)->type_node; fa->expr = (AstTyped *) param->local; token_toggle_end((*mem)->token); -- 2.25.1