summaryrefslogtreecommitdiff
path: root/class.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-10-21 20:17:27 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-10-21 20:17:27 +0000
commit7eac66b9c6a79a89900945e68e3eff457cf1cb7e (patch)
tree48808afb6ef57e0c9c0d0ea9503b6e5d7fd7c472 /class.c
parentb20521ddc595cfbf9b0d95c54da42151bcef4d96 (diff)
* object.c (rb_obj_inspect): print instance variables only when
Object#to_s is not overridden. [ruby-core:24425] * class.c (rb_obj_basic_to_s_p): new function. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25428 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'class.c')
-rw-r--r--class.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/class.c b/class.c
index 865197b843..0f4394d97d 100644
--- a/class.c
+++ b/class.c
@@ -1257,6 +1257,16 @@ rb_define_attr(VALUE klass, const char *name, int read, int write)
rb_attr(klass, rb_intern(name), read, write, FALSE);
}
+int
+rb_obj_basic_to_s_p(obj)
+{
+ const rb_method_entry_t *me = rb_method_entry(CLASS_OF(obj), rb_intern("to_s"));
+ if (me && me->def && me->def->type == VM_METHOD_TYPE_CFUNC &&
+ me->def->body.cfunc.func == rb_any_to_s)
+ return 1;
+ return 0;
+}
+
#include <stdarg.h>
int