Project

General

Profile

Actions

Bug #5071

closed

Inconsistent non-local return behavior inside a lambda

Added by headius (Charles Nutter) over 12 years ago. Updated about 11 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-darwin10.8.0]
[ruby-core:38361]

Description

These two cases should be the same:

~/projects/jruby $ rvm use ruby-1.8.7
Using /Users/headius/.rvm/gems/ruby-1.8.7-p352

~/projects/jruby $ ruby -e "def foo; l = lambda { return 1 }; p l.call; 'ok'; end; p foo"
1
"ok"

~/projects/jruby $ ruby -e "def foo; l = lambda { 1.times { return 1 } }; p l.call; 'ok'; end; p foo"
1

They are the same when running under 1.9.2 or any mode of JRuby. I file this bug because we encountered the difference and feel like 1.8.7 is wrong here. The return is contained within a lambda, and it should return to that level. Wrapping the return in another block should not cause it to suddenly start propagating all the way out of the method.

I would be satisfied to know this is a bug in 1.8.7, whether it will be fixed or not, so we know not to implement the broken behavior in JRuby (we probably won't anyway, but I'd feel better about that decision.)

Updated by headius (Charles Nutter) over 11 years ago

This should be fixed if 1.8 is open 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.

Actions

Also available in: Atom PDF

Like0
Like0Like0