From 12f3b4b1662ba3a15183b25e6b3b9a66d81caebb Mon Sep 17 00:00:00 2001 From: Jan Weidner Date: Mon, 27 Mar 2017 20:30:07 +0200 Subject: [PATCH 1/5] deprecate unintended methods of zeros, ones --- base/deprecated.jl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/base/deprecated.jl b/base/deprecated.jl index 3524b4f1f28a6..f3d5f20cdf29d 100644 --- a/base/deprecated.jl +++ b/base/deprecated.jl @@ -1298,6 +1298,10 @@ end end end +# #19635 +@deprecate zeros{T <: Number}(::Type{T}, arr::Range) zeros(T, length(arr)) +@deprecate ones{T <: Number}(::Type{T}, arr::Range) ones(T, length(arr)) + # END 0.6 deprecations # BEGIN 1.0 deprecations From e5f86592e531b1fd5045399308c758bf9b6aa5c7 Mon Sep 17 00:00:00 2001 From: Jan Weidner Date: Tue, 28 Mar 2017 23:38:50 +0200 Subject: [PATCH 2/5] fix --- base/deprecated.jl | 13 +++++++++++-- test/arrayops.jl | 11 +++++------ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/base/deprecated.jl b/base/deprecated.jl index f3d5f20cdf29d..fcd6b61f34e91 100644 --- a/base/deprecated.jl +++ b/base/deprecated.jl @@ -1299,8 +1299,17 @@ end end # #19635 -@deprecate zeros{T <: Number}(::Type{T}, arr::Range) zeros(T, length(arr)) -@deprecate ones{T <: Number}(::Type{T}, arr::Range) ones(T, length(arr)) +for f in (:ones, :zeros) + @eval @deprecate ($f)(T::Type, arr) ($f)(T, size(arr)) + @eval ($f)(T::Type, i::Integer) = ($f)(T, (i,)) + @eval function ($f){T}(::Type{T}, arr::Array{T}) + msg = string("`", $f , "{T}(::Type{T}, arr::Array{T})` is deprecated, use ", + "`", $f , "(T, size(arr))` instead.", + "A `MethodError` will be thrown." + ) + error(msg) + end +end # END 0.6 deprecations diff --git a/test/arrayops.jl b/test/arrayops.jl index 0c849a5368f62..025d78d77958a 100644 --- a/test/arrayops.jl +++ b/test/arrayops.jl @@ -2054,12 +2054,11 @@ end zs = zeros(SparseMatrixCSC([1 2; 3 4]), Complex{Float64}, (2,3)) test_zeros(zs, SparseMatrixCSC{Complex{Float64}}, (2, 3)) - @testset "#19265" begin - @test_throws MethodError zeros(Float64, [1.]) - x = [1.] - test_zeros(zeros(x, Float64), Vector{Float64}, (1,)) - @test x == [1.] - end + # #19265" + @test_throws Exception zeros(Float64, [1.]) + x = [1.] + test_zeros(zeros(x, Float64), Vector{Float64}, (1,)) + @test x == [1.] # exotic indexing oarr = zeros(randn(3), UInt16, 1:3, -1:0) From 6b4f531af39b83c275149cd37ba2be7b93a09b01 Mon Sep 17 00:00:00 2001 From: Jan Weidner Date: Wed, 29 Mar 2017 09:38:19 +0200 Subject: [PATCH 3/5] fix --- base/deprecated.jl | 5 +++-- test/arrayops.jl | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/base/deprecated.jl b/base/deprecated.jl index fcd6b61f34e91..e6bc5bc91fe97 100644 --- a/base/deprecated.jl +++ b/base/deprecated.jl @@ -1304,10 +1304,11 @@ for f in (:ones, :zeros) @eval ($f)(T::Type, i::Integer) = ($f)(T, (i,)) @eval function ($f){T}(::Type{T}, arr::Array{T}) msg = string("`", $f , "{T}(::Type{T}, arr::Array{T})` is deprecated, use ", - "`", $f , "(T, size(arr))` instead.", + "`", $f , "(T, size(arr))` instead. ", "A `MethodError` will be thrown." ) - error(msg) + Base.depwarn(msg, Symbol($f)) + throw(MethodError($f, (T, arr))) end end diff --git a/test/arrayops.jl b/test/arrayops.jl index 025d78d77958a..3ee7f3cd56c56 100644 --- a/test/arrayops.jl +++ b/test/arrayops.jl @@ -2055,7 +2055,7 @@ end test_zeros(zs, SparseMatrixCSC{Complex{Float64}}, (2, 3)) # #19265" - @test_throws Exception zeros(Float64, [1.]) + @test_throws MethodError zeros(Float64, [1.]) x = [1.] test_zeros(zeros(x, Float64), Vector{Float64}, (1,)) @test x == [1.] From d540dd75a539d855db0b9c92bf37324c14d203d0 Mon Sep 17 00:00:00 2001 From: Jan Weidner Date: Thu, 30 Mar 2017 20:16:47 +0200 Subject: [PATCH 4/5] fix --- base/array.jl | 8 ++++++++ base/deprecated.jl | 8 -------- test/arrayops.jl | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/base/array.jl b/base/array.jl index 5de013272a606..d1a3e5673d311 100644 --- a/base/array.jl +++ b/base/array.jl @@ -251,6 +251,14 @@ for (fname, felt) in ((:zeros,:zero), (:ones,:one)) $fname(dims::Tuple) = ($fname)(Float64, dims) $fname(T::Type, dims...) = $fname(T, dims) $fname(dims...) = $fname(dims) + + # #19635 + function ($fname){T}(::Type{T}, arr::Array{T}) + msg = string("`", $fname, "{T}(::Type{T}, arr::Array{T})` is deprecated, use ", + "`", $fname , "(T, size(arr))` instead. ", + ) + error(msg) + end end end diff --git a/base/deprecated.jl b/base/deprecated.jl index e6bc5bc91fe97..3535961cf921b 100644 --- a/base/deprecated.jl +++ b/base/deprecated.jl @@ -1302,14 +1302,6 @@ end for f in (:ones, :zeros) @eval @deprecate ($f)(T::Type, arr) ($f)(T, size(arr)) @eval ($f)(T::Type, i::Integer) = ($f)(T, (i,)) - @eval function ($f){T}(::Type{T}, arr::Array{T}) - msg = string("`", $f , "{T}(::Type{T}, arr::Array{T})` is deprecated, use ", - "`", $f , "(T, size(arr))` instead. ", - "A `MethodError` will be thrown." - ) - Base.depwarn(msg, Symbol($f)) - throw(MethodError($f, (T, arr))) - end end # END 0.6 deprecations diff --git a/test/arrayops.jl b/test/arrayops.jl index 3ee7f3cd56c56..4a216fbee38d8 100644 --- a/test/arrayops.jl +++ b/test/arrayops.jl @@ -2055,7 +2055,7 @@ end test_zeros(zs, SparseMatrixCSC{Complex{Float64}}, (2, 3)) # #19265" - @test_throws MethodError zeros(Float64, [1.]) + @test_throws ErrorException zeros(Float64, [1.]) x = [1.] test_zeros(zeros(x, Float64), Vector{Float64}, (1,)) @test x == [1.] From 504944d23bb38724073e427fe3f4e46251259807 Mon Sep 17 00:00:00 2001 From: Jan Weidner Date: Sun, 2 Apr 2017 23:47:42 +0200 Subject: [PATCH 5/5] fix --- base/array.jl | 8 -------- base/deprecated.jl | 12 +++++++++--- test/arrayops.jl | 2 +- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/base/array.jl b/base/array.jl index d1a3e5673d311..5de013272a606 100644 --- a/base/array.jl +++ b/base/array.jl @@ -251,14 +251,6 @@ for (fname, felt) in ((:zeros,:zero), (:ones,:one)) $fname(dims::Tuple) = ($fname)(Float64, dims) $fname(T::Type, dims...) = $fname(T, dims) $fname(dims...) = $fname(dims) - - # #19635 - function ($fname){T}(::Type{T}, arr::Array{T}) - msg = string("`", $fname, "{T}(::Type{T}, arr::Array{T})` is deprecated, use ", - "`", $fname , "(T, size(arr))` instead. ", - ) - error(msg) - end end end diff --git a/base/deprecated.jl b/base/deprecated.jl index 3535961cf921b..c0bb199f0fe09 100644 --- a/base/deprecated.jl +++ b/base/deprecated.jl @@ -1299,9 +1299,15 @@ end end # #19635 -for f in (:ones, :zeros) - @eval @deprecate ($f)(T::Type, arr) ($f)(T, size(arr)) - @eval ($f)(T::Type, i::Integer) = ($f)(T, (i,)) +for fname in (:ones, :zeros) + @eval @deprecate ($fname)(T::Type, arr) ($fname)(T, size(arr)) + @eval ($fname)(T::Type, i::Integer) = ($fname)(T, (i,)) + @eval function ($fname){T}(::Type{T}, arr::Array{T}) + msg = string("`", $fname, "{T}(::Type{T}, arr::Array{T})` is deprecated, use ", + "`", $fname , "(T, size(arr))` instead. ", + ) + error(msg) + end end # END 0.6 deprecations diff --git a/test/arrayops.jl b/test/arrayops.jl index 4a216fbee38d8..86812bbe34708 100644 --- a/test/arrayops.jl +++ b/test/arrayops.jl @@ -2055,7 +2055,7 @@ end test_zeros(zs, SparseMatrixCSC{Complex{Float64}}, (2, 3)) # #19265" - @test_throws ErrorException zeros(Float64, [1.]) + @test_throws ErrorException zeros(Float64, [1.]) # TODO change to MethodError, when v0.6 deprecations are done x = [1.] test_zeros(zeros(x, Float64), Vector{Float64}, (1,)) @test x == [1.]