Issue #1034 has been updated by kosaki (Motohiro KOSAKI).

Description updated
Status changed from Assigned to Closed

1.8 is dead.
----------------------------------------
Bug #1034: Ruby 1.8 evaluates block argument out of order from other arguments and receiver
https://bugs.ruby-lang.org/issues/1034#change-37640

Author: headius (Charles Nutter)
Status: Closed
Priority: Normal
Assignee: matz (Yukihiro Matsumoto)
Category: 
Target version: 
ruby -v: Ruby 1.8


=begin
 In Ruby 1.9 and all alternative impls I tested, block arguments are evaluated in the order they're encountered in a call. For example:
 
 a.foo(b, c, &d)
 
 The expected order would be left to right, a, then b, then c, then d. But Ruby 1.8 evaluates in the order d, a, b, c. In a case like the following (somewhat contrived) this would have odd side effects:
 
 x = 0
 (x += 1; a).foo(x += 1, x += 1, &(x += 1, d))
 
 In 1.8, the two non-block arguments would be 3, 4, while on Ruby 1.9 and other impls it would be 2, 3 as you'd expect.
=end



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