> On Apr 5, 2017, at 2:27 PM, Tony Arnold via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> I know Swift has different purposes for different people here, but ultimately 
> it’s supposed to support great application development for Apple’s platforms, 
> right? To my eyes, `fileprivate` should never have been introduced without 
> some kind of `typeprivate` (similar to how things would be declared back in 
> Objective-C land with a `*+Private.h` header that you could import when it 
> was needed). Right now, there’s no way to duplicate that pattern in Swift - I 
> would need to make anything I wish to access `internal` which exposes it to 
> everything within the application/module - surprisingly, this is a regression 
> from the tooling and access levels I had available in Objective-C. 


If our goal was to duplicate what Objective-C could do but without header 
files, we would essentially have:

* `public`
* `internal`
* `semiprivate`
* `fileprivate`

Symbols in `semiprivate` scope would be visible to the file they were in as 
well as any file that explicitly asked for access to `semiprivate` symbols in 
that file. (In practice, I think we'd probably tie `semiprivate` to submodules, 
not to files, though submodule membership might not have a granularity below 
full files.)

There would be no scoped `private` or `typeprivate` or anything of the sort. 
That just isn't a thing that existed in Objective-C. So I'm not sure why you're 
invoking Objective-C to argue that we need a type-based private.

-- 
Brent Royal-Gordon
Architechies

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to