David A. Black wrote:

> We're going around in circles, but the point still doesn't seem to be
> clear.
>
> Ruby sees a difference between:
>
>   if n = x
>
> and
>
>   if n = 1
>
I missed that one, sorry.

> Why you would *ever* want to write the latter is a mystery to me :-)

I wouldn't, simply missed the point.

> I mean, you could also wrap your whole program with:
>
>   if true && true && 100
>     unless false || nil
>     .... ad infinitum.
>
> But why would you?  Besides, keep in mind that this is only a warning.
> You *can* do "if n = 1", if you enjoy using those keys on your
> keyboard so much that you can't resist :-)  But given that there's no
> possibility that you would ever need to (and that in the general case
> of if n = x you *don't* get a warning), it seems reasonable to be
> warned.
>
Well, the warning text is somewhat misleading, because the occurence of 
the equal sign isn't the problem, but the fact that I assign a constant 
to a value and this is the top level expression of the condition.

Because,

  if (x=1) or (x=2) then 4 else 2 end

doesn't give a warning, neither does

  if x = 1||2 then 4 else 2 end

nor

  if x = 1+2 then 4 else 2 end

And I probably meant == in all of these.

-- stefan