From 9b063ad9a3a3b4da52ac4d60c65a0ff7c8dd79cf Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sun, 25 Nov 2018 17:57:49 +0000 Subject: Fix poly proc determination by cloning the signature node --- src/check_expr.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/check_expr.cpp') diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 47b741f40..28271efb8 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -278,7 +278,6 @@ bool find_or_generate_polymorphic_procedure(CheckerContext *c, Entity *base_enti return false; } - auto *found_gen_procs = map_get(&nctx.info->gen_procs, hash_pointer(base_entity->identifier)); if (found_gen_procs) { auto procs = *found_gen_procs; @@ -304,13 +303,14 @@ bool find_or_generate_polymorphic_procedure(CheckerContext *c, Entity *base_enti // NOTE(bill): Reset scope from the failed procedure type scope_reset(scope); - success = check_procedure_type(&nctx, final_proc_type, pt->node, &operands); + // LEAK TODO(bill): Cloning this AST may be leaky + Ast *cloned_proc_type_node = clone_ast(pt->node); + success = check_procedure_type(&nctx, final_proc_type, cloned_proc_type_node, &operands); if (!success) { return false; } - if (found_gen_procs) { auto procs = *found_gen_procs; for_array(i, procs) { -- cgit v1.2.3