D Logic bug

Neia Neutuladh neia at ikeran.org
Thu Oct 11 20:31:43 UTC 2018


On 10/11/2018 07:35 AM, James Japherson wrote:
> Took me about an hour to track this one down!
> 
> A + (B == 0) ? 0 : C;
> 
> D is evaluating it as
> 
> (A + (B == 0)) ? 0 : C;

Friends don't let friends use the ternary operator except in trivial cases.

This would be a good thing for a linter to check.

> The whole point of the parenthesis was to associate.

Yes. The expression would otherwise have been parsed as:

((A + B) == 0) ? 0 : C

It might be a good idea to deprecate arithmetic with booleans, which 
would have caught this specific error.


More information about the Digitalmars-d mailing list