From: Eric Hodel Date: 2012-03-13T07:10:14+09:00 Subject: [ruby-core:43254] [ruby-trunk - Bug #6132][Rejected] Assignments don't happen correctly in "if" modifiers Issue #6132 has been updated by Eric Hodel. Status changed from Open to Rejected This is a feature of ruby. Ruby parses left to right, so it see "lo" on the assignment side of the if. Since no local variable "lo" has been encountered yet it must be a method. Ruby then encounters the assignment to lo and creates the local variable. ---------------------------------------- Bug #6132: Assignments don't happen correctly in "if" modifiers https://bugs.ruby-lang.org/issues/6132 Author: Ibrahim Tencer Status: Rejected Priority: Normal Assignee: Category: Target version: ruby -v: ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.0.0] This works: if lo = 3 la = lo end but this does not: (la = lo) if (lo = 3) It raises "NameError: undefined local variable or method `lo' for main:Object." But if you look at the values afterwards you get lo -> 3, la -> nil. -- http://bugs.ruby-lang.org/