-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
deprecate zero-arg Matrix constructors (#14201) #20330
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -271,18 +271,30 @@ end | |
@test typeof(Vector(3)) == Vector{Any} | ||
@test typeof(Vector()) == Vector{Any} | ||
@test typeof(Matrix{Int}(2,3)) == Matrix{Int} | ||
@test typeof(Matrix{Int}()) == Matrix{Int} | ||
@test typeof(Matrix(2,3)) == Matrix{Any} | ||
@test typeof(Matrix()) == Matrix{Any} | ||
|
||
@test size(Vector{Int}(3)) == (3,) | ||
@test size(Vector{Int}()) == (0,) | ||
@test size(Vector(3)) == (3,) | ||
@test size(Vector()) == (0,) | ||
@test size(Matrix{Int}(2,3)) == (2,3) | ||
@test size(Matrix{Int}()) == (0,0) | ||
@test size(Matrix(2,3)) == (2,3) | ||
@test size(Matrix()) == (0,0) | ||
|
||
# TODO: will throw MethodError after 0.6 deprecations are deleted | ||
dw = Base.JLOptions().depwarn | ||
if dw == 2 | ||
@test_throws ErrorException Matrix{Int}() | ||
@test_throws ErrorException Matrix() | ||
elseif dw == 1 | ||
@test_warn "deprecated" Matrix{Int}() | ||
@test_warn "deprecated" Matrix() | ||
elseif dw == 0 | ||
@test size(Matrix{Int}()) == (0,0) | ||
@test size(Matrix()) == (0,0) | ||
else | ||
error("unexpected depwarn value") | ||
end | ||
@test_throws MethodError Array{Int,3}() | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We could have a @test_deprecated size(Matrix{Int}()) == (0,0) which would expand to one of the following, depending on the value of @test_throws ErrorException size(Matrix{Int}())
@test_warn "deprecated" size(Matrix{Int}())
@test size(Matrix{Int}()) == (0,0) The main reason I wanted this complexity in here is so that I couldn't possibly forget to update the tests when we delete the deprecations for 1.0. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. that's a very good idea There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. though we probably want to put such tests in a single place and make sure they get run regularly with all 3 values of the flag (or expand to 3 tests that modify the option in a scoped way, if that's possible inside julia) |
||
end | ||
@testset "get" begin | ||
A = reshape(1:24, 3, 8) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would prefer to deprecate
Vector()
as well.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would too but I have a suspicion it's fairly widely used, so I wanted to do the uncontroversial part first. It's fairly common to initialize a vector with zero elements and there was a period where
[]
created a Void eltype empty array. There's also a consistency argument here: if we deprecate that we should also deprecateVector{T}()
– are you in favor of that as well?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I grepped for
Vector()
orVector{Foo}()
in all registered packages, and you're right that quite a few packages use it:ASTInterpreter,AWS,AbstractTables,ApproxFun,Bio,BlackBoxOptim,Bukdu,CBOR,Clipper,Clustering,Compat,ControlCore,ControlSystems,Cxx,DSGE,DWARF,DataCubes,DataFrames,DeterministicPolicyGradient,DifferentialDynamicProgramming,Diversity,Dopri,EMIRT,GUITestRunner,Gallium,Graft,Hecke,IntervalWavelets,Isotonic,JuliaFEM,LLVM,LightGraphs,LightGraphsExtras,Lumberjack,Mamba,MetadataTools,Metamath,MultidimensionalTables,MultipleTesting,NearestNeighbors,NetworkFlows,NullableArrays,ODBC,ODEInterface,ObjFileBase,OpenDSSDirect,ParallelAccelerator,ParserCombinator,PlotRecipes,PlyIO,Primes,QuantumLab,RData,ResettableStacks,RigidBodyDynamics,RouletteWheels,SALSA,SemidefiniteModel,SemidefiniteModels,StaticArrays,StructuredQueries,SugarBLAS,Sundials,TensorDecompositions,TerminalUI,TestRunner,ThermodynamicsTable,TimeSeries,TimeSeriesIO,TravelingSalesmanHeuristics,Turing,TypedTables,Voronoi,WiltonInts84,WordNet
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A much smaller number of packages use
Matrix()
orMatrix{T}()
:Bio,DSGE,DifferentialDynamicProgramming,Elemental,JPLEphemeris,JuliaFEM,LightGraphs,Mamba,NearestNeighbors,OpenDSSDirect,ParallelAccelerator
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd also favor deprecating
Vector()
andVector{T}()
, but doing so in a separate PR due to the expected controversy sounds like a good idea.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Now that we have femtocleaner would this be a less controversial change?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See #22717