Skip to content

Commit 76eea3c

Browse files
committed
Handle mixed size iterators
1 parent e07ad4f commit 76eea3c

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

src/flatten.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Special case flatten of iterators of static arrays.
22
import Base.Iterators: flatten_iteratorsize, flatten_length
3-
flatten_iteratorsize(::Union{Base.HasShape, Base.HasLength}, ::Type{<:StaticArray}) = Base.HasLength()
4-
function flatten_length(f, T::Type{<:StaticArray})
3+
flatten_iteratorsize(::Union{Base.HasShape, Base.HasLength}, ::Type{<:StaticArray{S}}) where {S} = Base.HasLength()
4+
function flatten_length(f, T::Type{<:StaticArray{S}}) where {S}
55
length(T)*length(f.it)
66
end

test/flatten.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,6 @@ using StaticArrays, Test
1010
@test collect(Iterators.flatten(typeof(x)[])) == []
1111
@test collect(Iterators.flatten(X)) == [x..., x..., x...]
1212
end
13+
@test collect(Iterators.flatten([SVector(1,1), SVector(1)])) == [1,1,1]
14+
@test_throws ArgumentError length(Iterators.flatten([SVector(1,1), SVector(1)]))
1315
end

0 commit comments

Comments
 (0)