On Mon, 12 Mar 2012 10:40:16 +0100, Walter Bright
<[email protected]> wrote:
On 3/12/2012 1:08 AM, Martin Nowak wrote:
What's wrong with auto-inference. Inferred attributes are only
strengthening
guarantees.
Auto-inference is currently done for lambdas and template functions -
why? - because the function's implementation is guaranteed to be visible
to the compiler. For other functions, not so, and so the attributes must
be part of the function signature.
A "@safe pure nothrow const" might be used as "@system".
That means someone using a declaration may have a different view
than someone providing the implementation.
Those interface boundaries are also a good place for by-hand annotations
to provide explicit API guarantees and enforce a correct implementation.
Though another issue with inference is that it would require a
depth-first-order for the semantic passes.
I also hope we still don't mangle inferred attributes.