On Thursday, 14 July 2022 at 19:57:24 UTC, Basile B. wrote:
>On Thursday, 14 July 2022 at 17:57:13 UTC, Ali Çehreli wrote:
>- int[$] // Not perfect because the array does not have a length
I wanted to implement that in my language and found a subtle problem that makes the implementation of the feature a not so nice looking special case : the semantics of int[$]
require the initializer unlike auto
, which can be directly replaced by the initializer type. That breaks the binary and (somewhat ideal) approach of either auto
and replace or full type and implicit conv of the initializer.
dmd already comes very close, though:
unittest {
int[2] arr = [1, 2, 3];
}
This fails to compile with "Error: mismatched array lengths, 2 and 3". So, treat $
in int[$]
like it's a random number, which already works, but then when you get to checking the lengths, accept 3 as the length of the array.