<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="">I’m +1 on the following:<div class=""><br class=""></div><div class=""><table cellspacing="0" cellpadding="0" style="margin: 0.0px 0.0px 18.0px 0.0px; border-collapse: collapse" class="">
<tbody class="">
<tr class="">
<td valign="middle" style="width: 119.0px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #4b5362 #4b5362 #4b5362 #4b5362; padding: 7.9px 12.0px 7.9px 12.0px" class=""><div style="margin: 0px; line-height: normal; font-family: 'Lucida Grande';" class=""><span style="font-family: Helvetica; font-size: 12px;" class=""><b class="">current</b></span></div>
</td>
<td valign="middle" style="width: 212.9px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #4b5362 #4b5362 #4b5362 #4b5362; padding: 7.9px 12.0px 7.9px 12.0px" class=""><div style="margin: 0px; line-height: normal; font-family: 'Lucida Grande';" class=""><span style="font-family: Helvetica; font-size: 12px;" class=""><b class="">new</b></span></div>
</td>
</tr>
<tr class="">
<td valign="middle" style="width: 119.0px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #4b5362 #4b5362 #4b5362 #4b5362; padding: 7.9px 12.0px 7.9px 12.0px" class=""><div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="-webkit-font-kerning: none; font-size: 12px;" class="">private</span></div>
</td>
<td valign="middle" style="width: 212.9px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #4b5362 #4b5362 #4b5362 #4b5362; padding: 7.9px 12.0px 7.9px 12.0px" class=""><div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="-webkit-font-kerning: none; font-size: 12px;" class="">private</span></div>
</td>
</tr>
<tr class="">
<td valign="middle" style="width: 119.0px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #4b5362 #4b5362 #4b5362 #4b5362; padding: 7.9px 12.0px 7.9px 12.0px" class=""><div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="-webkit-font-kerning: none; font-size: 12px;" class="">fileprivate</span></div>
</td>
<td valign="middle" style="width: 212.9px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #4b5362 #4b5362 #4b5362 #4b5362; padding: 7.9px 12.0px 7.9px 12.0px" class=""><div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="-webkit-font-kerning: none; font-size: 12px;" class="">private(file)</span></div>
</td>
</tr>
<tr class="">
<td valign="middle" style="width: 119.0px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #4b5362 #4b5362 #4b5362 #4b5362; padding: 7.9px 12.0px 7.9px 12.0px" class=""><div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="-webkit-font-kerning: none; font-size: 12px;" class="">internal</span></div>
</td>
<td valign="middle" style="width: 212.9px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #4b5362 #4b5362 #4b5362 #4b5362; padding: 7.9px 12.0px 7.9px 12.0px" class=""><div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="-webkit-font-kerning: none; font-size: 12px;" class="">private(module)</span></div>
</td>
</tr>
<tr class="">
<td valign="middle" style="width: 119.0px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #4b5362 #4b5362 #4b5362 #4b5362; padding: 7.9px 12.0px 7.9px 12.0px" class=""><div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="-webkit-font-kerning: none; font-size: 12px;" class="">public</span></div>
</td>
<td valign="middle" style="width: 212.9px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #4b5362 #4b5362 #4b5362 #4b5362; padding: 7.9px 12.0px 7.9px 12.0px" class=""><div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="-webkit-font-kerning: none; font-size: 12px;" class="">public</span></div>
</td>
</tr>
<tr class="">
<td valign="middle" style="width: 119.0px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #4b5362 #4b5362 #4b5362 #4b5362; padding: 7.9px 12.0px 7.9px 12.0px" class=""><div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="-webkit-font-kerning: none; font-size: 12px;" class="">open</span></div>
</td>
<td valign="middle" style="width: 212.9px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #4b5362 #4b5362 #4b5362 #4b5362; padding: 7.9px 12.0px 7.9px 12.0px" class=""><div style="margin: 0px; line-height: normal; font-family: Menlo;" class=""><span style="-webkit-font-kerning: none; font-size: 12px;" class="">open</span></div></td></tr></tbody></table><div class=""><div class="">The only thing that keeps bothering me is <font face="Menlo" class="">private(set)</font>&nbsp;and how it will harmonize with this proposed scheme.</div><div class=""><br class="webkit-block-placeholder"></div><div class="">
<div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><font color="#929292" class=""><br class="Apple-interchange-newline">Regards,</font></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><font color="#929292" class="">Adrian Kashivskyy</font></div>
</div>
<br class=""><div><blockquote type="cite" class=""><div class="">Wiadomość napisana przez David Waite via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; w dniu 07.10.2016, o godz. 17:54:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="content-type" content="text/html; charset=utf-8" class=""><div dir="auto" class=""><div class="">I'd prefer to use public(file), etc over private. You are determining which code has access over which code doesn't. &nbsp;I don't think its that confusing to say the default is just public(module)<br class=""><br class="">Sent with my Thumbs</div><div class=""><br class="">On Oct 7, 2016, at 9:21 AM, Xiaodi Wu via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:<br class=""><br class=""></div><blockquote type="cite" class=""><div class="">While no topic is formally off the table, to revisit a topic requires fresh insight. `private(file)` was suggested at the time and rejected in favor of `fileprivate`, and we really don't need another rehash of how much each person likes one or the other.<br class=""><div class="gmail_quote"><div dir="ltr" class="">On Fri, Oct 7, 2016 at 09:02 Adriano Ferreira via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:<br class=""></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" class="gmail_msg">+1<br class="gmail_msg"><br class="gmail_msg">I would also rather have:<br class="gmail_msg"><br class="gmail_msg">private(scope)<br class="gmail_msg">private(file)<br class="gmail_msg">private(module)<br class="gmail_msg">etc…</div><div style="word-wrap:break-word" class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">— A</div></div><div style="word-wrap:break-word" class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg"><div class="gmail_msg"><blockquote type="cite" class="gmail_msg"><div class="gmail_msg">On Oct 7, 2016, at 4:24 AM, Haravikk via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a>&gt; wrote:</div><br class="m_8037717576085946209Apple-interchange-newline gmail_msg"><div class="gmail_msg"><div style="word-wrap:break-word" class="gmail_msg"><br class="gmail_msg"><div class="gmail_msg"><blockquote type="cite" class="gmail_msg"><div class="gmail_msg">On 7 Oct 2016, at 07:39, David Hart via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a>&gt; wrote:</div><br class="m_8037717576085946209Apple-interchange-newline gmail_msg"><div class="gmail_msg"><div style="word-wrap:break-word" class="gmail_msg">Hello community,<div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">From all the proposals which has gone into Swift 3, <b class="gmail_msg">[SE-0025] Scoped Access Level</b> is the only one I’m having second thoughts about. Before launching a discussion around it, I’m curious to know if it's worth discussing it or if the “ship has sailed”. As the plan is to allow future versions of Swift to break source-compatibility in certain rare scenarios, perhaps we have a chance to reconsider certain proposals?</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Regards,</div><div class="gmail_msg">David.</div></div>_______________________________________________<br class="gmail_msg">swift-evolution mailing list<br class="gmail_msg"><a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a><br class="gmail_msg"><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" class="gmail_msg" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="gmail_msg"></div></blockquote></div><br class="gmail_msg"><div class="gmail_msg">What in particular don't you like about it?</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Personally I still don't like the use of fileprivate as the keyword, I was very much in favour of a bracketed system like:</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg"><span class="gmail_msg m_8037717576085946209Apple-tab-span" style="white-space:pre-wrap">        </span>private(scope)<span class="gmail_msg m_8037717576085946209Apple-tab-span" style="white-space:pre-wrap">                </span>Current private (I think, it doesn't appear to be equivalent to protected in other languages anyway so I wouldn't call it type).</div><div class="gmail_msg"><span class="gmail_msg m_8037717576085946209Apple-tab-span" style="white-space:pre-wrap">        </span>private(file)<span class="gmail_msg m_8037717576085946209Apple-tab-span" style="white-space:pre-wrap">                </span>Current fileprivate</div><div class="gmail_msg"><span class="gmail_msg m_8037717576085946209Apple-tab-span" style="white-space:pre-wrap">        </span>private(module)<span class="gmail_msg m_8037717576085946209Apple-tab-span" style="white-space:pre-wrap">        </span>Current internal/default when omitted</div><div class="gmail_msg"><span class="gmail_msg m_8037717576085946209Apple-tab-span" style="white-space:pre-wrap">        </span>public<span class="gmail_msg m_8037717576085946209Apple-tab-span" style="white-space:pre-wrap">                        </span>Current public</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">I favour this because it groups all restrictive access levels under private (since they're all some form of private) with an optional modifier that's explicit about what it's for. Also, it would have scope to move things like final into a modifier too, so you might declare a method as public(final), or public(open) if that's implemented later and so-on. Just seems like a generally more flexible setup that also reduces the number of keywords required.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Some may feel it's noisy, but personally I don't see it as a problem as it always comes before the func/var/let keyword, generics and function name, so it's not like it's near anything where the (minor) noise reduces readability.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">But yeah, having used the new fileprivate for a little while I just don't like it; it may partly come down to the fact that I use fileprivate a lot more than I use regular private. If we were to adopt the above scheme I would recommend that private(file) be the default for use of the plain private keyword, unless we gain the ability to specify private(type) (i.e- protected in most other languages), as private(scope) seems like it's the less common, at least in my experience.</div></div>_______________________________________________<br class="gmail_msg">swift-evolution mailing list<br class="gmail_msg"><a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a><br class="gmail_msg"><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" class="gmail_msg" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="gmail_msg"></div></blockquote></div><br class="gmail_msg"></div></div>_______________________________________________<br class="gmail_msg">
swift-evolution mailing list<br class="gmail_msg">
<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a><br class="gmail_msg">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="gmail_msg">
</blockquote></div>
</div></blockquote><blockquote type="cite" class=""><div class=""><span class="">_______________________________________________</span><br class=""><span class="">swift-evolution mailing list</span><br class=""><span class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a></span><br class=""><span class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a></span><br class=""></div></blockquote></div>_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-evolution<br class=""></div></blockquote></div><br class=""></div></div></body></html>