[Issue 23381] null/init are not accepted as initializers of a zero-sized static array

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Oct 4 11:46:09 UTC 2022


https://issues.dlang.org/show_bug.cgi?id=23381

--- Comment #2 from Max Samukha <maxsamukha at gmail.com> ---
(In reply to Nick Treleaven from comment #1)
> >     int[0] a1 = null; // ok
> 
> I don't think that should work - a static array is not a reference. Just use
> `[]` or init. Especially as there are no compile-time errors when the array
> length is > 0 for null, but there are for `[]`:
> 
> void f()
> {
>     int[1] b = []; // error
>     int[1] a = null; // no error
>     a = []; // error
>     a = null; // no error
> }

If null is implicitly convertable to a dynamic array type, I believe it should
be accepted anywhere a dynamic array is accepted.

void f()
{
>     int[1] a = null; // no error
>     a = null; // no error
}

Those produce a rangle violation error at runtime. If size mismatches can be
detected for [] at compile time, why can't they for 'null'?

--


More information about the Digitalmars-d-bugs mailing list