@noreturn property
Justin Johansson
no at spam.com
Thu Oct 21 07:01:20 PDT 2010
On 21/10/2010 10:54 PM, 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.
Yes, well, and while others may say that I must be drunk to
suggest so, the problem lies in the D type system, albeit,
the lack thereof.
Further, I know that my previous "canoe" joke did not go down
very well or was not understood by the wider D community.
Thankfully questions posed by your post give credence to
my prior "joke" about the D type system lacking a formal
substance (i.e. being close to water).
There is a good answer awaiting but it is not a hack such
as @noreturn.
Cheers
Justin Johansson
More information about the Digitalmars-d
mailing list