diff options
| author | Ukrainskiy Sergey <[email protected]> | 2019-08-31 19:42:02 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2019-12-09 20:50:41 +0900 |
| commit | 72d57ad094b8e1c529e2e8b41d895fc6f212e31e (patch) | |
| tree | 489cb928ecdcf49632c8a66505c491cbac351e00 /mrbgems/mruby-compiler/core/codegen.c | |
| parent | 8267993988971a7797cdc8a5c6d161f3355f1af2 (diff) | |
| download | mruby-72d57ad094b8e1c529e2e8b41d895fc6f212e31e.tar.gz mruby-72d57ad094b8e1c529e2e8b41d895fc6f212e31e.zip | |
Implement numbered parameters
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)); |
