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
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