Issue #17348 has been updated by marcandre (Marc-Andre Lafortune).


In Ruby 3, you can write `a[0] => a` and that works :-)

----------------------------------------
Bug #17348: Shadowed method can not be evaluated on the line that it is shadowed
https://bugs.ruby-lang.org/issues/17348#change-88781

* Author: d-snp (Tinco Andringa)
* Status: Rejected
* Priority: Normal
* ruby -v: ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin19]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN
----------------------------------------
I encountered this in the code a junior Rubyist wrote. Rewriting to more logical code solved our problem, but in my opinion it should not have been an error. I reduced the code to this:

``` ruby
def a
  ""
end
a = a[0]
puts a.inspect
```

Expected: `nil`
Got: 

```
Traceback (most recent call last):
shadowed.rb:4:in `<main>': undefined method `[]' for nil:NilClass (NoMethodError)
```

Note that:

``` ruby
a = ""
a = a[0]
puts a.inspect
```

Does work as expected, so it is specifically when a method is shadowed that this unexpected behaviour occurs.



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

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>