From: Brendan Hansen Date: Fri, 15 Jan 2021 16:24:18 +0000 (-0600) Subject: random bits of code cleanup X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=c06b96f758187c96dd662b0aed93cb5aa4a43f2f;p=onyx.git random bits of code cleanup --- diff --git a/bin/onyx b/bin/onyx index 509b8300..978ceb02 100755 Binary files a/bin/onyx and b/bin/onyx differ diff --git a/onyx.exe b/onyx.exe index 19e6f3f2..a089c778 100644 Binary files a/onyx.exe and b/onyx.exe differ diff --git a/src/onyx.c b/src/onyx.c index 64e9a623..a2abd811 100644 --- a/src/onyx.c +++ b/src/onyx.c @@ -589,7 +589,7 @@ static i32 onyx_compile(CompilerState* compiler_state) { int main(int argc, char *argv[]) { - bh_scratch_init(&global_scratch, bh_heap_allocator(), 128 * 1024); // NOTE: 128 KB + bh_scratch_init(&global_scratch, bh_heap_allocator(), 256 * 1024); // NOTE: 256 KiB global_scratch_allocator = bh_scratch_allocator(&global_scratch); bh_managed_heap_init(&global_heap); diff --git a/src/onyxchecker.c b/src/onyxchecker.c index 7d933731..25459e0f 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -477,6 +477,7 @@ CheckStatus check_call(AstCall* call) { { + // CLEANUP maybe make function_get_expected_arguments? i32 non_vararg_param_count = (i32) callee->type->Function.param_count; if (non_vararg_param_count > 0 && callee->type->Function.params[callee->type->Function.param_count - 1] == builtin_vararg_type_type) @@ -657,10 +658,10 @@ CheckStatus check_binop_assignment(AstBinaryOp* binop, b32 assignment_is_ok) { resolve_expression_type(binop->right); if (binop->right->type->kind == Type_Kind_Compound) { - i32 expr_count = binop->right->type->Compound.count; AstCompound* lhs = (AstCompound *) binop->left; assert(lhs->kind == Ast_Kind_Compound); + i32 expr_count = binop->right->type->Compound.count; fori (i, 0, expr_count) { lhs->exprs[i]->type = binop->right->type->Compound.types[i]; } @@ -1025,7 +1026,6 @@ CheckStatus check_struct_literal(AstStructLiteral* sl) { } i32 mem_count = type_structlike_mem_count(sl->type); - arguments_ensure_length(&sl->args, mem_count); char* err_msg = NULL; @@ -1049,7 +1049,7 @@ CheckStatus check_struct_literal(AstStructLiteral* sl) { AstTyped** actual = sl->args.values; StructMember smem; - b32 all_comptime = 1; + sl->flags |= Ast_Flag_Comptime; fori (i, 0, mem_count) { CHECK(expression, actual); @@ -1070,15 +1070,10 @@ CheckStatus check_struct_literal(AstStructLiteral* sl) { return Check_Error; } - if (((*actual)->flags & Ast_Flag_Comptime) == 0) - all_comptime = 0; - + sl->flags &= ((*actual)->flags & Ast_Flag_Comptime); actual++; } - if (all_comptime) - sl->flags |= Ast_Flag_Comptime; - return Check_Success; } @@ -1102,14 +1097,13 @@ CheckStatus check_array_literal(AstArrayLiteral* al) { return Check_Error; } - b32 all_comptime = 1; + al->flags |= Ast_Flag_Comptime; Type* elem_type = al->type->Array.elem; bh_arr_each(AstTyped *, expr, al->values) { CHECK(expression, expr); - if (((*expr)->flags & Ast_Flag_Comptime) == 0) - all_comptime = 0; + al->flags &= ((*expr)->flags & Ast_Flag_Comptime); if (!type_check_or_auto_cast(expr, elem_type)) { onyx_report_error((*expr)->token->pos, "Mismatched types for value of in array, expected '%s', got '%s'.", @@ -1118,9 +1112,6 @@ CheckStatus check_array_literal(AstArrayLiteral* al) { return Check_Error; } } - - if (all_comptime) - al->flags |= Ast_Flag_Comptime; return Check_Success; } diff --git a/src/onyxutils.c b/src/onyxutils.c index 21306d1c..f5c4e252 100644 --- a/src/onyxutils.c +++ b/src/onyxutils.c @@ -846,9 +846,8 @@ static i32 lookup_idx_by_name(AstNode* provider, char* name) { assert(sl->type); StructMember s; - if (!type_lookup_member(sl->type, name, &s)) return -1; // nocheckin: Report error - - if (s.included_through_use) return -1; // nocheckin: Report error + if (!type_lookup_member(sl->type, name, &s)) return -1; + if (s.included_through_use) return -1; return s.idx; } @@ -914,7 +913,7 @@ b32 fill_in_arguments(Arguments* args, AstNode* provider, char** err_msg) { token_toggle_end(named_value->token); i32 idx = lookup_idx_by_name(provider, named_value->token->text); if (idx == -1) { - if (err_msg) *err_msg = bh_aprintf(global_heap_allocator, "'%s' is not a valid named parameter here.", named_value->token->text); + if (err_msg) *err_msg = bh_aprintf(global_scratch_allocator, "'%s' is not a valid named parameter here.", named_value->token->text); token_toggle_end(named_value->token); return 0; } @@ -922,7 +921,7 @@ b32 fill_in_arguments(Arguments* args, AstNode* provider, char** err_msg) { assert(idx < bh_arr_length(args->values)); if (args->values[idx] != NULL) { - if (err_msg) *err_msg = bh_aprintf(global_heap_allocator, "Multiple values given for parameter named '%s'.", named_value->token->text); + if (err_msg) *err_msg = bh_aprintf(global_scratch_allocator, "Multiple values given for parameter named '%s'.", named_value->token->text); token_toggle_end(named_value->token); return 0; } diff --git a/tests/named_arguments_test.onyx b/tests/named_arguments_test.onyx index a995a6d9..f3fe33b6 100644 --- a/tests/named_arguments_test.onyx +++ b/tests/named_arguments_test.onyx @@ -19,8 +19,8 @@ main :: proc (args: [] cstr) { print_array(y); } - poly_named(10, ~~ u32.[ 10, 20, 30 ]); - poly_named(y = ~~ f32.[ 10, 20, 30 ], 10.0f); + poly_named(10, u32.[ 10, 20, 30 ]); + poly_named(y = f32.[ 10, 20, 30 ], 10.0f); println("\n\n=========================");