The Swift PM case is actually the one that causes me to sound the alarm bells 
;) I migrated that one by hand as did @modocache for XCTest.

~Robert Widmann

2016/06/16 8:04、Matthew Johnson <matt...@anandabits.com> のメッセージ:

> 
>> On Jun 16, 2016, at 9:49 AM, Robert Widmann <devteam.cod...@gmail.com> wrote:
>> 
>> Can you not see the links to the rest of the corelibs changes in the 
>> discussion?  Then I'll reproduce them here
> 
> Thanks.  I don’t see anything unexpected here.  The Swift PM case is one 
> where the team wishes to take advantage of SE-0025 to tighten visibility and 
> express their intent more explicitly.  
> 
> The automated find / replace migration you applied is correct, but maybe they 
> want to slow down and review the changes so the results match the semantics 
> they desire.  That seems reasonable to me.
> 
> 
>> 
>> - SwiftPM
>> 
>> https://github.com/apple/swift-package-manager/pull/410
>> 
>> - XCTest
>> 
>> https://github.com/apple/swift-corelibs-xctest/pull/124
>> 
>> - Foundation
>> 
>> https://github.com/apple/swift-corelibs-foundation/pull/413
>> 
>> 
>> ~Robert Widmann
>> 
>> 2016/06/16 7:35、Matthew Johnson <matt...@anandabits.com> のメッセージ:
>> 
>>> 
>>>> On Jun 16, 2016, at 9:30 AM, Robert Widmann <devteam.cod...@gmail.com> 
>>>> wrote:
>>>> 
>>>> Find it under our own pull requests on apple/swift#3000
>>> 
>>> You mean this one: https://github.com/apple/swift/pull/3000 right?
>>> 
>>> What specifically did you want me to look at here?  Of course this proposal 
>>> is going to require a lot of changes to existing code (changing `private` 
>>> to `fileprivate`).  That was vetted and accepted during the review process. 
>>>  I don’t see how this is relevant to the current thread.  Is there some 
>>> other part of the discussion I am not seeing?
>>> 
>>>> 
>>>> ~Robert Widmann
>>>> 
>>>> 2016/06/16 7:28、Matthew Johnson <matt...@anandabits.com> のメッセージ:
>>>> 
>>>>> 
>>>>>> On Jun 16, 2016, at 9:23 AM, Robert Widmann <devteam.cod...@gmail.com> 
>>>>>> wrote:
>>>>>> 
>>>>>> Go checkout my branch!  And see the discussion there for how your 
>>>>>> proposal has impacted corelibs.
>>>>> 
>>>>> I’ll be happy to.  Can you please provide a link to the branch and 
>>>>> discussion?
>>>>> 
>>>>>> 
>>>>>> ~Robert Widmann
>>>>>> 
>>>>>> 2016/06/16 5:50、Matthew Johnson <matt...@anandabits.com> のメッセージ:
>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> Sent from my iPad
>>>>>>> 
>>>>>>> On Jun 16, 2016, at 5:20 AM, Brent Royal-Gordon via swift-evolution 
>>>>>>> <swift-evolution@swift.org> wrote:
>>>>>>> 
>>>>>>>>> 6. With the core team tied up at WWDC, you may want to temporarily 
>>>>>>>>> forbid the use of `private` on a type and revisit the matter when 
>>>>>>>>> people are less busy; if necessary, we could even ship Swift 3 that 
>>>>>>>>> way. Or you may want to consider making a guess as to a good 
>>>>>>>>> implementation model to apply. Two suggestions for alternate 
>>>>>>>>> implementation models:
>>>>>>>>> 
>>>>>>>>> a. Introduce a `parent` access level, meaning "visible in scopes 
>>>>>>>>> within this file where the parent is visible", which is between 
>>>>>>>>> `fileprivate` and `private`. Just as `internal` is the maximum 
>>>>>>>>> inherited access level, `parent` is the minimum, so the members of a 
>>>>>>>>> `private` type would inherit `parent` visibility. `parent` might be 
>>>>>>>>> an entirely compiler-internal concept, with no utterable access 
>>>>>>>>> control keyword.
>>>>>>>> 
>>>>>>>> Thinking about this more, I notice that `fileprivate` as currently 
>>>>>>>> defined doesn't actually make any sense to say inside a `private` 
>>>>>>>> type: if your parent type has less-than-file-wide visibility, nothing 
>>>>>>>> in the file that's outside its scope can see you anyway. Therefore, we 
>>>>>>>> could redefine `fileprivate` thusly:
>>>>>>>> 
>>>>>>>> 1. A member with `fileprivate` visibility is visible within the scope 
>>>>>>>> in which the nearest containing `private` type is visible.
>>>>>>>> 2. If there are no containing `private` types, it is visible within 
>>>>>>>> the file containing it.
>>>>>>>> 3. Just as the members of a `public` type are `internal`, so the 
>>>>>>>> members of a `private` type are `fileprivate`.
>>>>>>>> 
>>>>>>>> This kind of suggests that we ought to rename `fileprivate` to 
>>>>>>>> something that, y'know, doesn't say "file" in it. However, I can 
>>>>>>>> scarcely imagine the results of a round of bikeshedding without 
>>>>>>>> parental supervision from the core team, so I don't dare make any 
>>>>>>>> suggestions.
>>>>>>> 
>>>>>>> I am not convinced this is necessary.  If there *is* a containing 
>>>>>>> 'private' scope you can just leave the member unannotated to get this 
>>>>>>> behavior.  If there isn't you can use 'fileprivate' as it is already 
>>>>>>> defined.  Why is that not sufficient?
>>>>>>> 
>>>>>>> If you really want a second, more nuanced and complex scope-dependent 
>>>>>>> access control mechanism I think you'll need to submit a proposal for 
>>>>>>> it.  A simple renaming to 'fileprivate' is what has been accepted thus 
>>>>>>> far.  
>>>>>>> 
>>>>>>> The main argument for what you suggest is that it would provide a way 
>>>>>>> to ensure visibility of the member is*never* more than the file, but is 
>>>>>>> as visible as possible within the file, while being less sensitive to 
>>>>>>> changes in visibility of surrounding scopes.  IMO we need to get some 
>>>>>>> experience with SE-0025 in real code before we know whether this is a 
>>>>>>> problem that needs solving or not.
>>>>>>> 
>>>>>>> -Matthew
>>>>>>> 
>>>>>>>> 
>>>>>>>> -- 
>>>>>>>> Brent Royal-Gordon
>>>>>>>> Architechies
>>>>>>>> 
>>>>>>>> _______________________________________________
>>>>>>>> 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