[SR-3453] Enforce appropriate constraints on Sequences and Collections #46041
Labels
affects ABI
Flag: Affects ABI
improvement
standard library
Area: Standard library umbrella
swift evolution proposal needed
Flag → feature: A feature that warrants a Swift evolution proposal
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:
Iterator
should be aSequence
Sequence.Iterator.Element
should becomeSequence.Element
Sequence.SubSequence
must be aSequence
Sequence.SubSequence.Element
must be same type asSequence.Element
Collection.SubSequence.Index
should be same type asCollection.Index
BidirectionalCollection.SubSequence
should be aBidirectionalCollection
RandomAccessCollection.SubSequence
should be aRandomAccessCollection
RangeReplaceableCollection.SubSequence
should be aRangeReplaceableCollection
Collection.Indices
should be aCollection
Collection.Indices.Index
should be same type asCollection.Index
Collection.SubSequence.Indices
should be same type asCollection.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.
The text was updated successfully, but these errors were encountered: