[swift-users] Element vs. Iterator.Element
Slava Pestov
spestov at apple.com
Wed Nov 2 16:23:02 CDT 2016
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 at 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 at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20161102/ea75f1f0/attachment.html>
More information about the swift-users
mailing list