[ruby-core:94716] [Ruby master Bug#10293] splatting an empty hash in a method invocation sends an argument to the method (should send nothing)
From:
merch-redmine@...
Date:
2019-09-02 04:33:17 UTC
List:
ruby-core #94716
Issue #10293 has been updated by jeremyevans0 (Jeremy Evans).
Status changed from Assigned to Closed
With the acceptance of #14183, double splatting an empty hash no longer sends an empty positional hash to the method.
----------------------------------------
Bug #10293: splatting an empty hash in a method invocation sends an argument to the method (should send nothing)
https://bugs.ruby-lang.org/issues/10293#change-81327
* Author: rits (First Last)
* Status: Closed
* Priority: Normal
* Assignee: nobu (Nobuyoshi Nakada)
* Target version:
* ruby -v: ruby 2.1.3p242 (2014-09-19 revision 47630) [x86_64-linux]
* Backport: 2.0.0: UNKNOWN, 2.1: REQUIRED
----------------------------------------
irb(main):001:0> def foo; end; foo **{}
ArgumentError: wrong number of arguments (1 for 0)
note that splatting an empty array results in no arguments
this behavior is particularly problematic with send (dispatching to different methods)
send method_name, *possibly_empty_arg_list, **possibly_empty_keyarg_hash
one should not have to do
if possibly_empty_keyarg_hash.empty?
receiver.send method_name, *possibly_empty_arg_list
else
receiver.send method_name, *possibly_empty_arg_list, **possibly_empty_keyarg_hash
end
or
possibly_empty_arg_list << possibly_empty_keyarg_hash unless possibly_empty_keyarg_hash.empty?
receiver.send method_name, *possibly_empty_arg_list
--
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>