From f8e78c8ee4a63d8835ed76b41d0afae9a28da0d1 Mon Sep 17 00:00:00 2001 From: Krzosa Karol Date: Sun, 2 Apr 2023 12:36:02 +0200 Subject: [PATCH] Factor --- core_polymorph.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/core_polymorph.cpp b/core_polymorph.cpp index a539624..b6adf48 100644 --- a/core_polymorph.cpp +++ b/core_polymorph.cpp @@ -260,6 +260,7 @@ Ast *ast_copy(Ast *ast, Ast_Scope *parent_scope, Array *replace, Arr dst->args.init(pctx->perm, src->args.len); For(src->args) { + if (it->flags & AST_POLYMORPH) continue; auto copy = (Ast_Decl *)ast_copy(it, parent_scope, replace, with); dst->args.add(copy); } @@ -276,7 +277,9 @@ Ast *ast_copy(Ast *ast, Ast_Scope *parent_scope, Array *replace, Arr default: assert(!"Invalid default case"); } assert(result); + unset_flag(result->flags, AST_POLYMORPH | AST_PARENT_POLYMORPH); + return result; } @@ -355,13 +358,6 @@ Ast_Decl *get_or_instantiate_polymorph_lambda(Token *pos, Ast_Decl *poly, Array< if (!result) { result = (Ast_Decl *)ast_copy(poly, poly->parent_scope, &poly->polymorph_parameters, ¶ms); - ForArrayRemovable(result->lambda->args) { - ForArrayRemovablePrepare(result->lambda->args); - if (it->flags & AST_IDENT_POLYMORPH) { - ForArrayRemovableDeclare(); - } - } - result->polymorph_hash = hash; assert(result->di != poly->di);