<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=""><br class=""><div><blockquote type="cite" class=""><div class="">On Aug 17, 2017, at 5:00 AM, Haravikk via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@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=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On 17 Aug 2017, at 11:42, Robert Bennett &lt;<a href="mailto:rltbennett@icloud.com" class="">rltbennett@icloud.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="content-type" content="text/html; charset=utf-8" class=""><div dir="auto" class=""><div class=""></div><div class=""><span style="background-color: rgba(255, 255, 255, 0);" class="">Chris mentions that the intent was to mimic a default implementation in a constrained protocol extension, with one extension per type&nbsp;that doesn’t define its own ==/hashValue&nbsp;while conforming to Equatable/Hashable. Constrained extensions are allowed to use type information from the constraint, so I don’t think there is an issue here.</span></div></div></div></blockquote><br class=""></div><div class="">And I disagree; this isn't a constraint extension either, not even close, we're talking here about automatic behaviour based upon variables the protocol knows literally&nbsp;<b class="">nothing</b> about, in a way that can result in new errors that are currently impossible (as you can't currently conform to Equatable without providing some kind of code to implement it).</div></div></div></blockquote><br class=""></div><div>I understand and recognize your concern. &nbsp;Your points are apply equally to the default implementation of the Codable protocols as well, and the core team specifically discussed this.</div><div><br class=""></div><div>Also, if I were to nitpick your argument a bit, it isn’t true that the protocol knows “nothing" about the type anyway, because the protocol has access to self. &nbsp;The default implementation could conceptually use reflection to access all the state in the type: we’re producing the same effect with more efficient code.</div><div><br class=""></div><div>-Chris</div><div><br class=""></div><br class=""></body></html>