On 4/12/2014 7:08 PM, Dicebot wrote:
On Saturday, 12 April 2014 at 22:02:26 UTC, Nick Sabalausky wrote:
*Now* doStuff can be marked @safe and enjoy all the special checks
that @safe provides.

_and_ is terribly wrong because it is not guaranteed to be @safe for all
use cases, braking type system once used anywhere but "special" functions.


If, as you say, this is wrong:

----------------------------------
@system auto foo() {...}

// Note, I meant for trustedWrapperWhatever to be private
// and placed together with doStuff. Obviously not a public
// func provided by foo's author.
@trusted private auto trustedWrapperFoo(...) {...}

@safe void doStuff() {
    ...stuff...

    // Yes, as the author of doStuff, I'm acknowledging
    // foo's lack of @safe-ty
    trustedWrapperFoo();

    ...stuff...
}
----------------------------------

Then how could this possibly be any better?:

----------------------------------
@system auto foo() {...}

@trusted void doStuff() {
    ...stuff...
    foo();
    ...stuff...
}
----------------------------------

The former contains extra safety checks (ie, for everything in "...stuff...") that the latter does not. The former is therefore better.

Reply via email to