[swift-evolution] Analysis of existing scopes
Joanna Carter
joanna at carterconsulting.org.uk
Thu Feb 23 04:47:13 CST 2017
And now I find, what I consider to be, a very peculiar anomaly in method visibility.
private class PrivateBaseClass
{
internal func internalFunc() { }
public func publicFunc() { }
open func openFunc() { }
}
private class PrivateDerivedClass : PrivateBaseClass
{
fileprivate override func internalFunc() { }
fileprivate override func publicFunc() { }
fileprivate override func openFunc() { }
}
internal class InternalDerivedFromPrivateClass : PrivateBaseClass { } // error : Class cannot be declared internal because its superclass is fileprivate
Can somebody please explain why I can declare internal, public and open members on a private class, and even override them in a derived private class, all without even a compiler warning, when, as soon as I try to extend the visibility of a private class, I am told that I cannot so do.
I mean, it is blatantly obvious why you would not want higher visibility members in a limited visibility class, so why doesn't the compiler simply state that all members cannot have a visibility higher than the declaring class?
--
Joanna Carter
Carter Consulting
More information about the swift-evolution
mailing list