SparseArrays.jl
                                
                                 SparseArrays.jl copied to clipboard
                                
                                    SparseArrays.jl copied to clipboard
                            
                            
                            
                        strange method definition overwritten WARNING in tests
WARNING: Method definition getindex(SparseArrays.AbstractSparseMatrixCSC{Tv, Ti} where Ti<:Integer where Tv, Tuple{Integer, Integer}) in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:2664 overwritten.
WARNING: Method definition getindex(SparseArrays.AbstractSparseMatrixCSC{T, Ti} where Ti<:Integer, Integer, Integer) where {T} in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:2666 overwritten.
WARNING: Method definition setindex!(SparseArrays.AbstractSparseMatrixCSC{Tv, Ti} where Ti<:Integer where Tv, Any, Integer, Integer) in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:3112 overwritten.
WARNING: Method definition setindex!(SparseArrays.AbstractCompressedVector{Tv, Ti}, Tv, Ti) where {Tv, Ti<:Integer} in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:393 overwritten.
WARNING: Method definition setindex!(SparseArrays.AbstractCompressedVector{Tv, Ti}, Any, Integer) where {Tv, Ti<:Integer} in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:411 overwritten.
WARNING: Method definition getindex(SparseArrays.AbstractSparseArray{Tv, Ti, 1} where Ti where Tv, Integer) in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:945 overwritten.
WARNING: Method definition getindex(SparseArrays.AbstractSparseMatrixCSC{Tv, Ti} where Ti<:Integer where Tv, Tuple{Integer, Integer}) in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:2664.
WARNING: Method definition getindex(SparseArrays.AbstractSparseMatrixCSC{T, Ti} where Ti<:Integer, Integer, Integer) where {T} in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:2666.
WARNING: Method definition setindex!(SparseArrays.AbstractSparseMatrixCSC{Tv, Ti} where Ti<:Integer where Tv, Any, Integer, Integer) in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:3112.
WARNING: Method definition setindex!(SparseArrays.AbstractCompressedVector{Tv, Ti}, Tv, Ti) where {Tv, Ti<:Integer} in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:393.
WARNING: Method definition setindex!(SparseArrays.AbstractCompressedVector{Tv, Ti}, Any, Integer) where {Tv, Ti<:Integer} in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:411.
WARNING: Method definition getindex(SparseArrays.AbstractSparseArray{Tv, Ti, 1} where Ti where Tv, Integer) in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:945.
WARNING: Method definition getindex(SparseArrays.AbstractSparseMatrixCSC{Tv, Ti} where Ti<:Integer where Tv, Tuple{Integer, Integer}) in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:2664 overwritten.
WARNING: Method definition getindex(SparseArrays.AbstractSparseMatrixCSC{T, Ti} where Ti<:Integer, Integer, Integer) where {T} in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:2666 overwritten.
WARNING: Method definition setindex!(SparseArrays.AbstractSparseMatrixCSC{Tv, Ti} where Ti<:Integer where Tv, Any, Integer, Integer) in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:3112 overwritten.
WARNING: Method definition setindex!(SparseArrays.AbstractCompressedVector{Tv, Ti}, Tv, Ti) where {Tv, Ti<:Integer} in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:393 overwritten.
WARNING: Method definition setindex!(SparseArrays.AbstractCompressedVector{Tv, Ti}, Any, Integer) where {Tv, Ti<:Integer} in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:411 overwritten.
WARNING: Method definition getindex(SparseArrays.AbstractSparseArray{Tv, Ti, 1} where Ti where Tv, Integer) in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:945 overwritten.
WARNING: Method definition getindex(SparseArrays.AbstractSparseMatrixCSC{Tv, Ti} where Ti<:Integer where Tv, Tuple{Integer, Integer}) in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:2664.
WARNING: Method definition getindex(SparseArrays.AbstractSparseMatrixCSC{T, Ti} where Ti<:Integer, Integer, Integer) where {T} in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:2666.
WARNING: Method definition setindex!(SparseArrays.AbstractSparseMatrixCSC{Tv, Ti} where Ti<:Integer where Tv, Any, Integer, Integer) in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:3112.
WARNING: Method definition setindex!(SparseArrays.AbstractCompressedVector{Tv, Ti}, Tv, Ti) where {Tv, Ti<:Integer} in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:393.
WARNING: Method definition setindex!(SparseArrays.AbstractCompressedVector{Tv, Ti}, Any, Integer) where {Tv, Ti<:Integer} in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:411.
WARNING: Method definition getindex(SparseArrays.AbstractSparseArray{Tv, Ti, 1} where Ti where Tv, Integer) in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:945.
My guess is that this has something to do with the (in my opinion) non ideal implementation of disabling getindex.
It does. I wonder if you know of a better way? IIRC it was based on how CUDA does it
I think there are two other ways to do it, add a global Ref{Bool} can_index state that is checked by those functions, or store it as part of the matrix/type of the matrix.
From a performance perspective, the current implementation is the safest and most compatible; small benchmarks do not convince me that the global state does not hurt performance. And at the end of the day, this is just for debugging, not something anyone should use in production.