| // RUN: %target-parse-verify-swift |
| |
| struct S<A: Collection> : Collection where A.Index == Int { |
| typealias Element = A.Iterator.Element |
| typealias Index = A.Index |
| |
| init(base: A, baseRange: Range<Index>) { |
| self.base = base |
| self.baseRange = baseRange |
| } |
| |
| var startIndex: Index { |
| return Int(0) |
| } |
| |
| var endIndex: Index { |
| return baseRange.count |
| } |
| |
| func index(after i: Index) -> Index { |
| return base.index(after: i) |
| } |
| |
| subscript(i: Index) -> Element { |
| return base[baseRange.lowerBound + i] |
| } |
| |
| func makeIterator() -> IndexingIterator<S> { |
| return IndexingIterator(_elements: self) |
| } |
| |
| var base: A |
| var baseRange: Range<A.Index> |
| } |