> On Jul 13, 2016, at 10:26 AM, Xiaodi Wu via swift-evolution 
> <swift-evolution@swift.org> wrote:
> As Jordan mentioned, I don't (and I think other people don't) think of 
> extensions as their own entities, as they can't be referred to and have no 
> runtime representation. In that mental model, there isn't such a thing as "an 
> extension being public." Instead, the access modifier is just a shorthand 
> default for the properties and methods it contains, which is teachable but 
> unique to extensions. It is a matter of opinion whether that uniqueness is a 
> feature or a bug.

I would say that it's interesting but ultimately not worth the confusion about 
the nature of extensions.

John.

> 
> On Wed, Jul 13, 2016 at 12:19 Jose Cheyo Jimenez <ch...@masters3d.com 
> <mailto:ch...@masters3d.com>> wrote:
> 
> 
> On Jul 13, 2016, at 8:46 AM, Xiaodi Wu via swift-evolution 
> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
> 
>> 
>> 
>> On Wed, Jul 13, 2016 at 4:04 AM, Rod Brown via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>> Proposal link: 
>> https://github.com/apple/swift-evolution/blob/master/proposals/0119-extensions-access-modifiers.md
>>  
>> <https://github.com/apple/swift-evolution/blob/master/proposals/0119-extensions-access-modifiers.md>
>> 
>>>     * What is your evaluation of the proposal?
>> 
>> -1. Extensions appear to me to follow the access control of the rest of 
>> Swift: Implicit to the type you are extending, and you can either / both 
>> declare as part of the extension declaration or on the method. I don’t see 
>> how this is confusing, and I expect people will be more confused that 
>> extensions don’t follow the convention of the rest of Swift for Access 
>> Control.
>> 
>> So, actually, the proposal is correct that extensions (at least once 
>> fileprivate/private is implemented) don't follow the access control rules 
>> for the rest of Swift. There is a problem to be addressed. However, I agree 
>> that this proposal hasn't identified the issue or adequately explained how 
>> the solution solves it. Here's the problem I'm thinking of:
>> 
>> ```
>> public struct foo {
>>   func frobnicate() { } // implicitly internal
>> }
>> 
>> public struct bar { }
>> public extension bar {
>>   func frobnicate() { } // implicitly public
>>   // at least, according to the revised rules explained in SE-0025
>> }
>> ```
> 
> There is definitely a difference, I think that is a good thing. They look 
> similar but they are completely different. 
> 
> public Type // the type is public
> public extension Type //  the extension is public 
> 
> For extensions, public is just a modifier on extension, not the type. The 
> default scope inside the extension is that of the "modifier" keyword on the 
> extension. 
> 
> This is easy to explain to someone new. 
> 
> 
>> 
>> This is an inconsistency that may (and IMO, really is) worth addressing. If 
>> there's adequate interest, I can circulate a draft with a proposed solution 
>> I have in mind.
>>  
>> 
>>>     * Is the problem being addressed significant enough to warrant a change 
>>> to Swift?
>> 
>> I don’t think this warrants a change.
>> 
>>>     * Does this proposal fit well with the feel and direction of Swift?
>> No. This seems to go against the direction of Swift.
>> 
>>>     * If you have used other languages or libraries with a similar feature, 
>>> how do you feel that this proposal compares to those?
>> 
>> No.
>> 
>>>     * How much effort did you put into your review? A glance, a quick 
>>> reading, or an in-depth study?
>> A reading of the proposal.
>> 
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> 
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>> <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