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