On Tuesday, 25 March 2014 at 17:33:20 UTC, Andrei Alexandrescu
wrote:
After the recent discussions regarding the comma operator, and
after inspecting the patterns of code affected by it, Walter
and I would back up the following change to the D language:
1. The comma operator stays with its current syntax.
2. The semantics is the same unless warnings are enabled with
"-w"
3. In "-w" mode, semantics are changed in that the type of the
comma operator is NOT the type of its last expression, but
instead it's void.
4. Later on the warning will be promoted to a deprecation
followed by removal from the language.
5. Reintroducing the result type as a tuple remains a future
possibility.
We believe the change would be beneficial for the following
reasons:
1. Based on druntime and phobos, the breakage is likely to be
infrequent.
2. The change may catch (and has caught) important bugs caused
by misplacing closing parentheses.
3. Most code using the result of the comma expression looks
foreign even to seasoned programmers and might gain in clarity
from a refactor.
Please reply to discuss this possibility.
Andrei
You are missing necessary step between (3) and (4) : making any
usage of comma operator a warning. According to current language
feature deprecation practices one cannot just go to a deprecation
message omitting _exact same_ warning (judging by my
observations, of course).
This was why I have objected against this compromise initially -
it only makes transition process more complicated if you are
going to remove comma anyway and reduction in breakage feels
questionable (unless I have missed some hard data).
Still, full support for anything that removes comma expression
completely in the end.