From: nagachika00@... Date: 2014-06-19T15:56:39+00:00 Subject: [ruby-core:63253] [ruby-trunk - Bug #9486] Multiple Kernel#local_variables entries with block local parameters Issue #9486 has been updated by Tomoyuki Chikanaga. Hello, These changesets introduce incompatibilities. I think r45845 and r45856 could be backported (these fix the result [:a, :a, :a] -> [:a, :a] in the ticket's description). r45850 seems like a spec change rather than a bugfix (hide shadowed variable of outer scope). Any comments? ---------------------------------------- Bug #9486: Multiple Kernel#local_variables entries with block local parameters https://bugs.ruby-lang.org/issues/9486#change-47300 * Author: Ryan Mulligan * Status: Closed * Priority: Normal * Assignee: Nobuyoshi Nakada * Category: core * Target version: current: 2.2.0 * ruby -v: ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux] * Backport: 1.9.3: REQUIRED, 2.0.0: REQUIRED, 2.1: REQUIRED ---------------------------------------- Better formatting here: http://stackoverflow.com/questions/21423863/multiple-kernellocal-variables-entries-with-block-local-parameters/21427424?noredirect=1#21427424 I am using this version of Ruby on Arch Linux. I also tried the first code snippet in ruby 1.9, which had the same results. ruby -v ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux] uname -a Linux ryantm0j132 3.12.7-2-ARCH #1 SMP PREEMPT Sun Jan 12 13:09:09 CET 2014 x86_64 GNU/Linux These three snippets below are separate programs. When I use block local variables that shadow a variable the local_variables array contains 3 entries: a = 1 puts local_variables.inspect #=> [:a] proc { |;a| puts local_variables.inspect #=> [:a,:a,:a] }.call If I don't shadow, anything it contains 1 entry: puts local_variables.inspect #=> [] proc { |;b| puts local_variables.inspect #=> [:b] }.call Another example of the block local variable not shadowing anything: a = 1 puts local_variables.inspect #=> [:a] proc { |;b| puts local_variables.inspect #=> [:b,:a] }.call Is there some reason for these extra entries in the first case? Is it a bug in ruby? -- https://bugs.ruby-lang.org/