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&#39;t need another rehash of how much each person likes one or the other.<br><div class="gmail_quote"><div dir="ltr">On Fri, Oct 7, 2016 at 09:02 Adriano Ferreira via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br></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&#39;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&#39;t you like about it?</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Personally I still don&#39;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="m_8037717576085946209Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span>private(scope)<span class="m_8037717576085946209Apple-tab-span gmail_msg" style="white-space:pre-wrap">                </span>Current private (I think, it doesn&#39;t appear to be equivalent to protected in other languages anyway so I wouldn&#39;t call it type).</div><div class="gmail_msg"><span class="m_8037717576085946209Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span>private(file)<span class="m_8037717576085946209Apple-tab-span gmail_msg" style="white-space:pre-wrap">                </span>Current fileprivate</div><div class="gmail_msg"><span class="m_8037717576085946209Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span>private(module)<span class="m_8037717576085946209Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span>Current internal/default when omitted</div><div class="gmail_msg"><span class="m_8037717576085946209Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span>public<span class="m_8037717576085946209Apple-tab-span gmail_msg" 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&#39;re all some form of private) with an optional modifier that&#39;s explicit about what it&#39;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&#39;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&#39;s noisy, but personally I don&#39;t see it as a problem as it always comes before the func/var/let keyword, generics and function name, so it&#39;s not like it&#39;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&#39;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&#39;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>