Issue #9291 has been updated by Marc-Andre Lafortune.

Assignee set to Yukihiro Matsumoto

Currently, `*` uses explicit conversion to array (`to_a`, not `to_ary`), while `**` uses implicit conversion to hash (`to_hash`, not `to_h`).

So your question about `nil` can be explained this way, since `nil.to_a #=> []` but `nil.to_hash` is not defined.

The real question is then: shouldn't `**` be using explicit conversion to hash with to_h?

----------------------------------------
Bug #9291: array splatting a nil works, but hash splatting a nil does not
https://bugs.ruby-lang.org/issues/9291#change-48279

* Author: First Last
* Status: Open
* Priority: Normal
* Assignee: Yukihiro Matsumoto
* Category: 
* Target version: 
* ruby -v: ruby 2.0.0p353 (2013-11-22 revision 43784) [i686-linux]
* Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
irb(main):001:0> [*nil]
=> []
irb(main):002:0> {**nil}
TypeError: no implicit conversion of nil into Hash




-- 
https://bugs.ruby-lang.org/