> On Jun 16, 2016, at 10:20 AM, Robert Widmann <devteam.cod...@gmail.com> wrote:
> 
> 
> 
> ~Robert Widmann
> 
> 2016/06/16 8:18、Matthew Johnson <matt...@anandabits.com 
> <mailto:matt...@anandabits.com>> のメッセージ:
> 
>> 
>>> On Jun 16, 2016, at 10:12 AM, Robert Widmann <devteam.cod...@gmail.com 
>>> <mailto:devteam.cod...@gmail.com>> wrote:
>>> 
>>> 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.
>> 
>> What I mean is that you just applied the semantic-preserving transformation 
>> of replacing `private` with `fileprivate` rather than reviewing whether the 
>> new `private` might be more appropriate given the intent of a specific piece 
>> of code.  That is reasonable for moving the implementation forward.
> 
> No, I actually sat for 4 hours and hand-migrated individual failing test 
> cases across 3 repositories over the weekend.  This was no simple sed job!

I certainly appreciate the effort you applied here!  So you did leave some 
things as `private` when they were not required to be more visible then?  I 
apologize if I misunderstood.

> 
>> 
>> However, the discussion on the PR is because the Swift PM team wants to take 
>> advantage of the new semantics of `private` rather than just preserving the 
>> existing semantics which were looser than desired.  That is also reasonable.
>> 
>> I understand that this discussion is what prompted the realization that the 
>> proposal is not explicit enough and therefore requires clarification from 
>> the core team.  Hopefully Doug (review manager for the proposal) will have a 
>> chance to chime in after WWDC wraps up.
> 
> Cheers.  I'm at WWDC along with them staffing the Swift labs today if anybody 
> wants to come find me and talk about this!

I would love to, but unfortunately didn’t get a ticket.  If you have a chance 
to discuss with Doug or other core team members please report back to the list!

> 
>> 
>>> 
>>> ~Robert Widmann
>>> 
>>> 2016/06/16 8:04、Matthew Johnson <matt...@anandabits.com 
>>> <mailto:matt...@anandabits.com>> のメッセージ:
>>> 
>>>> 
>>>>> On Jun 16, 2016, at 9:49 AM, Robert Widmann <devteam.cod...@gmail.com 
>>>>> <mailto: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 
>>>>> <https://github.com/apple/swift-package-manager/pull/410>
>>>>> 
>>>>> - XCTest
>>>>> 
>>>>> https://github.com/apple/swift-corelibs-xctest/pull/124 
>>>>> <https://github.com/apple/swift-corelibs-xctest/pull/124>
>>>>> 
>>>>> - Foundation
>>>>> 
>>>>> https://github.com/apple/swift-corelibs-foundation/pull/413 
>>>>> <https://github.com/apple/swift-corelibs-foundation/pull/413>
>>>>> 
>>>>> 
>>>>> ~Robert Widmann
>>>>> 
>>>>> 2016/06/16 7:35、Matthew Johnson <matt...@anandabits.com 
>>>>> <mailto:matt...@anandabits.com>> のメッセージ:
>>>>> 
>>>>>> 
>>>>>>> On Jun 16, 2016, at 9:30 AM, Robert Widmann <devteam.cod...@gmail.com 
>>>>>>> <mailto: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 
>>>>>> <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 
>>>>>>> <mailto:matt...@anandabits.com>> のメッセージ:
>>>>>>> 
>>>>>>>> 
>>>>>>>>> On Jun 16, 2016, at 9:23 AM, Robert Widmann <devteam.cod...@gmail.com 
>>>>>>>>> <mailto: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 
>>>>>>>>> <mailto: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 <mailto: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 <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

Reply via email to