As Jordan mentioned, I don&#39;t (and I think other people don&#39;t) think of extensions as their own entities, as they can&#39;t be referred to and have no runtime representation. In that mental model, there isn&#39;t such a thing as &quot;an extension being public.&quot; Instead, the access modifier is just a shorthand default for the properties and methods it contains, which is teachable but unique to extensions. It is a matter of opinion whether that uniqueness is a feature or a bug.<br><br><div class="gmail_quote"><div dir="ltr">On Wed, Jul 13, 2016 at 12:19 Jose Cheyo Jimenez &lt;<a href="mailto:cheyo@masters3d.com">cheyo@masters3d.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div></div><div><br></div><div><br>On Jul 13, 2016, at 8:46 AM, Xiaodi Wu via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br><br></div><blockquote type="cite"><div><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 13, 2016 at 4:04 AM, Rod Brown via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>Proposal link: <a href="https://github.com/apple/swift-evolution/blob/master/proposals/0119-extensions-access-modifiers.md" target="_blank">https://github.com/apple/swift-evolution/blob/master/proposals/0119-extensions-access-modifiers.md</a></div><div><br></div><div><span><blockquote type="cite"><span style="white-space:pre-wrap">        </span>* What is your evaluation of the proposal?<br></blockquote></span><div>-1. Extensions appear to me to follow the access control of the rest of Swift: Implicit to the type you are extending, and you can either / both declare as part of the extension declaration or on the method. I don’t see how this is confusing, and I expect people will be more confused that extensions don’t follow the convention of the rest of Swift for Access Control.</div></div></div></blockquote><div><br></div><div>So, actually, the proposal is correct that extensions (at least once fileprivate/private is implemented) don&#39;t follow the access control rules for the rest of Swift. There is a problem to be addressed. However, I agree that this proposal hasn&#39;t identified the issue or adequately explained how the solution solves it. Here&#39;s the problem I&#39;m thinking of:</div><div><br></div><div>```</div><div>public struct foo {</div><div>  func frobnicate() { } // implicitly internal</div><div>}</div><div><br></div><div>public struct bar { }</div><div>public extension bar {</div><div>  func frobnicate() { } // implicitly public</div><div>  // at least, according to the revised rules explained in SE-0025</div><div>}</div><div>```</div></div></div></div></div></blockquote><div><br></div></div><div dir="auto"><div>There is definitely a difference, I think that is a good thing. <span style="background-color:rgba(255,255,255,0)">They look similar but they are completely different. </span></div><div><br></div><div>public Type // the type is public</div><div>public extension Type //  the extension is public </div><div><br></div><div>For extensions, public is just a modifier on extension, not the type. The default scope inside the extension is that of the &quot;modifier&quot; keyword on the extension. </div><div><br></div><div>This is easy to explain to someone new. </div></div><div dir="auto"><div><br></div><br><blockquote type="cite"><div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div>This is an inconsistency that may (and IMO, really is) worth addressing. If there&#39;s adequate interest, I can circulate a draft with a proposed solution I have in mind.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><span><br><blockquote type="cite"><span style="white-space:pre-wrap">        </span>* Is the problem being addressed significant enough to warrant a change to Swift?<br></blockquote></span><div>I don’t think this warrants a change.</div><span><br><blockquote type="cite"><span style="white-space:pre-wrap">        </span>* Does this proposal fit well with the feel and direction of Swift?<br></blockquote></span>No. This seems to go against the direction of Swift.</div><div><span><br><blockquote type="cite"><span style="white-space:pre-wrap">        </span>* If you have used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?<br></blockquote></span><div>No.</div><span><div><br></div><blockquote type="cite"><span style="white-space:pre-wrap">        </span>* How much effort did you put into your review? A glance, a quick reading, or an in-depth study?</blockquote></span>A reading of the proposal.</div><div><br></div></div><br>_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
<br></blockquote></div><br></div></div>
</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>swift-evolution mailing list</span><br><span><a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a></span><br><span><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a></span><br></div></blockquote></div></blockquote></div>