aboutsummaryrefslogtreecommitdiffstats
path: root/object.c
diff options
context:
space:
mode:
Diffstat (limited to 'object.c')
-rw-r--r--object.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/object.c b/object.c
index f3e5ec241b..1b020beaa3 100644
--- a/object.c
+++ b/object.c
@@ -1336,6 +1336,9 @@ rb_obj_cmp(VALUE obj1, VALUE obj2)
static VALUE
rb_mod_to_s(VALUE klass)
{
+ ID id_refined_class, id_defined_at;
+ VALUE refined_class, defined_at;
+
if (FL_TEST(klass, FL_SINGLETON)) {
VALUE s = rb_usascii_str_new2("#<");
VALUE v = rb_iv_get(klass, "__attached__");
@@ -1353,6 +1356,19 @@ rb_mod_to_s(VALUE klass)
return s;
}
+ CONST_ID(id_refined_class, "__refined_class__");
+ refined_class = rb_attr_get(klass, id_refined_class);
+ if (!NIL_P(refined_class)) {
+ VALUE s = rb_usascii_str_new2("#<refinement:");
+
+ rb_str_concat(s, rb_inspect(refined_class));
+ rb_str_cat2(s, "@");
+ CONST_ID(id_defined_at, "__defined_at__");
+ defined_at = rb_attr_get(klass, id_defined_at);
+ rb_str_concat(s, rb_inspect(defined_at));
+ rb_str_cat2(s, ">");
+ return s;
+ }
return rb_str_dup(rb_class_name(klass));
}