Skip to content

Commit 0dfe807

Browse files
authored
Merge pull request #203 from rdeits/fsa-construction
RFC: fix construction of FSA types with heterogeneous types
2 parents f77df91 + ac92f53 commit 0dfe807

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

src/FixedSizeArrays.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ macro fixed_vector(name, parent)
120120
$(name){1, T}((x,))
121121
end
122122
@inline (::Type{$(name)}){S}(x::NTuple{S}) = $(name){S}(x)
123+
@inline (::Type{$(name)}){S, T <: Tuple{Vararg{Any, S}}}(x::T) = $(name){S, StaticArrays.promote_tuple_eltype(T)}(x)
123124
@inline function (::Type{$(name){S}}){S, T <: Tuple}(x::T)
124125
$(name){S, StaticArrays.promote_tuple_eltype(T)}(x)
125126
end

test/fixed_size_arrays.jl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,18 @@ for N = (1, 10)
204204
end
205205
end
206206
end
207+
208+
@testset "heterogeneous construction" begin
209+
@test @inferred(Vec(0.0, 0)) isa Vec{2, Float64}
210+
@test @inferred(Vec(0, 0.0)) isa Vec{2, Float64}
211+
@test @inferred(Point(0.0, 0)) isa Point{2, Float64}
212+
@test @inferred(Point(0, 0.0)) isa Point{2, Float64}
213+
@test @inferred(Vec(0.0, 0, 0)) isa Vec{3, Float64}
214+
@test @inferred(Vec(0, 0.0, 0)) isa Vec{3, Float64}
215+
@test @inferred(Point(0.0, 0, 0)) isa Point{3, Float64}
216+
@test @inferred(Point(0, 0.0, 0)) isa Point{3, Float64}
217+
end
218+
207219
map(-, Vec(1,2,3))
208220
map(+, Vec(1,2,3), Vec(1,1, 1))
209221
(+).(Vec(1,2,3), 1.0)

0 commit comments

Comments
 (0)