Skip to content

Commit 24d79d3

Browse files
authored
Support Zeros(2)[:], etc., via _unsafe_getindex overload (#119)
1 parent a1a888c commit 24d79d3

File tree

3 files changed

+13
-7
lines changed

3 files changed

+13
-7
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "FillArrays"
22
uuid = "1a297f60-69ca-5386-bcde-b61e274b549b"
3-
version = "0.9.5"
3+
version = "0.9.6"
44

55
[deps]
66
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"

src/FillArrays.jl

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -153,10 +153,8 @@ convert(::Type{T}, F::T) where T<:Fill = F # ambiguity fix
153153

154154
getindex(F::Fill{<:Any,0}) = getindex_value(F)
155155

156-
function getindex(F::Fill, kj::Vararg{AbstractVector{II},N}) where {II<:Integer,N}
157-
checkbounds(F, kj...)
156+
Base._unsafe_getindex(::IndexStyle, F::Fill, kj::Vararg{AbstractVector{II},N}) where {II<:Integer,N} =
158157
Fill(getindex_value(F), length.(kj))
159-
end
160158

161159
function getindex(A::Fill, kr::AbstractVector{Bool})
162160
length(A) == length(kr) || throw(DimensionMismatch())
@@ -264,10 +262,8 @@ for (Typ, funcs, func) in ((:Zeros, :zeros, :zero), (:Ones, :ones, :one))
264262
copy(F::$Typ) = F
265263

266264
getindex(F::$Typ{T,0}) where T = getindex_value(F)
267-
function getindex(F::$Typ{T}, kj::Vararg{AbstractVector{II},N}) where {T,II<:Integer,N}
268-
checkbounds(F, kj...)
265+
Base._unsafe_getindex(::IndexStyle, F::$Typ{T}, kj::Vararg{AbstractVector{II},N}) where {T,II<:Integer,N} =
269266
$Typ{T}(length.(kj))
270-
end
271267
function getindex(A::$Typ{T}, kr::AbstractVector{Bool}) where T
272268
length(A) == length(kr) || throw(DimensionMismatch("lengths must match"))
273269
$Typ{T}(count(kr))

test/runtests.jl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -680,6 +680,16 @@ end
680680
@test A[[true false; true false]] Zeros{Int}(2)
681681
@test A[[true, false, true, false]] Zeros{Int}(2)
682682
@test_throws DimensionMismatch A[[true false false; true false false]]
683+
684+
@testset "colon" begin
685+
@test Ones(2)[:] Ones(2)[Base.Slice(Base.OneTo(2))] Ones(2)
686+
@test Zeros(2)[:] Zeros(2)[Base.Slice(Base.OneTo(2))] Zeros(2)
687+
@test Fill(3.0,2)[:] Fill(3.0,2)[Base.Slice(Base.OneTo(2))] Fill(3.0,2)
688+
689+
@test Ones(2,2)[:,:] Ones(2,2)[Base.Slice(Base.OneTo(2)),Base.Slice(Base.OneTo(2))] Ones(2,2)
690+
@test Zeros(2,2)[:,:] Zeros(2)[Base.Slice(Base.OneTo(2)),Base.Slice(Base.OneTo(2))] Zeros(2,2)
691+
@test Fill(3.0,2,2)[:,:] Fill(3.0,2,2)[Base.Slice(Base.OneTo(2)),Base.Slice(Base.OneTo(2))] Fill(3.0,2,2)
692+
end
683693
end
684694

685695
@testset "Offset indexing" begin

0 commit comments

Comments
 (0)