From: merch-redmine@... Date: 2020-05-29T22:39:35+00:00 Subject: [ruby-core:98585] [Ruby master Bug#16344] Can be assigned to numbered parameter when after used _1 Issue #16344 has been updated by jeremyevans0 (Jeremy Evans). Status changed from Open to Closed Assigning to the numbered parameter is now a SyntaxError even if it is a local variable in scope, so current master has your expected behavior. Related to this, accessing the numbered parameter inside a block in master accesses the numbered parameter, even if a local variable of the same name exists in the outer scope: ```ruby _1 = :local_variable proc{_1}.call(:block_arg) # 2.7: => :local_variable # 3.0: => :block_arg ``` I think we should make assigning to a numbered parameter a SyntaxError instead of a warning outside of a block (it was a warning in 2.7). I'll submit a feature request for that. ---------------------------------------- Bug #16344: Can be assigned to numbered parameter when after used _1 https://bugs.ruby-lang.org/issues/16344#change-85900 * Author: osyo (manga osyo) * Status: Closed * Priority: Normal * ruby -v: ruby 2.7.0dev (2019-11-11T23:39:38Z trunk 2407e89725) [x86_64-linux] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN ---------------------------------------- ## Steps to reproduce 1. Define local variable `_1` outside block 2. Call Numbered parameter in block 3. Assign for `_1` ## Expected behavior ```ruby _1 = :local_variable proc { _1 # Error: Can't assign to numbered parameter _1 _1 = 42 } ``` ## Actual behavior ```ruby _1 = :local_variable proc { _1 # No error _1 = 42 } ``` Cannot be assinged to numbered parameter from #16293. However, can be assinged to numbered parameter if defined local variable _1 outside block. I think this is a bug. -- https://bugs.ruby-lang.org/ Unsubscribe: