summaryrefslogtreecommitdiffhomepage
path: root/mrbgems
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2019-09-10 09:24:27 +0900
committerGitHub <[email protected]>2019-09-10 09:24:27 +0900
commit080f7baeafcc9213b0b9953b567bb8b52fec8a1b (patch)
tree7dc5ba84d7fe8325fa6d0989feeb8515569ba30c /mrbgems
parent9d9cb0ab6a052c658a861b33a48a16cb2fb5b655 (diff)
parent3f70e3a81f3855f13c2f1a1b9e7864bd0f562117 (diff)
downloadmruby-080f7baeafcc9213b0b9953b567bb8b52fec8a1b.tar.gz
mruby-080f7baeafcc9213b0b9953b567bb8b52fec8a1b.zip
Merge pull request #4699 from takkaw/mirb_lv_under_score
add special local variable _ in mirb
Diffstat (limited to 'mrbgems')
-rw-r--r--mrbgems/mruby-bin-mirb/tools/mirb/mirb.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c b/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c
index 17b2ca16c..45ead75f1 100644
--- a/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c
+++ b/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c
@@ -406,6 +406,26 @@ ctrl_c_handler(int signo)
}
#endif
+#ifndef DISABLE_MIRB_UNDERSCORE
+void decl_lv_underscore(mrb_state *mrb, mrbc_context *cxt)
+{
+ struct RProc *proc;
+ struct mrb_parser_state *parser;
+
+ parser = mrb_parse_string(mrb, "_=nil", cxt);
+ if (parser == NULL) {
+ fputs("create parser state error\n", stderr);
+ mrb_close(mrb);
+ exit(EXIT_FAILURE);
+ }
+
+ proc = mrb_generate_code(mrb, parser);
+ mrb_vm_run(mrb, proc, mrb_top_self(mrb), 0);
+
+ mrb_parser_free(parser);
+}
+#endif
+
int
main(int argc, char **argv)
{
@@ -471,6 +491,10 @@ main(int argc, char **argv)
cxt = mrbc_context_new(mrb);
+#ifndef DISABLE_MIRB_UNDERSCORE
+ decl_lv_underscore(mrb, cxt);
+#endif
+
/* Load libraries */
for (i = 0; i < args.libc; i++) {
FILE *lfp = fopen(args.libv[i], "r");
@@ -643,6 +667,9 @@ main(int argc, char **argv)
result = mrb_any_to_s(mrb, result);
}
p(mrb, result, 1);
+#ifndef DISABLE_MIRB_UNDERSCORE
+ *(mrb->c->stack + 1) = result;
+#endif
}
}
ruby_code[0] = '\0';