> On Apr 22, 2017, at 2:05 PM, Jose Cheyo Jimenez <[email protected]> wrote:
> 
> 
> 
>> On Apr 22, 2017, at 12:30 PM, Xiaodi Wu <[email protected]> wrote:
>> 
>>> On Sat, Apr 22, 2017 at 11:51 AM, Jose Cheyo Jimenez via swift-evolution 
>>> <[email protected]> wrote:
>>> 
>>> 
>>>> On Apr 21, 2017, at 8:41 PM, BJ Homer via swift-evolution 
>>>> <[email protected]> wrote:
>>>> 
>>>> The "Access Control" section of the Swift 3 book says the following:
>>>>> You can mark an extension with an explicit access-level modifier (for 
>>>>> example, private extension) to set a new default access level for all 
>>>>> members defined within the extension.
>>>> The behavior of "private extension" in Swift 3 was a deviation from that 
>>>> model, justified because "private" as a default would have meant that 
>>>> nothing in the extension could ever be called. But it was still contrary 
>>>> to the model suggested by the Swift documentation. 
>>>> 
>>>> Given the highly restrictive behavior of "private" in Swift 3 and the 
>>>> documentation quoted above, it seems unlikely that a developer would 
>>>> intentionally use "private extension" to mean "please make all this stuff 
>>>> visible to the entire file"—it would have worked, but it seems an odd way 
>>>> to write it. If that were the intention, I think "fileprivate extension" 
>>>> would have been more likely.
>>>> 
>>>> I think the change to the behavior of "private extension" is in line with 
>>>> the model proposed by SE-0169, in line with the documented behavior of 
>>>> access control on extensions, and in line with user expectations.
>>>> 
>>>> -BJ
>>> 
>>> I understand your point. Another aspect of SE-0169 is that fileprivate 
>>> should be more rare and thus meaningful when used. The current behavior 
>>> stays true to the goal of making fileprivate rare. 
>>> 
>>> A top level private scope is effectively fileprivate so it is not totally 
>>> weird for the extension members to inherit the top level private scope. 
>>> 
>>> When extensions gain the ability to contain properties, we should not allow 
>>> the access level modifiers to the extensions in the same way protocol 
>>> extensions prohibit its use. 
>> 
>> That idea would be my preference too, but it has been already written up as 
>> a proposal, considered, and rejected.
> 
> Properties in extensions? AKA partials ? I was thinking disallow only when 
> properties are introduced in the extension not in general. 

I meant stored properties here. 
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to