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