On Thursday, 5 November 2015 at 13:20:26 UTC, ixid wrote:
This may have been overlooked in my other thread so I wanted to ask again:

This seems very inconsistent, does a += b not lower to a = a + b? I guess not based on the below:

    ushort a = ushort.max, b = ushort.max;


    a += b; // Compiles fine
a = a + b; // Error: cannot implicitly convert expression (cast(int)a + cast(int)b) of type int to ushort

What's inconsistent is the integral promotion of the add expression result that stops from 4 bytes int:

---
int a, b;
a += b;
a = a + b;
---

is compiled but according to the specs, a + b result should be widened to long:

http://dlang.org/expression.html#AddExpression

(ubyte, byte) until (uint int) should be widened and (long , ulong) wrapped. This behavior would match the specs better.

Reply via email to