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"