diff --git a/base/array.jl b/base/array.jl index ab754d1e6d3e1..c2b7e7c0bf826 100644 --- a/base/array.jl +++ b/base/array.jl @@ -44,6 +44,8 @@ function vect(X...) return copy!(Array{T,1}(length(X)), X) end +(::Type{Array{T,N}}){T,N}() = Array{T,N}(ntuple(i -> 0, Val{N})...) + size(a::Array, d) = arraysize(a, d) size(a::Vector) = (arraysize(a,1),) size(a::Matrix) = (arraysize(a,1), arraysize(a,2)) diff --git a/base/boot.jl b/base/boot.jl index 1ab6488471a9b..eb5ba229208dc 100644 --- a/base/boot.jl +++ b/base/boot.jl @@ -321,9 +321,6 @@ typealias NTuple{N,T} Tuple{Vararg{T,N}} (::Type{Array{T}}){T}(m::Int, n::Int) = Array{T,2}(m, n) (::Type{Array{T}}){T}(m::Int, n::Int, o::Int) = Array{T,3}(m, n, o) -(::Type{Array{T,1}}){T}() = Array{T,1}(0) -(::Type{Array{T,2}}){T}() = Array{T,2}(0, 0) - # primitive Symbol constructors function Symbol(s::String) return ccall(:jl_symbol_n, Ref{Symbol}, (Ptr{UInt8}, Int), diff --git a/test/arrayops.jl b/test/arrayops.jl index a93825ead24b7..a23a3eb59b503 100644 --- a/test/arrayops.jl +++ b/test/arrayops.jl @@ -1250,6 +1250,10 @@ let a = Array{Float64}(10) @test size(aa) == size(bb) bbb = Array{Float64, 9}(9,8,7,6,5,4,3,2,1) @test size(aaa) == size(bbb) + + #14201 Test Array{T, N}() constructor + @test @inferred size(Array{Float64,5}()) == (0,0,0,0,0) + @test @inferred size(Array{Float64,8}()) == (0,0,0,0,0,0,0,0) end # Cartesian