Project

General

Profile

Bug #15629

super_method fails on binded/unbinded/cloned methods

Added by wanabe (_ wanabe) 9 months ago. Updated about 2 months ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:91649]

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

super_method-bind-unbind-clone-15629.patch (4.85 KB) super_method-bind-unbind-clone-15629.patch jeremyevans0 (Jeremy Evans), 10/02/2019 10:23 PM

Related issues

Related to Ruby master - Bug #13973: super_method fails on some UnboundMethodsClosedActions

History

#1

Updated by wanabe (_ wanabe) 9 months ago

  • Related to Bug #13973: super_method fails on some UnboundMethods added

Updated by jeremyevans0 (Jeremy Evans) about 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.

Also available in: Atom PDF