www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 6469] New: Compiler fails to initialize associative array: string->[string->string]

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6469

           Summary: Compiler fails to initialize associative array:
                    string->[string->string]
           Product: D
           Version: D2
          Platform: All
        OS/Version: Mac OS X
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: blazej.podsiadlo gmail.com



14:14:37 PDT ---
Hi,
I'm not able to compile following code:

import std.stdio;

// print string->[string->string]
void printer(ref string[string][string] input) {
  foreach (k, ref v; input) {
    writeln(k,":");
    foreach (ki, vi ; v) {
      writeln("\t", ki, "->", vi);
    }
  }

}

int main()
{
  writeln();

  alias string[string][string] sss;

  // works fine
  sss dyn;
  dyn["one"] = ["a":"A", "b":"B"];
  dyn["two"] = ["c":"C", "d":"D"];

  printer(dyn);

  // fails during compilation
  sss stat = [
              "one" : ["a":"A", "b":"B"],
              "two" : ["d":"D", "e":"E"],
             ];

  printer(stat);

  return 0;
}

----------
/Users/blazej/Projekty/D/bpodProject/bpTable/main.d(30): Error: Integer
constant expression expected instead of "a"
/Users/blazej/Projekty/D/bpodProject/bpTable/main.d(30): Error: Integer
constant expression expected instead of "b"
/Users/blazej/Projekty/D/bpodProject/bpTable/main.d(30): Error: Integer
constant expression expected instead of "a"
/Users/blazej/Projekty/D/bpodProject/bpTable/main.d(30): Error: Integer
constant expression expected instead of "b"
/Users/blazej/Projekty/D/bpodProject/bpTable/main.d(28): Error: not an
associative array initializer
make[2]: *** [bpTable/CMakeFiles/bpTable.dir/main.o] Error 1
make[1]: *** [bpTable/CMakeFiles/bpTable.dir/all] Error 2
make: *** [all] Error 2
----------

Best Regards,
Blazej

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 11 2011
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6469




14:16:07 PDT ---
Created an attachment (id=1015)
sourceCode

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 11 2011
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6469


Andrej Mitrovic <andrej.mitrovich gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |andrej.mitrovich gmail.com



22:14:30 PDT ---
As I've just discovered, you can use a cast() as a workaround until this gets
fixed:

sss stat = cast()[
    "one" : ["a":"A", "b":"B"],
    "two" : ["d":"D", "e":"E"],
];

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Mar 22 2012
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6469




PDT ---
Also fails on 2.059 Win32.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Apr 20 2012
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6469


bearophile_hugs eml.cc changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bearophile_hugs eml.cc



DMD 2.064alpha gives:


void main() {
    int[int] aa1 = [10: 1, 20: 2]; // OK
    int[int][int] aa2 = [30: aa1]; // OK
    int[int][int] aa3 = cast()[30: [10: 1, 20: 2]]; // Error.
}


test.d(4): Error: not an associative array initializer

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 03 2013