Issue #11860 has been updated by Colin Fulton.


A similar bug happens when using the double splat operator in the parameter list of a method definition. See #12022.

----------------------------------------
Bug #11860: Double splat does not work on empty hash assigned via variable
https://bugs.ruby-lang.org/issues/11860#change-56989

* Author: Tsuyoshi Sawada
* Status: Open
* Priority: Normal
* Assignee: 
* ruby -v: 2.3.0preview2 (2015-12-11 trunk 53028) [x86_64-linux]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
When an empty hash is given as a literal, the double splat operates on it, and leaves nothing, which is expected.

    class String
      def foo; end
    end

    [**{}] # => []
    "foo".foo(**{}) # => nil
    "foo".send(**{}) # => nil

However, when an empty hash is given via variable, the double splat retains an empty hash in place.

    h = {}

    [**h] # => [{}]
    "foo".foo(**h) # => wrong number of arguments (given 1, expected 0)
    "foo".send(**h) # => wrong number of arguments (given 1, expected 0)



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