Bug #5926
closedProcs created by Method#to_proc do not pass block through.
Description
The Proc object you get back from a Method on which you have called to_proc does not appear to pass blocks through when called. I do not see any reason why it should behave this way.
system ~/projects/rubyspec $ rvm 1.8.7 do ruby -v -e "def foo; yield; end; method(:foo).to_proc.call {puts 'ok'}"
ruby 1.8.7 (2011-12-28 patchlevel 357) [i686-darwin10.8.0]
-e:1:in foo': no block given (LocalJumpError) from -e:1:in
to_proc'
from -e:1:in `call'
from -e:1
system ~/projects/rubyspec $ rvm 1.9.3 do ruby -v -e "def foo; yield; end; method(:foo).to_proc.call {puts 'ok'}"
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin10.8.0]
ok
system ~/projects/rubyspec $ rvm 1.9.2 do ruby -v -e "def foo; yield; end; method(:foo).to_proc.call {puts 'ok'}"
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin10.8.0]
ok
Rubinius already implements it the 1.9 way in both 1.8 and 1.9 modes, and JRuby will do so from version 1.6.6 on.
Updated by headius (Charles Nutter) over 11 years ago
This should be fixed (if 1.8 is still open for fixes) or closed (if it is not).
Updated by kosaki (Motohiro KOSAKI) about 11 years ago
- Status changed from Open to Closed
1.8 is dead.