http://d.puremagic.com/issues/show_bug.cgi?id=7512
--- Comment #2 from hst...@quickfur.ath.cx 2012-02-27 12:42:04 PST --- OK, I've narrowed down this bug to using an AA literal for when the key is a non-string array. For some strange reason, the AA literal *appears* to correctly initialize the AA, as far as foreach can tell: // CODE: const int[] key1 = [1,2,3]; const int[] key2 = [1,2,4]; int[int[]] a5 = [ key1 : 3, key2 : 4 ]; foreach (key, val; a5) { writefln("%s -> %s", key, val); } // OUTPUT: [1, 2, 3] -> 3 [1, 2, 4] -> 4 Seems to be correct, however: // CODE: foreach (key, val; a5) { assert(a5[key]==val); } // OUTPUT: core.exception.AssertError@aatest(15): Assertion failure This is the failing case. However, if we *don't* use an AA literal: // CODE: const int[] key1 = [1,2,3]; const int[] key2 = [1,2,4]; int[int[]] a5; a5[key1] = 3; a5[key2] = 4; foreach (key, val; a5) { assert(a5[key]==val); } Then there is no assertion failure. Conclusion: something screwy is going on when an AA literal is used. The AA appears to be initialized correctly, and foreach appears to return the correct key/value pairs, *but* attempting to do lookups with the keys fails for some unknown reason. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------