Feature #8600
closedRecognize variables declared in if modifier at end of line
Description
=begin
2.0.0 (main):0 > .ruby -v
ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-darwin12.3.0]
2.0.0 (main):0 > ([0,1,2])[i] = 1.0 if i = ['seconds'].find_index('seconds')
NameError: undefined local variable or method i' for main:Object from (pry):1:in
pry'
Is it possible to get rid of this kind of error? Especially since it doesn't matter what the value of the variable is so long as it's defined.
2.0.0 (main):0 > i = 10000
=> 10000
2.0.0 (main):0 > ([0,1,2])[i] = 1.0 if i = ['seconds'].find_index('seconds')
=> 1.0
=end
Updated by rosenfeld (Rodrigo Rosenfeld Rosas) over 9 years ago
A long-time +1, but if I remember correctly Matz doesn't want this because it could introduce backward incompatibility...
Updated by rosenfeld (Rodrigo Rosenfeld Rosas) over 9 years ago
Or maybe because it would be too complex to change the parser to support that? Now I'm not sure about the reasons...
Updated by matz (Yukihiro Matsumoto) over 9 years ago
- Description updated (diff)
- Status changed from Open to Rejected
Variables are declared in the order of appearance. I don't want to introduce exceptions.
Matz.
Updated by nobu (Nobuyoshi Nakada) over 9 years ago
- Description updated (diff)