LuaLS / lua-language-server

A language server that offers Lua language support - programmed in Lua
https://luals.github.io
MIT License
3.26k stars 306 forks source link

Bug with incorrectly reporting undefined-global #1702

Open Stanzilla opened 1 year ago

Stanzilla commented 1 year ago

So I have this very strange bug where the VSCode extension starts reporting undefined-globals but when I click on the actual problem report, it goes away.

These globals are defined in a file that is loaded as a library via an extension so I figured I might reach the max workspace files/size limit but even with those set to very high numbers it keeps happening. I can click on all of them to make them go away but the next indexing run (hitting save) will bring them back.

workspace.maxPreload is set to 20000 workspace.preloadFileSize is set to 8000

The repo I tested with is WeakAuras

https://user-images.githubusercontent.com/75278/202040021-d15fda8e-85ce-4055-a39e-d9538f6b5446.mp4

So my next guess was that the LSP just crashes and restarts, I checked the output panel and got this:

script/core/diagnostics/param-type-mismatch.lua:21: attempt to index a nil value (field 'generic')
stack traceback:
    script/core/diagnostics/param-type-mismatch.lua:21: in upvalue 'expandGenerics'
    script/core/diagnostics/param-type-mismatch.lua:48: in upvalue 'getDefNode'
    script/core/diagnostics/param-type-mismatch.lua:97: in local 'callback'
    script/parser/guide.lua:716: in function 'parser.guide.eachSourceType'
    script/core/diagnostics/param-type-mismatch.lua:83: in function 'core.diagnostics.param-type-mismatch'
    script/core/diagnostics/init.lua:117: in upvalue 'check'
    script/core/diagnostics/init.lua:174: in function 'core.diagnostics'
    [C]: in function 'xpcall'
    script/provider/diagnostic.lua:324: in function 'provider.diagnostic.doDiagnostic'
    [C]: in function 'xpcall'
    script/provider/diagnostic.lua:665: in upvalue 'callback'
    script/files.lua:880: in function <script/files.lua:879>
script/core/diagnostics/param-type-mismatch.lua:21: attempt to index a nil value (field 'generic')
sumneko commented 1 year ago

The error reported in output panel should have nothing to do with this issue. Are you using symbolic links for your folders? Could you provide the server logs?

carsakiller commented 1 year ago

Info on the log file can be found on the FAQ page in the wiki :slightly_smiling_face:

Stanzilla commented 1 year ago

The reset stopped happening after I disabled "cast-type-mismatch", "param-type-mismatch", "assign-type-mismatch", "return-type-mismatch" per my guess above. I attached the last log file. file_home_stan_projects_personal_WeakAuras2.log

emmericp commented 6 months ago

You could be running into this: https://github.com/Ketho/vscode-wow-api/blob/master/src/extension.ts#L113

The vscode-wow extension doesn't actually define all globals, instead it reacts to diagnostics about undefined globals and tries to add them as defined. Depending on your exact setup this definition attempt may be going wrong (https://github.com/Ketho/vscode-wow-api/issues/132)