I don’t remember the details, but IIRC ‘Iterator’ is an inferred associated 
type on Array, so it cannot appear in the ‘where’ clause of an extension. This 
is a known limitation of the name lookup code — presently it cannot recur into 
associated type inference due to circularity. We plan on addressing this with 
the ‘iterative declaration checker’, but that is some ways off.

Slava

> On Oct 31, 2016, at 5:28 AM, Toni Suter via swift-users 
> <swift-users@swift.org> wrote:
> 
> Hi,
> 
> This extension on Array works as expected:
> 
> extension Array where Element: CustomStringConvertible {
>     func f(_ x: Element) -> String {
>         return x.description
>     }
> }
> 
> But when I use Iterator.Element instead, I get an error message (error: value 
> of type 'Element' has no member 'description'):
> 
> extension Array where Iterator.Element: CustomStringConvertible {
>     func f(_ x: Iterator.Element) -> String {
>         return x.description
>     }
> }
> 
> I assume this is a type checker bug, but before I report it, I wanted to make 
> sure that that’s really the case. Or is there a difference between Element and
> Iterator.Element?
> 
> Thanks and best regards,
> Toni
> _______________________________________________
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users

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

Reply via email to