From: akostadinov@... Date: 2015-06-08T21:05:20+00:00 Subject: [ruby-core:69494] [Ruby trunk - Bug #11236] [Open] inconsistent behavior using ** vs hash as method parameter Issue #11236 has been reported by Aleksandar Kostadinov. ---------------------------------------- Bug #11236: inconsistent behavior using ** vs hash as method parameter https://bugs.ruby-lang.org/issues/11236 * Author: Aleksandar Kostadinov * Status: Open * Priority: Normal * Assignee: * 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/