From 770b1a645b87d0c43035c5bce2dd906474588e94 Mon Sep 17 00:00:00 2001 From: Tim Holy Date: Tue, 19 Jan 2021 13:19:10 -0600 Subject: [PATCH] Preserve input type for unaliascopy(::ReinterpretArray) (#39316) --- base/reinterpretarray.jl | 3 ++- test/reinterpretarray.jl | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/base/reinterpretarray.jl b/base/reinterpretarray.jl index b5f13ed113f15..e2990bafcd086 100644 --- a/base/reinterpretarray.jl +++ b/base/reinterpretarray.jl @@ -278,7 +278,8 @@ eachindex(style::IndexSCartesian2, A::AbstractArray) = eachindex(style, parent(A parent(a::ReinterpretArray) = a.parent dataids(a::ReinterpretArray) = dataids(a.parent) -unaliascopy(a::ReinterpretArray{T}) where {T} = reinterpret(T, unaliascopy(a.parent)) +unaliascopy(a::NonReshapedReinterpretArray{T}) where {T} = reinterpret(T, unaliascopy(a.parent)) +unaliascopy(a::ReshapedReinterpretArray{T}) where {T} = reinterpret(reshape, T, unaliascopy(a.parent)) function size(a::NonReshapedReinterpretArray{T,N,S} where {N}) where {T,S} psize = size(a.parent) diff --git a/test/reinterpretarray.jl b/test/reinterpretarray.jl index 564aac5993cd7..a8cadd83c3dec 100644 --- a/test/reinterpretarray.jl +++ b/test/reinterpretarray.jl @@ -368,3 +368,11 @@ ars = reinterpret(reshape, Int, a) @test as isa TSlow{NTuple{4,Float64},1} @test size(as) == (4,) end + + +@testset "aliasing" begin + a = reinterpret(NTuple{2,Float64}, rand(Float64, 4, 4)) + @test typeof(Base.unaliascopy(a)) === typeof(a) + a = reinterpret(reshape, NTuple{4,Float64}, rand(Float64, 4, 4)) + @test typeof(Base.unaliascopy(a)) === typeof(a) +end