table newindex shows invalid `need check for nil` warning if key is `false`
まだ誰も着手していません。
評価
調査の方向性
Issue 内の Lua 再現コードから始め、キーが nil ではなく false の場合の table newindex 操作に対する型チェックの経路を追跡してください。また、報告されている cast の例も調べ、false 値を持つ有効なキーでは警告が発生しなくなり、本当に nil のキーでは引き続き警告が発生することを確認してください。
索引モデルが issue の本文から書いたものです。
説明
How are you using the lua-language-server?
NeoVim
Which OS are you using?
Windows
What is the issue affecting?
Type Checking
Expected Behaviour
t[key] = {} should throw no warning if key is not nil.
Actual Behaviour
t[key] = {} throws an invalid warning if key is false but not nil.
Reproduction steps
local CACHE = {}
CACHE[false] = {} -- ok
local key = false
CACHE[key] = {} -- should be ok as well, but throws invalid warning
Additional Notes
This happened to me in a more complex method where I ensured a key is not nil, by redefining the parameter:
function apicall(input)
local key = input or false
-- more stuff...
cache[key] = {}
return cache[key]
end
I'd like to note an annoyance when it comes to casting, the following casts all throw warnings, even if explicitly casting the variable, requiring me to invent a new variable (or forcing me disable redefining local):
---@param input string?
function apicall(input)
-- this cast does nothing and also throws no warning
---@cast input +false
-- this cast warns that it can't cast string? to string|false
---@cast input string|false
-- this is what I do, it just throws an info warning, which I've disabled:
---@type string | false
local input = input or false
end
Log File
No response
- 主要言語
- Lua
- スター
- 4.4k
- フォーク
- 442
- 平均マージ
- 8日 9時間
- マージ済み PR(30日)
- 1
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- 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 件 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
LuaLS/lua-language-server#3459 · リアクション 1 件 ·
LuaLS/lua-language-server の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
LandSandBoat/server#11579 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
ArchiveTeam/sinavideo-grab#7 · リアクション 3 件 ·
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
mailcow/mailcow-dockerized#7480 ·
-
mapper bug
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100