<div dir="ltr">How about the proposal of warnings and/or fix-it for unnecessary use of optionals?<div><br></div><div>It seems to me though, that there aren&#39;t too many &quot;necessary&quot; uses for forced-unwrapping. Judging from (<a href="https://github.com/apple/swift-evolution/blob/master/proposals/0054-abolish-iuo.md">https://github.com/apple/swift-evolution/blob/master/proposals/0054-abolish-iuo.md</a>), it was probably added as a way of helping work with Obj-C also.</div><div><br></div><div>func test(a:String?) -&gt; String {</div><div>    return a!</div><div>}</div><div><div class="gmail_extra"><br></div><div class="gmail_extra">is equivelent to </div><div class="gmail_extra"><br></div><div class="gmail_extra"><div>func test(a:String?) -&gt; String {</div><div>    if let a = a {</div><div>         print(a);</div><div>    } else {</div><div>         fatalError();</div><div>    }</div><div>}</div><div><br></div><div>I wouldn&#39;t remove it at this stage, but to quote (<a href="https://github.com/apple/swift-evolution/blob/master/commonly_proposed.md">https://github.com/apple/swift-evolution/blob/master/commonly_proposed.md</a>), it is &quot;favoring terseness over clarity by introducing new magic syntactic sugar,&quot; ironically adding this very terse and easy syntax for the coding style that we do not want to incentivize.</div><div><br></div><div>Adding warnings and a fix-it to make the crash explicit would more or less be as good as removing forced-unwrap from the language. Just maybe needs some clarification of what exactly is a valid use of the force-unwrap. Maybe for interop with Obj-C it should be considered &quot;necessary&quot;, for example.</div><div><br></div><div class="gmail_quote">2017-03-07 11:54 GMT-05:00 Josh Parmenter <span dir="ltr">&lt;<a href="mailto:jparmenter@vectorform.com" target="_blank">jparmenter@vectorform.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
On Mar 6, 2017, at 7:52 PM, Elijah Johnson via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&lt;<wbr>mailto:<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.<wbr>org</a>&gt;&gt; wrote:<br>
<br>
Says: Fix it: Insert !<br>
Should say: Fix it: Use optional binding.<br>
<br>
I agree with this in general. I tell people that I’m teaching that unwrapping uses ‘!&#39; for a reason. It should scream at you that something is happening that probably needs more careful attention.<br>
<br>
Best,<br>
Josh<br>
<br>
<br>
Joshua Parmenter | Engineering Lead, Apple Technologies<br>
<br>
T <a href="tel:248%20777%207777" value="+12487777777">248 777 7777</a><br>
C <a href="tel:206%20437%201551" value="+12064371551">206 437 1551</a><br>
F <a href="tel:248%20616%201980" value="+12486161980">248 616 1980</a><br>
<a href="http://www.vectorform.com" rel="noreferrer" target="_blank">www.vectorform.com</a>&lt;<a href="http://www.vectorform.com/" rel="noreferrer" target="_blank">http://www.<wbr>vectorform.com/</a>&gt;<br>
<br>
Vectorform<br>
2107 Elliott Ave Suite 303<br>
Seattle, WA  98121 USA<br>
<br>
Think Tank. Lab. Studio.<br>
We invent digital products and experiences.<br>
<br>
SEATTLE | DETROIT | NEW YORK | MUNICH | HYDERABAD<br>
<br>
</blockquote></div><br></div></div></div>