From: marcandre-ruby-core@... Date: 2020-11-26T20:03:21+00:00 Subject: [ruby-core:101106] [Ruby master Bug#17348] Shadowed method can not be evaluated on the line that it is shadowed 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 `
': 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: