Project

General

Profile

Bug #1034

Updated by kosaki (Motohiro KOSAKI) about 11 years ago

=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 
 

Back