ruby-changes:11398
From: knu <ko1@a...>
Date: Fri, 20 Mar 2009 22:56:42 +0900 (JST)
Subject: [ruby-changes:11398] Ruby:r23019 (ruby_1_8): * object.c (rb_convert_type, rb_to_integer)
knu 2009-03-20 22:56:34 +0900 (Fri, 20 Mar 2009) New Revision: 23019 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=23019 Log: * object.c (rb_convert_type, rb_to_integer) (rb_check_convert_type): Improve error messages. Modified files: branches/ruby_1_8/ChangeLog branches/ruby_1_8/object.c Index: ruby_1_8/ChangeLog =================================================================== --- ruby_1_8/ChangeLog (revision 23018) +++ ruby_1_8/ChangeLog (revision 23019) @@ -1,3 +1,8 @@ +Fri Mar 20 22:55:00 2009 Akinori MUSHA <knu@i...> + + * object.c (rb_convert_type, rb_to_integer) + (rb_check_convert_type): Improve error messages. + Fri Mar 20 18:41:53 2009 Akinori MUSHA <knu@i...> * array.c (Array#try_convert): New method backported from 1.9. Index: ruby_1_8/object.c =================================================================== --- ruby_1_8/object.c (revision 23018) +++ ruby_1_8/object.c (revision 23019) @@ -2242,8 +2242,9 @@ 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); + const char *cname = rb_obj_classname(val); + rb_raise(rb_eTypeError, "can't convert %s to %s (%s#%s gives %s)", + cname, tname, cname, method, rb_obj_classname(v)); } return v; } @@ -2261,8 +2262,9 @@ 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); + const char *cname = rb_obj_classname(val); + rb_raise(rb_eTypeError, "can't convert %s to %s (%s#%s gives %s)", + cname, tname, cname, method, rb_obj_classname(v)); } return v; } @@ -2275,8 +2277,9 @@ { 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); + const char *cname = rb_obj_classname(val); + rb_raise(rb_eTypeError, "can't convert %s to Integer (%s#%s gives %s)", + cname, cname, method, rb_obj_classname(v)); } return v; } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/