LuaLS / LuaLS/lua-language-server

Bug with incorrectly reporting undefined-global

Open
#1,702 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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 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')

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

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.