[swift-evolution] Swift evolution proposal: introduce typeprivate access control level

Jonathan Hull jhull at gbis.com
Fri Dec 2 15:35:31 CST 2016


Assuming that this is true (I tend to agree), why do we need any extra syntax at all?  Couldn’t we just make everything accessible to extensions?

Alternatively, if we do want to hide some things from extensions by default (to prevent accidental use), I had a proposal a while back which had a very simple way to control what is shared. Basically, you could have a special import statement which allows you to extend knowledge/access of the hidden parts to another file (you were also able to limit the range of this ability if needed).

Most of the feedback at the time seemed to want submodules instead, but I still think there will still eventually be a need for something like this. As others have mentioned, the current system is inflexible (especially to the common use cases), causing people to keep requesting additions… and forcing them to give wider access than they want to in the mean time.  Even if we have sub-modules, someone will want to share with a specific other sub-module, but not make things public.



> On Dec 1, 2016, at 1:31 AM, Tino Heth via swift-evolution <swift-evolution at swift.org> wrote:
> 
> 
>> It also means that anybody who want to access your private var will just have to write an extension to expose it.
> imho this is wrong thinking:
> Access control is no tool to offer real "protection" — it can't stop someone who wants to break a system.
> Especially in the world of open source, it is merely an advice from the author not to do certain things.
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20161202/7c279519/attachment.html>


More information about the swift-evolution mailing list