<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 Jun 29, 2016, at 4:07 PM, David Hart &lt;<a href="mailto:david@hartbit.com" class="">david@hartbit.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div class=""><br class=""><blockquote type="cite" class="">On 29 Jun 2016, at 22:15, Jordan Rose via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:<br class=""><br class="">There actually is an answer to this, which is that the core team expects 'private' to be the common keyword, and therefore it’s better if you can use it at the top level and ignore ‘fileprivate’ altogether in most programs.<br class=""></blockquote><br class="">This makes no sense to me for two reasons:<br class=""><br class="">1) As I previously said, I don't expect `private` to be the common keyword if people keep writing types as a main declaration and a set of extensions. With that style, we'll be using `fileprivate` heavily for properties in the main declaration.<br class=""><br class="">2) If private means only visible to its lexical scope, I would have expected private top level declarations to be visible to the global scope, which is equivalent to `internal` for me, no `fileprivate`.<br class=""><br class="">I'm getting more and more confused about SE-0025.<br class=""></div></div></blockquote></div><br class=""><div class=""><div><div><div class=""><i class="">"In the degenerate case of a top level declaration, “private” and “fileprivate” are the same thing,&nbsp;</i></div><div class=""><i class="">since the scope that “private” refers to is the whole file. “ -Chris Lattner&nbsp;</i></div></div><br class=""></div><div><a href="http://article.gmane.org/gmane.comp.lang.swift.evolution/13282/" class="">http://article.gmane.org/gmane.comp.lang.swift.evolution/13282/</a></div><div><br class=""></div><div>Since private at the top level means fileprivate,&nbsp;</div><div>it makes sense that the nested declarations of top level fileprivate default to fileprivate.</div><div><br class=""></div><div>The only thing that was a little confusing for me was to allow top level private (since it is the same thing as fileprivate)</div><div>&nbsp;but I think it is something once you learn it then it will make sense. (Maybe just hard to explain though)</div><div><br class=""></div><div>+1 I am on board. I do not think this needs full review.&nbsp;</div><div><br class=""></div><div><br class=""></div><div><br class=""></div></div></body></html>