Treat exit() as a valid last statement in a switch case
Neia Neutuladh
neia at ikeran.org
Sun Dec 9 05:19:11 UTC 2018
On Sun, 09 Dec 2018 04:51:43 +0000, Andrew Pennebaker wrote:
> From my limited understanding of low-level semantics, I think that
> exit() doesn't allow execution to proceed to the next statement. Right?
>
> Given that, I am curious if we could treat exit() as a valid last
> statement in switch cases, along with break, continue, and so on.
> What do you think?
Walter wrote a DIP for this called "bottom_t". A function declared as
returning bottom_t does not return. This would include exit(2), OS-
specific equivalents to it, and wrappers around functions like that.
The response was that a way to mark a function as not returning was
useful, adding it to the type system was not. For compatibility, functions
like this might need to be declared with a real return type. Sometimes
this might need to appear in, for instance, a C++ mangled name. Or you
might have an array of functions, one of which might not return; you'd
like to be able to put that function in the array while specifying at its
declaration point that it doesn't return.
Calling a never-returning function would work the same as throwing an
exception, asserting false, etc; it'd be a valid thing to end a case block
with.
https://github.com/dlang/DIPs/pull/117/files
More information about the Digitalmars-d
mailing list