Skip to content

Commit 1976045

Browse files
authored
permit AbstractUnitRange for BitArray indexing (#41810)
1 parent 0224c42 commit 1976045

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

base/bitarray.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -703,7 +703,7 @@ end
703703
indexoffset(i) = first(i)-1
704704
indexoffset(::Colon) = 0
705705

706-
@propagate_inbounds function setindex!(B::BitArray, X::AbstractArray, J0::Union{Colon,UnitRange{Int}})
706+
@propagate_inbounds function setindex!(B::BitArray, X::AbstractArray, J0::Union{Colon,AbstractUnitRange{Int}})
707707
_setindex!(IndexStyle(B), B, X, to_indices(B, (J0,))[1])
708708
end
709709

@@ -954,7 +954,7 @@ function deleteat!(B::BitVector, i::Integer)
954954
return _deleteat!(B, i)
955955
end
956956

957-
function deleteat!(B::BitVector, r::UnitRange{Int})
957+
function deleteat!(B::BitVector, r::AbstractUnitRange{Int})
958958
n = length(B)
959959
i_f = first(r)
960960
i_l = last(r)
@@ -1031,8 +1031,8 @@ end
10311031

10321032
const _default_bit_splice = BitVector()
10331033

1034-
function splice!(B::BitVector, r::Union{UnitRange{Int}, Integer}, ins::AbstractArray = _default_bit_splice)
1035-
_splice_int!(B, isa(r, UnitRange{Int}) ? r : Int(r), ins)
1034+
function splice!(B::BitVector, r::Union{AbstractUnitRange{Int}, Integer}, ins::AbstractArray = _default_bit_splice)
1035+
_splice_int!(B, isa(r, AbstractUnitRange{Int}) ? r : Int(r), ins)
10361036
end
10371037
function _splice_int!(B::BitVector, r, ins)
10381038
n = length(B)
@@ -1073,7 +1073,7 @@ function _splice_int!(B::BitVector, r, ins)
10731073
return v
10741074
end
10751075

1076-
function splice!(B::BitVector, r::Union{UnitRange{Int}, Integer}, ins)
1076+
function splice!(B::BitVector, r::Union{AbstractUnitRange{Int}, Integer}, ins)
10771077
Bins = BitVector(undef, length(ins))
10781078
i = 1
10791079
for x in ins

base/multidimensional.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1251,14 +1251,14 @@ end
12511251

12521252
# contiguous multidimensional indexing: if the first dimension is a range,
12531253
# we can get some performance from using copy_chunks!
1254-
@inline function _unsafe_getindex!(X::BitArray, B::BitArray, I0::Union{UnitRange{Int},Slice})
1254+
@inline function _unsafe_getindex!(X::BitArray, B::BitArray, I0::Union{AbstractUnitRange{Int},Slice})
12551255
copy_chunks!(X.chunks, 1, B.chunks, indexoffset(I0)+1, length(I0))
12561256
return X
12571257
end
12581258

12591259
# Optimization where the inner dimension is contiguous improves perf dramatically
12601260
@generated function _unsafe_getindex!(X::BitArray, B::BitArray,
1261-
I0::Union{Slice,UnitRange{Int}}, I::Union{Int,UnitRange{Int},Slice}...)
1261+
I0::Union{Slice,UnitRange{Int}}, I::Union{Int,AbstractUnitRange{Int},Slice}...)
12621262
N = length(I)
12631263
quote
12641264
$(Expr(:meta, :inline))
@@ -1393,7 +1393,7 @@ end
13931393
# contiguous multidimensional indexing: if the first dimension is a range,
13941394
# we can get some performance from using copy_chunks!
13951395

1396-
@inline function setindex!(B::BitArray, X::Union{StridedArray,BitArray}, J0::Union{Colon,UnitRange{Int}})
1396+
@inline function setindex!(B::BitArray, X::Union{StridedArray,BitArray}, J0::Union{Colon,AbstractUnitRange{Int}})
13971397
I0 = to_indices(B, (J0,))[1]
13981398
@boundscheck checkbounds(B, I0)
13991399
l0 = length(I0)
@@ -1405,13 +1405,13 @@ end
14051405
end
14061406

14071407
@inline function setindex!(B::BitArray, X::Union{StridedArray,BitArray},
1408-
I0::Union{Colon,UnitRange{Int}}, I::Union{Int,UnitRange{Int},Colon}...)
1408+
I0::Union{Colon,AbstractUnitRange{Int}}, I::Union{Int,AbstractUnitRange{Int},Colon}...)
14091409
J = to_indices(B, (I0, I...))
14101410
@boundscheck checkbounds(B, J...)
14111411
_unsafe_setindex!(B, X, J...)
14121412
end
14131413
@generated function _unsafe_setindex!(B::BitArray, X::Union{StridedArray,BitArray},
1414-
I0::Union{Slice,UnitRange{Int}}, I::Union{Int,UnitRange{Int},Slice}...)
1414+
I0::Union{Slice,AbstractUnitRange{Int}}, I::Union{Int,AbstractUnitRange{Int},Slice}...)
14151415
N = length(I)
14161416
quote
14171417
idxlens = @ncall $N index_lengths I0 d->I[d]
@@ -1446,7 +1446,7 @@ end
14461446
end
14471447

14481448
@propagate_inbounds function setindex!(B::BitArray, X::AbstractArray,
1449-
I0::Union{Colon,UnitRange{Int}}, I::Union{Int,UnitRange{Int},Colon}...)
1449+
I0::Union{Colon,AbstractUnitRange{Int}}, I::Union{Int,AbstractUnitRange{Int},Colon}...)
14501450
_setindex!(IndexStyle(B), B, X, to_indices(B, (I0, I...))...)
14511451
end
14521452

0 commit comments

Comments
 (0)