|
|
| Previous ID |
SR-3453 |
| Radar |
rdar://problem/31411212 |
| Original Reporter |
@airspeedswift |
| Type |
Improvement |
| Status |
Resolved |
| Resolution |
Done |
Additional Detail from JIRA
|
|
| Votes |
0 |
| Component/s |
Standard Library |
| Labels |
Improvement, AffectsABI, swift-evolution-proposal-needed |
| Assignee |
@airspeedswift |
| Priority |
Medium |
md5: 6d5849c6136f3cb3c380bcd6362f6e00
Issue Description:
Once it is possible in the language (dependent on associated types with where clauses and recursive protocol constraints), the following rules should be enforced:
-
Iterator should be a Sequence
-
Sequence.Iterator.Element should become Sequence.Element
-
Sequence.SubSequence must be a Sequence
-
Sequence.SubSequence.Element must be same type as Sequence.Element
-
Collection.SubSequence.Index should be same type as Collection.Index
-
BidirectionalCollection.SubSequence should be a BidirectionalCollection
-
RandomAccessCollection.SubSequence should be a RandomAccessCollection
-
RangeReplaceableCollection.SubSequence should be a RangeReplaceableCollection
-
Collection.Indices should be a Collection
-
Collection.Indices.Index should be same type as Collection.Index
-
Collection.SubSequence.Indices should be same type as Collection.Indices
Enforcing these rules will massively simplify the writing of generic collections, including several instances in the standard library. See most entries marked FIXME(ABI) with (Associated Types with where clauses) or (Recursive Protocol Constraints) for examples.
Additional Detail from JIRA
md5: 6d5849c6136f3cb3c380bcd6362f6e00
Issue Description:
Once it is possible in the language (dependent on associated types with where clauses and recursive protocol constraints), the following rules should be enforced:
Iteratorshould be aSequenceSequence.Iterator.Elementshould becomeSequence.ElementSequence.SubSequencemust be aSequenceSequence.SubSequence.Elementmust be same type asSequence.ElementCollection.SubSequence.Indexshould be same type asCollection.IndexBidirectionalCollection.SubSequenceshould be aBidirectionalCollectionRandomAccessCollection.SubSequenceshould be aRandomAccessCollectionRangeReplaceableCollection.SubSequenceshould be aRangeReplaceableCollectionCollection.Indicesshould be aCollectionCollection.Indices.Indexshould be same type asCollection.IndexCollection.SubSequence.Indicesshould be same type asCollection.IndicesEnforcing these rules will massively simplify the writing of generic collections, including several instances in the standard library. See most entries marked FIXME(ABI) with (Associated Types with where clauses) or (Recursive Protocol Constraints) for examples.