bugfixing and new format overload
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Sat, 5 Mar 2022 22:01:07 +0000 (16:01 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Sat, 5 Mar 2022 22:01:07 +0000 (16:01 -0600)
core/conv.onyx
src/checker.c

index db154b290b34071a97b4682647ed7620fe0f9177..278d0a5038acfe91f1cb09943f2758dbddd3fed9 100644 (file)
@@ -310,12 +310,22 @@ format :: #match {}
 #match format (output: ^Format_Output, format: str, va: ..any) -> str {
     return format_va(output, format, ~~va); 
 }
+#match format (buffer: ^[..] u8, format: str, va: ..any) {
+    buffer.count = buffer.capacity;
+    out := format_va(*buffer, format, ~~va);
+    buffer.count = out.count;
+}
 
 format_va :: #match {}
 #match format_va (buffer: [] u8, format: str, va: [] any) -> str {
     output := Format_Output.{ buffer.data, 0, buffer.count };
     return format_va(^output, format, va);
 }
+#match format_va (buffer: ^[..] u8, format: str, va: [] any) {
+    buffer.count = buffer.capacity;
+    out := format_va(*buffer, format, va);
+    buffer.count = out.count;
+}
 
 #match format_va (output: ^Format_Output, format: str, va: [] any) -> str {
     vararg_index := 0;
index ca9afa830f6c7fb0cc45d123f0a621aedaa26b0b..5712060a5262f56941bc8c51281f4db67565c262 100644 (file)
@@ -2548,8 +2548,12 @@ CheckStatus check_process_directive(AstNode* directive) {
             case Ast_Kind_Struct_Type: {
                 AstStructType* st = (AstStructType *) tag->expr;
 
-                if (st->meta_tags == NULL) bh_arr_new(global_heap_allocator, st->meta_tags, 1);
-                bh_arr_push(st->meta_tags, tag->tag);
+                bh_arr(AstTyped *) tags = st->meta_tags;
+
+                if (tags == NULL) bh_arr_new(global_heap_allocator, tags, 1);
+                bh_arr_push(tags, tag->tag);
+
+                st->meta_tags = tags;
 
                 return Check_Complete;
             }