aboutsummaryrefslogtreecommitdiff
path: root/src/ast.c
diff options
context:
space:
mode:
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);