diff --git a/src/array_partition.jl b/src/array_partition.jl index e8fe296e..4857d9e5 100644 --- a/src/array_partition.jl +++ b/src/array_partition.jl @@ -285,7 +285,7 @@ recursive_eltype(A::ArrayPartition) = recursive_eltype(first(A.x)) Base.iterate(A::ArrayPartition) = iterate(Chain(A.x)) Base.iterate(A::ArrayPartition, state) = iterate(Chain(A.x), state) -Base.length(A::ArrayPartition) = sum(broadcast(length, A.x)) +Base.length(A::ArrayPartition) = sum(broadcast(length, A.x); init = 0) Base.size(A::ArrayPartition) = (length(A),) # redefine first and last to avoid slow and not type-stable indexing diff --git a/test/partitions_test.jl b/test/partitions_test.jl index 5f46b34b..02cb85ff 100644 --- a/test/partitions_test.jl +++ b/test/partitions_test.jl @@ -1,4 +1,8 @@ using RecursiveArrayTools, Test, Statistics, ArrayInterface + +@test length(ArrayPartition()) == 0 +@test isempty(ArrayPartition()) + A = (rand(5), rand(5)) p = ArrayPartition(A) @inferred p[1]