From f6c94ad701f6e8764688459330b256abf8a15bf1 Mon Sep 17 00:00:00 2001 From: Chris Foster Date: Fri, 24 May 2019 22:45:47 +1000 Subject: [PATCH] Fix constructor for SVector{0} from Array --- src/convert.jl | 5 ++++- test/convert.jl | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/convert.jl b/src/convert.jl index f9c63eba..f1b6ef5e 100644 --- a/src/convert.jl +++ b/src/convert.jl @@ -23,9 +23,12 @@ end dimension_mismatch_fail(SA, a) end - return SA(unroll_tuple(a, Length(SA))) + return _convert(SA, a, Length(SA)) end +@inline _convert(SA, a, ::Length{L}) where L = SA(unroll_tuple(a, Length(SA))) +@inline _convert(SA, a, ::Length{0}) = similar_type(SA, eltype(a))(()) + length_val(a::T) where {T <: StaticArrayLike} = length_val(Size(T)) length_val(a::Type{T}) where {T<:StaticArrayLike} = length_val(Size(T)) diff --git a/test/convert.jl b/test/convert.jl index 3e191e87..6d1f8d8b 100644 --- a/test/convert.jl +++ b/test/convert.jl @@ -5,3 +5,9 @@ using StaticArrays, Test SizeM = Size(2,2)(M) @test typeof(SizeM)(SizeM).data === M end # testset + +@testset "Constructors of zero size arrays" begin + # Issue #520 + @testinf SVector{0}(Int8[]) === SVector{0,Int8}() + @testinf SMatrix{0,0}(zeros(0,0)) === SMatrix{0,0,Float64}(()) +end