Commit 14461394 authored by Yukihiro "Matz" Matsumoto's avatar Yukihiro "Matz" Matsumoto

Merge pull request #1094 from monaka/pr-use-mrb_format

Use mrb_format() instead of s*printf().
parents 3a2f4c32 fa23cb10
...@@ -1473,7 +1473,7 @@ check_cv_name(mrb_state *mrb, mrb_sym id) ...@@ -1473,7 +1473,7 @@ check_cv_name(mrb_state *mrb, mrb_sym id)
s = mrb_sym2name_len(mrb, id, &len); s = mrb_sym2name_len(mrb, id, &len);
if (len < 3 || !(s[0] == '@' && s[1] == '@')) { 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) ...@@ -1595,12 +1595,12 @@ mrb_mod_remove_cvar(mrb_state *mrb, mrb_value mod)
if (!mrb_undef_p(val)) return val; if (!mrb_undef_p(val)) return val;
if (mrb_cv_defined(mrb, mod, id)){ if (mrb_cv_defined(mrb, mod, id)){
mrb_name_error(mrb, id, "cannot remove %s for %s", mrb_name_error(mrb, id, "cannot remove %S for %S",
mrb_sym2name(mrb, id), mrb_class_name(mrb, mrb_class_ptr(mod))); mrb_sym2str(mrb, id), mod);
} }
mrb_name_error(mrb, id, "class variable %s not defined for %s", 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_sym2str(mrb, id), mod);
/* not reached */ /* not reached */
return mrb_nil_value(); return mrb_nil_value();
...@@ -1645,8 +1645,9 @@ mrb_mod_method_defined(mrb_state *mrb, mrb_value mod) ...@@ -1645,8 +1645,9 @@ mrb_mod_method_defined(mrb_state *mrb, mrb_value mod)
} }
static void 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; khash_t(mt) *h = c->mt;
khiter_t k; khiter_t k;
...@@ -1658,8 +1659,8 @@ remove_method(mrb_state *mrb, struct RClass *c, mrb_sym mid) ...@@ -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_name_error(mrb, mid, "method `%S' not defined in %S",
mrb_sym2name(mrb, mid), mrb_class_name(mrb, c)); mrb_sym2str(mrb, mid), mod);
} }
/* 15.2.2.4.41 */ /* 15.2.2.4.41 */
...@@ -1674,13 +1675,12 @@ remove_method(mrb_state *mrb, struct RClass *c, mrb_sym mid) ...@@ -1674,13 +1675,12 @@ remove_method(mrb_state *mrb, struct RClass *c, mrb_sym mid)
mrb_value mrb_value
mrb_mod_remove_method(mrb_state *mrb, mrb_value mod) mrb_mod_remove_method(mrb_state *mrb, mrb_value mod)
{ {
struct RClass *c = mrb_class_ptr(mod);
int argc; int argc;
mrb_value *argv; mrb_value *argv;
mrb_get_args(mrb, "*", &argv, &argc); mrb_get_args(mrb, "*", &argv, &argc);
while (argc--) { while (argc--) {
remove_method(mrb, c, mrb_symbol(*argv)); remove_method(mrb, mod, mrb_symbol(*argv));
argv++; argv++;
} }
return mod; return mod;
...@@ -1694,7 +1694,7 @@ check_const_name(mrb_state *mrb, mrb_sym id) ...@@ -1694,7 +1694,7 @@ check_const_name(mrb_state *mrb, mrb_sym id)
s = mrb_sym2name_len(mrb, id, &len); s = mrb_sym2name_len(mrb, id, &len);
if (len < 1 || !ISUPPER(*s)) { 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) ...@@ -1743,7 +1743,7 @@ mrb_mod_remove_const(mrb_state *mrb, mrb_value mod)
check_const_name(mrb, id); check_const_name(mrb, id);
val = mrb_iv_remove(mrb, mod, id); val = mrb_iv_remove(mrb, mod, id);
if (mrb_undef_p(val)) { 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; return val;
} }
......
...@@ -292,18 +292,14 @@ mrb_raisef(mrb_state *mrb, struct RClass *c, const char *fmt, ...) ...@@ -292,18 +292,14 @@ mrb_raisef(mrb_state *mrb, struct RClass *c, const char *fmt, ...)
void void
mrb_name_error(mrb_state *mrb, mrb_sym id, const char *fmt, ...) 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; va_list args;
char buf[256];
int n;
va_start(args, fmt); va_start(args, fmt);
n = vsnprintf(buf, sizeof(buf), fmt, args); argv[0] = mrb_vformat(mrb, fmt, args);
va_end(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 */ argv[1] = mrb_symbol_value(id); /* ignore now */
exc = mrb_class_new_instance(mrb, 1, argv, E_NAME_ERROR); exc = mrb_class_new_instance(mrb, 1, argv, E_NAME_ERROR);
mrb_exc_raise(mrb, exc); mrb_exc_raise(mrb, exc);
......
...@@ -12,6 +12,7 @@ int sysexit_status(mrb_state *mrb, mrb_value err); ...@@ -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 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 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_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_name_error(mrb_state *mrb, mrb_sym id, const char *fmt, ...);
void mrb_exc_print(mrb_state *mrb, struct RObject *exc); void mrb_exc_print(mrb_state *mrb, struct RObject *exc);
......
...@@ -556,7 +556,7 @@ check_iv_name(mrb_state *mrb, mrb_sym id) ...@@ -556,7 +556,7 @@ check_iv_name(mrb_state *mrb, mrb_sym id)
s = mrb_sym2name_len(mrb, id, &len); s = mrb_sym2name_len(mrb, id, &len);
if (len < 2 || !(s[0] == '@' && s[1] != '@')) { 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) ...@@ -964,7 +964,7 @@ mrb_obj_remove_instance_variable(mrb_state *mrb, mrb_value self)
check_iv_name(mrb, sym); check_iv_name(mrb, sym);
val = mrb_iv_remove(mrb, self, sym); val = mrb_iv_remove(mrb, self, sym);
if (mrb_undef_p(val)) { 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; return val;
} }
......
...@@ -503,7 +503,7 @@ mrb_to_integer(mrb_state *mrb, mrb_value val, const char *method) ...@@ -503,7 +503,7 @@ mrb_to_integer(mrb_state *mrb, mrb_value val, const char *method)
if (mrb_fixnum_p(val)) return val; if (mrb_fixnum_p(val)) return val;
v = convert_type(mrb, val, "Integer", method, TRUE); v = convert_type(mrb, val, "Integer", method, TRUE);
if (!mrb_obj_is_kind_of(mrb, v, mrb->fixnum_class)) { if (!mrb_obj_is_kind_of(mrb, v, mrb->fixnum_class)) {
mrb_raisef(mrb, E_TYPE_ERROR, "can't convert %s to Integer (%S#%S gives %S)", mrb_raisef(mrb, E_TYPE_ERROR, "can't convert %S to Integer (%S#%S gives %S)",
val, val, mrb_str_new_cstr(mrb, method), v); val, val, mrb_str_new_cstr(mrb, method), v);
} }
return v; return v;
......
...@@ -464,20 +464,19 @@ localjump_error(mrb_state *mrb, localjump_error_kind kind) ...@@ -464,20 +464,19 @@ localjump_error(mrb_state *mrb, localjump_error_kind kind)
static void static void
argnum_error(mrb_state *mrb, int num) argnum_error(mrb_state *mrb, int num)
{ {
char buf[256];
size_t len;
mrb_value exc; mrb_value exc;
mrb_value str;
if (mrb->ci->mid) { if (mrb->ci->mid) {
len = snprintf(buf, sizeof(buf), "'%s': wrong number of arguments (%d for %d)", str = mrb_format(mrb, "'%S': wrong number of arguments (%S for %S)",
mrb_sym2name(mrb, mrb->ci->mid), mrb_sym2str(mrb, mrb->ci->mid),
mrb->ci->argc, num); mrb_fixnum_value(mrb->ci->argc), mrb_fixnum_value(num));
} }
else { else {
len = snprintf(buf, sizeof(buf), "wrong number of arguments (%d for %d)", str = mrb_format(mrb, "wrong number of arguments (%S for %S)",
mrb->ci->argc, num); mrb_fixnum_value(mrb->ci->argc), mrb_fixnum_value(num));
} }
exc = mrb_exc_new(mrb, E_ARGUMENT_ERROR, buf, len); exc = mrb_exc_new3(mrb, E_ARGUMENT_ERROR, str);
mrb->exc = mrb_obj_ptr(exc); mrb->exc = mrb_obj_ptr(exc);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment