Thread overview
bug in doc?
Mar 14, 2019
spir
Mar 14, 2019
Andrea Fontana
Mar 14, 2019
Adam D. Ruppe
Mar 14, 2019
Daniel N
March 14, 2019
https://dlang.org/spec/hash-map.html#static_initialization:

immutable long[string] aa = [
  "foo": 5,
  "bar": 10,
  "baz": 2000
];

==> Error: non-constant expression `["foo":5L, "bar":10L, "baz":2000L]`

Also: I don't understand the error message:
* What is non-constant in the *expression*?
* And why should it be constant at all?
(Removing "immutable" does not help...)

diniz
March 14, 2019
On Thursday, 14 March 2019 at 14:22:52 UTC, spir wrote:
> https://dlang.org/spec/hash-map.html#static_initialization:
>
> immutable long[string] aa = [
>   "foo": 5,
>   "bar": 10,
>   "baz": 2000
> ];

If I'm right, you can't use this syntax with global array. Insted this works:

void main()
{
  immutable long[string] aa = [
    "foo": 5,
    "bar": 10,
    "baz": 2000
  ];
}

You should init global AAs using static this() { } as explained in the same doc

Andrea
March 14, 2019
On Thursday, 14 March 2019 at 14:22:52 UTC, spir wrote:
> https://dlang.org/spec/hash-map.html#static_initialization:

Well, bug in implementation. That is *supposed* to work, but the compiler never implemented it.

The docs really should point out this fact explicitly, though.
March 14, 2019
On Thursday, 14 March 2019 at 14:47:18 UTC, Adam D. Ruppe wrote:
> On Thursday, 14 March 2019 at 14:22:52 UTC, spir wrote:
>> https://dlang.org/spec/hash-map.html#static_initialization:
>
> Well, bug in implementation. That is *supposed* to work, but the compiler never implemented it.
>
> The docs really should point out this fact explicitly, though.

Especially since it's hard to workaround inside function scope.