#define bh_arr_each(T, var, arr) for (T* var = (arr); !bh_arr_end((arr), var); var++)
#define bh_arr_rev_each(T, var, arr) for (T* var = &bh_arr_last((arr)); !bh_arr_start((arr), var); var--)
+#define bh_arr_zero(arr) memset(arr, 0, bh_arr_length(arr) * sizeof(*(arr)));
+
b32 bh__arr_grow(bh_allocator alloc, void** arr, i32 elemsize, i32 cap);
b32 bh__arr_shrink(void** arr, i32 elemsize, i32 cap);
b32 bh__arr_free(void **arr);
z: i32 = 0;
}
+SomeBigThing :: struct {
+ name: string;
+ pos: Vec3;
+}
+
mag_squared :: proc (use v: Vec3) -> i32 {
return x * x + y * y + z * z;
}
s3 :: string_concat(heap_allocator, s1, s2);
defer string_free(heap_allocator, s3);
string_print(s3);
+
+ sbt : SomeBigThing;
+ sbt.name = s3;
+ sbt.pos = Vec3.{ 2, 3, 4 };
+ string_print(sbt.name);
+
+ v := vmul(vadd(sbt.pos, Vec3.{ 1, 2, 3 }), 3);
+ print(v.x);
+ print(v.y);
+ print(v.z);
}
vadd :: proc (v1: Vec3, v2: Vec3) -> Vec3 {
}
if (!types_are_compatible(binop->left->type, binop->right->type)) {
- onyx_message_add(Msg_Type_Binop_Mismatch,
+ onyx_message_add(Msg_Type_Assignment_Mismatch,
binop->token->pos,
type_get_name(binop->left->type),
type_get_name(binop->right->type));
if (!types_are_compatible((*formal)->type, (*actual)->type)) {
onyx_message_add(Msg_Type_Assignment_Mismatch,
- (*actual)->token->pos,
+ sl->token->pos,
type_get_name((*formal)->type),
type_get_name((*actual)->type));
return 1;
sm->initial_value = expr;
bh_arr_push(sl->named_values, sm);
-
+
} else {
bh_arr_push(sl->values, expr);
}
if (parser->curr->type != ')')
expect_token(parser, ',');
}
-
+
consume_token(parser);
retval = (AstTyped *) call_node;
if (bh_arr_length(sl->values) == 0) {
bh_arr_set_length(sl->values, sl->type->Struct.mem_count);
+ bh_arr_zero(sl->values);
StructMember s;
bh_arr_each(AstStructMember *, smem, sl->named_values) {