<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 12 Apr 2017, at 07:42, Chris Lattner &lt;<a href="mailto:clattner@nondot.org" class="">clattner@nondot.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">On Apr 11, 2017, at 10:30 PM, David Hart &lt;<a href="mailto:david@hartbit.com" class="">david@hartbit.com</a>&gt; wrote:<br class=""><div class=""><blockquote type="cite" class=""><div class=""><div class=""><blockquote type="cite" class="">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). &nbsp;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.<br class=""></blockquote><br class="">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.<br class=""><br class="">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.<br class=""></div></div></blockquote></div><br class=""><div class="">Ah, you’re saying:</div><div class=""><br class=""></div><div class=""><b class="">a.swift:</b></div><div class="">struct X {}</div><div class=""><br class=""></div><div class=""><b class="">b.swift:</b></div><div class="">extension X {</div><div class="">&nbsp; private func f() {}</div><div class="">}</div><div class=""><br class=""></div><div class="">extension X {</div><div class="">&nbsp; func g() { f() }</div><div class="">}</div><div class=""><br class=""></div><div class="">If so, then yes, I agree we should accept that.</div><div class=""><br class=""></div><div class="">-Chris</div></div></div></blockquote><br class=""></div><div>Should we edit the proposal or let the Core Team fix it during review as John suggests?</div><br class=""></body></html>