From: ruby-core@... Date: 2017-12-13T18:33:21+00:00 Subject: [ruby-core:84241] [Ruby trunk Bug#14176] Calling method with keyword arguments inconsistent behavior Issue #14176 has been updated by marcandre (Marc-Andre Lafortune). Note that Ruby 2.5 improves this since #13196 if `options` has only symbol keys: asd(42, {a:1}) # => ArgumentError: unknown keyword: a I agree the message could still be improved as you suggest. ---------------------------------------- Bug #14176: Calling method with keyword arguments inconsistent behavior https://bugs.ruby-lang.org/issues/14176#change-68367 * Author: vfonic (Viktor Fonic) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-darwin17] * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- I (wrongly) created a method with the following signature: def asd(first, options: {}); end (notice that options is a keyword argument) I called the method this way: asd(arg, options) And got the following misleading error: ArgumentError: wrong number of arguments (given 2, expected 1) It took me some time to realize that the options argument is a keyword argument: > method(:asd) Object#asd(first, ?) It would be much more helpful if the error would mention this: ArgumentError: wrong number of arguments (given 2, expected 1 and 1 keyword argument: options) Thanks! -- https://bugs.ruby-lang.org/ Unsubscribe: