LuaLS / LuaLS/lua-language-server

Bug with incorrectly reporting undefined-global

Open
#1,702 4 comments 0 reactions 0 assignees View on GitHub
Info Needed
Dominant language
Lua
Stars
4.4k
Forks
442
PR merge metrics
No merged PRs in 30d

Description

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](https://github.com/Ketho/vscode-wow-api) 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://github.com/WeakAuras/WeakAuras2)

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/core/diagnostics/param-type-mismatch.lua:21: attempt to index a nil value (field 'generic')
```

Contributor guide

Open the contributing guide

Research direction

Reproduce the issue in the WeakAuras repository with the VSCode extension and the reported workspace settings. Start with script/core/diagnostics/param-type-mismatch.lua at line 21 and follow the stack through script/provider/diagnostic.lua; done means diagnostic indexing no longer crashes and the undefined-global reports remain correct after reindexing.

Written by the indexing model from the issue text.

Assessment

Tech stack
lua
Domain
devtools
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.