From 895757b4e7f242943505eff5fa9597f77a978303 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Tue, 13 Jun 2023 16:47:53 -0500 Subject: [PATCH] miscellaneous bugfixes --- compiler/src/astnodes.c | 6 +++++- compiler/src/doc.c | 2 +- compiler/src/symres.c | 2 +- compiler/src/wasm_output.h | 1 + 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/compiler/src/astnodes.c b/compiler/src/astnodes.c index 12e83ff7..0d22b61e 100644 --- a/compiler/src/astnodes.c +++ b/compiler/src/astnodes.c @@ -668,7 +668,11 @@ TypeMatch unify_node_and_type_(AstTyped** pnode, Type* type, b32 permanent) { return TYPE_MATCH_YIELD; } - if (permanent) *pnode = (AstTyped *) resolved; + if (permanent) { + track_resolution_for_symbol_info((AstNode *) node, resolved); + *pnode = (AstTyped *) resolved; + } + return TYPE_MATCH_SUCCESS; } diff --git a/compiler/src/doc.c b/compiler/src/doc.c index 1328bbc2..eff9e379 100644 --- a/compiler/src/doc.c +++ b/compiler/src/doc.c @@ -60,7 +60,7 @@ static i32 sort_symbol_resolutions(const SymbolResolution *a, const SymbolResolu return a->line > b->line ? 1 : -1; } - return 0; + return a->column > b->column ? 1 : -1; } void onyx_docs_emit_symbol_info(const char *dest) { diff --git a/compiler/src/symres.c b/compiler/src/symres.c index 9535ca4f..4f63cb50 100644 --- a/compiler/src/symres.c +++ b/compiler/src/symres.c @@ -195,7 +195,7 @@ static SymresStatus symres_union_type(AstUnionType* u_node) { fori (i, 0, bh_arr_length(u_node->variants)) { AstUnionVariant *variant = u_node->variants[i]; - // track_declaration_for_symbol_info(member->token->pos, (AstNode *) member); + track_declaration_for_symbol_info(variant->token->pos, (AstNode *) variant); assert(variant->type_node); SymresStatus ss = symres_type(&variant->type_node); diff --git a/compiler/src/wasm_output.h b/compiler/src/wasm_output.h index 3d86f5f2..ba47d0e0 100644 --- a/compiler/src/wasm_output.h +++ b/compiler/src/wasm_output.h @@ -1047,6 +1047,7 @@ static i32 output_ovm_debug_sections(OnyxWasmModule* module, bh_buffer* buff) { // Outside of runtime type information, they provide no useful // debugging information (I don't think at least...). if (type->kind == Type_Kind_PolyStruct || + type->kind == Type_Kind_PolyUnion || type->kind == Type_Kind_Compound) { output_unsigned_integer(1, §ion_buff); output_unsigned_integer(0, §ion_buff); -- 2.25.1