summaryrefslogtreecommitdiff
path: root/object.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-01-22 18:06:38 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-01-22 18:06:38 +0000
commit7df46a4493ea5b261aab64d482a840fbd57ffcca (patch)
tree2b3b22e449e52864de182a86958153eeee333b2e /object.c
parentedddc369705fa3d12f18f850d49e5362d011f72f (diff)
* pack.c (num2i32): pack should not raise RangeError.
[ruby-dev:22654] * pack.c (pack_pack): do not auto convert nil to zero. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5542 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'object.c')
-rw-r--r--object.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/object.c b/object.c
index cccb56fec1..5e77630820 100644
--- a/object.c
+++ b/object.c
@@ -2004,8 +2004,9 @@ rb_convert_type(val, type, tname, method)
if (TYPE(val) == type) return val;
v = convert_type(val, tname, method, Qtrue);
if (TYPE(v) != type) {
- rb_raise(rb_eTypeError, "%s#%s should return %s",
- rb_obj_classname(val), method, tname);
+ char *cname = rb_obj_classname(val);
+ rb_raise(rb_eTypeError, "cannot convert %s to %s (%s#%s gives %s)",
+ cname, tname, cname, method, rb_obj_classname(v));
}
return v;
}
@@ -2023,8 +2024,9 @@ rb_check_convert_type(val, type, tname, method)
v = convert_type(val, tname, method, Qfalse);
if (NIL_P(v)) return Qnil;
if (TYPE(v) != type) {
- rb_raise(rb_eTypeError, "%s#%s should return %s",
- rb_obj_classname(val), method, tname);
+ char *cname = rb_obj_classname(val);
+ rb_raise(rb_eTypeError, "cannot convert %s to %s (%s#%s gives %s)",
+ cname, tname, cname, method, rb_obj_classname(v));
}
return v;
}
@@ -2037,8 +2039,9 @@ rb_to_integer(val, method)
{
VALUE v = convert_type(val, "Integer", method, Qtrue);
if (!rb_obj_is_kind_of(v, rb_cInteger)) {
- rb_raise(rb_eTypeError, "%s#%s should return Integer",
- rb_obj_classname(val), method);
+ char *cname = rb_obj_classname(val);
+ rb_raise(rb_eTypeError, "cannot convert %s to Integer (%s#%s gives %s)",
+ cname, cname, method, rb_obj_classname(v));
}
return v;
}