aboutsummaryrefslogtreecommitdiff
path: root/src/ast.c
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2025-01-16 08:27:51 +0200
committerKimplul <kimi.h.kuparinen@gmail.com>2025-01-16 08:27:51 +0200
commit2841470fd34a6ed41df94f925bbeb95819bfca9a (patch)
treea13434519f5c0222f2b0c80a4d13738eb17f8200 /src/ast.c
parent9ca1d0c763e1c506ae7b43d50db225914b709397 (diff)
downloadek-2841470fd34a6ed41df94f925bbeb95819bfca9a.tar.gz
ek-2841470fd34a6ed41df94f925bbeb95819bfca9a.zip
skip a few extra allocs
Diffstat (limited to 'src/ast.c')
-rw-r--r--src/ast.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/ast.c b/src/ast.c
index daf393e..5ba8000 100644
--- a/src/ast.c
+++ b/src/ast.c
@@ -422,9 +422,15 @@ struct ast *clone_ast(struct ast *n)
if (n->a0)
new->a0 = clone_ast_list(n->a0);
+ /* don't clone defers */
+ if (!(n->k == AST_BLOCK))
if (n->a1)
new->a1 = clone_ast_list(n->a1);
+ /* don't clone expanded body, just the raw one */
+ if (!(n->k == AST_TRAIT_DEF
+ || n->k == AST_STRUCT_DEF
+ || n->k == AST_STRUCT_CONT_DEF))
if (n->a2)
new->a2 = clone_ast_list(n->a2);