[swift-evolution] [Last second] Precedence of nil-coalescing operator seems too low

Jacob Bandes-Storch jtbandes at gmail.com
Sat Sep 3 23:15:21 CDT 2016


Perhaps-conversely, what should this code do?

    let nextIndex = foundIndex ?? lastIndex + 1

Jacob

On Sat, Sep 3, 2016 at 9:05 PM, Erica Sadun via swift-evolution <
swift-evolution at swift.org> wrote:

> Given: `let x = Optional(3)` then
>
> `let y = 5 + x ?? 2` will not compile
>
> but
>
> `let y = 5 + (x ?? 2)` will.
>
>
> Should NilCoalescingPrecedence be raised? The current operator precedence
> chain is:
>
> BitwiseShiftPrecedence > MultiplicationPrecedence > AdditionPrecedence >
> RangeFormationPrecedence > CastingPrecedence > NilCoalescingPrecedence >
> ComparisonPrecedence > LogicalConjunctionPrecedence >
> LogicalDisjunctionPrecedence > TernaryPrecedence > AssignmentPrecedence >
> FunctionArrowPrecedence > [nothing]
>
>
> It seems to me that `NilCoalescingPrecedence` should probably be higher
> than `MultiplicationPrecedence` and possibly higher `
> BitwiseShiftPrecedence` as its job is to produce an unwrapped value that
> can then be operated upon.
>
> I think CastingPrecedence should be even higher because
>
> `expression as? T ?? fallback value`
>
> should be parsed as
>
> `(expression as? T) ?? (fallback value)`
>
>
> I apologize profusely because I know this is beyond last minute,
>
> -- E
>
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160903/d4cad221/attachment.html>


More information about the swift-evolution mailing list