Actions
Bug #15629
closedsuper_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 5 years ago
- Related to Bug #13973: super_method fails on some UnboundMethods added
Updated by jeremyevans0 (Jeremy Evans) about 5 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 5 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
Like0
Like0Like0Like0