[ruby-core:94692] [Ruby master Bug#11236] inconsistent behavior using ** vs hash as method parameter

From: merch-redmine@...
Date: 2019-08-30 21:39:07 UTC
List: ruby-core #94692
Issue #11236 has been updated by jeremyevans0 (Jeremy Evans).

Status changed from Open to Closed

With the the changes in #14183, keyword splats can support arbitrary keys, and the second example now passes:

```ruby
test(:ads, :d => 6, :f => :gah, {a:3,b:4} => 3)
# ads
# {:d=>6, :f=>:gah, {:a=>3, :b=>4}=>3}
```

----------------------------------------
Bug #11236: inconsistent behavior using ** vs hash as method parameter
https://bugs.ruby-lang.org/issues/11236#change-81298

* Author: akostadinov (Aleksandar Kostadinov)
* Status: Closed
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
Using ruby 2.2.2 I see this work:

~~~
[18] pry(main)> def test(cmd, opts={})
[18] pry(main)*   puts cmd,opts
[18] pry(main)* end  
=> :test
[19] pry(main)> test(:ads, :d => 6, :f => :gah, {a:3,b:4} => 3)
ads
{:d=>6, :f=>:gah, {:a=>3, :b=>4}=>3}
=> nil
~~~

But this fails:

~~~
[2] pry(main)> def test(cmd, **opts)
[2] pry(main)*   puts cmd, opts
[2] pry(main)* end  
[9] pry(main)> test(:ads, :d => 6, :f => :gah, {a:3,b:4} => 3)
ArgumentError: wrong number of arguments (2 for 1)
from (pry):2:in `test'
~~~



-- 
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>

In This Thread

Prev Next