From 72d57ad094b8e1c529e2e8b41d895fc6f212e31e Mon Sep 17 00:00:00 2001 From: Ukrainskiy Sergey Date: Sat, 31 Aug 2019 19:42:02 +0900 Subject: Implement numbered parameters --- mrbgems/mruby-compiler/core/codegen.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'mrbgems/mruby-compiler/core/codegen.c') 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)); -- cgit v1.2.3