Forum: Ruby-core [Ruby 1.8 - Bug #5926][Open] Procs created by Method#to_proc do not pass block through.

Posted by Charles Nutter (headius)
on 2012-01-24 06:32
(Received via mailing list)
Issue #5926 has been reported by Charles Nutter.

----------------------------------------
Bug #5926: Procs created by Method#to_proc do not pass block through.
https://bugs.ruby-lang.org/issues/5926

Author: Charles Nutter
Status: Open
Priority: Normal
Assignee:
Category: core
Target version:
ruby -v: ruby 1.8.7 (2011-12-28 patchlevel 357) [i686-darwin10.8.0]


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.
Posted by Charles Nutter (headius)
on 2012-11-16 17:32
(Received via mailing list)
Issue #5926 has been updated by headius (Charles Nutter).


This should be fixed (if 1.8 is still open for fixes) or closed (if it 
is not).
----------------------------------------
Bug #5926: Procs created by Method#to_proc do not pass block through.
https://bugs.ruby-lang.org/issues/5926#change-32977

Author: headius (Charles Nutter)
Status: Open
Priority: Normal
Assignee:
Category: core
Target version:
ruby -v: ruby 1.8.7 (2011-12-28 patchlevel 357) [i686-darwin10.8.0]


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.
Posted by kosaki (Motohiro KOSAKI) (Guest)
on 2013-03-15 19:20
(Received via mailing list)
Issue #5926 has been updated by kosaki (Motohiro KOSAKI).

Status changed from Open to Closed

1.8 is dead.
----------------------------------------
Bug #5926: Procs created by Method#to_proc do not pass block through.
https://bugs.ruby-lang.org/issues/5926#change-37638

Author: headius (Charles Nutter)
Status: Closed
Priority: Normal
Assignee:
Category: core
Target version:
ruby -v: ruby 1.8.7 (2011-12-28 patchlevel 357) [i686-darwin10.8.0]


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.
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.