That behaviour was never explicitly mentioned in SE-0169 but I agree its 
confusing. But I’m also fairly sure the only window to do anything about it is 
Swift 4. Everybody is really worn down by those access level discussions.

For illustration, Vladimir is confused that:

private extension Foo {
    func foo() {}
}

is equivalent to:

fileprivate extension Foo {
    func foo() {}
}

making it accessible to another type in the same file:

struct Bar {
    func bar(foo: Foo) {
        foo.foo()
    }
}

Aren't access levels on extensions supposed to define the default access level 
of the members of the extension?Is this a bug then?

> On 9 Aug 2017, at 21:18, Vladimir.S via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> Could someone remind please, was it decided to stick with 'private extension' 
> means actually fileprivate access level for members declared in such 
> extension or this could be discussed for Swift5?
> 
> Currently, when private members are visible in type/extensions of that type 
> in the same file, IMO there is no sense to treat 'private extension' as 
> 'fileprivate extension', it is reasonable to group some private members of 
> type into extension without making them fileprivate, and such members can be 
> used from the type/other extensions.
> 
> And also this is a huge inconsistency in my opinion: all other access 
> modifiers 'work' as expected for extensions, but only 'private extension' 
> means not what written, very surprising for one who don't expect this.
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

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

Reply via email to