fix(compiler): hoist obj declaration before vim.system closure

Problem: lua-language-server flagged obj as an undefined global in
both vim.schedule_wrap callbacks because local obj = vim.system(...)
puts the variable out of scope inside the closure at declaration time.
At runtime the guard active[bufnr].obj == obj evaluated obj as nil,
so the clear was always skipped and the process remained tracked
indefinitely.

Solution: split into local obj / obj = vim.system(...) so the
upvalue is in scope when the closure is defined.
This commit is contained in:
Barrett Ruth 2026-03-03 18:02:04 -05:00
parent 4b1f95064f
commit e53ddcad9a
Signed by: barrett
GPG key ID: A6C96C9349D2FC81

View file

@ -91,7 +91,8 @@ function M.compile(bufnr, name, provider, ctx)
table.concat(reload_cmd, ' ')
)
local obj = vim.system(
local obj
obj = vim.system(
reload_cmd,
{
cwd = cwd,
@ -182,7 +183,8 @@ function M.compile(bufnr, name, provider, ctx)
log.dbg('compiling buffer %d with provider "%s": %s', bufnr, name, table.concat(cmd, ' '))
local obj = vim.system(
local obj
obj = vim.system(
cmd,
{
cwd = cwd,