Skip to content

[SR-3453] Enforce appropriate constraints on Sequences and Collections #46041

Closed
@airspeedswift

Description

@airspeedswift
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.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions