On Thu, 21 Oct 2010 08:52:35 -0400, Lars T. Kyllingstad
<[email protected]> wrote:
On Thu, 21 Oct 2010 11:54:26 +0000, Iain Buclaw wrote:
A few standard library functions, such as 'abort' and 'exit', cannot
return. However there is no way in DMD to let the compiler know about
this. Currently in D2, you must either have a 'return' or 'assert(0)'
statement at the end of a function body. It would be nice however if you
can give hints to the compiler to let it know that a function is never
going to return.
Example:
@noreturn void fatal()
{
print("Error");
exit(1);
}
The 'noreturn' keyword would tell the compiler that 'fatal' cannot
return, and can then optimise without regard to what would happen if
'fatal' ever did return. This should also allow fatal to be used instead
of a return or assert statement.
Example:
int mycheck(int x)
{
if (x > 1)
return OK;
fatal();
}
Thoughts?
It would be useful for std.exception.enforce(), as you could end a
function with enforce(false).
1. It doesn't work that way. The function has to *never* return, no
matter what the arguments.
2. assert(false) already does this.
-Steve