On Nov 16, 09 17:48, MIURA Masahiro wrote:
On 11/16/2009 06:16 PM, Denis Koroskin wrote:
If I remember correctly, one of D's design policies is
that a D code that looks like C code should behave like C.
Are we giving up that policy?
Correction: either behave like C, or raise a compile-time error.

Yes. I should have written "a valid D code".

Missing break statement will not cause a different behavior. It will
fail to compile.

Could you clarify?

switch (x) {
  case 2:
    doSomething();
        // At this point:
        // Compiles fine in C.
        // Falls through to the next (irrelevant) branch.
        // Compile-time error in D (missing "break;" or "goto case 3;")
  case 3:
    doSomeTotallyDifferentThing(x, ~x);
    break;
  ...
}


In you proposal, does a break statement
breaks out of the switch? Then,

for (;;) {
switch (foo) {
case "FOO":
break;
}
}

In C, 'break' exits the for-loop. In your proposal, it doesn't.

Check with you compiler. In C the inner "break" doesn't break the for loop.

Reply via email to