[swift-dev] [swift-evolution] Possible bug with arithmetic optional comparison ?

Yaman JAIOUCH yjaiouch at gmail.com
Wed May 25 09:57:34 CDT 2016


I'd like to pitch it out to swift-evolution but I'm not sure to fully
understand the proposed solution of "disabling implicit promotion from T to
T?"

Does it mean that the following code won't work anymore?
let a: Int? = nil
let b: Int = 25
a < b // does not compile anymore

If so, I'm not sure it fixed our main problem because the following would
still work as currently:
let a: Int? = nil
let b: Int? = 25
a < b // return true

Result is still counterintuitive and could lead to misuses if the above
behavior is not specifically known by a developer.

2016-05-24 20:35 GMT+02:00 Chris Lattner <clattner at apple.com>:

>
> On May 24, 2016, at 11:14 AM, Joe Pamer <jpamer at apple.com> wrote:
>
>
> On May 24, 2016, at 9:35 AM, Jordan Rose via swift-dev <
> swift-dev at swift.org> wrote:
>
> I wouldn’t phrase it this way. “nil” could just as easily been above all
> of the integers.
>
> We added overloads for < and friends that took optionals so that you could
> sort an array by passing < and get something reasonable out without having
> to provide your own comparison function, but you’re not the first to find
> it counterintuitive. We could consider removing it (going through the Swift
> Evolution Process
> <https://github.com/apple/swift-evolution/blob/master/process.md>).
>
>
> One of the ideas that Joe Pamer has been discussing is whether the
> implicit promotion from T to T? should be disabled when in an operator
> context.  Doing so would fix problems like this, but making the code
> invalid.
>
> Joe, is this something that you think will come up for discussion in the
> Swift 3 timeframe?
>
>
> Yes - I believe so. I’ve been collecting my notes on the topic, with the
> hopes of getting a pitch out to swift-evolution soon.
>
>
> Awesome, thanks!
>
> -Chris
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-dev/attachments/20160525/45769e3e/attachment.html>


More information about the swift-dev mailing list