Issue #9486 has been updated by Usaku NAKAMURA.

Backport changed from 1.9.3: REQUIRED, 2.0.0: REQUIRED, 2.1: DONE to 1.9.3: REQUIRED, 2.0.0: DONE, 2.1: DONE

backported r45845 and r45847 into `ruby_2_0_0` at r46731.

skipping r45846 because it's not the test for this change.
And, in fact, what is tested here is another problem that exists in the current state 2.0.0.
It is not known at this time how and when it has been fixed in trunk.

----------------------------------------
Bug #9486: Multiple Kernel#local_variables entries with block local parameters
https://bugs.ruby-lang.org/issues/9486#change-47614

* 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: DONE, 2.1: DONE
----------------------------------------
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/