<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<div name="messageBodySection" style="font-size: 14px; font-family: -apple-system, BlinkMacSystemFont, sans-serif;">Thanks for the info Slava! Is that change something that would need to go through swift evolution? I would think so, but I'd like to confirm since I may be interested in looking into it.</div>
<div name="messageSignatureSection" style="font-size: 14px; font-family: -apple-system, BlinkMacSystemFont, sans-serif;"><br />
Jarod</div>
<div name="messageReplySection" style="font-size: 14px; font-family: -apple-system, BlinkMacSystemFont, sans-serif;"><br />
On Aug 27, 2017, 16:35 -0700, Slava Pestov &lt;spestov@apple.com&gt;, wrote:<br />
<blockquote type="cite" style="margin: 5px 5px; padding-left: 10px; border-left: thin solid #1abc9c;">This is not supported right now but it is within the realm of possibility of things that we can support.
<div class=""><br class="" /></div>
<div class="">The restriction on using protocols as types is artificial — it was put in place to avoid confusing users. So it is a matter of tweaking the logic which diagnosed unsupported protocol types to somehow check for fully-constrained associated types instead.</div>
<div class=""><br class="" /></div>
<div class="">Slava</div>
<div class=""><br class="" />
<div>
<blockquote type="cite" class="" style="margin: 5px 5px; padding-left: 10px; border-left: thin solid #e67e22;">
<div class="">On Aug 27, 2017, at 2:54 PM, Jarod Long via swift-dev &lt;<a href="mailto:swift-dev@swift.org" class="">swift-dev@swift.org</a>&gt; wrote:</div>
<br class="Apple-interchange-newline" />
<div class="">
<div class="">
<div name="messageBodySection" style="font-size: 14px; font-family: -apple-system, BlinkMacSystemFont, sans-serif;" class="">
<div class="">Apologies for any terminology that I'm not using correctly, but I'm wondering if there's any way to make this work in Swift 4:</div>
<div class=""><br class="" /></div>
<div class="">```</div>
<div class=""><font face="Monaco" class="">protocol P1 {</font></div>
<div class=""><font face="Monaco" class="">&#160; &#160; associatedtype Thing</font></div>
<div class=""><font face="Monaco" class="">&#160; &#160; func makeThing() -&gt; Thing</font></div>
<div class=""><font face="Monaco" class="">}</font></div>
<div class=""><font face="Monaco" class=""><br class="" /></font></div>
<div class=""><font face="Monaco" class="">protocol P2: P1 where Thing == String {}</font></div>
<div class=""><br class="" /></div>
<div class=""><font face="Monaco" class="">func test(_ p2: P2) {&#160;</font><span style="font-family: Monaco;" class="">// Can only use P2 as a generic constraint even though P2.Thing should be known to be String</span></div>
<div class=""><font face="Monaco" class="">&#160; &#160; print(p2.makeThing())</font></div>
<div class=""><font face="Monaco" class="">}</font></div>
<div class="">```</div>
<div class=""><br class="" /></div>
<div class="">I want P2 to conform to P1 and make its associated type concrete so that it can be used directly. If this isn't possible right now, are there any plans for something like this to be added in the future? I've looked through the generics manifesto, but I didn't see anything that seemed to address this issue.</div>
<div class=""><br class="" /></div>
<div class="">Thanks!</div>
</div>
<div name="messageSignatureSection" style="font-size: 14px; font-family: -apple-system, BlinkMacSystemFont, sans-serif;" class=""><br class="" />
Jarod</div>
</div>
_______________________________________________<br class="" />
swift-dev mailing list<br class="" />
<a href="mailto:swift-dev@swift.org" class="">swift-dev@swift.org</a><br class="" />
https://lists.swift.org/mailman/listinfo/swift-dev<br class="" /></div>
</blockquote>
</div>
<br class="" /></div>
</blockquote>
</div>
</body>
</html>