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.