<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sun, Apr 24, 2016 at 4:28 PM, Chris Lattner <span dir="ltr">&lt;<a href="mailto:clattner@apple.com" target="_blank">clattner@apple.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
&gt; On Apr 22, 2016, at 8:02 PM, Douglas Gregor via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; Sent from my iPhone<br>
&gt;<br>
&gt;&gt; On Apr 22, 2016, at 5:56 PM, Xiaodi Wu &lt;<a href="mailto:xiaodi.wu@gmail.com">xiaodi.wu@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Not an expert on Obj-C compatibility in Swift by any means, but this<br>
&gt;&gt; reads like it&#39;s largely a change of nomenclature. To me, though,<br>
&gt;&gt; `objcoptional` reads exceedingly poorly. Why not emphasize the Obj-C<br>
&gt;&gt; compatibility angle by requiring the `@objc` attribute to precede each<br>
&gt;&gt; use of `optional`? (In other words, effectively rename `optional` to<br>
&gt;&gt; `@objc optional`.)<br>
&gt;<br>
&gt; That is a great idea.<br>
<br>
</span>Doesn’t this have the same problem as the current (Swift 1/2) implementation?  People will continue to believe that it is a bug that you must specify @objc.<br></blockquote><div><br></div><div>Perhaps they will, but IMO it&#39;s an improvement. In the current implementation, `optional func` is spatially divorced from the `@objc` annotation on the containing protocol. There&#39;s nothing in the code that helps you to deduce that the two are tied to each other in some way. With an immediate juxtaposition, it&#39;s much more explicable that optional functions must be @objc functions. To my mind, it reads similarly to how throwing functions must be called with some sort of `try`.</div><div><br></div><div>(FWIW, my hunch is that if the keyword were named `objcoptional` to begin with, you&#39;d still have people proposing to extend optional requirements to pure-Swift protocols and renaming the keyword `optional`.)</div><div><br></div></div></div></div>