diff --git a/src/convert.jl b/src/convert.jl index f653d3df..09ee9f48 100644 --- a/src/convert.jl +++ b/src/convert.jl @@ -8,6 +8,7 @@ # this covers most conversions and "statically-sized reshapes" @inline convert(::Type{SA}, sa::StaticArray) where {SA<:StaticArray} = SA(Tuple(sa)) +@inline convert(::Type{SA}, sa::StaticArray) where {SA<:Scalar} = SA((sa[],)) # disambiguation @inline convert(::Type{SA}, sa::SA) where {SA<:StaticArray} = sa @inline convert(::Type{SA}, x::Tuple) where {SA<:StaticArray} = SA(x) # convert -> constructor. Hopefully no loops... diff --git a/test/ambiguities.jl b/test/ambiguities.jl index 044897fd..2c111803 100644 --- a/test/ambiguities.jl +++ b/test/ambiguities.jl @@ -3,11 +3,11 @@ const allowable_ambiguities = if VERSION < v"1.1" - 4 + 3 elseif VERSION < v"1.2" - 2 - else 1 + else + 0 end @test length(detect_ambiguities(Base, LinearAlgebra, StaticArrays)) <= allowable_ambiguities diff --git a/test/convert.jl b/test/convert.jl index f40ee28c..612f4b75 100644 --- a/test/convert.jl +++ b/test/convert.jl @@ -14,4 +14,8 @@ end # testset # Issue #651 @testinf SVector{0,Float64}(Any[]) === SVector{0,Float64}() @testinf SVector{0,Float64}(Int8[]) === SVector{0,Float64}() + + # PR #808 + @test Scalar{Int}[SVector{1,Int}(3), SVector{1,Float64}(2.0)] == [Scalar{Int}(3), Scalar{Int}(2)] + @test Scalar[SVector{1,Int}(3), SVector{1,Float64}(2.0)] == [Scalar{Int}(3), Scalar{Float64}(2.0)] end