diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2019-09-17 08:40:03 +0900 |
|---|---|---|
| committer | GitHub <[email protected]> | 2019-09-17 08:40:03 +0900 |
| commit | cc636f334f21fbe06a735d9c98799d792d319017 (patch) | |
| tree | 514249bd0f4f472775622f28845e3040e22f715a /mrbgems | |
| parent | d45c94fe1cda50d0dc22399d8e9d7f14bc9711dd (diff) | |
| parent | 099a4f3969b91d647a078d3148d8e4fedbf9c465 (diff) | |
| download | mruby-cc636f334f21fbe06a735d9c98799d792d319017.tar.gz mruby-cc636f334f21fbe06a735d9c98799d792d319017.zip | |
Merge pull request #4715 from dearblue/need-block
Entrust "no block given" error to `mrb_get_args()`
Diffstat (limited to 'mrbgems')
| -rw-r--r-- | mrbgems/mruby-class-ext/src/class.c | 6 | ||||
| -rw-r--r-- | mrbgems/mruby-fiber/src/fiber.c | 5 | ||||
| -rw-r--r-- | mrbgems/mruby-metaprog/src/metaprog.c | 5 | ||||
| -rw-r--r-- | mrbgems/mruby-object-ext/src/object.c | 6 | ||||
| -rw-r--r-- | mrbgems/mruby-objectspace/src/mruby_objectspace.c | 6 | ||||
| -rw-r--r-- | mrbgems/mruby-proc-ext/src/proc.c | 5 |
6 files changed, 6 insertions, 27 deletions
diff --git a/mrbgems/mruby-class-ext/src/class.c b/mrbgems/mruby-class-ext/src/class.c index fdd56bcc3..255e62f6b 100644 --- a/mrbgems/mruby-class-ext/src/class.c +++ b/mrbgems/mruby-class-ext/src/class.c @@ -40,11 +40,7 @@ mrb_mod_module_exec(mrb_state *mrb, mrb_value self) mrb_int argc; mrb_value blk; - mrb_get_args(mrb, "*&", &argv, &argc, &blk); - - if (mrb_nil_p(blk)) { - mrb_raise(mrb, E_ARGUMENT_ERROR, "no block given"); - } + mrb_get_args(mrb, "*&!", &argv, &argc, &blk); mrb->c->ci->target_class = mrb_class_ptr(self); return mrb_yield_cont(mrb, blk, self, argc, argv); diff --git a/mrbgems/mruby-fiber/src/fiber.c b/mrbgems/mruby-fiber/src/fiber.c index b702a3811..e47849dda 100644 --- a/mrbgems/mruby-fiber/src/fiber.c +++ b/mrbgems/mruby-fiber/src/fiber.c @@ -72,14 +72,11 @@ fiber_init(mrb_state *mrb, mrb_value self) mrb_value blk; size_t slen; - mrb_get_args(mrb, "&", &blk); + mrb_get_args(mrb, "&!", &blk); if (f->cxt) { mrb_raise(mrb, E_RUNTIME_ERROR, "cannot initialize twice"); } - if (mrb_nil_p(blk)) { - mrb_raise(mrb, E_ARGUMENT_ERROR, "tried to create Fiber object without a block"); - } p = mrb_proc_ptr(blk); if (MRB_PROC_CFUNC_P(p)) { mrb_raise(mrb, E_FIBER_ERROR, "tried to create Fiber from C defined method"); diff --git a/mrbgems/mruby-metaprog/src/metaprog.c b/mrbgems/mruby-metaprog/src/metaprog.c index 97f53051f..b7d5b6eff 100644 --- a/mrbgems/mruby-metaprog/src/metaprog.c +++ b/mrbgems/mruby-metaprog/src/metaprog.c @@ -389,10 +389,7 @@ mod_define_singleton_method(mrb_state *mrb, mrb_value self) mrb_sym mid; mrb_value blk = mrb_nil_value(); - mrb_get_args(mrb, "n&", &mid, &blk); - if (mrb_nil_p(blk)) { - mrb_raise(mrb, E_ARGUMENT_ERROR, "no block given"); - } + mrb_get_args(mrb, "n&!", &mid, &blk); p = (struct RProc*)mrb_obj_alloc(mrb, MRB_TT_PROC, mrb->proc_class); mrb_proc_copy(p, mrb_proc_ptr(blk)); p->flags |= MRB_PROC_STRICT; diff --git a/mrbgems/mruby-object-ext/src/object.c b/mrbgems/mruby-object-ext/src/object.c index 0aedc9a73..8d5604cad 100644 --- a/mrbgems/mruby-object-ext/src/object.c +++ b/mrbgems/mruby-object-ext/src/object.c @@ -100,11 +100,7 @@ mrb_obj_instance_exec(mrb_state *mrb, mrb_value self) mrb_value blk; struct RClass *c; - mrb_get_args(mrb, "*&", &argv, &argc, &blk); - - if (mrb_nil_p(blk)) { - mrb_raise(mrb, E_ARGUMENT_ERROR, "no block given"); - } + mrb_get_args(mrb, "*&!", &argv, &argc, &blk); switch (mrb_type(self)) { case MRB_TT_SYMBOL: diff --git a/mrbgems/mruby-objectspace/src/mruby_objectspace.c b/mrbgems/mruby-objectspace/src/mruby_objectspace.c index b31dee04c..651c04d92 100644 --- a/mrbgems/mruby-objectspace/src/mruby_objectspace.c +++ b/mrbgems/mruby-objectspace/src/mruby_objectspace.c @@ -161,11 +161,7 @@ os_each_object(mrb_state *mrb, mrb_value self) { mrb_value cls = mrb_nil_value(); struct os_each_object_data d; - mrb_get_args(mrb, "&|C", &d.block, &cls); - - if (mrb_nil_p(d.block)) { - mrb_raise(mrb, E_ARGUMENT_ERROR, "Expected block in ObjectSpace.each_object."); - } + mrb_get_args(mrb, "&!|C", &d.block, &cls); d.target_module = mrb_nil_p(cls) ? NULL : mrb_class_ptr(cls); d.count = 0; diff --git a/mrbgems/mruby-proc-ext/src/proc.c b/mrbgems/mruby-proc-ext/src/proc.c index c9041ec75..1627ee474 100644 --- a/mrbgems/mruby-proc-ext/src/proc.c +++ b/mrbgems/mruby-proc-ext/src/proc.c @@ -72,10 +72,7 @@ mrb_kernel_proc(mrb_state *mrb, mrb_value self) { mrb_value blk; - mrb_get_args(mrb, "&", &blk); - if (mrb_nil_p(blk)) { - mrb_raise(mrb, E_ARGUMENT_ERROR, "tried to create Proc object without a block"); - } + mrb_get_args(mrb, "&!", &blk); return blk; } |
