Issue #9025 has been updated by phluid61 (Matthew Kerwin).


fuadksd (Fuad Saud) wrote:
> I like the "expected" wording. Also, wouldn't help a little to print the method name? May help to identify what's wrong faster.

The first line of the error's backtrace gives the filename and line number of the bad call.  If that line has so many method calls that you can't work out which one is wrong, perhaps *that* is the true cause of the error.
----------------------------------------
Feature #9025: Clarify the error message when calling a method with the wrong number of arguments
https://bugs.ruby-lang.org/issues/9025#change-42492

Author: Nerian (Gonzalo Rodríguez)
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 


Currently when calling a method with the wrong number of arguments we get a confusing error message:

    ArgumentError: wrong number of arguments (1 for 0)

That means that the method was meant to accept 0 arguments, but 1 was provided instead. This error message is confusing, and a large number of people had to search for its meaning. For example [1] has 11000 views.

I propose that we change the error message to something whose meaning is obvious. Examples:

*  ArgumentError: wrong number of arguments (expected: 1,  provided: 0)
*  ArgumentError: wrong number of arguments (1 instead of 0)

This ticket originated from this pull request: https://github.com/ruby/ruby/pull/367

[1] http://stackoverflow.com/questions/7537450/what-does-wrong-number-of-arguments-1-for-0-mean-in-ruby


-- 
http://bugs.ruby-lang.org/