> On 3 Oct 2017, at 05:12, Xiaodi Wu via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
>> On Mon, Oct 2, 2017 at 9:16 PM, Matthew Johnson via swift-evolution 
>> <swift-evolution@swift.org> wrote:
>> 
>> 
>> Sent from my iPad
>> 
>>> On Oct 2, 2017, at 7:33 PM, Jordan Rose via swift-evolution 
>>> <swift-evolution@swift.org> wrote:
>>> 
>>> 
>>> 
>>>> On Oct 2, 2017, at 03:25, Vladimir.S via swift-evolution 
>>>> <swift-evolution@swift.org> wrote:
>>>> 
>>>> On 01.10.2017 1:18, Chris Lattner wrote:
>>>>>> On Sep 29, 2017, at 10:42 AM, Xiaodi Wu via swift-evolution 
>>>>>> <swift-evolution@swift.org> wrote:
>>>>>> 
>>>>>> Vladimir, I agree with you on that change, but it’s a separate topic 
>>>>>> from this one.
>>>>>> 
>>>>>> Tony is absolutely correct that this topic has already been discussed. 
>>>>>> It is a deliberate design decision that public types do not 
>>>>>> automatically expose members without explicit access modifiers; this has 
>>>>>> been brought up on this list, and it is clearly not in scope for 
>>>>>> discussion as no new insight can arise this late in the game. The 
>>>>>> inconsistency with public extensions was brought up, the proposed 
>>>>>> solution was to remove modifiers for extensions, but this proposal was 
>>>>>> rejected. So, the final design is what we have.
>>>>> Agreed.  The core team would only consider a refinement or change to 
>>>>> access control if there were something actively broken that mattered for 
>>>>> ABI stability.
>>>> 
>>>> So we have to live with *protected* extension inconsistency for very long 
>>>> time just because core team don't want to even discuss _this particular_ 
>>>> inconsistency(when access level in *private extension* must be private, 
>>>> not fileprivate)?
>>>> 
>>>> Yes, we decided that access level for extension will mean a default and 
>>>> top most access level for nested methods, OK. But even in this rule, which 
>>>> already differ from access modifiers for types, we have another one 
>>>> special case for 'private extension'.
>>>> 
>>>> Don't you think this is not normal situation and actually there IMO can't 
>>>> be any reason to keep this bug-producing inconsistency in Swift? 
>>>> (especially given Swift 5 seems like is a last moment to fix this)
>>> 
>>> I hate to say it but I'm inclined to agree with Vladimir on this. "private 
>>> extension" has a useful meaning now distinct from "fileprivate extension", 
>>> and it was an oversight that SE-0169 didn't include a fix here. On this 
>>> very narrow, very specific access control issue I think it would still be 
>>> worth discussing; like Xiaodi said it's not related to James' original 
>>> thread-starter.
>> 
>> I agree with this in principle but would not want to see it become a 
>> slippery slope back into extremely long access control discussions.
>> 
> 
> As I've said elsewhere, I too agree with this in principle. I agree with 
> Jordan that the current state of things is justifiable but the alternative 
> would be somewhat superior, agree that in a vacuum this very narrow and 
> specific discussion might be warranted, and agree also that this could be a 
> very slippery slide down a very steep slope.

Same here. It’s the only grudge I have left with the current access control 
situation. I remember Doug Gregor and John McCall discussing this during the 
last access control proposal. And I wouldn’t mind having a very narrow 
discussion about only this.

I organize my types into extensions for each conformance and for each access 
control. I can currently implicitly apply public or fileprivate to all members 
of an extension but I have no way of doing the same for private. That’s why I 
think it should be fixed.

>>> 
>>> (I maintain that the current model does not include a special case; it 
>>> simply means the 'private' is resolved at the level of the extension rather 
>>> than the level of its members. But that isn't what people expect and it's 
>>> not as useful.)
>>> 
>>> 
>>> I agree that changing the behavior of all access modifiers on extensions is 
>>> out of scope. (I also agree that it is a bad idea. Sorry, James, but 
>>> wanting 'pubic' here indicates that your mental model of extensions does 
>>> not match what Swift is actually doing, and that could get you into 
>>> trouble.)
>>> 
>>> Jordan
>>> 
>>> _______________________________________________
>>> 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
>> 
> 
> _______________________________________________
> 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