Skip to content

Commit febb258

Browse files
authored
IteratorSize for infinite ranges (#105)
* IteratorSize for infinite ranges * Add tests * restore deleted line * version bump to v0.12.9 * InfAxes -> InfRanges
1 parent 815fa8e commit febb258

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

src/infrange.jl

+2
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ AbstractVector{T}(a::InfStepRange) where T<:Real = InfStepRange(convert(T,a.star
8989
const InfRanges{T} = Union{InfStepRange{T},AbstractInfUnitRange{T}}
9090
const InfAxes = Union{InfRanges{<:Integer},Slice{<:AbstractInfUnitRange{<:Integer}},IdentityUnitRange{<:AbstractInfUnitRange{<:Integer}}}
9191

92+
Base.IteratorSize(::Type{<:InfRanges}) = Base.IsInfinite()
93+
9294
AbstractArray{T}(ac::Adjoint{<:Any,<:InfRanges}) where T<:Real = AbstractArray{T}(parent(ac))'
9395
AbstractMatrix{T}(ac::Adjoint{<:Any,<:InfRanges}) where T<:Real = AbstractVector{T}(parent(ac))'
9496
AbstractArray{T}(ac::Transpose{<:Any,<:InfRanges}) where T<:Real = transpose(AbstractArray{T}(parent(ac)))

test/runtests.jl

+8
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,14 @@ end
160160
@test length(1.:.2:∞) == ℵ₀
161161
@test length(2:-.2:-∞) == ℵ₀
162162
@test length(2.:-.2:-∞) == ℵ₀
163+
164+
@testset "IteratorSize" begin
165+
@test Base.IteratorSize(1:2:∞) == Base.IsInfinite()
166+
@test Base.IteratorSize(1:∞) == Base.IsInfinite()
167+
s = Iterators.Stateful(2:∞)
168+
@test first(s) == 2
169+
@test first(s) == 3
170+
end
163171
end
164172

165173
@testset "intersect" begin

0 commit comments

Comments
 (0)