This project is closed and read-only.
Backport #8367
closedregression in defined?(super) starting with 2.0.0-p0
Description
=begin
Hello,
I have discovered a regression in the behaviour of (({defined?(super)})). It functions as expected in 1.9.3-p392, but has changed in 2.0.0-p0 and in 2.1.0dev (2013-05-03 trunk 40571).
On Ruby 1.9.3, the call returns the string (({"super"})). On 2.0.0-p0 and above, the call returns (({nil})). The change seems to be specific to the inside of a block in a method that is defined in a module that is extended onto the object where the method is called.
This is a minimal reproduction example, which I have also attached as "super-gone.rb".
class C
def x; end
end
module M
def b; yield; end
def x
b do
# On 1.9.3, this is "super", but on 2.0.0 it is nil
p defined?(super)
end
end
end
c = C.new
c.extend M
c.x
Thank you.
=end
Files