@@ -353,18 +353,18 @@ end
353
353
354
354
for OR in [:IIUR , :IdOffsetRange ]
355
355
for R in [:StepRange , :StepRangeLen , :LinRange , :UnitRange ]
356
- @eval @propagate_inbounds Base. getindex (r:: $R , s:: $OR ) = OffsetArray (r[_unwrap (s)], axes (s))
356
+ @eval @propagate_inbounds Base. getindex (r:: $R , s:: $OR ) = OffsetArray (r[no_offset_view (s)], axes (s))
357
357
end
358
358
359
359
# this method is needed for ambiguity resolution
360
360
@eval @propagate_inbounds Base. getindex (r:: StepRangeLen{T,<:Base.TwicePrecision,<:Base.TwicePrecision} , s:: $OR ) where T =
361
- OffsetArray (r[_unwrap (s)], axes (s))
361
+ OffsetArray (r[no_offset_view (s)], axes (s))
362
362
end
363
363
364
364
#= Integer UnitRanges may return an appropriate AbstractUnitRange{<:Integer}, as the result may be used in indexing, and
365
365
indexing is faster with ranges =#
366
- @propagate_inbounds Base. getindex (r:: UnitRange{<:Integer} , s:: IdOffsetRange ) = IdOffsetRange (r[_unwrap (s)] .- s. offset, s. offset)
367
- @propagate_inbounds Base. getindex (r:: UnitRange{<:Integer} , s:: IIUR ) = IdentityUnitRange (r[_unwrap (s)])
366
+ @propagate_inbounds Base. getindex (r:: UnitRange{<:Integer} , s:: IdOffsetRange ) = IdOffsetRange (r[no_offset_view (s)] .- s. offset, s. offset)
367
+ @propagate_inbounds Base. getindex (r:: UnitRange{<:Integer} , s:: IIUR ) = IdentityUnitRange (r[no_offset_view (s)])
368
368
369
369
function Base. show (io:: IO , r:: OffsetRange )
370
370
show (io, r. parent)
@@ -435,7 +435,6 @@ julia> A
435
435
```
436
436
"""
437
437
no_offset_view (A:: OffsetArray ) = no_offset_view (parent (A))
438
- no_offset_view (a:: AbstractUnitRange ) = UnitRange (a)
439
438
if isdefined (Base, :IdentityUnitRange )
440
439
no_offset_view (a:: Base.Slice ) = Base. Slice (UnitRange (a)) # valid only if Slice is distinguished from IdentityUnitRange
441
440
no_offset_view (S:: SubArray ) = view (parent (S), map (no_offset_view, parentindices (S))... )
@@ -445,7 +444,10 @@ no_offset_view(i::Number) = i
445
444
no_offset_view (A:: AbstractArray ) = _no_offset_view (axes (A), A)
446
445
_no_offset_view (:: Tuple{} , A:: AbstractArray{T,0} ) where T = A
447
446
_no_offset_view (:: Tuple{<:Base.OneTo,Vararg{<:Base.OneTo}} , A:: AbstractArray ) = A
447
+ # the following method is needed for ambiguity resolution
448
+ _no_offset_view (:: Tuple{<:Base.OneTo,Vararg{<:Base.OneTo}} , A:: AbstractUnitRange ) = A
448
449
_no_offset_view (:: Any , A:: AbstractArray ) = OffsetArray (A, Origin (1 ))
450
+ _no_offset_view (:: Any , A:: AbstractUnitRange ) = UnitRange (A)
449
451
450
452
# ###
451
453
# work around for segfault in searchsorted*
0 commit comments