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
Related issues
Associated revisions
History
Updated by wanabe (_ wanabe) 9 months ago
- Related to Bug #13973: super_method fails on some UnboundMethods added
Updated by jeremyevans0 (Jeremy Evans) 2 months 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) 2 days 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]
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]