Bug 6060 – Refuse wrong final switch

Status
NEW
Severity
enhancement
Priority
P4
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2011-05-26T15:56:47Z
Last change time
2024-12-13T17:55:19Z
Keywords
bootcamp, diagnostic
Assigned to
No Owner
Creator
bearophile_hugs
See also
https://issues.dlang.org/show_bug.cgi?id=5713
Moved to GitHub: dmd#17525 →

Comments

Comment #0 by bearophile_hugs — 2011-05-26T15:56:47Z
This program compiles and runs with no errors: void main(string[] args) { final switch (args.length) { case 0: break; } } But in such cases I suggest the compiler to statically refuse this code, and give an error. See also bug 5713 and bug 5714 Note this bug is different from 5713 because in 5713 I don't like an error message (and I'd like the compiler to enforce the presence of the cases for 0,1, and 2), while in this case I'd like an error message.
Comment #1 by verylonglogin.reg — 2012-01-24T04:22:51Z
With https://github.com/D-Programming-Language/dmd/commit/11738ba260ced4d522d2334c5e99059a2517035d the program throws appropriate exception. And the documentation doesn't claim the program invalid. So it's an enhancement.
Comment #2 by yebblies — 2012-01-31T21:30:04Z
Could you please clarify what this is asking for that issue 5713 doesn't cover?
Comment #3 by bearophile_hugs — 2012-02-05T06:50:27Z
(In reply to comment #2) > Could you please clarify what this is asking for that issue 5713 doesn't cover? For this program: void main(string[] args) { final switch (args.length) { case 0: break; } } I'd like a compile-time error, like: "Final switch on ints is not allowed." ----------------------- For this program: void main() { uint x = 100; final switch (x % 3) { case 0: break; case 1: break; } } I'd like a compile-time error like: "Some cases (2) are not covered by the final switch." So this program is accepted with no errors: void main() { uint x = 100; final switch (x % 3) { case 0: break; case 1: break; case 2: break; } } ----------------------- I am asking for two different error messages, so I have opened two reports.
Comment #4 by bearophile_hugs — 2012-02-05T06:51:23Z
(In reply to comment #1) > And the documentation doesn't claim the program invalid. It's a broken design.
Comment #5 by robert.schadek — 2024-12-13T17:55:19Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/dmd/issues/17525 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB