From c969bee86d300871103d8cc1441e37f5c60e2b86 Mon Sep 17 00:00:00 2001 From: fusion32 Date: Fri, 23 Aug 2024 17:18:10 -0300 Subject: [PATCH 1/2] fix ambiguous generic type names --- src/check_expr.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 9cdba2710..b06f804ae 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -7625,7 +7625,7 @@ gb_internal CallArgumentError check_polymorphic_record_type(CheckerContext *c, O gbString s = gb_string_make_reserve(heap_allocator(), e->token.string.len+3); s = gb_string_append_fmt(s, "%.*s(", LIT(e->token.string)); - TypeTuple *tuple = get_record_polymorphic_params(e->type); + TypeTuple *tuple = get_record_polymorphic_params(bt); if (tuple != nullptr) for_array(i, tuple->variables) { Entity *v = tuple->variables[i]; String name = v->token.string; @@ -7640,8 +7640,10 @@ gb_internal CallArgumentError check_polymorphic_record_type(CheckerContext *c, O s = write_type_to_string(s, v->type, false); } } else if (v->kind == Entity_Constant) { - s = gb_string_append_fmt(s, "="); - s = write_exact_value_to_string(s, v->Constant.value); + if (v->type->kind != ExactValue_Invalid) { + s = gb_string_append_fmt(s, "="); + s = write_exact_value_to_string(s, v->Constant.value); + } } } s = gb_string_append_fmt(s, ")"); From 5ef8a092f663d5a092c6eff026ce3122020da349 Mon Sep 17 00:00:00 2001 From: fusion32 Date: Fri, 23 Aug 2024 17:50:27 -0300 Subject: [PATCH 2/2] fix wrong exact value kind comparison --- src/check_expr.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/check_expr.cpp b/src/check_expr.cpp index b06f804ae..1a5b8c9a7 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -7640,7 +7640,7 @@ gb_internal CallArgumentError check_polymorphic_record_type(CheckerContext *c, O s = write_type_to_string(s, v->type, false); } } else if (v->kind == Entity_Constant) { - if (v->type->kind != ExactValue_Invalid) { + if (v->Constant.value.kind != ExactValue_Invalid) { s = gb_string_append_fmt(s, "="); s = write_exact_value_to_string(s, v->Constant.value); }