[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]