[#68478] Looking for MRI projects for Ruby Google Summer of Code 2015 — Tony Arcieri <bascule@...>

Hi ruby-core,

10 messages 2015/03/10

[ruby-core:68568] Re: [Ruby trunk - Feature #10982] Clarify location of NoMethod error

From: İsmail Arılık <msms6174@...>
Date: 2015-03-20 07:27:31 UTC
List: ruby-core #68568
```
foo.call && bar.call
NoMethodError: undefined method `call' for nil:NilClass
```

I think this error already states that the method named `call` is undefined
*for* the `nil` object of the `NilClass` class. So it is not necessary to
change 'for' to 'on receiver'.

2015-03-20 0:47 GMT+02:00 <parkrmoore@gmail.com>:

> Issue #10982 has been updated by Parker M.
>
>
> This new syntax is a pretty sizable divergence from traditional Ruby erro=
r
> reporting. At the moment, errors generally (always?) have an accompanying
> stack trace:
>
> ```text
> ~$ ruby errors.rb
> errors.rb:2:in `<main>': undefined method `call' for nil:NilClass
> (NoMethodError)
> ```
>
> It indicates the line, but excludes the column. It's uniform for all
> errors, so users seeing these stack traces know in what file, what line,
> and what method (the binding?) the error occurred. If the proposed format
> were implemented, would it only be for NoMethodError's, or would it apply
> to ArgumentError's or TypeError's, and so on?
>
> Would the column number suffice? So your example would yield:
>
> ```text
> irb:1:16:in `<main>': undefined method `call' for nil:NilClass
> (NoMethodError)
> ```
>
> You'd know that line 1 at column 16 caused the error.
>
> ----------------------------------------
> Feature #10982: Clarify location of NoMethod error
> https://bugs.ruby-lang.org/issues/10982#change-51880
>
> * Author: Richard Schneeman
> * Status: Open
> * Priority: Normal
> * Assignee:
> ----------------------------------------
> In Ruby, the error `NoMethodError` on happens frequently, especially when
> it occurs on `nil`. This error can be confusing to beginners since, many =
of
> them think there is a problem with the method instead of the receiver. Th=
is
> error can be confusing to advanced developers when there are multiple
> method calls in the on the same line. In this example it is unclear if
> `foo` or `bar` returned `nil`:
>
> ```
> foo.call && bar.call
> NoMethodError: undefined method `call' for nil:NilClass
> ```
>
> I would like to make this a better error message and to indicate where th=
e
> exception occurs.
>
> ```
> @foo.call && @bar.call
>                  ^----
> NoMethodError: The method `call` is undefined on receiver nil:NilClass
> ```
>
> Now it is more clear that the `@bar` is currently `nil` and that is the
> source of the error. I believe exposing this information will help
> developers of all abilities.
>
>
>
>
> --
> https://bugs.ruby-lang.org/
>



--=20
=C4=B0yi g=C3=BCnler.
=C4=B0smail Ar=C4=B1l=C4=B1k

In This Thread

Prev Next