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 11 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 11 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 11 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 11 years ago
- Description updated (diff)