This is exactly the syntax for enum case patterns in switch statements. You're asserting that it's inconsistent with something, but I don't see any inconsistency. I don't understand what you mean by right-to-left assignment or inout variables.<br><br>Robert'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 <<a href="mailto:adrian.zubarev@devandartist.com">adrian.zubarev@devandartist.com</a>> 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's no need of which I'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're trying to cure?<br>
<div class="gmail_quote">
<div dir="ltr">On Fri, May 5, 2017 at 22:42 Brent Royal-Gordon
<<a href="mailto:brent@architechies.com" target="_blank">brent@architechies.com</a>>
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'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
<<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>> 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>