Skip to content

Commit 67fee62

Browse files
authored
Merge pull request #20 from fork4jl/jl-dev
fix: copy __is_valid_range from julia
2 parents 7fe5865 + 2dae58e commit 67fee62

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

src/CloseOpenIntervals.jl

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,23 @@ Base.IteratorEltype(::Type{<:AbstractCloseOpen}) = Base.HasEltype()
8989
@inline Base.eltype(r::AbstractCloseOpen) = Int
9090
@inline Base.eachindex(r::AbstractCloseOpen) = StaticInt(1):StaticArrayInterface.static_length(r)
9191

92+
# `__is_valid_range` was removed in Julia v1.11.0 (JuliaLang/julia#51606)
93+
@inline __is_valid_range(I, rng::AbstractUnitRange) = I in rng
94+
@inline function __is_valid_range(I, rng::OrdinalRange)
95+
if step(rng) > 0
96+
lo, hi = first(rng), last(rng)
97+
else
98+
lo, hi = last(rng), first(rng)
99+
end
100+
lo <= I <= hi
101+
end
102+
103+
# `OrdinalRangeInt` was introduced in Julia v1.7.0 (JuliaLang/julia#40594)
92104
@static if isdefined(Base.IteratorsMD, :OrdinalRangeInt)
93105
@inline function Base.IteratorsMD.__inc(state::Tuple{Int,Int,Vararg{Int}}, indices::Tuple{AbstractCloseOpen,Vararg{Base.IteratorsMD.OrdinalRangeInt}})
94106
rng = indices[1]
95107
I1 = state[1] + step(rng)
96-
if Base.IteratorsMD.__is_valid_range(I1, rng) && state[1] != last(rng)
108+
if __is_valid_range(I1, rng) && state[1] != last(rng)
97109
return true, (I1, Base.tail(state)...)
98110
end
99111
valid, I = Base.IteratorsMD.__inc(Base.tail(state), Base.tail(indices))
@@ -103,7 +115,7 @@ else
103115
@inline function Base.IteratorsMD.__inc(state::Tuple{Int,Int,Vararg{Int}}, indices::Tuple{AbstractCloseOpen,Vararg})
104116
rng = indices[1]
105117
I1 = state[1] + step(rng)
106-
if Base.IteratorsMD.__is_valid_range(I1, rng) && state[1] != last(rng)
118+
if __is_valid_range(I1, rng) && state[1] != last(rng)
107119
return true, (I1, Base.tail(state)...)
108120
end
109121
valid, I = Base.IteratorsMD.__inc(Base.tail(state), Base.tail(indices))

0 commit comments

Comments
 (0)