diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-11-22 12:16:59 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-11-22 12:16:59 +0900 |
| commit | bce75e2746f00590a5a6c330725e12805e30fbc1 (patch) | |
| tree | 8778661bda9cefb2889ed0a4ab24c885403103fd /src/codegen.c | |
| parent | b28ec1bc88d29d8e7205401a6e323f20581d642f (diff) | |
| download | mruby-bce75e2746f00590a5a6c330725e12805e30fbc1.tar.gz mruby-bce75e2746f00590a5a6c330725e12805e30fbc1.zip | |
should support recursive mlhs decomposition, e.g. (a,b),c = [1,2],3
Diffstat (limited to 'src/codegen.c')
| -rw-r--r-- | src/codegen.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/codegen.c b/src/codegen.c index ebab9e11e..4801f6cff 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -953,6 +953,18 @@ gen_assignment(codegen_scope *s, node *tree, int sp, int val) } break; + case NODE_MASGN: + gen_vmassignment(s, tree->car, sp, val); + break; + + push(); + gen_call(s, tree, attrsym(s, sym(tree->cdr->car)), sp, NOVAL); + pop(); + if (val) { + genop_peep(s, MKOP_AB(OP_MOVE, cursp(), sp), val); + } + break; + default: #ifdef ENABLE_STDIO printf("unknown lhs %d\n", type); @@ -1006,7 +1018,7 @@ gen_vmassignment(codegen_scope *s, node *tree, int rhs, int val) } } } - else { + else if (val) { pop(); } } |
