Bug in ^^

Vladimir Panteleev thecybershadow.lists at gmail.com
Tue Sep 17 18:02:59 UTC 2019


On Tuesday, 17 September 2019 at 17:51:59 UTC, Johan Engelen 
wrote:
> On Tuesday, 17 September 2019 at 17:41:23 UTC, Vladimir 
> Panteleev wrote:
>>
>> I agree, a warning or error for overflows at compile-time 
>> would be appropriate.
>
> Do you have a suggestion for the syntax to write overflowing 
> CTFE code without triggering the warning?

When a bigger type exists which fits the non-overflown result, 
the obvious solution is to make one of the operands of that type, 
then explicitly cast the result back to the smaller one.

When a bigger type does not exist, explicit overflow could be 
indicated by using binary-and with the type's full bit mask, i.e. 
`(1_000_000 * 1_000_000) & 0xFFFFFFFF`. This fits with D's 
existing range propagation logic, i.e. the following is not an 
error:

	uint i = void;
	ubyte b = i & 0xFF;



More information about the Digitalmars-d mailing list