[swift-evolution] [Draft] open and public protocols

Matthew Johnson matthew at anandabits.com
Sun Feb 19 11:51:55 CST 2017



Sent from my iPad

> On Feb 19, 2017, at 10:39 AM, Adrian Zubarev <adrian.zubarev at devandartist.com> wrote:
> 
> Still not what I was asking about.
> 
> Module A contains a single open protocol: open protocol P { func foo() }
> Module B contains a single open class that conforms to P:
> open class B : P {
>     /* what is the default access modifier here? */ func foo()
> }
> 

I believe it would be the same with or without the protocol conformance.  In any case, this has nothing to do with this proposal.  It does not affect open classes or open protocols.

> 
> -- 
> Adrian Zubarev
> Sent with Airmail
> 
> Am 19. Februar 2017 um 17:35:04, Matthew Johnson (matthew at anandabits.com) schrieb:
> 
>> 
>> 
>> Sent from my iPhone
>> 
>> On Feb 19, 2017, at 10:28 AM, Adrian Zubarev <adrian.zubarev at devandartist.com> wrote:
>> 
>>> I really feel I’m blind, I cannot find it. Is the access modifier of open protocol *members* on open/public classes public by default, or open?
>>> 
>>> If open, can we downgrade it to public in an open class?
>> 
>> I didn't specifically address members of open classes but did address open classes.  This proposal does not have any impact of the visibility of members of open classes that conform to a public (nonopen) protocol, including the default.
>>> 
>>> 
>>> -- 
>>> Adrian Zubarev
>>> Sent with Airmail
>>> 
>>> Am 19. Februar 2017 um 17:16:59, Matthew Johnson (matthew at anandabits.com) schrieb:
>>> 
>>>> 
>>>> 
>>>> Sent from my iPhone
>>>> 
>>>> On Feb 19, 2017, at 10:11 AM, Adrian Zubarev <adrian.zubarev at devandartist.com> wrote:
>>>> 
>>>>> @Matthew: Have you considered what happens with the access modifier of an open protocol when an open/public class conforms to it?
>>>>> 
>>>> 
>>>> Yes I covered this in the detailed design section of the proposal.
>>>>> // Module A
>>>>> open protocol A {
>>>>>     func foo()
>>>>> }
>>>>> 
>>>>> // Module B
>>>>> open class B : A {
>>>>>     (open or public) func foo() {}
>>>>>     // If `open`, can we downgrade to `public`?
>>>>>     // The other way around seems straightforward    
>>>>> }
>>> 
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170219/01931b87/attachment.html>


More information about the swift-evolution mailing list