Project

General

Profile

Actions

Bug #9486

closed

Multiple Kernel#local_variables entries with block local parameters

Added by ryantm (Ryan Mulligan) about 10 years ago. Updated almost 10 years ago.

Status:
Closed
Target version:
ruby -v:
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux]
[ruby-core:60501]

Description

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?

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0