Just ran down an interesting 'bug' in my code, but I'm confused as to
why it parses at all. Can someone explain to me what the parser is
doing in this case? (Please cc: me directly also please; I don't
want to miss the answer.)
if (x != y ||
x != z
y != z)
puts "foo"
end
(notice the missing "||" after the second comparison)
Just ran down an interesting 'bug' in my code, but I'm confused as to
why it parses at all. Can someone explain to me what the parser is
doing in this case? (Please cc: me directly also please; I don't
want to miss the answer.)
if (x != y ||
x != z
y != z)
puts "foo"
end
My guess: it is parsing it as two expressions, like so:
if ( x != y || x != z; y != z )
<--- first -----> <-- 2nd -->
Ruby is very expressio-oriented.
(notice the missing "||" after the second comparison)