www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 12652] New: Non-constant hash initializers should have a


          Issue ID: 12652
           Summary: Non-constant hash initializers should have a
                    special-case diagnostic
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Keywords: diagnostic
          Severity: enhancement
          Priority: P1
         Component: DMD
          Assignee: nobody puremagic.com
          Reporter: andrej.mitrovich gmail.com

int[int] x = [1:1];

void main() { }

test.d(2): Error: non-constant expression [1:1]

Associative arrays are supposed to be a first-class feature of D, but until we
make them CTFE-able we should emit better diagnostics (essentially do some
special-cases when hashes are involved).

The above code is something newcomers to D very frequently run into, and the
diagnostic doesn't really tell them what's wrong. Some suggestions:

Error: Associative array literals currently cannot be used to initialize
globals. Try using a module constructor instead.

This will at least point them to a workaround. Maybe a link to a page with a
workaround would be nice too.

Apr 26 2014