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