On Fri, Sep 2, 2016 at 8:47 AM, ketmar via Digitalmars-d-announce <digitalmars-d-announce@puremagic.com> wrote:
On Friday, 2 September 2016 at 06:27:11 UTC, Rory McGuire wrote:
Perhaps @system code should just completely ignore privacy?

it is uncontrollable. imagine attribute inference: today, your function was inferred @system, and it sees everything. and tomorrow you fixed some other things, and now your function inferred as @safe. BOOM! without warning, it doesn't do what it does before (but still works!), and you didn't even touched it's code. this is the worst kind of breakage.

I'm meaning if the dev marks the whole module as @system. I'm not convinced that _any_ code should ever be inferred as @system. Its not okay for people to accidentally make @system code.
 


Could have a compiler option that changes the access errors into warnings?

each compiler option of this kind means "we failed our design task, brought you the feature that is so unusable that we even made it possible to turn it off globally. sorry, we giving up, now it is up to you to clean up the mess after us."

You may have a point there, even if its a bit excessive. I would like this as a pragma, but then that leads us down the road of not even bothering to change the compiler and just use a analysis tool.

mmm, even if we did make private access illegal we can still access whatever we want if we have the source code so...

e.g. mixin(import(moduleName!exampleSymbol).replace("private", "public"));

not sure it would always work...