summaryrefslogtreecommitdiffhomepage
path: root/src/object.c
diff options
context:
space:
mode:
authorYukihiro Matz Matsumoto <[email protected]>2013-03-27 23:41:23 +0900
committerYukihiro Matz Matsumoto <[email protected]>2013-03-27 23:41:23 +0900
commit18b2683b97ae54d4f2f15c19076f33aa29eaf2b7 (patch)
treef6afd41abfd7b0ad8b76bb5e618e6ee0fbdc6723 /src/object.c
parent8ce842a5d978132c5733cacb7c15bb3d0f5ce66d (diff)
downloadmruby-18b2683b97ae54d4f2f15c19076f33aa29eaf2b7.tar.gz
mruby-18b2683b97ae54d4f2f15c19076f33aa29eaf2b7.zip
use new mrb_format API from mrb_raisef; its only format specifier is "%S" (stringify) and takes mrb_value; close #1062
Diffstat (limited to 'src/object.c')
-rw-r--r--src/object.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/src/object.c b/src/object.c
index b3ec5c5b9..c3a398db8 100644
--- a/src/object.c
+++ b/src/object.c
@@ -305,12 +305,7 @@ convert_type(mrb_state *mrb, mrb_value val, const char *tname, const char *metho
m = mrb_intern(mrb, method);
if (!mrb_respond_to(mrb, val, m)) {
if (raise) {
- mrb_raisef(mrb, E_TYPE_ERROR, "can't convert %s into %s",
- mrb_nil_p(val) ? "nil" :
- (mrb_type(val) == MRB_TT_TRUE) ? "true" :
- (mrb_type(val) == MRB_TT_FALSE) ? "false" :
- mrb_obj_classname(mrb, val),
- tname);
+ mrb_raisef(mrb, E_TYPE_ERROR, "can't convert %S into %S", val, mrb_str_new_cstr(mrb, tname));
return mrb_nil_value();
}
else {
@@ -341,8 +336,8 @@ mrb_convert_type(mrb_state *mrb, mrb_value val, mrb_int type, const char *tname,
if (mrb_type(val) == type) return val;
v = convert_type(mrb, val, tname, method, 1/*Qtrue*/);
if (mrb_type(v) != type) {
- mrb_raisef(mrb, E_TYPE_ERROR, "%s cannot be converted to %s by #%s",
- mrb_obj_classname(mrb, val), tname, method);
+ mrb_raisef(mrb, E_TYPE_ERROR, "%S cannot be converted to %S by #%S", val,
+ mrb_str_new_cstr(mrb, tname), mrb_str_new_cstr(mrb, method));
}
return v;
}
@@ -416,12 +411,13 @@ mrb_check_type(mrb_state *mrb, mrb_value x, enum mrb_vtype t)
else {
etype = mrb_obj_classname(mrb, x);
}
- mrb_raisef(mrb, E_TYPE_ERROR, "wrong argument type %s (expected %s)",
- etype, type->name);
+ mrb_raisef(mrb, E_TYPE_ERROR, "wrong argument type %S (expected %S)",
+ mrb_str_new_cstr(mrb, etype), mrb_str_new_cstr(mrb, type->name));
}
type++;
}
- mrb_raisef(mrb, E_TYPE_ERROR, "unknown type 0x%x (0x%x given)", t, mrb_type(x));
+ mrb_raisef(mrb, E_TYPE_ERROR, "unknown type %S (%S given)",
+ mrb_fixnum_value(t), mrb_fixnum_value(mrb_type(x)));
}
}
@@ -507,9 +503,8 @@ mrb_to_integer(mrb_state *mrb, mrb_value val, const char *method)
if (mrb_fixnum_p(val)) return val;
v = convert_type(mrb, val, "Integer", method, TRUE);
if (!mrb_obj_is_kind_of(mrb, v, mrb->fixnum_class)) {
- const char *cname = mrb_obj_classname(mrb, val);
- mrb_raisef(mrb, E_TYPE_ERROR, "can't convert %s to Integer (%s#%s gives %s)",
- cname, cname, method, mrb_obj_classname(mrb, v));
+ 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);
}
return v;
}