On Wednesday, 9 October 2013 at 08:05:30 UTC, Andrei Alexandrescu
wrote:
I'm hesitant about stuff that computes function summaries such
as __traits(getFunctionsCalled, function) without allowing
those summaries to make it into the function's signature or
attributes. It makes separate compilation difficult.
That's the verification of the attribute. You can still attach
the attribute to a prototype without a body for separate
compiliation (this is the same as @safe - the prototype could be
lying and the compiler can't verify, but you trust the annotation
is correct).
The advantage __traits(getFunctionsCalled) has over a built-in
@nogc is simply that we can define it all in the library, and add
more, combine ones*, etc., without changing the language again.
* A library uda could be defined to check @everything || @nogc or
whatever, since it is ultimately implemented as a static assert
which can do it all too.