From: ruby-core@... Date: 2014-10-07T19:56:39+00:00 Subject: [ruby-core:65489] [ruby-trunk - Bug #10291] Strange behaviour of splat in Ruby 2.0.0 Issue #10291 has been updated by Marc-Andre Lafortune. Duplicates Bug #9622: Extra method arguments are magically swallowed after first successful call, possible method cache bug added ---------------------------------------- Bug #10291: Strange behaviour of splat in Ruby 2.0.0 https://bugs.ruby-lang.org/issues/10291#change-49265 * Author: siddharth sharma * Status: Closed * Priority: Normal * Assignee: * Category: * Target version: * ruby -v: 2.0.0 * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- In Ruby 1.9.3, when a method defined with some required number of arguments, method always checks the number of required arguments when called with a splat. But in ruby 2.0.0, when a method defined with some required number of arguments, method checks the number of arguments when called with a splat, but does not check the number of arguments after first successful call. Method method_called_with splat will check number of arguments in the first call, but after first successful method call, method_called_with splat wont check number of arguments it is being called with. This happens only when the arguments go through the same splat. ~~~ Case 1(it is not working fine) def method_called_with splat(argument) p argument end def method_accepting_any_number_of_arguments(*args) method_called_with splat(*args) end ~~~ The issue wont come in this case, as the successful call is from one splat and other calls are from the other splat. ~~~ Case 2(it is working fine) def method_called_with splat(argument) p argument end def method_accepting_any_number_of_arguments(*args) (args.length == 1) ? method_called_with splat(*args) : method_called_with splat(*args) end ~~~ -- https://bugs.ruby-lang.org/