def inner
while true
yield
end
puts "Should never appear"
end
end
['something'].each do
A.new.outer
puts "1"
end
A.new.outer
puts "2"
Then comment out the something each block and rerun it. The first
run will look like:
1
2
The second run will look like:
Should never appear
2
For consistencies sake, I would have expected the first run to look like:
1
Should never appear
2
By virtue of previously calling outer in a block the second call to outer
now has different behavior (even though to me they look totally unrelated).
Can someone explain why this is?
In message "Re: Odd break behavior?" on Sun, 19 Feb 2006 02:14:37 +0900, Thomas E Enebo <enebo@acm.org> writes:
I am trying to determine the proper behavior to fix break in jruby.
Was what I expected the proper behavior?
"break" should always terminate the lexically innermost loop or block.
In this case, invocation of "inner" should have been terminated. A
bug cause termination of while loop (the closest loop in dynamic call
graph) in the definition of "inner" erroneously.