diff options
Diffstat (limited to 'mrbgems/mruby-compiler/core/codegen.c')
| -rw-r--r-- | mrbgems/mruby-compiler/core/codegen.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 8379dfd97..89343f16d 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -1122,6 +1122,10 @@ gen_assignment(codegen_scope *s, node *tree, int sp, int val) } } break; + case NODE_NVAR: + idx = nint(tree); + codegen_error(s, "Can't assign to numbered parameter"); + break; case NODE_IVAR: idx = new_sym(s, nsym(tree)); genop_2(s, OP_SETIV, sp, idx); @@ -2340,6 +2344,17 @@ codegen(codegen_scope *s, node *tree, int val) } break; + case NODE_NVAR: + if (val) { + int idx = nint(tree); + + gen_move(s, cursp(), idx, val); + if (val && on_eval(s)) genop_0(s, OP_NOP); + + push(); + } + break; + case NODE_GVAR: { int sym = new_sym(s, nsym(tree)); |
