diff --git a/base/genericmemory.jl b/base/genericmemory.jl index f29beccc461c6..fe4dda089d515 100644 --- a/base/genericmemory.jl +++ b/base/genericmemory.jl @@ -297,8 +297,8 @@ end $(Expr(:new, :(Array{T, N}), :ref, :dims)) end -@eval function view(m::GenericMemory{M, T}, inds::AbstractUnitRange) where {M, T} - isempty(inds) && return T[] # needed to allow view(Memory{T}(undef, 0), 2:1) +@eval function view(m::GenericMemory{M, T}, inds::Union{UnitRange, OneTo}) where {M, T} + !(inds isa OneTo) && isempty(inds) && return T[] # needed to allow view(Memory{T}(undef, 0), 2:1) @boundscheck checkbounds(m, inds) ref = MemoryRef(m, first(inds)) # @inbounds here is not safe on view(Memory{T}(undef, 0), 2:1) dims = (length(inds),) diff --git a/test/arrayops.jl b/test/arrayops.jl index 9adc1cecc8b32..70e8dfa1c493d 100644 --- a/test/arrayops.jl +++ b/test/arrayops.jl @@ -3215,6 +3215,9 @@ end @test view(empty_mem, 1:0)::Vector{Module} == [] @test view(empty_mem, 10:3)::Vector{Module} == [] @test isempty(reshape(empty_mem, 0, 7, 1)::Array{Module, 3}) + + offset_inds = OffsetArrays.IdOffsetRange(values=3:6, indices=53:56) + @test view(collect(mem), offset_inds) == view(mem, offset_inds) end @testset "Memory size" begin