<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=""><blockquote type="cite" class="">On 31 Mar 2016, at 07:22, Chris Lattner via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:<br class=""></blockquote><div><blockquote type="cite" class=""><br class="Apple-interchange-newline"><div class=""><div class="">I’ve seen a number of concerns on this list about moduleprivate, and how it penalizes folks who want to explicitly write their access control. &nbsp;I’ve come to think that there is yes-another possible path forward here (which I haven’t seen mentioned so far):<br class=""><br class="">public<br class="">internal<br class="">fileprivate<br class="">private<br class=""></div></div></blockquote><br class=""></div><div>+1, I like it.</div><div><br class=""></div><div>There's one source of confusion though: at file scope, `<span style="font-family: Menlo;" class="">private</span>` would have the same meaning as `<span style="font-family: Menlo;" class="">fileprivate</span>`.</div><div><br class=""></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div><font face="Menlo" color="#919191" class="">// At file scope, these keywords are synonymous unless we specify otherwise:</font></div><div><font face="Menlo" class=""><b class="">private let</b> someConstant = "foo"</font></div><div><font face="Menlo" class=""><b class="">fileprivate let</b> anotherConstant = "bar"</font></div></blockquote><div><br class=""></div><div>That can be seen in positive light too—the shorter keyword is tempting—, but <b class="">wouldn't it make things clearer if `<span style="font-family: Menlo;" class="">private</span>` was only allowed inside data types?</b></div><div><br class=""></div><div>Then, file-wide constants, helper functions, and types would then all be at least `<font face="Menlo" class="">fileprivate</font>`, and never `<font face="Menlo" class="">private</font>`. I think that would best document their intent. Maybe just a warning with a fixit to use `<font face="Menlo" class="">fileprivate</font>` would be enough.</div><div><br class=""></div><div>— Pyry Jahkola</div><div><br class=""></div></body></html>