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>