Feature #8600

Recognize variables declared in if modifier at end of line

Added by Kurt Rudolph 10 months ago. Updated 10 months ago.

[ruby-core:55783]
Status:Rejected
Priority:Normal
Assignee:-
Category:-
Target version:next minor

Description

=begin
2.0.0 (main):0 > .ruby -v
ruby 2.0.0p195 (2013-05-14 revision 40734) [x8664-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


Related issues

Duplicates ruby-trunk - Feature #1141: assignment of variable in "right" if statement fails Rejected 02/11/2009
Duplicates ruby-trunk - Feature #4965: The problem of "print line if line = DATA.gets" Rejected 07/03/2011
Duplicates ruby-trunk - Bug #6132: Assignments don't happen correctly in "if" modifiers Rejected 03/12/2012

History

#1 Updated by Rodrigo Rosenfeld Rosas 10 months ago

A long-time +1, but if I remember correctly Matz doesn't want this because it could introduce backward incompatibility...

#2 Updated by Rodrigo Rosenfeld Rosas 10 months ago

Or maybe because it would be too complex to change the parser to support that? Now I'm not sure about the reasons...

#3 Updated by Yukihiro Matsumoto 10 months 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.

#4 Updated by Nobuyoshi Nakada 10 months ago

  • Description updated (diff)

Also available in: Atom PDF