Actions
Bug #9393
closedStrange behavior of DelegateClass + loop + method_missing
Bug #9393:
Strange behavior of DelegateClass + loop + method_missing
Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
2.1.0-p0
Description
Having the following class in Ruby 2.1:
require 'delegate'
class A < DelegateClass(Hash)
def a
loop do
::Kernel.p 'A'
break
end
end
end
After calling A.new({}).a the output is "A".
However if method_missing is added to the class:
class A < DelegateClass(Hash)
def a
loop do
::Kernel.p 'A'
break
end
end
def method_missing(method, *args, &block)
::Kernel.p method
end
end
Then after calling A.new({}).a, the output is somewhat unexpected: :loop. That actually means that :loop method cannot be found and the block within the loop will not run. Is that the right behavior?
Ruby 2.0 returns "A" in both cases.
Actions