<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">On Dec 10, 2017, at 12:22 PM, Xiaodi Wu via swift-evolution <<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>> wrote:<br class=""><div><blockquote type="cite" class="">The last time I said this, I pointed out that this was a protocol which:<br class=""><div class=""><div dir="ltr" class=""><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space" class=""><div class=""><br class=""></div><div class="">1. Has no formal members,</div><div class="">2. But imposes informal requirements enforced by the compiler,</div><div class="">3. Permits and uses arbitrary overloads, and</div><div class="">4. Cannot be usefully used in a generic context or as a type constraint,</div><div class=""><br class=""></div><div class="">None of which are true of ordinary protocols. Since then, we have added:</div><div class=""><br class=""></div><div class="">5. Can only be conformed to in the main declaration.</div><div class=""><br class=""></div><div class="">This is looking less like a protocol by the day. The square-peg grooves in the round hole are getting deeper and more splintery with every revision.</div></div></blockquote><div class=""><br class=""></div><div class="">Synthesized conformances cannot be declared in extensions either. If you'd like, you could consider that this protocol is one for which the compiler synthesizes an infinite number of members.</div><div class=""><br class=""></div><div class="">I would like to see (4) addressed: a complete implementation should allow me to call any member on a type T in a generic context where T : DynamicMemberLookupProtocol, which I kind of assumed that this proposal would eventually permit.</div></div></div></div></div></blockquote><br class=""></div><div>The technical problem with this is that there are no witnesses in the protocol witness table - either for the subscripts or for the conceptual associated types of the index and return value of the subscript.</div><div><br class=""></div><div>-Chris</div><div><br class=""></div><div><br class=""></div><br class=""></body></html>