small bugfixes
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Mon, 17 Aug 2020 03:43:29 +0000 (22:43 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Mon, 17 Aug 2020 03:43:29 +0000 (22:43 -0500)
onyx
progs/stack_based.onyx
src/onyxsymres.c
src/onyxutils.c

diff --git a/onyx b/onyx
index d7ff95ab2a909cec13542542eb66909a9ebebf37..d1e7a979edff1b1246c050bdce805a73b001a00d 100755 (executable)
Binary files a/onyx and b/onyx differ
index 372f58144eb829aaae537bbbf41d800e65e5a08f..3c8d28ff8b9db3ddb53743e6fd0fd3f1ca8ed4aa 100644 (file)
@@ -46,10 +46,14 @@ summing :: proc (x: ^i32) -> i32 {
     return s;
 }
 
+get_value :: proc (x: i32, y: i32) -> i32 {
+    return x + 2 * y;
+}
+
 Vec3 :: struct {
-    x: i32;
-    y: i32;
-    z: i32;
+    x: i32 = get_value(10, 20);
+    y: i32 = 0;
+    z: i32 = 0;
 }
 
 mag_squared :: proc (use v: Vec3) -> i32 {
@@ -149,8 +153,8 @@ start :: proc #export {
 
     mag_squared(varr[2]) |> print();
 
-    v1 := Vec3 .{ 1, 2, 4 };
-    v2 := *vadd(v1, Vec3.{ 1, 2, 4 });
+    v1 := Vec3.{};
+    v2 := *vadd(v1, Vec3.{ 0, 0, 0 });
   
     print(v2.x);
     print(v2.y);
index 87fa5a6102cd079505f38a2bb2854bbb116dc629..3739f72f2b6a926f9b547219769fbefbd98b7944 100644 (file)
@@ -220,7 +220,7 @@ static void symres_struct_literal(AstStructLiteral* sl) {
     sl->type_node = (AstType *) sl->stnode;
     sl->type = type_build_from_ast(semstate.allocator, sl->type_node);
 
-    if (bh_arr_length(sl->named_values) > 0) {
+    if (bh_arr_length(sl->values) == 0) {
         bh_arr_set_length(sl->values, sl->type->Struct.mem_count);
 
         StructMember s;
@@ -256,7 +256,7 @@ static void symres_struct_literal(AstStructLiteral* sl) {
                             st->members[idx]->token->length);
                     return;
                 }
-                
+
                 sl->values[idx] = st->members[idx]->initial_value;
             }
         }
index 2cc656686ea24b85dc5a02596755b9e4d9880cff..f4bd1703df33ffa2643a7a1de10352e4fbc43ad2 100644 (file)
@@ -10,6 +10,8 @@ bh_allocator global_scratch_allocator;
 bh_managed_heap global_heap;
 bh_allocator global_heap_allocator;
 
+static AstNode empty_node = { Ast_Kind_Error, 0, NULL, NULL };
+
 static const char* ast_node_names[] = {
     "ERROR",
     "PROGRAM",
@@ -171,7 +173,7 @@ AstNode* symbol_resolve(Scope* start_scope, OnyxToken* tkn) {
                 tkn->text);
 
         token_toggle_end(tkn);
-        return NULL;
+        return &empty_node;
     }
 
     if (res->kind == Ast_Kind_Symbol) {