LuaLS / LuaLS/lua-language-server

`unknown-cast-variable` in last function of a file

Open
#2,326 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug feat/diagnostics
Dominant language
Lua
Stars
4.4k
Forks
442
PR merge metrics
No merged PRs in 30d

Description

### How are you using the lua-language-server?

Visual Studio Code Extension (sumneko.lua)

### Which OS are you using?

Windows

### What is the issue affecting?

Type Checking

### Expected Behaviour

I have a file with two functions that both cast a local variable to a different type. This works perfectly for the first function but fails for the second (or the last if I add more functions).

### Actual Behaviour

Error `Unknown type conversion variable item (unknown-cast-variable)` for the `---@cast item B` inside `fu()`.

### Reproduction steps

```lua
---@alias A table
---@alias B table

---@type table
local items = {}

function fu()
local item = items[1]
---@cast item B
end

function bar()
local item = items[1]
-- Error appears here:
---@cast item B
end
```

### Additional Notes

_No response_

### Log File

_No response_

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

Start with the Lua reproduction in the issue and trace how the language server handles `---@cast` variables across consecutive functions. Compare the successful cast in `fu()` with the failing cast in `bar()`; done means both casts are accepted without `unknown-cast-variable`.

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
Quiet
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.