Thread overview
Initialize associate array
Feb 29, 2016
pham
Feb 29, 2016
cym13
Feb 29, 2016
Adam D. Ruppe
February 29, 2016
Should codes below be compiled?

import std.stdio;

class Test
{
	enum string[string] WorkAA =
	[
		"foo": "work"
	];

	immutable string[string] NotWorkAA1 =
	[
		"foo": "not work"
	];

	string[string] NotWorkAA2 =
	[
		"foo": "not work"
	];
}

void main()
{
	Test t = new Test();	
}

Test with DPaste with below error messages

Result: Compilation error / Return code: 1 (Hangup)
Compilation output:

/d699/f49.d(11): Error: non-constant expression ["foo":"not work"]
/d699/f49.d(16): Error: non-constant expression ["foo":"not work"]

February 29, 2016
On Monday, 29 February 2016 at 21:03:46 UTC, pham wrote:
> Should codes below be compiled?
>
> import std.stdio;
>
> class Test
> {
> 	enum string[string] WorkAA =
> 	[
> 		"foo": "work"
> 	];
>
> 	immutable string[string] NotWorkAA1 =
> 	[
> 		"foo": "not work"
> 	];
>
> 	string[string] NotWorkAA2 =
> 	[
> 		"foo": "not work"
> 	];
> }
>
> void main()
> {
> 	Test t = new Test();	
> }
>
> Test with DPaste with below error messages
>
> Result: Compilation error / Return code: 1 (Hangup)
> Compilation output:
>
> /d699/f49.d(11): Error: non-constant expression ["foo":"not work"]
> /d699/f49.d(16): Error: non-constant expression ["foo":"not work"]

According to the specs it should but right now it doesn't, it's a know long-lasting bug. AA can't be initialized at compile-time for the moment (and likely not before a long time).
February 29, 2016
Use a constructor instead.