Actions
Bug #15629
closedsuper_method fails on binded/unbinded/cloned methods
Bug #15629: super_method fails on binded/unbinded/cloned methods
Description
derived from #13973:
module A def foo end end module B def foo end end class C include A include B end c = C.new m1 = c.method(:foo) p m1.super_method # => #<Method: A#foo> p m1.clone.super_method # => nil p m1.unbind.super_method # => nil m2 = C.instance_method(:foo) p m2.super_method # => #<UnboundMethod: A#foo> p m2.clone.super_method # => nil p m2.bind(c).super_method # => nil super_method of binded/unbinded/cloned method should be super_method of original method, shouldn't it?
Files
Updated by wanabe (_ wanabe) over 6 years ago
- Related to Bug #13973: super_method fails on some UnboundMethods added
Updated by jeremyevans0 (Jeremy Evans) about 6 years ago
This bug is due to the fact that bind/unbind/clone do not copy the iclass entry, and without an iclass entry, super_method returns nil. Attached is a patch that fixes this issue.
Updated by jeremyevans (Jeremy Evans) almost 6 years ago
- Status changed from Open to Closed
Applied in changeset git|a91637c516779d9ecee5f323e211f0ed71eb06ad.
Make {Method,UnboundMethod}#super_method handle clone/bind/unbind
This wasn't working previously because the iclass entry wasn't
being copied, and without an iclass entry, super_method returns
nil.
Fixes [Bug #15629]
Actions