From 930307f856d88b60520ccdfb2ce34b7e44acad0d Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Sun, 30 May 2021 22:31:05 -0500 Subject: [PATCH] small code cleanup --- bin/onyx | Bin 366072 -> 366032 bytes core/container/array.onyx | 54 ++++++++++++++++++++------------------ src/onyxchecker.c | 20 -------------- src/onyxsymres.c | 33 +++++++++++++---------- tests/aoc-2020/day21.onyx | 2 +- 5 files changed, 48 insertions(+), 61 deletions(-) diff --git a/bin/onyx b/bin/onyx index 6213c3448ea4a21a441cf240e193183d160314bd..b1a21794a5d9904d15aaab88e570ade524a0fc65 100755 GIT binary patch delta 52116 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 delta 52041 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 [] T { ** Simple insertion sort ** cmp should return >0 if left > right */ -sort :: (arr: ^[..] $T, cmp: (T, T) -> i32) { - for i: 1 .. arr.count { - x := arr.data[i]; - j := i - 1; - - @ShortCircuitLogicalOps // This is written this way because '&&' does not short circuit right now. - while j >= 0 { - if cmp(arr.data[j], x) > 0 { - arr.data[j + 1] = arr.data[j]; - j -= 1; - } else { - break; +sort :: proc { + (arr: ^[..] $T, cmp: (T, T) -> i32) { + for i: 1 .. arr.count { + x := arr.data[i]; + j := i - 1; + + @ShortCircuitLogicalOps // This is written this way because '&&' does not short circuit right now. + while j >= 0 { + if cmp(arr.data[j], x) > 0 { + arr.data[j + 1] = arr.data[j]; + j -= 1; + } else { + break; + } } - } - - arr.data[j + 1] = x; - } -} -sort_ptr :: (arr: ^[..] $T, cmp: (^T, ^T) -> i32) { - for i: 1 .. arr.count { - j := i; + arr.data[j + 1] = x; + } + }, - while j > 0 { - if cmp(^arr.data[j - 1], ^arr.data[j]) > 0 { - arr.data[j], arr.data[j - 1] = arr.data[j - 1], arr.data[j]; - j -= 1; - } else { - break; + (arr: ^[..] $T, cmp: (^T, ^T) -> i32) { + for i: 1 .. arr.count { + j := i; + + while j > 0 { + if cmp(^arr.data[j - 1], ^arr.data[j]) > 0 { + arr.data[j], arr.data[j - 1] = arr.data[j - 1], arr.data[j]; + j -= 1; + } else { + break; + } } } } diff --git a/src/onyxchecker.c b/src/onyxchecker.c index 6cab4d82..7e4ab81e 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -1724,26 +1724,6 @@ CheckStatus check_function_header(AstFunction* func) { func->type = type_build_function_type(context.ast_alloc, func); - /* - CLEANUP: These checks need to be ported to a process directive check. - if ((func->flags & Ast_Flag_Exported) != 0) { - if ((func->flags & Ast_Flag_Foreign) != 0) { - onyx_report_error(func->token->pos, "exporting a foreign function"); - return Check_Error; - } - - if ((func->flags & Ast_Flag_Intrinsic) != 0) { - onyx_report_error(func->token->pos, "exporting a intrinsic function"); - return Check_Error; - } - - if (func->exported_name == NULL) { - onyx_report_error(func->token->pos, "exporting function without a name"); - return Check_Error; - } - } - */ - return Check_Success; } diff --git a/src/onyxsymres.c b/src/onyxsymres.c index e02f608e..e6bbc20c 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -6,8 +6,6 @@ // Variables used during the symbol resolution phase. static Scope* curr_scope = NULL; -static Package* curr_package = NULL; -static AstFunction* curr_function = NULL; bh_arr(AstBlock *) block_stack = NULL; static b32 report_unresolved_symbols = 1; @@ -787,13 +785,6 @@ SymresStatus symres_function_header(AstFunction* func) { if (param->default_value != NULL) { SYMRES(expression, ¶m->default_value); if (onyx_has_errors()) return Symres_Error; - - // HACK: It shouldn't be necessary to do this twice, but right now - // if `null` is the default parameter and it hasn't been used anywhere in - // code yet, it doesn't resolve properly. So for now I am just checking symbols twice. - // -brendanfh 2020/12/24 - SYMRES(expression, ¶m->default_value); - if (onyx_has_errors()) return Symres_Error; } } @@ -866,7 +857,6 @@ SymresStatus symres_function(AstFunction* func) { } } - curr_function = func; SYMRES(block, func->body); scope_leave(); @@ -1061,6 +1051,24 @@ static SymresStatus symres_process_directive(AstNode* directive) { if (export->export->kind == Ast_Kind_Function) { AstFunction *func = (AstFunction *) export->export; func->exported_name = export->export_name; + + if ((func->flags & Ast_Flag_Exported) != 0) { + if ((func->flags & Ast_Flag_Foreign) != 0) { + onyx_report_error(export->token->pos, "exporting a foreign function"); + return Symres_Error; + } + + if ((func->flags & Ast_Flag_Intrinsic) != 0) { + onyx_report_error(export->token->pos, "exporting a intrinsic function"); + return Symres_Error; + } + + // NOTE: This should never happen + if (func->exported_name == NULL) { + onyx_report_error(export->token->pos, "exporting function without a name"); + return Symres_Error; + } + } } break; @@ -1073,8 +1081,6 @@ static SymresStatus symres_process_directive(AstNode* directive) { void symres_entity(Entity* ent) { if (block_stack == NULL) bh_arr_new(global_heap_allocator, block_stack, 16); - if (ent->package) curr_package = ent->package; - Scope* old_scope = NULL; if (ent->scope) { old_scope = curr_scope; @@ -1091,7 +1097,7 @@ void symres_entity(Entity* ent) { switch (ent->type) { case Entity_Type_Binding: { symbol_introduce(curr_scope, ent->binding->token, ent->binding->node); - package_reinsert_use_packages(curr_package); + package_reinsert_use_packages(ent->package); next_state = Entity_State_Finalized; break; } @@ -1139,5 +1145,4 @@ void symres_entity(Entity* ent) { if (ss == Symres_Yield_Micro) ent->micro_attempts++; if (ent->scope) curr_scope = old_scope; - curr_package = NULL; } diff --git a/tests/aoc-2020/day21.onyx b/tests/aoc-2020/day21.onyx index 5649e72a..118eb6ce 100644 --- a/tests/aoc-2020/day21.onyx +++ b/tests/aoc-2020/day21.onyx @@ -162,7 +162,7 @@ main :: (args: [] cstr) { } } - array.sort_ptr(^matched_ingredients, (i1: ^Ingredient, i2: ^Ingredient) -> i32 { + array.sort(^matched_ingredients, (i1: ^Ingredient, i2: ^Ingredient) -> i32 { return string.compare(i1.allergen, i2.allergen); }); -- 2.25.1