Add mrb_num_args_error() for "wrong number of arguments" error

To unify the style of messages.
This commit is contained in:
KOBAYASHI Shuji
2019-12-12 11:45:58 +09:00
parent 9c4c82ed1c
commit 81de1f159c
7 changed files with 20 additions and 6 deletions
+14 -1
View File
@@ -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)
{
+1 -1
View File
@@ -800,7 +800,7 @@ mrb_hash_init(mrb_state *mrb, mrb_value hash)
mrb_hash_modify(mrb, hash);
if (!mrb_nil_p(block)) {
if (ifnone_p) {
mrb_raise(mrb, E_ARGUMENT_ERROR, "wrong number of arguments");
mrb_num_args_error(mrb, 1, 0, 0);
}
RHASH(hash)->flags |= MRB_HASH_PROC_DEFAULT;
ifnone = block;
+1 -1
View File
@@ -384,7 +384,7 @@ mrb_obj_extend(mrb_state *mrb, mrb_int argc, mrb_value *argv, mrb_value obj)
mrb_int i;
if (argc == 0) {
mrb_raise(mrb, E_ARGUMENT_ERROR, "wrong number of arguments (at least 1)");
mrb_num_args_error(mrb, argc, 1, -1);
}
for (i = 0; i < argc; i++) {
mrb_check_type(mrb, argv[i], MRB_TT_MODULE);