summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-eval/src
diff options
context:
space:
mode:
authordearblue <[email protected]>2021-06-19 15:08:09 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-06-19 21:15:02 +0900
commitc40802865a756f97ec8ffbd2361864b1fa291d4e (patch)
tree48dd585ab8eeb33124042b3be52bd4493600332c /mrbgems/mruby-eval/src
parent43eddfd4d52a1c21fb248b979fbcc7321fabe73b (diff)
downloadmruby-c40802865a756f97ec8ffbd2361864b1fa291d4e.tar.gz
mruby-c40802865a756f97ec8ffbd2361864b1fa291d4e.zip
Added `MRB_API` function to get block arguments info.
- ` mrb_block_given_p()` -- The name comes from CRuby's `rb_block_given_p ()` At the same time, it applies to `f_instance_eval()` and `f_class_eval()` of `mruby-eval`.
Diffstat (limited to 'mrbgems/mruby-eval/src')
-rw-r--r--mrbgems/mruby-eval/src/eval.c18
1 files changed, 4 insertions, 14 deletions
diff --git a/mrbgems/mruby-eval/src/eval.c b/mrbgems/mruby-eval/src/eval.c
index dc0017e1c..66f4d5283 100644
--- a/mrbgems/mruby-eval/src/eval.c
+++ b/mrbgems/mruby-eval/src/eval.c
@@ -195,12 +195,7 @@ f_eval(mrb_state *mrb, mrb_value self)
static mrb_value
f_instance_eval(mrb_state *mrb, mrb_value self)
{
- mrb_value b;
- mrb_int argc; const mrb_value *argv;
-
- mrb_get_args(mrb, "*!&", &argv, &argc, &b);
-
- if (mrb_nil_p(b)) {
+ if (!mrb_block_given_p(mrb)) {
const char *s;
mrb_int len;
const char *file = NULL;
@@ -217,7 +212,7 @@ f_instance_eval(mrb_state *mrb, mrb_value self)
return exec_irep(mrb, self, proc, NULL);
}
else {
- mrb_get_args(mrb, "&", &b);
+ mrb_get_args(mrb, "");
return mrb_obj_instance_eval(mrb, self);
}
}
@@ -225,12 +220,7 @@ f_instance_eval(mrb_state *mrb, mrb_value self)
static mrb_value
f_class_eval(mrb_state *mrb, mrb_value self)
{
- mrb_value b;
- mrb_int argc; const mrb_value *argv;
-
- mrb_get_args(mrb, "*!&", &argv, &argc, &b);
-
- if (mrb_nil_p(b)) {
+ if (!mrb_block_given_p(mrb)) {
const char *s;
mrb_int len;
const char *file = NULL;
@@ -245,7 +235,7 @@ f_class_eval(mrb_state *mrb, mrb_value self)
return exec_irep(mrb, self, proc, NULL);
}
else {
- mrb_get_args(mrb, "&", &b);
+ mrb_get_args(mrb, "");
return mrb_mod_module_eval(mrb, self);
}
}