Project

General

Profile

Actions

Bug #1034

closed

Ruby 1.8 evaluates block argument out of order from other arguments and receiver

Added by headius (Charles Nutter) almost 16 years ago. Updated over 11 years ago.

Status:
Closed
Target version:
-
ruby -v:
Ruby 1.8
[ruby-core:21496]

Description

=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

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0