[swift-dev] FixKind::ForceOptional

Chris Lattner clattner at apple.com
Sat Feb 27 23:42:14 CST 2016


> On Feb 26, 2016, at 3:54 PM, Daniel Duan via swift-dev <swift-dev at swift.org> wrote:
> 
> Currently, when accessing a property of an optional value without unwrapping,
> the compiler issues a fixit message that adds a "!". This seems very
> unintuitive as force unwrapping is usually unsafe.
> 
> I also recall that "?" was issued in the past.
> 
> Is there a particular reason for not to suggest "?" instead? E.g. doing so
> will result in semantically incorrect expressions in certain scenario? If not,
> I'd love to contribute a patch that brings "?" fixit back.

There is no “good” reason for the current behavior that I know of.

The bad reasons are:
 -  we want to produce a fixit hint for this, because it is a common problem
 - producing a ! is useful (even if you ignore it and manually use a ?) because it explains where the optional is in a very concrete way.  
 - doing the analysis to determine where to put a ? is extremely tricky in some cases, and it is very bad to suggest a fixit that won’t work.
 - Using ? is only solution to the problem, you may want to use (e.g.)    "?? defaultValue”

That said, any improvements to this area would be greatly welcomed by everyone :-)

-Chris


More information about the swift-dev mailing list