<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. 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><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 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>