Changing the behavior of the comma operator

Dicebot public at dicebot.lv
Tue Mar 25 10:52:15 PDT 2014


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.


More information about the Digitalmars-d mailing list