This is exactly the syntax for enum case patterns in switch statements. You&#39;re asserting that it&#39;s inconsistent with something, but I don&#39;t see any inconsistency. I don&#39;t understand what you mean by right-to-left assignment or inout variables.<br><br>Robert&#39;s example is confusing because the variables are interestingly named, but it is not a real-world error that can be made because you do not have variables named x and y, and the compiler would shout errors at you in short order if you tried to use them.<br><div class="gmail_quote"><div dir="ltr">On Sat, May 6, 2017 at 10:12 Adrian Zubarev &lt;<a href="mailto:adrian.zubarev@devandartist.com">adrian.zubarev@devandartist.com</a>&gt; wrote:<br></div><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 class="m_6761938914975407432bloop_markdown"><p>There is nothing consistent in the following example:</p>

<pre><code class="m_6761938914975407432swift">let (x: a, y: b) = (x: 0, y: 1)
</code></pre>

<p>Labels are not simple descriptors, they signal that the assignment for the RHS will happen to some constant associated with the label. The assignment direction is from right-to-left! Labeled tuple destructuring breaks this rule. Furthermore you’re not allowed to think of <code>a</code> and <code>b</code> as if they were some <code>inout</code> variables for the purpose of the assignment there.</p>

<p>The syntax is ambiguous to the rest of the language and also exactly the case why the following code is not only confusing but simply mentally wrong:</p>

<pre><code class="m_6761938914975407432swift">let (x: Int, y: Double) = (3, 1)
let result = Int + Double // 4
</code></pre>

<p></p></div><div class="m_6761938914975407432bloop_original_html"></div></div><div style="word-wrap:break-word"><div class="m_6761938914975407432bloop_original_html"><div id="m_6761938914975407432bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto"><br></div> <br> <div id="m_6761938914975407432bloop_sign_1494083038975724032" class="m_6761938914975407432bloop_sign"><div style="font-family:helvetica,arial;font-size:13px">-- <br>Adrian Zubarev<br>Sent with Airmail</div></div> <br></div></div><div style="word-wrap:break-word"><div class="m_6761938914975407432bloop_original_html"><p class="m_6761938914975407432airmail_on">Am 6. Mai 2017 um 08:06:30, Xiaodi Wu (<a href="mailto:xiaodi.wu@gmail.com" target="_blank">xiaodi.wu@gmail.com</a>) schrieb:</p> <blockquote type="cite" class="m_6761938914975407432clean_bq"><span><div><div></div><div>





The identifier after a colon is *never* a type in any pattern
matching, and there&#39;s no need of which I&#39;m aware to support type
annotations in pattern matching. We put colons after labels, and
the current syntax is perfectly consistent here. What is the defect
you&#39;re trying to cure?<br>
<div class="gmail_quote">
<div dir="ltr">On Fri, May 5, 2017 at 22:42 Brent Royal-Gordon
&lt;<a href="mailto:brent@architechies.com" target="_blank">brent@architechies.com</a>&gt;
wrote:<br></div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="auto">
<div>Sorry for wrecking the threading, but any chance we could
change the syntax to:</div>
<div id="m_6761938914975407432m_-3232670085674611244AppleMailSignature"><br></div>
<div id="m_6761938914975407432m_-3232670085674611244AppleMailSignature">let (x myX: Int,
y myY: Int) = ...</div>
<div id="m_6761938914975407432m_-3232670085674611244AppleMailSignature"><br></div>
<div id="m_6761938914975407432m_-3232670085674611244AppleMailSignature">That would
ensure the identifier after the colon was always treated as a type.
I suppose if you wanted to infer the type, it&#39;d be:</div>
<div id="m_6761938914975407432m_-3232670085674611244AppleMailSignature"><br></div>
<div id="m_6761938914975407432m_-3232670085674611244AppleMailSignature"><span style="background-color:rgba(255,255,255,0)">let (x myX, y myY) =
...</span><br>
<br>
<div>-- </div>
<div>Brent Royal-Gordon</div>
Sent from my iPhone</div>
</div>
<div dir="auto">
<div><br>
On May 5, 2017, at 12:04 AM, Adrian Zubarev via swift-evolution
&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>
<br></div>
<blockquote type="cite">
<div>If we ban reordering now, than I don’t see choosing different
names in tuple destructuring as a strong argument of allowing
labels there <code>let (x: a, y: b)</code>. They’re literally the
same as one would write comments inside the destructured tuple
<code>let (/* my x */ x, /* my y*/ y)</code>.</div>
</blockquote>
</div>
</blockquote>
</div>


</div></div></span></blockquote></div></div></blockquote></div>