Project

General

Profile

Bug #14176

Unclear error message when calling method with keyword arguments

Added by vfonic (Viktor Fonic) almost 2 years ago. Updated almost 2 years ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-darwin17]
[ruby-core:84240]

Description

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!


Related issues

Related to Ruby master - Bug #13196: Improve keyword argument errors when non-keyword arguments givenClosedActions

History

Updated by marcandre (Marc-Andre Lafortune) almost 2 years ago

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.

#2

Updated by marcandre (Marc-Andre Lafortune) almost 2 years ago

  • Related to Bug #13196: Improve keyword argument errors when non-keyword arguments given added
#3

Updated by marcandre (Marc-Andre Lafortune) almost 2 years ago

  • Subject changed from Calling method with keyword arguments inconsistent behavior to Unclear error message when calling method with keyword arguments

Also available in: Atom PDF