Bug #11860
Updated by sawa (Tsuyoshi Sawada) over 5 years ago
When an empty hash is given as a literal, the double splat operates on it, and leaves nothing, which is expected. ```ruby class String def foo; end end [**{}] # => [] "foo".foo(**{}) # => nil "foo".send("foo", **{}) "foo".send(**{}) # => nil ``` However, when an empty hash is given via variable, the double splat retains an empty hash in place. ```ruby h = {} [**h] # => [{}] "foo".foo(**h) # => wrong number of arguments (given 1, expected 0) "foo".send("foo", **h) "foo".send(**h) # => wrong number of arguments (given 1, expected 0) ```