Skip to content

Commit 535efad

Browse files
authored
fix reshape on non-vector arrays (#151)
1 parent 93e60d3 commit 535efad

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

src/OffsetArrays.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,8 @@ Base.reshape(A::OffsetArray, inds::Tuple{OffsetAxis,Vararg{OffsetAxis}}) =
230230
# And for non-offset axes, we can just return a reshape of the parent directly
231231
Base.reshape(A::OffsetArray, inds::Tuple{Union{Integer,Base.OneTo},Vararg{Union{Integer,Base.OneTo}}}) = reshape(parent(A), inds)
232232
Base.reshape(A::OffsetArray, inds::Dims) = reshape(parent(A), inds)
233-
Base.reshape(A::OffsetArray, ::Colon) = A
233+
Base.reshape(A::OffsetArray, ::Colon) = reshape(parent(A), Colon())
234+
Base.reshape(A::OffsetVector, ::Colon) = A
234235
Base.reshape(A::OffsetArray, inds::Union{Int,Colon}...) = reshape(parent(A), inds)
235236
Base.reshape(A::OffsetArray, inds::Tuple{Vararg{Union{Int,Colon}}}) = reshape(parent(A), inds)
236237

test/runtests.jl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -614,6 +614,23 @@ end
614614

615615
@test reshape(OffsetArray(-1:0, -1:0), :, 1) == reshape(-1:0, 2, 1)
616616
@test reshape(OffsetArray(-1:2, -1:2), -2:-1, :) == reshape(-1:2, -2:-1, 2)
617+
618+
@test reshape(OffsetArray(-1:0, -1:0), :) == OffsetArray(-1:0, -1:0)
619+
@test reshape(A, :) == reshape(A0, :)
620+
621+
# julialang/julia #33614
622+
A = OffsetArray(-1:0, (-2,))
623+
@test reshape(A, :) === A
624+
Arsc = reshape(A, :, 1)
625+
Arss = reshape(A, 2, 1)
626+
@test Arsc[1,1] == Arss[1,1] == -1
627+
@test Arsc[2,1] == Arss[2,1] == 0
628+
@test_throws BoundsError Arsc[0,1]
629+
@test_throws BoundsError Arss[0,1]
630+
A = OffsetArray([-1,0], (-2,))
631+
Arsc = reshape(A, :, 1)
632+
Arsc[1,1] = 5
633+
@test first(A) == 5
617634
end
618635

619636
@testset "Indexing with OffsetArray axes" begin

0 commit comments

Comments
 (0)