From 3d8dfd49fd041ce958731f5a0a99ab89c10d183c Mon Sep 17 00:00:00 2001 From: Krzosa Karol Date: Sat, 1 Apr 2023 19:45:04 +0200 Subject: [PATCH] Fix polymorph invalid resolved_decl in call --- core_polymorph.cpp | 1 + core_typechecking.cpp | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/core_polymorph.cpp b/core_polymorph.cpp index 3044eba..c6de734 100644 --- a/core_polymorph.cpp +++ b/core_polymorph.cpp @@ -317,6 +317,7 @@ Ast_Decl *get_or_instantiate_polymorph_type(Token *pos, Ast_Decl *poly, Arraydi != poly->di); result->name = get_unique_name_for_decl(result); + result->unique_name = result->name; poly->polymorphs.allocator = pctx->heap; poly->polymorphs.add(result); diff --git a/core_typechecking.cpp b/core_typechecking.cpp index 5966e86..22d8005 100644 --- a/core_typechecking.cpp +++ b/core_typechecking.cpp @@ -1705,6 +1705,7 @@ resolve_expr(Ast_Expr *ast, Resolve_Flag flags, Ast_Type *compound_and_const_str Ast_Decl *poly = name.resolved_decl; assert(replacements.len == poly->polymorph_parameters.len); Ast_Decl *instance = get_or_instantiate_polymorph_type(node->pos, poly, replacements, field_access_scope); + node->resolved_decl = instance; lambda = instance->lambda; } @@ -1723,8 +1724,8 @@ resolve_expr(Ast_Expr *ast, Resolve_Flag flags, Ast_Type *compound_and_const_str } node->exprs = items.tight_copy(pctx->perm); - node->resolved_type = lambda->resolved_type->func.ret; - return operand_rvalue(node->resolved_type); + node->resolved_type = lambda->resolved_type; + return operand_rvalue(node->resolved_type->func.ret); // // CALL End //