Table type annotations
还没有人认领这个 Issue。
评估
调研方向
使用提供的 Lua 示例复现该报告,并检查 language server 的 generic-table 类型检查入口。验证赋值和方法参数是否同时校验键类型和值类型,然后添加或更新覆盖范围,使不兼容的表内容产生诊断,同时继续接受有效的表。
由索引模型根据 Issue 内容生成。
描述
Hello everyone.
I've defined a field as table<MyStates, BaseState>, but the analyzer doesn't complain when I assign a table with a completely different structure to it.
---@class BaseState
local BaseState = {}
---@enum MyStates
local States = {
GAME = 1,
GAME_OVER = 2,
}
---@class MyStateMachine
---@field private _states table<MyStates, BaseState>
local MyStateMachine = {}
MyStateMachine.__index = MyStateMachine
---@param states table<MyStates, BaseState>
function MyStateMachine:setStates(states)
self._states = states
end
function tmp()
-- Assigning a table with a different annotation directly. The analyzer doesn't complain.
MyStateMachine._states = {
['kek'] = 69
}
-- Passing a table with a different annotation to a method. The analyzer doesn't complain.
MyStateMachine:setStates({
['kek'] = 69,
})
-- The analyzer correctly complains about a number assignment.
-- MyStateMachine._states = 69
-- The analyzer correctly complains about passing a number.
-- MyStateMachine:setStates(2)
end
As you can see, the type checker only seems to validate that the value is a table, but doesn't validate the internal key and value types for table<MyStates, BaseState>. Is this the expected behavior, or am I missing something? Is there a way to enforce stricter type checking for the contents of generic tables?
- 主要语言
- Lua
- 星标
- 4.4k
- 派生
- 442
- 平均合并
- 8 天 9 小时
- 30 天内合并 PR
- 1
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
LuaLS/lua-language-server 的其他 Issue
-
enhancement
难度 2/5 1-3 小时 新手友好度 62/100
LuaLS/lua-language-server#1776 ·
-
难度 3/5 1-2 天 新手友好度 65/100
LuaLS/lua-language-server#3463 · 5 条评论 ·
-
难度 4/5 3-5 天 新手友好度 55/100
LuaLS/lua-language-server#3461 ·
-
难度 3/5 1-2 天 新手友好度 68/100
LuaLS/lua-language-server#3460 · 1 条评论 · 1 个 reaction ·
-
难度 3/5 1-2 天 新手友好度 68/100
LuaLS/lua-language-server#3459 · 1 个 reaction ·
查看 LuaLS/lua-language-server 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 75/100
HenrikBengtsson/CBI-software#134 ·
-
Nmap
难度 1/5 1 小时以内 新手友好度 85/100
-
难度 2/5 1-3 小时 新手友好度 75/100
secondlife/slua#96 ·
-
难度 2/5 1-3 小时 新手友好度 70/100
-
难度 2/5 1-3 小时 新手友好度 75/100