Issue #14639 has been updated by marcandre (Marc-Andre Lafortune).

Subject changed from Array#map and lambda arity change to Array#map and lambda arity regression

Good checking.

Indeed, #9605 introduced lambda arity relaxation and this announced in the 2.2 NEWS.

Looks like a regression was introduced by #12705?



----------------------------------------
Bug #14639: Array#map and lambda arity regression
https://bugs.ruby-lang.org/issues/14639#change-71294

* Author: lenwood (Paul Martensen)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: 2.4.1+
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
From ruby 2.4.1 onward the following script breaks (ArgumentError):

~~~ ruby
print_three = ->(a, b, c) { puts [a, b, c] }
arr = [[1, 2, 3]]

arr.map(&print_three)
~~~

This now requires explicit destructuring:

~~~ ruby
print_three = ->((a, b, c)) { puts [a, b, c] }
~~~

I guess this comes from a change in enum.c (line 45) from #9605 which seems to be similar.

While digging around I found https://bugs.ruby-lang.org/projects/ruby-trunk/repository/revisions/48193/diff that seems to address this very issue but I'm not sure.

If this is expected behavior feel free to disregard this.

First time posting to ruby trunk so I'm sorry If there is any Information missing. 




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

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>