Bug 16340 – case where version(unittest) results in an invalid warning about a dangling else
Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2016-07-30T19:09:00Z
Last change time
2016-10-01T11:48:43Z
Keywords
pull, rejects-valid
Assigned to
mathias.lang
Creator
issues.dlang
Comments
Comment #0 by issues.dlang — 2016-07-30T19:09:53Z
This is a reduced version of some code that I've been working on:
void main()
{
}
version(unittest) template symsToStrs(fields...)
{
static if(fields.length == 0)
enum symsToStrs = ["hello"];
else
enum symsToStrs = ["world"];
}
Note that if you compile it with warnings enabled, you get something like
q.d(9): Warning: else is dangling, add { } after condition at q.d(5)
However, if you remove the version(unittest) from in front of the template, then the warning goes away. Whether the code is compiled with -unittest doesn't matter. But regardless, there is no dangling else here. So, the warning is incorrect.
This issue looks similar to issue# 15326, but the code in that one doesn't have this problem anymore, so it doesn't look like this is a regression of that bug, though its cause may be similar.