From aca15d04f629fb18b98e52ca10d2b4772ced5748 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Mon, 21 Jun 2021 16:56:21 -0500 Subject: [PATCH] type system cleanup; preparing for introspection --- bin/onyx | Bin 409896 -> 410240 bytes include/onyxtypes.h | 16 +-- src/onyx.c | 6 ++ src/onyxchecker.c | 11 ++- src/onyxtypes.c | 235 +++++++++++++++++++++++++++----------------- 5 files changed, 169 insertions(+), 99 deletions(-) diff --git a/bin/onyx b/bin/onyx index ef59bd00a7c084852243138d452bbe7a756801fe..e0bd10c24c0e03c0cf0681d665318c9a5626dac9 100755 GIT binary patch delta 104229 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%0A4GC{I0{4Sc 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 diff --git a/include/onyxtypes.h b/include/onyxtypes.h index f67bacec..48cd409b 100644 --- a/include/onyxtypes.h +++ b/include/onyxtypes.h @@ -31,6 +31,8 @@ enum BasicKind { Basic_Kind_F32X4, Basic_Kind_F64X2, Basic_Kind_V128, + + Basic_Kind_Count, }; enum BasicFlag { @@ -84,12 +86,12 @@ struct TypeWithOffset { TYPE_KIND(Pointer, struct { TypeBasic base; Type *elem; }) \ TYPE_KIND(Function, struct { \ Type *return_type; \ - u32 param_count; \ - u32 needed_param_count; \ + u16 param_count; \ + u16 needed_param_count; \ + i16 vararg_arg_pos; \ Type* params[]; \ }) \ TYPE_KIND(Struct, struct { \ - u64 unique_id; \ char* name; \ u32 size; \ u16 alignment, mem_count; \ @@ -110,7 +112,6 @@ struct TypeWithOffset { TYPE_KIND(DynArray, struct { Type *ptr_to_data; }) \ TYPE_KIND(VarArgs, struct { Type *ptr_to_data; }) \ TYPE_KIND(Enum, struct { \ - u64 unique_id; \ char* name; \ Type* backing; \ b32 is_flags; \ @@ -138,8 +139,9 @@ enum TypeFlag { struct Type { TypeKind kind; + u32 id; u32 flags; - + // NOTE(Brendan Hansen): The abstract syntax tree node used to create // the type. Primarily used to look up symbols in scopes that are embedded // in the type. @@ -158,10 +160,12 @@ struct AstType; struct AstFunction; struct AstCompound; +void types_init(); +void types_dump_type_info(); + b32 types_are_compatible(Type* t1, Type* t2); u32 type_size_of(Type* type); u32 type_alignment_of(Type* type); -u32 type_aligned_size_of(Type* type); Type* type_build_from_ast(bh_allocator alloc, struct AstType* type_node); Type* type_build_function_type(bh_allocator alloc, struct AstFunction* func); diff --git a/src/onyx.c b/src/onyx.c index f8fd400f..d64b22c9 100644 --- a/src/onyx.c +++ b/src/onyx.c @@ -170,6 +170,8 @@ static AstInclude* create_load(bh_allocator alloc, char* filename) { } static void context_init(CompileOptions* opts) { + types_init(); + context.options = opts; context.cycle_detected = 0; @@ -467,6 +469,10 @@ static i32 onyx_compile() { onyx_docs_emit(&docs, context.options->documentation_file); } +#if 0 + types_dump_type_info(); +#endif + return ONYX_COMPILER_PROGRESS_SUCCESS; } diff --git a/src/onyxchecker.c b/src/onyxchecker.c index 0e27fde0..6f316f06 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -552,7 +552,7 @@ CheckStatus check_call(AstCall* call) { } // CLEANUP POTENTIAL BUG if the builtin_vararg_type_type is ever rebuilt - if (formal_params[arg_pos] == builtin_vararg_type_type) { + if ((i16) arg_pos == callee->type->Function.vararg_arg_pos) { arg_state = AS_Expecting_Untyped_VA; continue; } @@ -728,6 +728,12 @@ CheckStatus check_binaryop_assignment(AstBinaryOp* binop, b32 assignment_is_ok) binop->operation = Binary_Op_Assign; } + if (binop->right->type == NULL) { + if (binop->right->entity != NULL && binop->right->entity->state <= Entity_State_Check_Types) { + return Check_Yield_Macro; + } + } + if (!type_check_or_auto_cast(&binop->right, binop->left->type)) { onyx_report_error(binop->token->pos, "Cannot assign value of type '%s' to a '%s'.", @@ -1239,6 +1245,9 @@ CheckStatus check_compound(AstCompound* compound) { CheckStatus check_address_of(AstAddressOf* aof) { CHECK(expression, &aof->expr); + if (aof->expr->type == NULL) { + return Check_Yield_Macro; + } if ((aof->expr->kind != Ast_Kind_Subscript && aof->expr->kind != Ast_Kind_Dereference diff --git a/src/onyxtypes.c b/src/onyxtypes.c index 2cdccb79..29e2ac25 100644 --- a/src/onyxtypes.c +++ b/src/onyxtypes.c @@ -8,40 +8,69 @@ static u32 next_unique_id = 1; // NOTE: These have to be in the same order as Basic Type basic_types[] = { - { Type_Kind_Basic, 0, (AstType *) &basic_type_void, { Basic_Kind_Void, 0, 0, 1, "void" } }, - - { Type_Kind_Basic, 0, (AstType *) &basic_type_bool, { Basic_Kind_Bool, Basic_Flag_Boolean, 1, 1, "bool" } }, - - { Type_Kind_Basic, 0, NULL, { Basic_Kind_Int_Unsized, Basic_Flag_Integer, 0, 0, "unsized int" } }, - { Type_Kind_Basic, 0, (AstType *) &basic_type_i8, { Basic_Kind_I8, Basic_Flag_Integer, 1, 1, "i8" } }, - { Type_Kind_Basic, 0, (AstType *) &basic_type_u8, { Basic_Kind_U8, Basic_Flag_Integer | Basic_Flag_Unsigned, 1, 1, "u8" } }, - { Type_Kind_Basic, 0, (AstType *) &basic_type_i16, { Basic_Kind_I16, Basic_Flag_Integer, 2, 2, "i16" } }, - { Type_Kind_Basic, 0, (AstType *) &basic_type_u16, { Basic_Kind_U16, Basic_Flag_Integer | Basic_Flag_Unsigned, 2, 2, "u16" } }, - { Type_Kind_Basic, 0, (AstType *) &basic_type_i32, { Basic_Kind_I32, Basic_Flag_Integer, 4, 4, "i32" } }, - { Type_Kind_Basic, 0, (AstType *) &basic_type_u32, { Basic_Kind_U32, Basic_Flag_Integer | Basic_Flag_Unsigned, 4, 4, "u32" } }, - { Type_Kind_Basic, 0, (AstType *) &basic_type_i64, { Basic_Kind_I64, Basic_Flag_Integer, 8, 8, "i64" } }, - { Type_Kind_Basic, 0, (AstType *) &basic_type_u64, { Basic_Kind_U64, Basic_Flag_Integer | Basic_Flag_Unsigned, 8, 8, "u64" } }, - - { Type_Kind_Basic, 0, NULL, { Basic_Kind_Float_Unsized, Basic_Flag_Float, 0, 0, "unsized float" } }, - { Type_Kind_Basic, 0, (AstType *) &basic_type_f32, { Basic_Kind_F32, Basic_Flag_Float, 4, 4, "f32" } }, - { Type_Kind_Basic, 0, (AstType *) &basic_type_f64, { Basic_Kind_F64, Basic_Flag_Float, 8, 4, "f64" } }, - - { Type_Kind_Basic, 0, (AstType *) &basic_type_rawptr, { Basic_Kind_Rawptr, Basic_Flag_Pointer, 8, 8, "rawptr" } }, - - { Type_Kind_Basic, 0, (AstType *) &basic_type_i8x16, { Basic_Kind_I8X16, Basic_Flag_SIMD, 16, 16, "i8x16" } }, - { Type_Kind_Basic, 0, (AstType *) &basic_type_i16x8, { Basic_Kind_I16X8, Basic_Flag_SIMD, 16, 16, "i16x8" } }, - { Type_Kind_Basic, 0, (AstType *) &basic_type_i32x4, { Basic_Kind_I32X4, Basic_Flag_SIMD, 16, 16, "i32x4" } }, - { Type_Kind_Basic, 0, (AstType *) &basic_type_i64x2, { Basic_Kind_I64X2, Basic_Flag_SIMD, 16, 16, "i64x2" } }, - { Type_Kind_Basic, 0, (AstType *) &basic_type_f32x4, { Basic_Kind_F32X4, Basic_Flag_SIMD, 16, 16, "f32x4" } }, - { Type_Kind_Basic, 0, (AstType *) &basic_type_f64x2, { Basic_Kind_F64X2, Basic_Flag_SIMD, 16, 16, "f64x2" } }, - { Type_Kind_Basic, 0, (AstType *) &basic_type_v128, { Basic_Kind_V128, Basic_Flag_SIMD, 16, 16, "v128" } }, + { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_void, { Basic_Kind_Void, 0, 0, 1, "void" } }, + + { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_bool, { Basic_Kind_Bool, Basic_Flag_Boolean, 1, 1, "bool" } }, + + { Type_Kind_Basic, 0, 0, NULL, { Basic_Kind_Int_Unsized, Basic_Flag_Integer, 0, 0, "unsized int" } }, + { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_i8, { Basic_Kind_I8, Basic_Flag_Integer, 1, 1, "i8" } }, + { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_u8, { Basic_Kind_U8, Basic_Flag_Integer | Basic_Flag_Unsigned, 1, 1, "u8" } }, + { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_i16, { Basic_Kind_I16, Basic_Flag_Integer, 2, 2, "i16" } }, + { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_u16, { Basic_Kind_U16, Basic_Flag_Integer | Basic_Flag_Unsigned, 2, 2, "u16" } }, + { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_i32, { Basic_Kind_I32, Basic_Flag_Integer, 4, 4, "i32" } }, + { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_u32, { Basic_Kind_U32, Basic_Flag_Integer | Basic_Flag_Unsigned, 4, 4, "u32" } }, + { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_i64, { Basic_Kind_I64, Basic_Flag_Integer, 8, 8, "i64" } }, + { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_u64, { Basic_Kind_U64, Basic_Flag_Integer | Basic_Flag_Unsigned, 8, 8, "u64" } }, + + { Type_Kind_Basic, 0, 0, NULL, { Basic_Kind_Float_Unsized, Basic_Flag_Float, 0, 0, "unsized float" } }, + { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_f32, { Basic_Kind_F32, Basic_Flag_Float, 4, 4, "f32" } }, + { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_f64, { Basic_Kind_F64, Basic_Flag_Float, 8, 4, "f64" } }, + + { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_rawptr, { Basic_Kind_Rawptr, Basic_Flag_Pointer, 8, 8, "rawptr" } }, + + { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_i8x16, { Basic_Kind_I8X16, Basic_Flag_SIMD, 16, 16, "i8x16" } }, + { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_i16x8, { Basic_Kind_I16X8, Basic_Flag_SIMD, 16, 16, "i16x8" } }, + { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_i32x4, { Basic_Kind_I32X4, Basic_Flag_SIMD, 16, 16, "i32x4" } }, + { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_i64x2, { Basic_Kind_I64X2, Basic_Flag_SIMD, 16, 16, "i64x2" } }, + { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_f32x4, { Basic_Kind_F32X4, Basic_Flag_SIMD, 16, 16, "f32x4" } }, + { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_f64x2, { Basic_Kind_F64X2, Basic_Flag_SIMD, 16, 16, "f64x2" } }, + { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_v128, { Basic_Kind_V128, Basic_Flag_SIMD, 16, 16, "v128" } }, }; +static bh_imap type_map; +static bh_imap type_pointer_map; +static bh_imap type_slice_map; +static bh_imap type_dynarr_map; +static bh_imap type_vararg_map; + +static void type_register(Type* type) { + type->id = next_unique_id++; + + bh_imap_put(&type_map, type->id, (u64) type); +} + +void types_init() { + bh_imap_init(&type_map, global_heap_allocator, 255); + bh_imap_init(&type_pointer_map, global_heap_allocator, 255); + bh_imap_init(&type_slice_map, global_heap_allocator, 255); + bh_imap_init(&type_dynarr_map, global_heap_allocator, 255); + bh_imap_init(&type_vararg_map, global_heap_allocator, 255); + + fori (i, 0, Basic_Kind_Count) type_register(&basic_types[i]); +} + +void types_dump_type_info() { + bh_arr_each(bh__imap_entry, entry, type_map.entries) { + bh_printf("%d -> %s\n", entry->key, type_get_name((Type *) entry->value)); + } +} + b32 types_are_compatible_(Type* t1, Type* t2, b32 recurse_pointers) { // NOTE: If they are pointing to the same thing, // it is safe to assume they are the same type if (t1 == t2) return 1; if (t1 == NULL || t2 == NULL) return 0; + if (t1->id == t2->id) return 1; switch (t1->kind) { case Type_Kind_Basic: @@ -89,25 +118,12 @@ b32 types_are_compatible_(Type* t1, Type* t2, b32 recurse_pointers) { } case Type_Kind_Struct: { - if (t2->kind != Type_Kind_Struct) return 0; - if (t1->Struct.unique_id != t2->Struct.unique_id) return 0; - if (t1->Struct.mem_count != t2->Struct.mem_count) return 0; - - b32 works = 1; - bh_table_each_start(StructMember, t1->Struct.members); - if (!bh_table_has(StructMember, t2->Struct.members, (char *) key)) return 0; - StructMember other = bh_table_get(StructMember, t2->Struct.members, (char *) key); - if (other.offset != value.offset) return 0; - - // NOTE: Don't recurse down pointers; This could be a problem, but it is a quick - // fix for the problem that occurs when using a linked-list style data structure. - if (!types_are_compatible_(value.type, other.type, 0)) { - works = 0; - break; - } - bh_table_each_end; + // NOTE: The check above for t1 == t2 would already catch this. - return works; + // if (t2->kind != Type_Kind_Struct) return 0; + // if (t1->Struct.unique_id != t2->Struct.unique_id) return 0; + // if (t1->Struct.mem_count != t2->Struct.mem_count) return 0; + return 0; } case Type_Kind_Enum: { @@ -204,15 +220,6 @@ u32 type_alignment_of(Type* type) { } } -u32 type_aligned_size_of(Type* type) { - u32 size = type_size_of(type); - u32 alignment = type_alignment_of(type); - - bh_align(size, alignment); - - return size; -} - Type* type_build_from_ast(bh_allocator alloc, AstType* type_node) { if (type_node == NULL) return NULL; @@ -236,6 +243,7 @@ Type* type_build_from_ast(bh_allocator alloc, AstType* type_node) { func_type->ast_type = type_node; func_type->Function.param_count = param_count; func_type->Function.needed_param_count = param_count; + func_type->Function.vararg_arg_pos = -1; func_type->Function.return_type = return_type; if (param_count > 0) @@ -246,6 +254,7 @@ Type* type_build_from_ast(bh_allocator alloc, AstType* type_node) { if (func_type->Function.params[i] == NULL) return NULL; } + type_register(func_type); return func_type; } @@ -282,6 +291,7 @@ Type* type_build_from_ast(bh_allocator alloc, AstType* type_node) { a_type->Array.count = count; a_type->Array.size = type_size_of(a_type->Array.elem) * count; + type_register(a_type); return a_type; } @@ -297,8 +307,8 @@ Type* type_build_from_ast(bh_allocator alloc, AstType* type_node) { s_type->kind = Type_Kind_Struct; s_type->ast_type = type_node; s_type->Struct.name = s_node->name; - s_type->Struct.unique_id = next_unique_id++; s_type->Struct.mem_count = bh_arr_length(s_node->members); + type_register(s_type); s_type->Struct.memarr = NULL; bh_table_init(global_heap_allocator, s_type->Struct.members, s_type->Struct.mem_count + 1); @@ -325,21 +335,12 @@ Type* type_build_from_ast(bh_allocator alloc, AstType* type_node) { (*member)->type = type_build_from_ast(alloc, (*member)->type_node); if ((*member)->type == NULL) { - // LEAK LEAK LEAK s_node->stcache_is_valid = 0; return NULL; } mem_alignment = type_alignment_of((*member)->type); if (mem_alignment <= 0) { - // if ((*member)->type->kind == Type_Kind_Struct) { - // AstStructType* member_node = (AstStructType *) (*member)->type->ast_type; - // if (member_node->stcache_is_valid) { - // s_node->stcache_is_valid = 0; - // return NULL; - // } - // } - onyx_report_error((*member)->token->pos, "Invalid member type: %s", type_get_name((*member)->type)); return NULL; } @@ -367,7 +368,7 @@ Type* type_build_from_ast(bh_allocator alloc, AstType* type_node) { bh_table_put(StructMember, s_type->Struct.members, (*member)->token->text, smem); token_toggle_end((*member)->token); - if (((*member)->flags & Ast_Flag_Struct_Mem_Used) != 0) { + if (smem.used) { assert((*member)->type->kind == Type_Kind_Struct); bh_arr_each(StructMember*, psmem, (*member)->type->Struct.memarr) { @@ -434,11 +435,11 @@ Type* type_build_from_ast(bh_allocator alloc, AstType* type_node) { enum_type->kind = Type_Kind_Enum; enum_type->ast_type = type_node; - enum_type->Enum.unique_id = next_unique_id++; enum_type->Enum.backing = enum_node->backing_type; enum_type->Enum.name = enum_node->name; enum_type->Enum.is_flags = enum_node->flags & Ast_Flag_Enum_Is_Flags; + type_register(enum_type); return enum_type; } @@ -545,12 +546,9 @@ Type* type_build_from_ast(bh_allocator alloc, AstType* type_node) { bh_arr_new(global_heap_allocator, comp_type->Compound.linear_members, comp_type->Compound.count); build_linear_types_with_offset(comp_type, &comp_type->Compound.linear_members, 0); + type_register(comp_type); return comp_type; } - - // case Ast_Kind_Symbol: - // assert(("symbol node in type expression", 0)); - // return NULL; } return NULL; @@ -568,6 +566,7 @@ Type* type_build_function_type(bh_allocator alloc, AstFunction* func) { func_type->kind = Type_Kind_Function; func_type->Function.param_count = param_count; func_type->Function.needed_param_count = 0; + func_type->Function.vararg_arg_pos = -1; func_type->Function.return_type = return_type; if (param_count > 0) { @@ -575,10 +574,15 @@ Type* type_build_function_type(bh_allocator alloc, AstFunction* func) { bh_arr_each(AstParam, param, func->params) { if (param->default_value == NULL && param->vararg_kind == VA_Kind_Not_VA) func_type->Function.needed_param_count++; + + if (param->vararg_kind == VA_Kind_Untyped) + func_type->Function.vararg_arg_pos = i; + func_type->Function.params[i++] = param->local->type; } } + type_register(func_type); return func_type; } @@ -605,20 +609,32 @@ Type* type_build_compound_type(bh_allocator alloc, AstCompound* compound) { bh_arr_new(global_heap_allocator, comp_type->Compound.linear_members, comp_type->Compound.count); build_linear_types_with_offset(comp_type, &comp_type->Compound.linear_members, 0); + type_register(comp_type); return comp_type; } Type* type_make_pointer(bh_allocator alloc, Type* to) { if (to == NULL) return NULL; - Type* ptr_type = bh_alloc_item(alloc, Type); + assert(to->id > 0); + u64 ptr_id = bh_imap_get(&type_pointer_map, to->id); + if (ptr_id > 0) { + Type* ptr_type = (Type *) bh_imap_get(&type_map, ptr_id); + return ptr_type; + + } else { + Type* ptr_type = bh_alloc_item(alloc, Type); + + ptr_type->kind = Type_Kind_Pointer; + ptr_type->Pointer.base.flags |= Basic_Flag_Pointer; + ptr_type->Pointer.base.size = 8; + ptr_type->Pointer.elem = to; - ptr_type->kind = Type_Kind_Pointer; - ptr_type->Pointer.base.flags |= Basic_Flag_Pointer; - ptr_type->Pointer.base.size = 8; - ptr_type->Pointer.elem = to; + type_register(ptr_type); + bh_imap_put(&type_pointer_map, to->id, ptr_type->id); - return ptr_type; + return ptr_type; + } } Type* type_make_array(bh_allocator alloc, Type* to, u32 count) { @@ -631,37 +647,72 @@ Type* type_make_array(bh_allocator alloc, Type* to, u32 count) { arr_type->Array.elem = to; arr_type->Array.size = count * type_size_of(to); + // :TypeCanBeDuplicated + type_register(arr_type); return arr_type; } Type* type_make_slice(bh_allocator alloc, Type* of) { if (of == NULL) return NULL; - Type* slice_type = bh_alloc(alloc, sizeof(Type)); - slice_type->kind = Type_Kind_Slice; - slice_type->Slice.ptr_to_data = type_make_pointer(alloc, of); + assert(of->id > 0); + u64 slice_id = bh_imap_get(&type_slice_map, of->id); + if (slice_id > 0) { + Type* slice_type = (Type *) bh_imap_get(&type_map, slice_id); + return slice_type; + + } else { + Type* slice_type = bh_alloc(alloc, sizeof(Type)); + slice_type->kind = Type_Kind_Slice; + type_register(slice_type); + bh_imap_put(&type_slice_map, of->id, slice_type->id); + + slice_type->Slice.ptr_to_data = type_make_pointer(alloc, of); - return slice_type; + return slice_type; + } } Type* type_make_dynarray(bh_allocator alloc, Type* of) { if (of == NULL) return NULL; - Type* dynarr = bh_alloc(alloc, sizeof(Type)); - dynarr->kind = Type_Kind_DynArray; - dynarr->DynArray.ptr_to_data = type_make_pointer(alloc, of); + assert(of->id > 0); + u64 dynarr_id = bh_imap_get(&type_dynarr_map, of->id); + if (dynarr_id > 0) { + Type* dynarr = (Type *) bh_imap_get(&type_map, dynarr_id); + return dynarr; + + } else { + Type* dynarr = bh_alloc(alloc, sizeof(Type)); + dynarr->kind = Type_Kind_DynArray; + type_register(dynarr); + bh_imap_put(&type_dynarr_map, of->id, dynarr->id); - return dynarr; + dynarr->DynArray.ptr_to_data = type_make_pointer(alloc, of); + + return dynarr; + } } Type* type_make_varargs(bh_allocator alloc, Type* of) { if (of == NULL) return NULL; - Type* va_type = bh_alloc(alloc, sizeof(Type)); - va_type->kind = Type_Kind_VarArgs; - va_type->VarArgs.ptr_to_data = type_make_pointer(alloc, of); + assert(of->id > 0); + u64 vararg_id = bh_imap_get(&type_vararg_map, of->id); + if (vararg_id > 0) { + Type* va_type = (Type *) bh_imap_get(&type_map, vararg_id); + return va_type; - return va_type; + } else { + Type* va_type = bh_alloc(alloc, sizeof(Type)); + va_type->kind = Type_Kind_VarArgs; + type_register(va_type); + bh_imap_put(&type_vararg_map, of->id, va_type->id); + + va_type->VarArgs.ptr_to_data = type_make_pointer(alloc, of); + + return va_type; + } } void build_linear_types_with_offset(Type* type, bh_arr(TypeWithOffset)* pdest, u32 offset) { @@ -701,14 +752,14 @@ const char* type_get_unique_name(Type* type) { case Type_Kind_Array: return bh_aprintf(global_scratch_allocator, "[%d] %s", type->Array.count, type_get_unique_name(type->Array.elem)); case Type_Kind_Struct: if (type->Struct.name) - return bh_aprintf(global_scratch_allocator, "%s@%l", type->Struct.name, type->Struct.unique_id); + return bh_aprintf(global_scratch_allocator, "%s@%l", type->Struct.name, type->id); else - return bh_aprintf(global_scratch_allocator, "%s@%l", "", type->Struct.unique_id); + return bh_aprintf(global_scratch_allocator, "%s@%l", "", type->id); case Type_Kind_Enum: if (type->Enum.name) - return bh_aprintf(global_scratch_allocator, "%s@%l", type->Enum.name, type->Enum.unique_id); + return bh_aprintf(global_scratch_allocator, "%s@%l", type->Enum.name, type->id); else - return bh_aprintf(global_scratch_allocator, "%s@%l", "", type->Enum.unique_id); + return bh_aprintf(global_scratch_allocator, "%s@%l", "", type->id); case Type_Kind_Slice: return bh_aprintf(global_scratch_allocator, "[] %s", type_get_unique_name(type->Slice.ptr_to_data->Pointer.elem)); case Type_Kind_VarArgs: return bh_aprintf(global_scratch_allocator, "..%s", type_get_unique_name(type->VarArgs.ptr_to_data->Pointer.elem)); -- 2.25.1