On Tue, 25 Mar 2014 13:33:21 -0400, Andrei Alexandrescu <seewebsiteforem...@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

Reply via email to