<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body 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">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 class=""><blockquote type="cite"><span style="white-space:pre-wrap">        </span>* What is your evaluation of the proposal?<br></blockquote></span><div>-1.&nbsp;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'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't identified the issue or adequately explained how the solution solves it. Here's the problem I'm thinking of:</div><div><br></div><div>```</div><div>public struct foo {</div><div>&nbsp; func frobnicate() { } // implicitly internal</div><div>}</div><div><br></div><div>public struct bar { }</div><div>public extension bar {</div><div>&nbsp; func frobnicate() { } // implicitly public</div><div>&nbsp; // 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>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.&nbsp;</span></div><div><br></div><div>public Type // the type is public</div><div>public extension Type // &nbsp;the extension is public&nbsp;</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 "modifier" keyword on the extension.&nbsp;</div><div><br></div><div>This is easy to explain to someone new.&nbsp;</div><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's adequate interest, I can circulate a draft with a proposed solution I have in mind.</div><div>&nbsp;</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 class=""><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 class=""><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 class=""><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 class=""><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">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">swift-evolution@swift.org</a></span><br><span><a href="https://lists.swift.org/mailman/listinfo/swift-evolution">https://lists.swift.org/mailman/listinfo/swift-evolution</a></span><br></div></blockquote></body></html>