> On 12 Apr 2017, at 07:16, Chris Lattner <clatt...@nondot.org> wrote:
> 
> On Apr 11, 2017, at 3:53 AM, David Hart via swift-evolution 
> <swift-evolution@swift.org> wrote:
>>>> I understand what you are saying and I wouldn't be against relaxing that 
>>>> requirement (not talking for Chris here).
>>>> 
>>>> The model would change from "Types share scopes with their extensions in 
>>>> the same file the type was defined" to "Types and their extensions share 
>>>> the same scope in each file".
>>> 
>>> Oh, I had missed that somehow.  I agree that that is a very strange rule.  
>>> Do you know why it was proposed that way?
>> 
>> We had to take a stance and Chris seemed to prefer the rule that was 
>> proposed. I didn't press because I'm sure he has reasons for preferring it 
>> that way. But I have a preference for generalizing visibility to all 
>> extensions, even to those in a different file than the type.
> 
> To me, the reason for limiting it to a file is about predictability, the 
> ability to locally reason about a type, and the need to define some boundary 
> (for symbol visibility reasons).  Saying that extensions to a type have 
> access to private members if they are in the same module is just as arbitrary 
> as limiting it to a single file, and a whole lot less useful from the 
> “reasoning about a type” perspective.

I think you misunderstand. We were talking about two extensions of a type, in a 
different file from the type, to share private members between themselves.

Doug Gregor mentioned it during the PR process and we added an example to 
disallow it, but in hindsight, I think it should be allowed.

> Expanding it beyond a module would require a ton of stuff to be exported that 
> otherwise wouldn’t be, and would defeat a ton of optimization potential that 
> we can’t accept.
> 
> -Chris
> 

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to