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) { ... }

:)

Reply via email to