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

Reply via email to