Issue #14639 has been updated by nagachika (Tomoyuki Chikanaga).

Backport changed from 2.3: DONTNEED, 2.4: REQUIRED, 2.5: REQUIRED to 2.3: DONTNEED, 2.4: REQUIRED, 2.5: DONE

ruby_2_5 r64996 merged revision(s) 63030.

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

* Author: lenwood (Paul Martensen)
* Status: Closed
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: 2.4.1+
* Backport: 2.3: DONTNEED, 2.4: REQUIRED, 2.5: DONE
----------------------------------------
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>