LuaLS / LuaLS/lua-language-server
Indexing a table by an enum's value
未关闭
还没有人认领这个 Issue。
- 主要语言
- Lua
- 星标
- 4.4k
- 派生
- 442
- PR 合并指标
- 30 天内没有已合并 PR
描述
How are you using the lua-language-server?
Visual Studio Code Extension (sumneko.lua)
Which OS are you using?
Linux
What is the issue affecting?
Diagnostics/Syntax Checking
Expected Behaviour
Types defined with an enum as their key should be accessible via both the runtime enum itself and the value they represent.
Actual Behaviour
A type defined with an enum as its key cannot be accessed with the enum's value.
Reproduction steps
---@enum building_id
local building_id = {
ANY = -1,
ONE = 0,
TWO = 1,
}
---@type { [building_id]: { name: string } }
local building_attributes = {}
local anyName = building_attributes[building_id.ANY].name // Typed as "string"
local anyName = building_attributes[-1].name // Typed as "unknown"
Additional Notes
Discussed in https://github.com/LuaLS/lua-language-server/discussions/2402
Log File
No response
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
在提供的 Lua 示例中复现 diagnostics 问题,首先从 language server 类型检查路径中的 enum 键处理开始。比较通过 building_id.ANY 的访问与通过 -1 的访问,并使用 issue 中链接的讨论作为上下文;完成的标准是两种形式都将表值解析为 { name: string },而不是 unknown。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- lua
- 领域
- devtools
- Issue 类型
- 缺陷
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 45/100