julia-vscode / SymbolServer.jl

Other
22 stars 31 forks source link

Missing and duplicated methods #282

Open wheeheee opened 7 months ago

wheeheee commented 7 months ago

Using the latest VSCode Julia extension, plan_brfft from FFTW.jl is listed as having 8 methods in the tooltip, but actually at least 4 of them are duplicates (or maybe 6), as calling methods(FFTW.plan_brfft) shows it has 5 methods, 4 of which are on the lines shown in the tooltip. I can't tell as the eltype of the StridedArray is somehow not shown (Float32/Float64), also maybe because of the absolutely huge Union.

The 2 argument version of plan_brfft that was defined in AbstractFFTs.jl does not show up, and using it displays a "Possible method call error". Could this be related to #161?

On a side note, is it maybe possible to display StridedArray as StridedArray instead of, say

Union{DenseArray{T, N}, Base.ReinterpretArray{T, N, S, A, IsReshaped} where {A<:Union{SubArray{T, N, A, I, true} where {T, N, A<:DenseArray, I<:Union{Tuple{Vararg{Real}}, Tuple{AbstractUnitRange, Vararg{Any}}}}, DenseArray}, IsReshaped, S}, Base.ReshapedArray{T, N, A} where A<:Union{Base.ReinterpretArray{T, N, S, A, IsReshaped} where {T, N, A<:Union{SubArray{T, N, A, I, true} where {T, N, A<:DenseArray, I<:Union{Tuple{Vararg{Real}}, Tuple{AbstractUnitRange, Vararg{Any}}}}, DenseArray}, IsReshaped, S}, SubArray{T, N, A, I, true} where {T, N, A<:DenseArray, I<:Union{Tuple{Vararg{Real}}, Tuple{AbstractUnitRange, Vararg{Any}}}}, DenseArray}, SubArray{T, N, A, I} where {A<:Union{Base.ReinterpretArray{T, N, S, A, IsReshaped} where {T, N, A<:Union{SubArray{T, N, A, I, true} where {T, N, A<:DenseArray, I<:Union{Tuple{Vararg{Real}}, Tuple{AbstractUnitRange, Vararg{Any}}}}, DenseArray}, IsReshaped, S}, Base.ReshapedArray{T, N, A} where {T, N, A<:Union{Base.ReinterpretArray{T, N, S, A, IsReshaped} where {T, N, A<:Union{SubArray{T, N, A, I, true} where {T, N, A<:DenseArray, I<:Union{Tuple{Vararg{Real}}, Tuple{AbstractUnitRange, Vararg{Any}}}}, DenseArray}, IsReshaped, S}, SubArray{T, N, A, I, true} where {T, N, A<:DenseArray, I<:Union{Tuple{Vararg{Real}}, Tuple{AbstractUnitRange, Vararg{Any}}}}, DenseArray}}, DenseArray}, I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, AbstractRange{<:Union{Int128, Int16, Int32, Int64, Int8, UInt128, UInt16, UInt32, UInt64, UInt8}}, Base.ReshapedArray{T, N, A, Tuple{}} where {T, N, A<:AbstractUnitRange}, Int128, Int16, Int32, Int64, Int8, UInt128, UInt16, UInt32, UInt64, UInt8}}}}} where {T, N}
pfitzseb commented 7 months ago

What Julia version are you on? I only get one method listed (which is the one you're missing, interestingly enough): image

wheeheee commented 7 months ago
julia> versioninfo()
Julia Version 1.10.0-rc2
Commit dbb9c46795 (2023-12-03 15:25 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
  CPU: 8 × 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, tigerlake)
  Threads: 11 on 8 virtual cores
Environment:
  JULIA_CONDAPKG_BACKEND = Null
  JULIA_NUM_THREADS = auto
  JULIA_EDITOR = code

Maybe my environment has something to do with it? I was on a fork of DSP.jl, looking at a line in dpsseig in windows.jl Like this:

image

Update: Switched the default to 1.9.4, deleted the cache and whatnot, still get the same.

pfitzseb commented 7 months ago

Hm, still can't repro this after clearing my own cache and using the DSP.jl env.

wheeheee commented 7 months ago

Hm, maybe I didn't clear everything. Just to confirm, the cache is in ~/.config/Code/User/globalStorage or its equivalent in Windows, right? Also, I have the VSCode setting "julia.symbolCacheDownload": false because of previous issues with it, and when I turned it to true I reproduced your results.

pfitzseb commented 7 months ago

Ah, that explains it then. Local caching and remote caching can lead to different results.

wheeheee commented 7 months ago

I hope enabling local caching is still supported behaviour? 🤞 Although there are still missing methods if it's not.

pfitzseb commented 6 months ago

It is, yes. There's no difference between the code except that one doesn't run on your machine :)

I suspect that this is an issue with merging the two method lists, which basically happens in the opposite order for both cases.