From b14e2b4401db4746cc45ae9e4ce6350f7594f84f Mon Sep 17 00:00:00 2001 From: shugo Date: Fri, 2 Nov 2012 08:53:06 +0000 Subject: * object.c (rb_mod_to_s): Module#{to_s,inspect}, when invoked on a refinement, returns a string in the format #, where C is a refined class and M is a module at which the refinemet is defined. * eval.c (rb_mod_refine): store information on a refinement for the above change. * test/ruby/test_refinement.rb: related test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37424 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- eval.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index 08d20d2204..21c33137f0 100644 --- a/eval.c +++ b/eval.c @@ -1218,7 +1218,7 @@ rb_mod_refine(VALUE module, VALUE klass) { NODE *cref = rb_vm_cref(); VALUE mod; - ID id_refinements, id_refined_class; + ID id_refinements, id_refined_class, id_defined_at; VALUE refinements; if (!rb_block_given_p()) { @@ -1236,6 +1236,8 @@ rb_mod_refine(VALUE module, VALUE klass) mod = rb_module_new(); CONST_ID(id_refined_class, "__refined_class__"); rb_ivar_set(mod, id_refined_class, klass); + CONST_ID(id_defined_at, "__defined_at__"); + rb_ivar_set(mod, id_defined_at, module); rb_define_singleton_method(mod, "method_added", refinement_module_method_added, 1); rb_define_singleton_method(mod, "include", -- cgit v1.2.3