This is not supported right now but it is within the realm of possibility of 
things that we can support.

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.

Slava

> On Aug 27, 2017, at 2:54 PM, Jarod Long via swift-dev <swift-dev@swift.org> 
> wrote:
> 
> 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:
> 
> ```
> protocol P1 {
>     associatedtype Thing
>     func makeThing() -> Thing
> }
> 
> protocol P2: P1 where Thing == String {}
> 
> func test(_ p2: P2) { // Can only use P2 as a generic constraint even though 
> P2.Thing should be known to be String
>     print(p2.makeThing())
> }
> ```
> 
> 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.
> 
> Thanks!
> 
> Jarod
> _______________________________________________
> swift-dev mailing list
> swift-dev@swift.org
> https://lists.swift.org/mailman/listinfo/swift-dev

_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev

Reply via email to