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.
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.
Could you please clarify what this is asking for that issue 5713 doesn't cover?
(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.
(In reply to comment #1) > And the documentation doesn't claim the program invalid. It's a broken design.
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