@noreturn property

Leandro Lucarella luca at llucax.com.ar
Thu Oct 21 07:24:39 PDT 2010


Iain Buclaw, el 21 de octubre a las 11:54 me escribiste:
> 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?

You want to include in the language what you can do (or at least could)
do in GDC using:

pragma(GNU_attribute, noreturn)) void fatal()
{
     print("Error");
     exit(1);
}

?

-- 
Leandro Lucarella (AKA luca)                     http://llucax.com.ar/
----------------------------------------------------------------------
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145  104C 949E BFB6 5F5A 8D05)
----------------------------------------------------------------------
The world's best known word is "okay"
The second most well-known word is "Coca-Cola"


More information about the Digitalmars-d mailing list