@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