Bug 12652 – Non-constant hash initializers should have a special-case diagnostic
Status
RESOLVED
Resolution
FIXED
Severity
enhancement
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2014-04-26T10:48:52Z
Last change time
2022-08-24T12:13:58Z
Keywords
diagnostic
Assigned to
No Owner
Creator
Andrej Mitrovic
Comments
Comment #0 by andrej.mitrovich — 2014-04-26T10:48:52Z
-----
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.
Comment #1 by dlang-bot — 2020-08-20T11:40:54Z
@adelavais created dlang/dmd pull request #11598 "Issue 12652 - Non-constant hash initializers should have a special-case diagnostic" mentioning this issue:
- Issue 12652 - Non-constant hash initializers should have a special-case diagnostic
https://github.com/dlang/dmd/pull/11598
Comment #2 by dlang-bot — 2022-08-24T12:13:58Z
dlang/dmd pull request #11598 "Issue 12652 - Non-constant hash initializers should have a special-case diagnostic" was merged into master:
- 909d08d9a55c50eaf463c6548d76d00cda4a3e40 by Adela Vais:
Issue 12652 - Non-constant hash initializers should have a special-case diagnostic
- 55bc910e1703be56a4cb35b38e7272ffd3db04ab by RazvanN7:
Fix Issue 12652 - Non-constant hash initializers should have a special-case diagnostic
https://github.com/dlang/dmd/pull/11598