Issue #9251 has been updated by mame (Yusuke Endoh). "!a = true" is an expression as a whole, but the left of = is not an expression, so the rule does not apply here. The left side is what we call "lhs" in Ruby. Roughly speaking, we can write only a "mutable" subset of the expression in "lhs", such as variable, field access, and array access. -- Yusuke Endoh <mame / tsg.ne.jp> ---------------------------------------- Bug #9251: ! operator has lower precedence than = in an assignment expression https://bugs.ruby-lang.org/issues/9251#change-43707 Author: rits (First Last) Status: Feedback Priority: Low Assignee: Category: doc Target version: ruby -v: ruby 2.0.0p353 (2013-11-22 revision 43784) [i686-linux] Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN irb(main):001:0> !a = 1 (irb):1: warning: found = in conditional, should be == => false irb(main):002:0> a => 1 ! is supposed to have higher precedence than =, so !a = 1 should be (!a) = 1, and thus an error, not !(a = 1) -- http://bugs.ruby-lang.org/