On Thursday, 5 February 2015 at 13:31:21 UTC, Nicholas Wilson
wrote:
Note that D does NOT have default fall through. i.e.
switch(myopt)
{
case "opt1", "opt2", "opt3":
do_A();
break;
case "opt4":
do_B();
break;
default:
do_C();
}
is equivalent to
switch(myopt)
{
case "opt1", "opt2", "opt3":
do_A();
case "opt4":
do_B();
default:
do_C();
}
No, that's not right.
The docs [1] say that "[a] ScopeStatementList must either be
empty, or be ended with a ContinueStatement, BreakStatement,
ReturnStatement, GotoStatement, ThrowStatement or assert(0)
expression unless this is the last case."
That's different from what you said. `case "opt1": doA(); case
"4": do_B();` is supposed to be forbidden. It's not supposed to
have an implicit break.
And apparently, dmd is not there (yet?). Implicit fall-through is
only a warning at the moment (which have to be switched on). It's
not an error.
[1] http://dlang.org/statement.html#switch-statement