<div dir="ltr">Now you&#39;ve gotten me thinking about precedence of other operators too.<div><br></div><div>Since ?? is prone to causing confusion in either direction (cf. your example and my example), it could be put in its own group whose relation to the numeric operators is intentionally undefined (thus requiring parens).</div><div><br></div><div>I don&#39;t know about other folks, but I&#39;ll certainly get confused if &amp; and | and ^ are mixed. What if we removed their relation to each other (requiring parens when mixing them)?</div><div><br></div><div><img src="cid:ii_156f907765852272" alt="Inline image 1" width="562" height="481"><br></div><div><br></div><div>For comparison (ha), here&#39;s what we have today:</div><div><br></div><div><img src="cid:ii_156f909c4fae30a2" alt="Inline image 1" width="430" height="517" style="margin-right: 0px;"><br></div><div><div class="gmail_extra"><br clear="all"><div><div data-smartmail="gmail_signature"><div dir="ltr"><div>Jacob<br></div></div></div></div>
<br><div class="gmail_quote">On Sat, Sep 3, 2016 at 10:20 PM, Erica Sadun <span dir="ltr">&lt;<a href="mailto:erica@ericasadun.com" target="_blank">erica@ericasadun.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><span><blockquote type="cite"><div>On Sep 3, 2016, at 10:15 PM, Jacob Bandes-Storch &lt;<a href="mailto:jtbandes@gmail.com" target="_blank">jtbandes@gmail.com</a>&gt; wrote:</div><br><div><div dir="ltr">Perhaps-conversely, what should this code do?<div><br></div><div>    let nextIndex = foundIndex ?? lastIndex + 1</div><div class="gmail_extra"><br clear="all"><div><div data-smartmail="gmail_signature"><div dir="ltr"><div>Jacob<br></div></div></div></div></div></div></div></blockquote><div><br></div></span>It&#39;s a good counter example. And there&#39;s no optional-associative option.</div><span><font color="#888888"><div><br></div><div>-- E</div></font></span><span><div><br><blockquote type="cite"><div><div dir="ltr"><div class="gmail_extra">
<br><div class="gmail_quote">On Sat, Sep 3, 2016 at 9:05 PM, Erica Sadun via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Given: `<font face="Menlo">let x = Optional(3)</font>` then<blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><span style="font-family:Menlo">`let y = 5 + x ?? 2` </span>will not compile</div></blockquote><div>but </div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><font face="Menlo">`let y = 5 + (x ?? 2)` </font>will.</div></blockquote><div><br></div><div>Should <font face="Menlo">NilCoalescingPrecedence</font> be raised? The current operator precedence chain is:</div><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><font face="Menlo">BitwiseShiftPrecedence &gt; MultiplicationPrecedence &gt; AdditionPrecedence &gt; RangeFormationPrecedence &gt; CastingPrecedence &gt; NilCoalescingPrecedence &gt; ComparisonPrecedence &gt; LogicalConjunctionPrecedence &gt; LogicalDisjunctionPrecedence &gt; TernaryPrecedence &gt; AssignmentPrecedence &gt; FunctionArrowPrecedence &gt; [nothing]</font></div></div></blockquote><div><br></div><div>It seems to me that `<font face="Menlo">NilCoalescingPrecedence</font>` should probably be higher than `<font face="Menlo">MultiplicationPrecedence</font>` and possibly higher `<font face="Menlo">BitwiseShiftPrecedence</font>` as its job is to produce an unwrapped value that can then be operated upon.</div><div><br></div><div>I think <font face="Menlo">CastingPrecedence</font> should be even higher because</div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><span style="font-family:Menlo">`expression as? T ?? fallback value`</span></div></blockquote><div>should be parsed as</div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><span style="font-family:Menlo">`(expression as? T) ?? (fallback value)`</span></div></blockquote><div><br></div><div>I apologize profusely because I know this is beyond last minute,</div><div><br></div><div>-- E</div><div><br></div></div><br>______________________________<wbr>_________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailma<wbr>n/listinfo/swift-evolution</a><br>
<br></blockquote></div><br></div></div>
</div></blockquote></div><br></span></div></blockquote></div><br></div></div></div>