diff --git a/base/abstractarray.jl b/base/abstractarray.jl index 61ead2f0bc98c..31e8396e7ac8d 100644 --- a/base/abstractarray.jl +++ b/base/abstractarray.jl @@ -237,7 +237,7 @@ function copy_transpose!{R,S}(B::AbstractVecOrMat{R}, ir_dest::Range{Int}, jr_de return B end -zero{T}(x::AbstractArray{T}) = fill!(similar(x), zero(T)) +zero{T}(x::AbstractArray{T}) = fill!(similar(x), zero(isempty(x) ? T : x[1])) ## iteration support for arrays as ranges ## diff --git a/test/arrayops.jl b/test/arrayops.jl index 5b8cb62b4a822..11850437a5c36 100644 --- a/test/arrayops.jl +++ b/test/arrayops.jl @@ -910,3 +910,8 @@ function pr8622() return indexin(x,y) end @test pr8622() == [0,3,1,0] + +#Array of Array tests +let A = [zeros(2,2) for i=1:2, j=1:2] + @test zero(A) == A +end