diff --git a/src/SHermitianCompact.jl b/src/SHermitianCompact.jl index a3baebe3..5c11c6a0 100644 --- a/src/SHermitianCompact.jl +++ b/src/SHermitianCompact.jl @@ -150,13 +150,6 @@ LinearAlgebra.issymmetric(a::SHermitianCompact) = true end end -# Scalar-array. TODO: overload broadcast instead, once API has stabilized a bit -@inline Base.:+(a::Number, b::SHermitianCompact) = SHermitianCompact(a + b.lowertriangle) -@inline Base.:+(a::SHermitianCompact, b::Number) = SHermitianCompact(a.lowertriangle + b) - -@inline Base.:-(a::Number, b::SHermitianCompact) = SHermitianCompact(a - b.lowertriangle) -@inline Base.:-(a::SHermitianCompact, b::Number) = SHermitianCompact(a.lowertriangle - b) - @inline Base.:*(a::Number, b::SHermitianCompact) = SHermitianCompact(a * b.lowertriangle) @inline Base.:*(a::SHermitianCompact, b::Number) = SHermitianCompact(a.lowertriangle * b) diff --git a/src/StaticArrays.jl b/src/StaticArrays.jl index 7ce955eb..6ab3b105 100644 --- a/src/StaticArrays.jl +++ b/src/StaticArrays.jl @@ -137,5 +137,6 @@ include("qr.jl") include("deque.jl") include("flatten.jl") include("io.jl") +include("deprecated.jl") end # module diff --git a/src/deprecated.jl b/src/deprecated.jl new file mode 100644 index 00000000..2572d375 --- /dev/null +++ b/src/deprecated.jl @@ -0,0 +1,10 @@ +# Deprecations, included in v0.12, to be removed for v0.13 +@deprecate +(a::Number, b::StaticArray) a .+ b +@deprecate +(a::StaticArray, b::Number) a .+ b +@deprecate -(a::Number, b::StaticArray) a .- b +@deprecate -(a::StaticArray, b::Number) a .- b + +@deprecate +(a::Number, b::SHermitianCompact) a .+ b +@deprecate +(a::SHermitianCompact, b::Number) a .+ b +@deprecate -(a::Number, b::SHermitianCompact) a .- b +@deprecate -(a::SHermitianCompact, b::Number) a .- b diff --git a/src/linalg.jl b/src/linalg.jl index df347ac2..11d86c0a 100644 --- a/src/linalg.jl +++ b/src/linalg.jl @@ -16,12 +16,6 @@ import Base: +, -, *, /, \ @inline -(a::StaticArray, b::AbstractArray) = map(-, a, b) # Scalar-array -@inline +(a::Number, b::StaticArray) = broadcast(+, a, b) -@inline +(a::StaticArray, b::Number) = broadcast(+, a, b) - -@inline -(a::Number, b::StaticArray) = broadcast(-, a, b) -@inline -(a::StaticArray, b::Number) = broadcast(-, a, b) - @inline *(a::Number, b::StaticArray) = broadcast(*, a, b) @inline *(a::StaticArray, b::Number) = broadcast(*, a, b) diff --git a/test/SHermitianCompact.jl b/test/SHermitianCompact.jl index f58a8ed1..89998dca 100644 --- a/test/SHermitianCompact.jl +++ b/test/SHermitianCompact.jl @@ -182,7 +182,7 @@ fill3(x) = fill(3, x) @testset "Scalar-array" begin x = SHermitianCompact(SVector{6, Int}(1 : 6)) y = -5 - for op in (:-, :+, :*, :/, :\) + for op in (:*, :/, :\) if op != :\ @eval begin @test $op($x, $y) == $op(SMatrix($x), $y) diff --git a/test/broadcast.jl b/test/broadcast.jl index 6f2b919d..2cd6b45d 100644 --- a/test/broadcast.jl +++ b/test/broadcast.jl @@ -30,7 +30,6 @@ end @testset "AbstractArray-of-StaticArray with scalar math" begin v = SVector{2,Float64}[SVector{2,Float64}(1,1)] @test @inferred(v .* 1.0)::typeof(v) == v - @test @inferred(1 .- v)::typeof(v) == v .- v v2 = SVector{2,Int}[SVector{2,Int}(1,1)] @test @inferred(v2 .* 1.0)::typeof(v) == v end diff --git a/test/deprecated.jl b/test/deprecated.jl new file mode 100644 index 00000000..4a44ab1c --- /dev/null +++ b/test/deprecated.jl @@ -0,0 +1,15 @@ +# Deprecations, included in v0.12, to be removed for v0.13 +@testset "Deprecation of ::Scalar +/- ::StaticArray, issue #627" begin + A = rand(SMatrix{2,2}) + b = rand() + @test_deprecated A + b + @test_deprecated b + A + @test_deprecated A - b + @test_deprecated b - A + + A = SHermitianCompact{2}(rand(SVector{3,Float64})) + @test_deprecated A + b + @test_deprecated b + A + @test_deprecated A - b + @test_deprecated b - A +end diff --git a/test/linalg.jl b/test/linalg.jl index d242477b..9e69de76 100644 --- a/test/linalg.jl +++ b/test/linalg.jl @@ -7,8 +7,6 @@ using StaticArrays, Test, LinearAlgebra v1 = @SVector [2,4,6,8] v2 = @SVector [4,3,2,1] - @test @inferred(v1 + c) === @SVector [4,6,8,10] - @test @inferred(v1 - c) === @SVector [0,2,4,6] @test @inferred(v1 * c) === @SVector [4,8,12,16] @test @inferred(v1 / c) === @SVector [1.0,2.0,3.0,4.0] @test @inferred(c \ v1)::SVector ≈ @SVector [1.0,2.0,3.0,4.0] diff --git a/test/runtests.jl b/test/runtests.jl index 085d58a8..8c79db19 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -50,3 +50,4 @@ include("deque.jl") include("flatten.jl") include("io.jl") include("svd.jl") +include("deprecated.jl")