Issue #9486 has been updated by Nobuyoshi Nakada. r45850 is not a subject to be backported. ---------------------------------------- Bug #9486: Multiple Kernel#local_variables entries with block local parameters https://bugs.ruby-lang.org/issues/9486#change-47303 * 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/