Issue #4914 has been updated by Yukihiro Matsumoto.

Status changed from Open to Rejected

not a bug.  run the following:


a = [:a, :b, :c]
for k in 'a'..'c'
  if i = a.index(k.to_sym) && k.to_s =~ /b/
    puts i
  end
end
for k in 'a'..'c'
  if i = (a.index(k.to_sym) && k.to_s =~ /b/)
    puts i
  end
end
for k in 'a'..'c'
  if (i = a.index(k.to_sym)) && k.to_s =~ /b/
    puts i
  end
end
for k in 'a'..'c'
  i = a.index(k.to_sym)
  if i && k.to_s =~ /b/
    puts i
  end
end

----------------------------------------
Bug #4914: Array#index fails when used in if statement assignment
http://redmine.ruby-lang.org/issues/4914

Author: Benjamin ter Kuile
Status: Rejected
Priority: Normal
Assignee: 
Category: 
Target version: 
ruby -v: 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]


cat /etc/issue: Ubuntu 11.04
rvm -v: rvm 1.6.2
rvm 1.9.2, ruby -v: ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]
Also tested with: rvm 1.9.2-head, ruby -v: ruby 1.9.2p274 (2011-06-06 revision 31932) [x86_64-linux]

Test code:

a = [:a, :b, :c]
for k in 'a'..'c'
  if i = a.index(k.to_sym) && k.to_s =~ /b/
    puts i
  end
end
for k in 'a'..'c'
  i = a.index(k.to_sym)
  if i && k.to_s =~ /b/
    puts i
  end
end

output:
0
1

expected output:
1
1


-- 
http://redmine.ruby-lang.org