fixed: miscellaneous bugfixes
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Thu, 31 Aug 2023 13:34:24 +0000 (08:34 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Thu, 31 Aug 2023 13:34:24 +0000 (08:34 -0500)
compiler/src/checker.c
compiler/src/parser.c
compiler/src/wasm_emit.c
compiler/src/wasm_type_table.h
core/container/array.onyx

index bb4450c765ed67c17ec0ec4fdffe8f8cb62a9e14..61d6e24cf7a11ad5e7566ee94e39076d0c76fb90 100644 (file)
@@ -2421,6 +2421,7 @@ CheckStatus check_expression(AstTyped** pexpr) {
         case Ast_Kind_Switch_Case: break;
         case Ast_Kind_Foreign_Block: break;
         case Ast_Kind_Zero_Value: break;
+        case Ast_Kind_Interface: break;
 
         default:
             retval = Check_Error;
index 8ec4eb56501b2d896a6202fd6982a351feb51f52..6b39d538790443826d1bd25a7693725789757969 100644 (file)
@@ -1492,7 +1492,7 @@ static i32 parse_possible_symbol_declaration(OnyxParser* parser, AstNode** ret)
         bh_arr_push(parser->current_symbol_stack, symbol);
         AstBinding* binding = parse_top_level_binding(parser, symbol);
         bh_arr_pop(parser->current_symbol_stack);
-        if (parser->hit_unexpected_token) return 2;
+        if (parser->hit_unexpected_token || !binding) return 2;
 
         ENTITY_SUBMIT(binding);
         return 2;
@@ -2362,7 +2362,7 @@ static AstUnionType* parse_union(OnyxParser* parser) {
         AstType *backing_type = parse_type(parser);
         u_node->tag_backing_type = backing_type;
     } else {
-        u_node->tag_backing_type = &basic_type_u32;
+        u_node->tag_backing_type = (AstType *) &basic_type_u32;
     }
 
     if (consume_token_if_next(parser, '(')) {
index 35b3ef247277869b3eb1ea9b876bda2ca0c30010..a361da0a1c552bf706379752b6a9f008d96c7cd9 100644 (file)
@@ -4232,8 +4232,8 @@ EMIT_FUNC(stack_trace_blob, AstFunction *fd)  {
     u8* node_data = bh_alloc_array(context.ast_alloc, u8, 6 * POINTER_SIZE);
 
     char *name = get_function_name(fd);
-    emit_raw_string(mod, (const char *) fd->token->pos.filename, strlen(fd->token->pos.filename), &file_name_id, &node_data[4]);
-    emit_raw_string(mod, name, strlen(name), &func_name_id, &node_data[16]);
+    emit_raw_string(mod, (char *) fd->token->pos.filename, strlen(fd->token->pos.filename), &file_name_id, (u64 *) &node_data[4]);
+    emit_raw_string(mod, name, strlen(name), &func_name_id, (u64 *) &node_data[16]);
     *((u32 *) &node_data[8]) = fd->token->pos.line;
     *((u32 *) &node_data[20]) = fd->type->id;
 
index def9c665e0f80e7e358c866a7ffc121f58697fcf..9e2b46c51b896375c7bb1589df3d64d672e52d6c 100644 (file)
@@ -1274,7 +1274,7 @@ static u64 build_tagged_globals(OnyxWasmModule *module) {
         patch.location = tag_global_buffer.length;
         patch.offset = 0;
         patch.data_id = 0;
-        patch.node_to_use_if_data_id_is_null = memres;
+        patch.node_to_use_if_data_id_is_null = (AstNode *) memres;
         bh_arr_push(module->data_patches, patch);
 
         bh_buffer_write_u32(&tag_global_buffer, 0);
index 8d0bca8f504a7165151ca15df0dc74bc5c869d8d..0282fba3364e9546d53b4ca089d6fac6ba3aa816 100644 (file)
@@ -309,7 +309,7 @@ filter :: macro (arr: &[..] $T, body: Code) {
     while i := 0; i < arr.count - move {
         defer i += 1;
 
-        it := arr[i];
+        it := arr.data[i];
         if !(#unquote body(it)) do move += 1;
         if move != 0 do arr.data[i] = arr.data[i + move];
     }