<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div><span></span></div><div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div><span></span></div><div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div><span></span></div><div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div></div><div><span style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">The problem happened on deprecated public protocols in ReactiveSwift. Since conformance cannot be stripped until it is inaccessible, we have a bunch of deprecation warnings on conformance clauses, scattered in the codebase.&nbsp;</span><span style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Having this on a file basis is not enough in our cases, while for sure not all deprecations need such functionality.</span></div><div><span style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><br></span></div><div><span style="background-color: rgba(255, 255, 255, 0);">So IMO, an&nbsp;opt-in annotation for external-only depreciations is enough to cover all practical cases without over-engineering or unanticipated shadowing.</span></div><div><span style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><br></span></div><div><span style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Regards</span></div><div><span style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Anders</span></div><div><br>On 6 May 2017, at 07:00, Xiaodi Wu via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br><br></div><blockquote type="cite"><div><div>The reason I suggest this is that the most consistent boundary with the rest of Swift is the module. I don't doubt that some may wish to deprecate features even for some subset of internal users, but it seems plainly obvious to me that the more common scenario will be deprecating for public consumption only.</div><div><br></div><div>Since you're presenting scenarios in which it might make sense to have scope-based or file-based deprecation, then more fine tuning would be the answer. Without that, I'd argue the default ought to be what I call "public deprecated." The within-a-module use case should be the later addition.</div><div><br></div><div><br><div class="gmail_quote"><div>On Fri, May 5, 2017 at 17:15 Tony Allevato &lt;<a href="mailto:tony.allevato@gmail.com">tony.allevato@gmail.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>I'm inclined to agree. I'm not opposed outright to that degree of configurability but at the same time I wonder if the complexity is needed—it feels like it's getting close to the "fine-tuned auditing" that I argued against during the discussions about access control.<div><br></div><div>It could also be done additively later, if a significant amount of people using the feature found that they did need it.</div></div><br><div class="gmail_quote"><div>On Fri, May 5, 2017 at 3:09 PM BJ Homer &lt;<a href="mailto:bjhomer@gmail.com" target="_blank">bjhomer@gmail.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
&gt; On May 5, 2017, at 1:34 PM, Xiaodi Wu &lt;<a href="mailto:xiaodi.wu@gmail.com" target="_blank">xiaodi.wu@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt; Why guess as to which of these is appropriate? Couldn't you support the current and all variants of this behavior by allowing access modifiers on 'deprecated'?<br>
&gt;<br>
&gt; * public deprecated: warning when used from a different module, behaves as though there's a public deprecated pass-through<br>
&gt;<br>
&gt; * internal deprecated: warning when used from a different file<br>
&gt;<br>
&gt; * fileprivate deprecated: warning when used from a different scope<br>
&gt;<br>
&gt; * private deprecated: synonymous with deprecated for backwards compatibility, behaves like it does today<br>
&gt;<br>
&gt; (No need for complicated parsing; SE-25 allows a higher nominal access modifier inside a lower one without warning, so it's fine to allow 'public deprecated' to decorate a private member with no effect.)<br>
<br>
I’m not opposed to more configurability like that. I worry it makes the feature more complicated and potentially delays the acceptance or implementation of this feature, though. If it’s easy to implement, though, then sure, I like that.<br>
<br>
-BJ</blockquote></div>
</blockquote></div></div>
</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>swift-evolution mailing list</span><br><span><a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a></span><br><span><a href="https://lists.swift.org/mailman/listinfo/swift-evolution">https://lists.swift.org/mailman/listinfo/swift-evolution</a></span><br></div></blockquote></div></div></div></body></html>