On 04.04.2017 0:59, Brent Royal-Gordon wrote:
On Apr 3, 2017, at 2:54 PM, Vladimir.S via swift-evolution
<[email protected] <mailto:[email protected]>> wrote:

Moreover, I think that we need *additional* access level(to current
'private'), which will mean 'can be accessed from extensions and subtypes
in the same *module*' to be able to split type's conformances to number
of files and don't make implementation details accessible&visible for
whole module. (there was 'extensible' modifier discussed previously).

If we wanted to do this, I think we'd want a `protected` modifier that was
orthogonal to `internal` and `private` (which would probably revert to
`fileprivate` semantics):

I don't think so, IMO it seems like over-complicated structure of access levels. I believe it is a required minimum to have current 'private' and something similar scope(type)-based but with wider scope. (in addition to public/internal/fileprivate). IMO this will resolve major percent of problems raised in the thread.


struct Foo {
private let bar: Int// Only visible in this file
protected private let baz: Int// Only visible in this file and type
let quux: Int// Only visible in this module
protected let quuux: Int// Only visible in this module and type
}

We might then consider extending `protected` to `public` and `open` scope.

I mention this not because I think type-based scoping is a good idea, but
because if we're gonna do it, we shouldn't do it halfway.

--
Brent Royal-Gordon
Architechies

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to