Cool, thanks--that makes sense.<br><br>Personally, although DWIM is appealing, I think if we are to go all-out on your stance that &quot;adding a default to an existing type parameter should be a strict source-breaking change,&quot; then &quot;prefer user&quot; is the one rule that maximally clarifies the scenario. With that rule, in the evolution scenarios that I brought up, either the user-specified default and the inferred literal type line up perfectly or it is guaranteed to be source-breaking. IMO, that consistency would bring more clarity than DWIM, which might prompt a user to be confused why sometimes the compiler &quot;gets it&quot; and other times it doesn&#39;t.<br><div class="gmail_quote"><div dir="ltr">On Thu, Jan 26, 2017 at 18:15 Alexis &lt;<a href="mailto:abeingessner@apple.com">abeingessner@apple.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" class="gmail_msg"><br class="gmail_msg"><div class="gmail_msg"><blockquote type="cite" class="gmail_msg"><div class="gmail_msg">On Jan 26, 2017, at 4:26 PM, Xiaodi Wu &lt;<a href="mailto:xiaodi.wu@gmail.com" class="gmail_msg" target="_blank">xiaodi.wu@gmail.com</a>&gt; wrote:</div><br class="m_6625578995912668133Apple-interchange-newline gmail_msg"><div class="gmail_msg">Very interesting point, Alexis. So can you reiterate again which of the four options you outlined earlier support this use case? And if there are multiple, which would be the most consistent with the rest of the language?<br class="gmail_msg"><br class="gmail_msg"></div></blockquote></div><br class="gmail_msg"></div><div style="word-wrap:break-word" class="gmail_msg"><div class="gmail_msg">Both “prefer user” and “DWIM” are consistent with my desired solution for this specific problem (they pick Int64). DWIM seems more consistent with the rest of Swift to me in that it tries harder to find a reasonable interpretation of your code before giving up. I think it also ends up having the simplest implementation in the current compiler. You can potentially just add a new tie-breaker if-statement in this code: <a href="https://github.com/apple/swift/blob/master/lib/Sema/CSRanking.cpp#L1010" class="gmail_msg" target="_blank">https://github.com/apple/swift/blob/master/lib/Sema/CSRanking.cpp#L1010</a></div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Something to the affect of “if one of these was recommended by a generic default, that one’s better”. This of course requires threading that information through the compiler.</div><div class="gmail_msg"><br class="gmail_msg"></div></div></blockquote></div>