mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Modify mrb_name_error() to use mrb_format().
This commit is contained in:
+12
-12
@@ -1473,7 +1473,7 @@ check_cv_name(mrb_state *mrb, mrb_sym id)
|
||||
|
||||
s = mrb_sym2name_len(mrb, id, &len);
|
||||
if (len < 3 || !(s[0] == '@' && s[1] == '@')) {
|
||||
mrb_name_error(mrb, id, "`%s' is not allowed as a class variable name", s);
|
||||
mrb_name_error(mrb, id, "`%S' is not allowed as a class variable name", mrb_sym2str(mrb, id));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1595,12 +1595,12 @@ mrb_mod_remove_cvar(mrb_state *mrb, mrb_value mod)
|
||||
if (!mrb_undef_p(val)) return val;
|
||||
|
||||
if (mrb_cv_defined(mrb, mod, id)){
|
||||
mrb_name_error(mrb, id, "cannot remove %s for %s",
|
||||
mrb_sym2name(mrb, id), mrb_class_name(mrb, mrb_class_ptr(mod)));
|
||||
mrb_name_error(mrb, id, "cannot remove %S for %S",
|
||||
mrb_sym2str(mrb, id), mod);
|
||||
}
|
||||
|
||||
mrb_name_error(mrb, id, "class variable %s not defined for %s",
|
||||
mrb_sym2name(mrb, id), mrb_class_name(mrb, mrb_class_ptr(mod)));
|
||||
mrb_name_error(mrb, id, "class variable %S not defined for %S",
|
||||
mrb_sym2str(mrb, id), mod);
|
||||
|
||||
/* not reached */
|
||||
return mrb_nil_value();
|
||||
@@ -1645,8 +1645,9 @@ mrb_mod_method_defined(mrb_state *mrb, mrb_value mod)
|
||||
}
|
||||
|
||||
static void
|
||||
remove_method(mrb_state *mrb, struct RClass *c, mrb_sym mid)
|
||||
remove_method(mrb_state *mrb, mrb_value mod, mrb_sym mid)
|
||||
{
|
||||
struct RClass *c = mrb_class_ptr(mod);
|
||||
khash_t(mt) *h = c->mt;
|
||||
khiter_t k;
|
||||
|
||||
@@ -1658,8 +1659,8 @@ remove_method(mrb_state *mrb, struct RClass *c, mrb_sym mid)
|
||||
}
|
||||
}
|
||||
|
||||
mrb_name_error(mrb, mid, "method `%s' not defined in %s",
|
||||
mrb_sym2name(mrb, mid), mrb_class_name(mrb, c));
|
||||
mrb_name_error(mrb, mid, "method `%S' not defined in %S",
|
||||
mrb_sym2str(mrb, mid), mod);
|
||||
}
|
||||
|
||||
/* 15.2.2.4.41 */
|
||||
@@ -1674,13 +1675,12 @@ remove_method(mrb_state *mrb, struct RClass *c, mrb_sym mid)
|
||||
mrb_value
|
||||
mrb_mod_remove_method(mrb_state *mrb, mrb_value mod)
|
||||
{
|
||||
struct RClass *c = mrb_class_ptr(mod);
|
||||
int argc;
|
||||
mrb_value *argv;
|
||||
|
||||
mrb_get_args(mrb, "*", &argv, &argc);
|
||||
while (argc--) {
|
||||
remove_method(mrb, c, mrb_symbol(*argv));
|
||||
remove_method(mrb, mod, mrb_symbol(*argv));
|
||||
argv++;
|
||||
}
|
||||
return mod;
|
||||
@@ -1694,7 +1694,7 @@ check_const_name(mrb_state *mrb, mrb_sym id)
|
||||
|
||||
s = mrb_sym2name_len(mrb, id, &len);
|
||||
if (len < 1 || !ISUPPER(*s)) {
|
||||
mrb_name_error(mrb, id, "wrong constant name %s", s);
|
||||
mrb_name_error(mrb, id, "wrong constant name %S", mrb_sym2str(mrb, id));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1743,7 +1743,7 @@ mrb_mod_remove_const(mrb_state *mrb, mrb_value mod)
|
||||
check_const_name(mrb, id);
|
||||
val = mrb_iv_remove(mrb, mod, id);
|
||||
if (mrb_undef_p(val)) {
|
||||
mrb_name_error(mrb, id, "constant %s not defined", mrb_sym2name(mrb, id));
|
||||
mrb_name_error(mrb, id, "constant %S not defined", mrb_sym2str(mrb, id));
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
+4
-8
@@ -292,18 +292,14 @@ mrb_raisef(mrb_state *mrb, struct RClass *c, const char *fmt, ...)
|
||||
void
|
||||
mrb_name_error(mrb_state *mrb, mrb_sym id, const char *fmt, ...)
|
||||
{
|
||||
mrb_value exc, argv[2];
|
||||
mrb_value exc;
|
||||
mrb_value argv[2];
|
||||
va_list args;
|
||||
char buf[256];
|
||||
int n;
|
||||
|
||||
va_start(args, fmt);
|
||||
n = vsnprintf(buf, sizeof(buf), fmt, args);
|
||||
argv[0] = mrb_vformat(mrb, fmt, args);
|
||||
va_end(args);
|
||||
if (n < 0) {
|
||||
n = 0;
|
||||
}
|
||||
argv[0] = mrb_str_new(mrb, buf, n);
|
||||
|
||||
argv[1] = mrb_symbol_value(id); /* ignore now */
|
||||
exc = mrb_class_new_instance(mrb, 1, argv, E_NAME_ERROR);
|
||||
mrb_exc_raise(mrb, exc);
|
||||
|
||||
@@ -12,6 +12,7 @@ int sysexit_status(mrb_state *mrb, mrb_value err);
|
||||
mrb_value mrb_exc_new3(mrb_state *mrb, struct RClass* c, mrb_value str);
|
||||
mrb_value make_exception(mrb_state *mrb, int argc, mrb_value *argv, int isstr);
|
||||
mrb_value mrb_make_exception(mrb_state *mrb, int argc, mrb_value *argv);
|
||||
mrb_value mrb_format(mrb_state *mrb, const char *format, ...);
|
||||
void mrb_name_error(mrb_state *mrb, mrb_sym id, const char *fmt, ...);
|
||||
void mrb_exc_print(mrb_state *mrb, struct RObject *exc);
|
||||
|
||||
|
||||
+2
-2
@@ -556,7 +556,7 @@ check_iv_name(mrb_state *mrb, mrb_sym id)
|
||||
|
||||
s = mrb_sym2name_len(mrb, id, &len);
|
||||
if (len < 2 || !(s[0] == '@' && s[1] != '@')) {
|
||||
mrb_name_error(mrb, id, "`%s' is not allowed as an instance variable name", s);
|
||||
mrb_name_error(mrb, id, "`%S' is not allowed as an instance variable name", mrb_sym2str(mrb, id));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -964,7 +964,7 @@ mrb_obj_remove_instance_variable(mrb_state *mrb, mrb_value self)
|
||||
check_iv_name(mrb, sym);
|
||||
val = mrb_iv_remove(mrb, self, sym);
|
||||
if (mrb_undef_p(val)) {
|
||||
mrb_name_error(mrb, sym, "instance variable %s not defined", mrb_sym2name(mrb, sym));
|
||||
mrb_name_error(mrb, sym, "instance variable %S not defined", mrb_sym2str(mrb, sym));
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user