<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 Oct 6, 2017, at 8:01 PM, Tony Allevato <<a href="mailto:tony.allevato@gmail.com" class="">tony.allevato@gmail.com</a>> wrote:</div><div class=""><div dir="ltr" style="font-family: Helvetica; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;"><div style="word-wrap: break-word;" class=""><div class=""><br class=""></div></div></blockquote><div class="">At the time SE-0025 was accepted, "private extension" would have been meaningless if it did not mean "fileprivate" because it predated the SE-0169 behavior extending "private" to extensions in the same file. The very issue being debated here is whether the oversight that SE-0169 did not consider extensions—now that "private extension" *could* have a meaningful use separate from "fileprivate extension"—is something that is worth correcting.</div><div class=""><br class=""></div><div class="">If the documentation is out-of-date and needs to be updated to list describe unintuitive special behavior, why not use the opportunity to make the behavior intuitive and consistent instead?</div></div></div></div></blockquote><div><br class=""></div><div>Lets say you “fix” the private extension override. Now MyClass2.myFunc2() is not accessible from outside the type. </div><div>Wouldn't MyClass2.myFunc2() now be inconsistent with MyClass.myFunc()? </div><div>I don’t think you can make a change to one with out causing other inconsistencies. I rest my case. :) </div><div><br class=""></div><div><br class=""></div><div><div class=""><div style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo; color: rgb(222, 56, 165); background-color: rgb(0, 0, 0);" class="">private<span style="color: rgb(255, 255, 255);" class=""> </span>class<span style="color: rgb(255, 255, 255);" class=""> MyClass {</span></div><div style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo; color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);" class=""> <span style="color: rgb(222, 56, 165);" class="">static</span> <span style="color: rgb(222, 56, 165);" class="">func</span> myFunc(){ <span style="color: rgb(75, 209, 86);" class="">// This would now act differently from private extensions? </span></div><div style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo; color: rgb(255, 70, 71); background-color: rgb(0, 0, 0);" class=""><span style="color: rgb(255, 255, 255);" class=""> </span><span style="color: rgb(0, 177, 255);" class="">print</span><span style="color: rgb(255, 255, 255);" class="">(</span>"acts like fileprivate now"<span style="color: rgb(255, 255, 255);" class="">)</span></div><div style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo; color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);" class=""> }</div><div style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo; color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);" class="">}</div><div style="margin: 0px; font-size: 12px; line-height: normal; background-color: rgb(0, 0, 0); min-height: 14px;" class=""><br class=""></div><div style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo; color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);" class=""><span style="color: rgb(222, 56, 165);" class="">private</span> <span style="color: rgb(222, 56, 165);" class="">class</span> MyClass2 {}</div><div style="margin: 0px; font-size: 12px; line-height: normal; background-color: rgb(0, 0, 0); min-height: 14px;" class=""><br class=""></div><div style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo; color: rgb(222, 56, 165); background-color: rgb(0, 0, 0);" class="">private<span style="color: rgb(255, 255, 255);" class=""> </span>extension<span style="color: rgb(255, 255, 255);" class=""> </span><span style="color: rgb(8, 250, 149);" class="">MyClass2</span><span style="color: rgb(255, 255, 255);" class="">{</span></div><div style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo; color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);" class=""> <span style="color: rgb(222, 56, 165);" class="">static</span> <span style="color: rgb(222, 56, 165);" class="">func</span> myFunc2(){</div><div style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo; color: rgb(255, 70, 71); background-color: rgb(0, 0, 0);" class=""><span style="color: rgb(255, 255, 255);" class=""> </span><span style="color: rgb(0, 177, 255);" class="">print</span><span style="color: rgb(255, 255, 255);" class="">(</span>"Same as MyClass.myFunc"<span style="color: rgb(255, 255, 255);" class="">)</span></div><div style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo; color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);" class=""> }</div><div style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo; color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);" class="">}</div><div style="margin: 0px; font-size: 12px; line-height: normal; background-color: rgb(0, 0, 0); min-height: 14px;" class=""><br class=""></div><div style="margin: 0px; font-size: 12px; line-height: normal; background-color: rgb(0, 0, 0); min-height: 14px;" class=""><br class=""></div><div style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo; color: rgb(75, 209, 86); background-color: rgb(0, 0, 0);" class=""><span style="color: rgb(8, 250, 149);" class="">MyClass</span><span style="color: rgb(255, 255, 255);" class="">.</span><span style="color: rgb(8, 250, 149);" class="">myFunc</span><span style="color: rgb(255, 255, 255);" class="">() </span>// acts like fileprivate</div><div style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo; color: rgb(75, 209, 86); background-color: rgb(0, 0, 0);" class=""><span style="color: rgb(8, 250, 149);" class="">MyClass2</span><span style="color: rgb(255, 255, 255);" class="">.</span><span style="color: rgb(8, 250, 149);" class="">myFunc2</span><span style="color: rgb(255, 255, 255);" class="">() </span>// The proposed change would hide myFunc2</div><div style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo; color: rgb(75, 209, 86); background-color: rgb(0, 0, 0);" class=""><span style="color: rgb(255, 255, 255);" class=""> </span>//Error: 'myFunc2' is inaccessible due to 'private' protection level</div></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div></div><div><br class=""></div><div><br class=""></div><div><br class=""></div></div></body></html>