random bits of code cleanup
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Fri, 15 Jan 2021 16:24:18 +0000 (10:24 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Fri, 15 Jan 2021 16:24:18 +0000 (10:24 -0600)
bin/onyx
onyx.exe
src/onyx.c
src/onyxchecker.c
src/onyxutils.c
tests/named_arguments_test.onyx

index 509b8300b1e71d880af1a20612117159e269e37f..978ceb02ad72d6674ad57b8b6424abf58d395895 100755 (executable)
Binary files a/bin/onyx and b/bin/onyx differ
index 19e6f3f2db048aea85b5afcd3c792c9feaa6f442..a089c778c5031f5119b176fc987989546dda475f 100644 (file)
Binary files a/onyx.exe and b/onyx.exe differ
index 64e9a6231b56cbc9712c88b5e9003f4a342a0def..a2abd81132e9d03f22dd19614c79bf0869e3b7ab 100644 (file)
@@ -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);
index 7d93373146c9f75b7bbed6ad13c590cfe82d284f..25459e0fb6d06ad0c739295b3cc7ebe53a18b1fb 100644 (file)
@@ -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;
 }
index 21306d1c48ee265f6a356cb16c8c0b6db6eefcd4..f5c4e2527c78b6c06e6bdb5365b8fed620721991 100644 (file)
@@ -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;
             }
index a995a6d9cd4f85c54a36a7b74518fbcba75d8415..f3fe33b67a54866df5fbd7a7bdbaf813e02b71f0 100644 (file)
@@ -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=========================");