Bug #9486
closedMultiple Kernel#local_variables entries with block local parameters
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?
Updated by nobu (Nobuyoshi Nakada) almost 11 years ago
- Category set to core
- Status changed from Open to Assigned
- Assignee set to nobu (Nobuyoshi Nakada)
- Target version set to 2.2.0
It's a known bug, but I've forgotten to issue a ticket.
Thank you.
Updated by nobu (Nobuyoshi Nakada) almost 11 years ago
- Backport changed from 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN to 1.9.3: REQUIRED, 2.0.0: REQUIRED, 2.1: REQUIRED
Updated by nobu (Nobuyoshi Nakada) over 10 years ago
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
Updated by nagachika (Tomoyuki Chikanaga) over 10 years ago
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?
Updated by nobu (Nobuyoshi Nakada) over 10 years ago
r45850 is not a subject to be backported.
Updated by nagachika (Tomoyuki Chikanaga) over 10 years ago
- Backport changed from 1.9.3: REQUIRED, 2.0.0: REQUIRED, 2.1: REQUIRED to 1.9.3: REQUIRED, 2.0.0: REQUIRED, 2.1: DONE
r45845, r45846 and r45847 were backported into ruby_2_1
at r46596.
Updated by usa (Usaku NAKAMURA) over 10 years ago
- 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.