From: Damien.Olivier.Robert+ruby@... Date: 2015-01-07T15:49:13+00:00 Subject: [ruby-core:67394] [ruby-trunk - Bug #10708] [Open] In a function call, double splat of an empty hash still calls the function with an argument Issue #10708 has been reported by Damien Robert. ---------------------------------------- Bug #10708: In a function call, double splat of an empty hash still calls the function with an argument https://bugs.ruby-lang.org/issues/10708 * Author: Damien Robert * Status: Open * Priority: Normal * Assignee: * Category: * Target version: * ruby -v: ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- Consider this: def foo; end foo(*[]) #Splatting an empty list is ok foo(**{}) #Double splatting an empty hash is like calling foo({}) which gives an error This is annoying in a function that is a wrapper around another function and just process some keywords: def wrapper(*args, keyword: true, **others) puts keyword wrappee(*args,**others) #here this code will fail if others is empty end -- https://bugs.ruby-lang.org/