Thread overview |
---|
September 03, 2008 [Issue 2333] New: Hash initializer does not work | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=2333 Summary: Hash initializer does not work Product: D Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: bugzilla@digitalmars.com ReportedBy: andrei@metalanguage.com The assertion in this program fails: void main() { int[string] stopWords = [ "abc"[]:1 ]; assert("abc" in stopWords); } This is so bad I must in fact be doing something wrong... -- |
September 03, 2008 [Issue 2333] Hash initializer does not work | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=2333 ------- Comment #1 from snake.scaly@gmail.com 2008-09-03 02:32 ------- Even more: this program: import std.stdio; void main() { int[string] foo = ["aaa":1, "bbb":2]; foo["ccc"] = 3; writeln(foo); writeln("aaa" in foo); writeln("ccc" in foo); } prints this: [aaa:1,bbb:2,ccc:3] 0 8F4FB4 when compiled using Windows DMD 2.018. -- |
September 03, 2008 [Issue 2333] Hash initializer does not work | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=2333 gide@nwawudu.com changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |accepts-invalid ------- Comment #2 from gide@nwawudu.com 2008-09-03 06:41 ------- The docs says 'An AssocArrayLiteral cannot be used to statically initialize anything', so the code should be rejected by the compiler. Changed keyword to acepts-invalid. http://www.digitalmars.com/d/2.0/expression.html#AssocArrayLiteral BTW I've made the same mistake, see BUG 1727. -- |
September 03, 2008 [Issue 2333] Hash initializer does not work | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=2333 ------- Comment #3 from andrei@metalanguage.com 2008-09-03 07:14 ------- (In reply to comment #1) > Even more: this program: > > import std.stdio; > void main() > { > int[string] foo = ["aaa":1, "bbb":2]; > foo["ccc"] = 3; > writeln(foo); > writeln("aaa" in foo); > writeln("ccc" in foo); > } > > prints this: > > [aaa:1,bbb:2,ccc:3] > 0 > 8F4FB4 > > when compiled using Windows DMD 2.018. The last line is fine. "in" returns a pointer. -- |
September 03, 2008 [Issue 2333] Hash initializer does not work | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=2333 ------- Comment #4 from andrei@metalanguage.com 2008-09-03 07:14 ------- (In reply to comment #2) > The docs says 'An AssocArrayLiteral cannot be used to statically initialize anything', so the code should be rejected by the compiler. Changed keyword to acepts-invalid. http://www.digitalmars.com/d/2.0/expression.html#AssocArrayLiteral > > BTW I've made the same mistake, see BUG 1727. Notice that I'm using straight initialization, not static initialization. -- |
September 03, 2008 [Issue 2333] Hash initializer does not work | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=2333 gide@nwawudu.com changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|accepts-invalid |wrong-code ------- Comment #5 from gide@nwawudu.com 2008-09-03 07:57 ------- In that case my comment on bug 1727 was valid, I'll repeat it here. The following code compiles on both GDC and DMD, but DMD compiled code throws an array bounds exception when executed. test.d ------ import std.stdio; void main() { int[char[]] aa = ["aa":1, "bb":2, "cc":3]; // Fails later //int[char[]] aa; aa = ["aa":1, "bb":2, "cc":3]; // Fails later //int[char[]] aa; aa["aa"] = 1; aa["bb"] = 2; aa["cc"] = 3; // OK assert(aa.length == 3); assert(aa["aa"]==1); // DMD fails here. Error: ArrayBoundsError test(9) writefln(aa["aa"],aa["bb"],aa["cc"]); // On GDC output -> 123 } -- |
September 03, 2008 [Issue 2333] Hash initializer does not work | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=2333 ------- Comment #6 from snake.scaly@gmail.com 2008-09-03 10:33 ------- (In reply to comment #3) > (In reply to comment #1) > > [aaa:1,bbb:2,ccc:3] > > 0 > > 8F4FB4 > > The last line is fine. "in" returns a pointer. I know. I posted this to maybe help to narrow down the issue. The printed array contents are correct. The explicitly added key ("ccc") is found correctly. But, at the same time, the key "aaa" is not found even though it seems to be present in the AA. -- |
October 21, 2008 [Issue 2333] Hash initializer does not work | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=2333 bugzilla@digitalmars.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED ------- Comment #7 from bugzilla@digitalmars.com 2008-10-20 22:22 ------- Fixed dmd 2.020 -- |
November 19, 2008 [Issue 2333] Hash initializer does not work | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=2333 gide@nwawudu.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |lutger.blijdestijn@gmail.com ------- Comment #8 from gide@nwawudu.com 2008-11-18 18:43 ------- *** Bug 2265 has been marked as a duplicate of this bug. *** -- |
Copyright © 1999-2021 by the D Language Foundation