Fix TypeError messages
authorh2so5 <[email protected]>
Thu, 11 Apr 2013 10:47:35 +0000 (11 19:47 +0900)
committerh2so5 <[email protected]>
Thu, 11 Apr 2013 10:47:35 +0000 (11 19:47 +0900)
mrbgems/mruby-array-ext/mrblib/array.rb
src/object.c

index b3ff9bf..65ea717 100644 (file)
@@ -20,7 +20,7 @@ class Array
   end
 
   def -(elem)
-    raise TypeError, "can't convert to Array" unless elem.class == Array
+    raise TypeError, "can't convert #{elem.class.to_s} into Array" unless elem.class == Array
 
     hash = {}
     array = []
@@ -30,14 +30,14 @@ class Array
   end
 
   def |(elem)
-    raise TypeError, "can't convert to Array" unless elem.class == Array
+    raise TypeError, "can't convert #{elem.class.to_s} into Array" unless elem.class == Array
 
     ary = self + elem
     ary.uniq! or ary
   end
 
   def &(elem)
-    raise TypeError, "can't convert to Array" unless elem.class == Array
+    raise TypeError, "can't convert #{elem.class.to_s} into Array" unless elem.class == Array
 
     hash = {}
     array = []
index 23786e8..9625137 100644 (file)
@@ -305,7 +305,9 @@ 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", val, mrb_str_new_cstr(mrb, tname));
+      const char *cname = mrb_obj_classname(mrb, val);
+      mrb_raisef(mrb, E_TYPE_ERROR, "can't convert %S into %S",
+                 mrb_str_new_cstr(mrb, cname), mrb_str_new_cstr(mrb, tname));
       return mrb_nil_value();
     }
     else {