From 5279a5d3f52fb92d9836f9abbb652f1ae4542e59 Mon Sep 17 00:00:00 2001 From: Jeff Fessler Date: Tue, 29 Jun 2021 22:38:09 -0400 Subject: [PATCH] fix getindex of Fill with Trues (#149) * fix getindex hopefully addresses #148 * test * refine * restrict to OneTo --- Project.toml | 2 +- src/trues.jl | 8 ++++++++ test/runtests.jl | 2 ++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 40adb5a8..7cb512c3 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "FillArrays" uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "0.11.7" +version = "0.11.8" [deps] LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" diff --git a/src/trues.jl b/src/trues.jl index da315751..a5772912 100644 --- a/src/trues.jl +++ b/src/trues.jl @@ -43,3 +43,11 @@ function Base.getindex(x::AbstractArray{T,N}, mask::Trues{N, NTuple{N,Base.OneTo end return x[trues(size(x))] # else revert to usual getindex method end + +# https://github.com/JuliaArrays/FillArrays.jl/issues/148 +function Base.getindex( + a::AbstractFill{T, 1, Tuple{Base.OneTo{Int}}}, + b::Trues{1, Tuple{Base.OneTo{Int}}}) where T + @boundscheck length(a) == length(b) || throw(BoundsError(a, b)) + return Fill(getindex_value(a), length(a)) +end diff --git a/test/runtests.jl b/test/runtests.jl index e3c69d24..86e8d378 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1204,6 +1204,8 @@ end @test_throws BoundsError ones(3)[Trues(2)] @test_throws BoundsError setindex!(ones(3), zeros(3), Trues(2)) @test_throws DimensionMismatch setindex!(ones(2), zeros(3), Trues(2)) + @test Ones(3)[Trues(3)] == Ones(3) + @test_throws BoundsError Ones(3)[Trues(2)] end @testset "FillArray interface" begin