Changing the behavior of the comma operator

Steven Schveighoffer schveiguy at yahoo.com
Tue Mar 25 11:00:14 PDT 2014


On Tue, 25 Mar 2014 13:33:21 -0400, Andrei Alexandrescu  
<SeeWebsiteForEmail at erdani.org> 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.

I think this should not be done. Note that even though code which is D  
could reintroduce commas safely, C code will still exist at that time, and  
likely need porting to D. The principle that C code should either do the  
same thing, or not compile, would be violated.

> 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.

I agree with the change, up through step 4. I think the result of comma  
expression should *ALWAYS* be void.

-Steve


More information about the Digitalmars-d mailing list