Issue #5857 has been updated by Nobuyoshi Nakada.

Priority changed from High to Low


----------------------------------------
Bug #5857: no block given with redefined method although block given
https://bugs.ruby-lang.org/issues/5857

Author: patrick hanevold
Status: Rejected
Priority: Low
Assignee: 
Category: core
Target version: 
ruby -v: 1.9 or later


Please help me understand if this really is a bug or not. It seems so very like it.
The second yielder gives a no block given exception on the yield, and I cant see how thats right, and it is called with a code block.

class Foo
  def yielder
    yield "hello"
  end
end

class Mod

  def initialize
    @@foo = Foo.new
  end

  def self.foo
    @@foo
  end

end

worker = Mod.new

Mod.foo.yielder do |hello|
   puts hello
end

Mod.foo.class.send(:define_method,:yielder) do
   yield "new hello"
end

Mod.foo.yielder do |hello|
   puts hello
end

Gives:

hello
test.rb:27:in `block in <main>': no block given (yield) (LocalJumpError)
    from test.rb:30:in `<main>'



-- 
http://redmine.ruby-lang.org