Bug 11381 – warn/error when static if else ladder has no matching block (or misses "else")

Status
NEW
Severity
enhancement
Priority
P4
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2013-10-29T19:57:05Z
Last change time
2024-12-13T18:13:22Z
Assigned to
No Owner
Creator
Martin Nowak
Moved to GitHub: dmd#17620 →

Comments

Comment #0 by code — 2013-10-29T19:57:05Z
static if (T.sizeof == 4) { /*A*/ } else static if (T.sizeof == 8) { /*B*/ } else static if (T.sizeof == 12) { /*C*/ } version (Windows) {} else version (linux) {} else version (OSX) {} static if (something) {} else version (foo) {} else static if (somethingelse) {} ---- When such a construct is detected and none of the conditional blocks is matched the compiler should warn/error about an unhandled case. We could also try to make the declaration of such a ladder without an else-clause a warning/error. This would require an explicit "else {}" to achieve the current behavior and avoids inadvertently missing else clauses similar to how non-final switch statements require a default label.
Comment #1 by andrej.mitrovich — 2013-10-30T08:29:58Z
Comment #2 by robert.schadek — 2024-12-13T18:13:22Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/dmd/issues/17620 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB