<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">The language reference says that “Assignment is performed from each part of the&nbsp;<i class="">value</i>&nbsp;to the corresponding part of the&nbsp;<i class="">expression</i>. A&nbsp;<b class="">String</b>&nbsp;value can be assigned to a&nbsp;<b class="">String</b>, and a&nbsp;<b class="">() -&gt; Int</b>&nbsp;value can be assigned to a&nbsp;<b class="">() throws -&gt; Int</b>, so one would reasonably expect that both tuple assignments would work.&nbsp;</div><div class=""><br class=""></div><div class="">My hunch would be that the compiler has two different code paths for an assignment whose RHS is an&nbsp;<i class="">identifier</i>&nbsp;and an assignment whose RHS is a&nbsp;&nbsp;<i class="">parenthesized-expression</i>; that in the first case starts about by asking whether the RHS type is the same or a subtype of the LHS type, and reporting an error when it isn’t, but that in the second case, it starts with an element-by-element type comparison, which succeeds.</div><div class=""><br class=""></div><div class="">Regards,</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space: pre;">        </span>Neil</div><div class=""><br class=""></div><div><blockquote type="cite" class=""><div class="">On Jul 6, 2016, at 9:55 AM, Shane S via swift-users &lt;<a href="mailto:swift-users@swift.org" class="">swift-users@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class="">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" class="">

<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
Aaron this works for me in both Swift 2.2 and Swift 3 provided that you remove the ‘throws’ keyword.
<div class=""><br class="">
</div>
<div class="">What seems odd to me is not the first assignment, but rather the second that _allows_ the use of ‘throws’ when t.1 (i.e. f) does not throw - is your concern the same?</div>
<div class=""><br class="">
</div>
<div class="">Shane</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">
<div class="">
<div class="">
<blockquote type="cite" class="">
<div class="">On Jul 5, 2016, at 10:48 PM, Aaron Bohannon via swift-users &lt;<a href="mailto:swift-users@swift.org" class="">swift-users@swift.org</a>&gt; wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div dir="ltr" class="">
<div class="">Yesterday, it was pointed out that a variable name referring to a tuple cannot be used as a pattern.&nbsp; I have noticed another sort of inconsistency in how tuples are treated when they are referenced by name:</div>
<div class=""><br class="">
</div>
<div class="">
<div class=""><font face="monospace, monospace" class="">func f() -&gt; Int { return 5 }</font></div>
<div class=""><font face="monospace, monospace" class=""><br class="">
</font></div>
<div class=""><font face="monospace, monospace" class="">let t = ("a", f)</font></div>
<div class=""><font face="monospace, monospace" class=""><br class="">
</font></div>
<div class=""><font face="monospace, monospace" class="">let _: (String, () throws -&gt; Int) = t &nbsp;// type error</font></div>
<div class=""><font face="monospace, monospace" class="">let _: (String, () throws -&gt; Int) = (t.0, t.1) &nbsp;// OK</font></div>
</div>
<div class=""><br class="">
</div>
<div class="">This situation leads to a different sort of type error; however, the error seems equally unwarranted.&nbsp; I can't see any good reason for a well-typed program to become ill-typed when `(t.0, t.1)` is replaced with `t` (assuming `t` is a pair).</div>
<div class=""><br class="">
</div>
<div class="">Should I file a separate bug for the specific example above?</div>
<div class=""><br class="">
</div>
<div class="">- Aaron</div>
</div>
_______________________________________________<br class="">
swift-users mailing list<br class="">
<a href="mailto:swift-users@swift.org" class="">swift-users@swift.org</a><br class="">
<a href="https://lists.swift.org/mailman/listinfo/swift-users" class="">https://lists.swift.org/mailman/listinfo/swift-users</a><br class="">
</div>
</blockquote>
</div>
<br class="">
</div>
</div>
</div>

_______________________________________________<br class="">swift-users mailing list<br class=""><a href="mailto:swift-users@swift.org" class="">swift-users@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-users<br class=""></div></blockquote></div><br class=""></body></html>