@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