diff --git a/base/iterators.jl b/base/iterators.jl index 3e339c59bebcb..e14880b6c0a33 100644 --- a/base/iterators.jl +++ b/base/iterators.jl @@ -1041,6 +1041,7 @@ iterate(::ProductIterator{Tuple{}}, state) = nothing done1 === true || return done1 # false or missing return _pisdone(tail(iters), tail(states)) # check tail end +@inline isdone(::ProductIterator{Tuple{}}, states) = true @inline isdone(P::ProductIterator, states) = _pisdone(P.iterators, states) @inline _piterate() = () diff --git a/test/iterators.jl b/test/iterators.jl index 0a038698ea07c..adf8d79e4429e 100644 --- a/test/iterators.jl +++ b/test/iterators.jl @@ -902,3 +902,11 @@ end @test last(Iterators.map(identity, 1:3)) == 3 @test last(Iterators.filter(iseven, (Iterators.map(identity, 1:3)))) == 2 end + +@testset "empty product iterators" begin + v = nothing + for (z,) in zip(Iterators.product()) + v = z + end + @test v == () +end