Does anyone think if this the warning makes any sense? irb(main):002:0> puts "abc" if (a=true) (irb):2: warning: found = in conditional, should be == abc I thought in ruby, everything is an expression, so a=true should return true, and if (true) is totally valid. Why does it give the warning? Or is this a language design thing?