Skip to content

Commit eef36b1

Browse files
committed
Revert "Support sorting iterators (#46104)"
This reverts commit 84bf67c.
1 parent f2a5fb9 commit eef36b1

File tree

2 files changed

+2
-71
lines changed

2 files changed

+2
-71
lines changed

base/sort.jl

+2-40
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ module Sort
55
using Base.Order
66

77
using Base: copymutable, midpoint, require_one_based_indexing, uinttype,
8-
sub_with_overflow, add_with_overflow, OneTo, BitSigned, BitIntegerType, top_set_bit,
9-
IteratorSize, HasShape, IsInfinite, tail
8+
sub_with_overflow, add_with_overflow, OneTo, BitSigned, BitIntegerType, top_set_bit
109

1110
import Base:
1211
sort,
@@ -1474,11 +1473,6 @@ end
14741473
14751474
Variant of [`sort!`](@ref) that returns a sorted copy of `v` leaving `v` itself unmodified.
14761475
1477-
Uses `Base.copymutable` to support immutable collections and iterables.
1478-
1479-
!!! compat "Julia 1.10"
1480-
`sort` of arbitrary iterables requires at least Julia 1.10.
1481-
14821476
# Examples
14831477
```jldoctest
14841478
julia> v = [3, 1, 2];
@@ -1496,39 +1490,7 @@ julia> v
14961490
2
14971491
```
14981492
"""
1499-
function sort(v; kws...)
1500-
size = IteratorSize(v)
1501-
size == HasShape{0}() && throw(ArgumentError("$v cannot be sorted"))
1502-
size == IsInfinite() && throw(ArgumentError("infinite iterator $v cannot be sorted"))
1503-
sort!(copymutable(v); kws...)
1504-
end
1505-
sort(v::AbstractVector; kws...) = sort!(copymutable(v); kws...) # for method disambiguation
1506-
sort(::AbstractString; kws...) =
1507-
throw(ArgumentError("sort(::AbstractString) is not supported"))
1508-
sort(::Tuple; kws...) =
1509-
throw(ArgumentError("sort(::Tuple) is only supported for NTuples"))
1510-
1511-
function sort(x::NTuple{N}; lt::Function=isless, by::Function=identity,
1512-
rev::Union{Bool,Nothing}=nothing, order::Ordering=Forward) where N
1513-
o = ord(lt,by,rev,order)
1514-
if N > 9
1515-
v = sort!(copymutable(x), DEFAULT_STABLE, o)
1516-
tuple((v[i] for i in 1:N)...)
1517-
else
1518-
_sort(x, o)
1519-
end
1520-
end
1521-
_sort(x::Union{NTuple{0}, NTuple{1}}, o::Ordering) = x
1522-
function _sort(x::NTuple, o::Ordering)
1523-
a, b = Base.IteratorsMD.split(x, Val(length(x)>>1))
1524-
merge(_sort(a, o), _sort(b, o), o)
1525-
end
1526-
merge(x::NTuple, y::NTuple{0}, o::Ordering) = x
1527-
merge(x::NTuple{0}, y::NTuple, o::Ordering) = y
1528-
merge(x::NTuple{0}, y::NTuple{0}, o::Ordering) = x # Method ambiguity
1529-
merge(x::NTuple, y::NTuple, o::Ordering) =
1530-
(lt(o, y[1], x[1]) ? (y[1], merge(x, tail(y), o)...) : (x[1], merge(tail(x), y, o)...))
1531-
1493+
sort(v::AbstractVector; kws...) = sort!(copymutable(v); kws...)
15321494

15331495
## partialsortperm: the permutation to sort the first k elements of an array ##
15341496

test/sorting.jl

-31
Original file line numberDiff line numberDiff line change
@@ -88,20 +88,6 @@ end
8888
vcat(2000, (x:x+99 for x in 1900:-100:100)..., 1:99)
8989
end
9090

91-
function tuple_sort_test(x)
92-
@test issorted(sort(x))
93-
length(x) > 9 && return # length > 9 uses a vector fallback
94-
@test 0 == @allocated sort(x)
95-
end
96-
@testset "sort(::NTuple)" begin
97-
@test sort((9,8,3,3,6,2,0,8)) == (0,2,3,3,6,8,8,9)
98-
@test sort((9,8,3,3,6,2,0,8), by=x->x÷3) == (2,0,3,3,8,6,8,9)
99-
for i in 1:40
100-
tuple_sort_test(tuple(rand(i)...))
101-
end
102-
@test_throws ArgumentError sort((1,2,3.0))
103-
end
104-
10591
@testset "partialsort" begin
10692
@test partialsort([3,6,30,1,9],3) == 6
10793
@test partialsort([3,6,30,1,9],3:4) == [6,9]
@@ -544,23 +530,6 @@ end
544530
@test isequal(a, [8,6,7,NaN,5,3,0,9])
545531
end
546532

547-
@testset "sort!(iterable)" begin
548-
gen = (x % 7 + 0.1x for x in 1:50)
549-
@test sort(gen) == sort!(collect(gen))
550-
gen = (x % 7 + 0.1y for x in 1:10, y in 1:5)
551-
@test sort(gen; dims=1) == sort!(collect(gen); dims=1)
552-
@test sort(gen; dims=2) == sort!(collect(gen); dims=2)
553-
554-
@test_throws ArgumentError("dimension out of range") sort(gen; dims=3)
555-
556-
@test_throws UndefKeywordError(:dims) sort(gen)
557-
@test_throws UndefKeywordError(:dims) sort(collect(gen))
558-
@test_throws UndefKeywordError(:dims) sort!(collect(gen))
559-
560-
@test_throws ArgumentError sort("string")
561-
@test_throws ArgumentError("1 cannot be sorted") sort(1)
562-
end
563-
564533
@testset "sort!(::AbstractVector{<:Integer}) with short int range" begin
565534
a = view([9:-1:0;], :)::SubArray
566535
sort!(a)

0 commit comments

Comments
 (0)