Skip to content

[SR-7266] reversed() applied multiple times should not nest ReversedCollection into itself #49814

@moiseev

Description

@moiseev
mannequin
Previous ID SR-7266
Radar None
Original Reporter @moiseev
Type Improvement
Status Resolved
Resolution Done
Additional Detail from JIRA
Votes 0
Component/s Standard Library
Labels Improvement, StarterBug
Assignee @Moximillian
Priority Medium

md5: d7a13ecbc1a535d769141383adecf60a

Issue Description:

Right now applying reversed() twice will result in a ReversedCollection<ReversedCollection<Base>>.

(swift) [1,2].lazy.reversed()
// r0 : LazyCollection<ReversedCollection<[Int]>> = Swift.LazyCollection<Swift.ReversedCollection<Swift.Array<Swift.Int>>>(_base: Swift.ReversedCollection<Swift.Array<Swift.Int>>(_base: [1, 2]))
(swift) r0.reversed()
// r1 : LazyCollection<ReversedCollection<ReversedCollection<[Int]>>> = Swift.LazyCollection<Swift.ReversedCollection<Swift.ReversedCollection<Swift.Array<Swift.Int>>>>(_base: Swift.ReversedCollection<Swift.ReversedCollection<Swift.Array<Swift.Int>>>(_base: Swift.ReversedCollection<Swift.Array<Swift.Int>>(_base: [1, 2])))
(swift) [1].reversed()
// r2 : ReversedCollection<[Int]> = Swift.ReversedCollection<Swift.Array<Swift.Int>>(_base: [1])
(swift) r2.reversed()
// r3 : ReversedCollection<ReversedCollection<[Int]>> = Swift.ReversedCollection<Swift.ReversedCollection<Swift.Array<Swift.Int>>>(_base: Swift.ReversedCollection<Swift.Array<Swift.Int>>(_base: [1]))

I believe we can be smarter and avoid this nesting.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions