Bug #11860
Updated by sawa (Tsuyoshi Sawada) over 6 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)
```