Allow designated initialization of struct

Salih Dincer salihdb at hotmail.com
Fri Nov 15 05:44:39 UTC 2024


On Friday, 8 November 2024 at 20:20:19 UTC, IchorDev wrote:
> On Saturday, 2 November 2024 at 20:21:57 UTC, Nick Treleaven 
> wrote:
>> On Saturday, 2 November 2024 at 18:01:45 UTC, IchorDev wrote:
>>> ```d
>>> short x = 127;
>>> short y = x / 2 + 1; //Error: integer promotion screwed you 
>>> over again!
>>
>> Actually that example compiles fine due to VRP.
>> https://dlang.org/spec/type.html#vrp
>
> Which shouldn’t be relied on to prevent integer under/overflow 
> because it allows it.
> ```d
>     short x = short.max;
>     short div = 1;
>     short y = x / div + 1;
> ```
> I thought the point of requiring a cast after promotion was 
> preventing under/overflow.

Compiler version gcc 6.3.0 also allows this and you get the same 
result. Here is the code:

```c
#include <stdio.h>
#include <limits.h>

int main()
{
     short x = SHRT_MAX;
     short div = 1;
     short y = x / div + 1;

     printf("%d > %d\n", x, y);
     // 32767 > -32768
     return 0;
}
```

SDB at 79


More information about the dip.ideas mailing list