== Quote from Lars T. Kyllingstad (pub...@kyllingen.nospamnet)'s article > 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). > -Lars
Or with any of the helper functions in core.exception, for that matter; such as onOutOfMemoryError(). Regards Iain