Method#inspect for chaining alias methods
The following script prints strange results (at least for me).
class C0 def foo end end class C1 < C0 alias foo1 foo alias foo2 foo1 alias foo3 foo2 end p C1.new.method(:foo) p C1.new.method(:foo1) p C1.new.method(:foo2) p C1.new.method(:foo3)
#<Method: C1(C0)#foo> #<Method: C1(C0)#foo1(foo)> #<Method: C1#foo2(foo)> #<Method: C1#foo3(foo)>
I believe 3rd and 4th results should be:
#<Method: C1(C0)#foo2(foo)> #<Method: C1(C0)#foo3(foo)>
How about it?
Updated by jeremyevans0 (Jeremy Evans) over 1 year ago
I agree with ko1's opinion. Attached is a patch that implements his proposal.
Note that this change cannot be made in
method_inspect, because at that time, the necessary information has already been lost. To implement ko1's proposal, changes to
rb_alias are required, so that the
defined_class in the alias chain methods (
foo3) is set correctly to