bearophile wrote:
Justin Johansson:
Would it be possible for the compiler to infer the declared enum type, in this
case Color, making for abbreviation of the enum member names in the case
clauses as per the following?
void bar( Color color) {
switch (color) {
case RED:
break;
case GREEN:
break;
case BLUE:
break;
}
}
That's a special case, with the purpose of shortening code a little. So while
writing Color.something isn't handy, it safe and it has no special casing. So I
don't like your idea a lot.
Related: I have compiled your code with D1 with warnings (-w):
enum Color {
RED,
GREEN,
BLUE
}
void foo(Color color) {
switch (color) {
case Color.RED:
break;
case Color.GREEN:
break;
case Color.BLUE:
break;
}
}
void main() {}
It prints:
warning - test.d(8): Error: switch statement has no default
warning - test.d(8): Error: statement is not reachable
But there's no need for default there because all enum cases are covered. So
that warning test has to be improved.
Bye,
bearophile
final switch(color) { ... }
:)