diff options
| author | KOBAYASHI Shuji <[email protected]> | 2019-12-12 11:45:58 +0900 |
|---|---|---|
| committer | KOBAYASHI Shuji <[email protected]> | 2019-12-12 11:45:58 +0900 |
| commit | 81de1f159ce97821e16a127d600bffe1aa724bde (patch) | |
| tree | 78e5d44f25fc67980bf08fc5781baefc2adf5311 /src/error.c | |
| parent | 9c4c82ed1c6cf21d420dc62185fc42552ad2e924 (diff) | |
| download | mruby-81de1f159ce97821e16a127d600bffe1aa724bde.tar.gz mruby-81de1f159ce97821e16a127d600bffe1aa724bde.zip | |
Add `mrb_num_args_error()` for "wrong number of arguments" error
To unify the style of messages.
Diffstat (limited to 'src/error.c')
| -rw-r--r-- | src/error.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/error.c b/src/error.c index 43b09ec66..11129387f 100644 --- a/src/error.c +++ b/src/error.c @@ -530,7 +530,7 @@ exception_call: break; default: - mrb_raisef(mrb, E_ARGUMENT_ERROR, "wrong number of arguments (%i for 0..3)", argc); + mrb_num_args_error(mrb, argc, 0, 3); break; } if (argc > 0) { @@ -586,6 +586,19 @@ mrb_frozen_error(mrb_state *mrb, void *frozen_obj) mrb_raisef(mrb, E_FROZEN_ERROR, "can't modify frozen %t", mrb_obj_value(frozen_obj)); } +MRB_API mrb_noreturn void +mrb_num_args_error(mrb_state *mrb, mrb_int argc, int min, int max) +{ +#define FMT(exp) "wrong number of arguments (given %i, expected " exp ")" + if (min == max) + mrb_raisef(mrb, E_ARGUMENT_ERROR, FMT("%d"), argc, min); + else if (max < 0) + mrb_raisef(mrb, E_ARGUMENT_ERROR, FMT("%d+"), argc, min); + else + mrb_raisef(mrb, E_ARGUMENT_ERROR, FMT("%d..%d"), argc, min, max); +#undef FMT +} + void mrb_init_exception(mrb_state *mrb) { |
