From 9e986777a6d4372360a10c25a8fdd48ef11ee852 Mon Sep 17 00:00:00 2001 From: Sheehan Olver Date: Tue, 22 Aug 2023 13:58:55 +0100 Subject: [PATCH] Support converting Fills to StepRangeLen --- Project.toml | 2 +- src/FillArrays.jl | 3 +++ test/runtests.jl | 7 +++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index ca1a18bd..138df586 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "FillArrays" uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.5.0" +version = "1.6.0" [deps] LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" diff --git a/src/FillArrays.jl b/src/FillArrays.jl index f6cc8f7f..58f71c95 100644 --- a/src/FillArrays.jl +++ b/src/FillArrays.jl @@ -530,6 +530,9 @@ function convert(::Type{T}, A::AbstractFillMatrix) where T<:Diagonal isdiag(A) ? T(A) : throw(InexactError(:convert, T, A)) end +Base.StepRangeLen(F::AbstractFillVector{T}) where T = StepRangeLen(getindex_value(F), zero(T), length(F)) +convert(::Type{SL}, F::AbstractFillVector) where SL<:AbstractRange = convert(SL, StepRangeLen(F)) + ################# # Structured matrix types ################# diff --git a/test/runtests.jl b/test/runtests.jl index 2d1696b9..3dbe80b1 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -301,6 +301,13 @@ end @test A[1,:,1] ≡ A[1,1:6,1] ≡ Fill(2.0,6) @test A[:,:,:] ≡ A[1:5,1:6,1:7] ≡ A[1:5,:,1:7] ≡ A[:,1:6,1:7] ≡ A end + + @testset "StepRangeLen convert" begin + for (z,s) in ((Zeros{Int}(5), StepRangeLen(0, 0, 5)), (Ones{Int}(5), StepRangeLen(1, 0, 5)), (Fill(2,5), StepRangeLen(2, 0, 5))) + @test s == z + @test StepRangeLen(z) ≡ convert(StepRangeLen, z) ≡ convert(StepRangeLen{Int}, z) ≡ convert(typeof(s), z) ≡ convert(AbstractRange, z) ≡ s + end + end end @testset "RectDiagonal" begin