From acec9d1ff19e2dbea9a4ff7b0030f74b9d42aa17 Mon Sep 17 00:00:00 2001 From: take_cheeze Date: Mon, 2 Jun 2014 22:38:02 +0900 Subject: Implement `NoMethodError#args`. --- src/error.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/error.c') diff --git a/src/error.c b/src/error.c index 360df8f2e..c60fff10d 100644 --- a/src/error.c +++ b/src/error.c @@ -442,6 +442,20 @@ mrb_sys_fail(mrb_state *mrb, const char *mesg) } } +mrb_noreturn void +mrb_no_method_error(mrb_state *mrb, mrb_sym id, mrb_int argc, const mrb_value *argv, char const* fmt, ...) +{ + mrb_value exc; + va_list ap; + + va_start(ap, fmt); + exc = mrb_funcall(mrb, mrb_obj_value(E_NOMETHOD_ERROR), "new", 3, + mrb_vformat(mrb, fmt, ap), mrb_symbol_value(id), + mrb_ary_new_from_values(mrb, argc, argv)); + va_end(ap); + mrb_exc_raise(mrb, exc); +} + void mrb_init_exception(mrb_state *mrb) { -- cgit v1.2.3