From 63fb815df6080276dfc3ecbbcb02fe2f314db885 Mon Sep 17 00:00:00 2001 From: Lionel Zoubritzky Date: Thu, 9 Jul 2020 20:19:25 +0200 Subject: [PATCH 1/3] Resolve ambiguity for convert(::Type{<:Scalar}, ::StaticArray) --- src/convert.jl | 1 + test/convert.jl | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/convert.jl b/src/convert.jl index f653d3df..a067f331 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[],)) @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/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 From e1cc61903c4a4005e31ae6f47e1b74ef43bb9e79 Mon Sep 17 00:00:00 2001 From: Lionel Zoubritzky Date: Fri, 10 Jul 2020 10:12:45 +0200 Subject: [PATCH 2/3] Set the number of allowable ambiguities to 0 --- src/convert.jl | 2 +- test/ambiguities.jl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/convert.jl b/src/convert.jl index a067f331..09ee9f48 100644 --- a/src/convert.jl +++ b/src/convert.jl @@ -8,7 +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[],)) +@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..864894ed 100644 --- a/test/ambiguities.jl +++ b/test/ambiguities.jl @@ -7,7 +7,7 @@ const allowable_ambiguities = elseif VERSION < v"1.2" 2 else - 1 + 0 end @test length(detect_ambiguities(Base, LinearAlgebra, StaticArrays)) <= allowable_ambiguities From 8d4712a538d787ddb77c35fa38a30f99f3c68c5b Mon Sep 17 00:00:00 2001 From: Lionel Zoubritzky Date: Fri, 10 Jul 2020 11:01:20 +0200 Subject: [PATCH 3/3] Constitently lower the number of allowable ambiguities --- test/ambiguities.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/ambiguities.jl b/test/ambiguities.jl index 864894ed..2c111803 100644 --- a/test/ambiguities.jl +++ b/test/ambiguities.jl @@ -3,9 +3,9 @@ const allowable_ambiguities = if VERSION < v"1.1" - 4 + 3 elseif VERSION < v"1.2" - 2 + 1 else 0 end