On Wednesday, 27 July 2016 at 07:59:54 UTC, Walter Bright wrote:
"The expression assert(0) is a special case; it signifies code that should be unreachable. If it is reached at runtime, either AssertError is thrown or execution is terminated in an implementation-defined manner. Any code after the assert(0) is considered unreachable."

Why that last phrase about "considered unreachable"? If "AssertError is thrown or execution is terminated" it implies that execution will not continue after assert(0).

Also "Any code after the assert(0)" is somewhat ambiguous about "after". Consider:

    if (random) goto twist;
    assert(0);
    twist: writeln("after assert(0)?!");

And also:

    try { assert(0); }
    catch (AssertError e) { writeln("after assert(0)?!"); }

Reply via email to