From: klefende@...
Date: 2015-07-18T10:21:22+00:00
Subject: [ruby-core:70026] [Ruby trunk - Misc #11372] Confusing a+b=9 ... unintented behavior, valid statement

Issue #11372 has been updated by Dug Dough.


Just small error: Number 11 is wrong, 7 is right. :)

----------------------------------------
Misc #11372: Confusing a+b=9  ... unintented behavior, valid statement
https://bugs.ruby-lang.org/issues/11372#change-53451

* Author: Dug Dough
* Status: Open
* Priority: Normal
* Assignee: 
----------------------------------------
Hello, I found that when = is written instead of ==, it can cause unintended effects and it is hard to notice this typo, because it is valid statement.  For example valid statement a+b=7 ,due to the everything is a expression,  is treated  as a+(b=11) and not interpreted as syntax error, like in other languages.

Should't be this behavior changed?
My  suggestion is to make the assignment operator unable to be used as expresion (syntactically). It would prevent  that mistakes.
Optionally (for 'backward compatibility', or 'override'), assignment enclosed in parentheses would still be treated as expression , that would make a+(b=9) valid. The meaning of extra parentheses would mean "This is not mistake, i want to use the value of variable b as expression".



-- 
https://bugs.ruby-lang.org/