On Friday, 24 April 2026 at 09:49:31 UTC, Dom Disc wrote:
On Thursday, 23 April 2026 at 15:25:35 UTC, H. S. Teoh wrote:

I hate D's policy on integer conversions.

The funny fact is: during CTFE this promotion to int is NOT done.

for(ubyte i = 0; i<256; ++i) ...

Can we make `i < 256` a compile-time error?

This works, because i is promoted to int so it can an will reach 256.

But during CTFE this is an infinite loop, because an ubyte is always <256

One of the bugs that caught me on surprise.

It's an infinite loop at runtime. `i == 256` never happens, it can't.

```d
void main()
{
    import std.stdio;
    for(ubyte i = 0; i<256; ++i)
        i.writeln;
}
```

Reply via email to