diff options
author | Leo Tenenbaum <pommicket@gmail.com> | 2019-12-05 20:34:13 -0500 |
---|---|---|
committer | Leo Tenenbaum <pommicket@gmail.com> | 2019-12-05 20:34:13 -0500 |
commit | 5df057ab76a7ed65c5312e156dccd2982a808cb7 (patch) | |
tree | d78af53b3742902cce7f93b1a195dfee58f667d1 /copy.c | |
parent | c898f92eecc4421c7e134daf37a6f87562b5f5d8 (diff) |
Arr works!!!!
Diffstat (limited to 'copy.c')
-rw-r--r-- | copy.c | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -182,7 +182,8 @@ static void copy_expr(Copier *c, Expression *out, Expression *in) { case EXPR_EACH: { EachExpr *ein = &in->each; EachExpr *eout = &out->each; - copy_type(c, &eout->type, &ein->type); + if (ein->flags & EACH_ANNOTATED_TYPE) + copy_type(c, &eout->type, &ein->type); if (ein->flags & EACH_IS_RANGE) { copy_expr(c, eout->range.from = allocr_malloc(a, sizeof *eout->range.from), ein->range.from); if (ein->range.to) @@ -294,7 +295,7 @@ static void copy_block(Copier *c, Block *out, Block *in) { *out = *in; size_t nstmts = arr_len(in->stmts); out->stmts = NULL; - out->parent = c->block; + Block *prev = c->block; c->block = out; if (in->ret_expr) copy_expr(c, out->ret_expr = allocr_malloc(c->allocr, sizeof *out->ret_expr), in->ret_expr); @@ -303,5 +304,5 @@ static void copy_block(Copier *c, Block *out, Block *in) { for (size_t i = 0; i < nstmts; i++) { copy_stmt(c, &out->stmts[i], &in->stmts[i]); } - c->block = out->parent; + c->block = prev; } |