comma operator causes hard to spot bugs

Timon Gehr timon.gehr at gmx.ch
Sat Apr 21 11:25:11 PDT 2012


On 04/21/2012 06:54 PM, bearophile wrote:
> Jonathan M Davis:
>
>> There have been discussions about the comma operator before. I don't
>> expect that it's going anywhere,
>
> Maybe there are intermediate solutions between keeping wild commas in D
> and disallowing them fully. I think most of my bugs caused by commas are
> similar to the one shown by the OP. This means this is not a common
> source of bugs:
>
> foo(), bar();
>
> While this is sometimes a trap:
>
> auto x = foo(), bar();
>

This is not valid code.

> So maybe it's enough to disallow using the last expression of a comma
> sequence as result of the whole expression?  I don't know. I almost never
> use commas for such purposes. What are the use case for those commas?
>
> Bye,
> bearophile

if(r.front == 'a' && (r.popFront(), r.front) == 'b') { ... }

There are a few similar usages in Phobos. If comma was to be used as a 
tuple constructor instead, those could be replaced by ( , )[$-1].


More information about the Digitalmars-d mailing list