Using LuaJIT's nil-coalescing extension does not narrow the type correctly
まだ誰も着手していません。
評価
調査の方向性
まず、提供された ?? の例を使って lua-language-server の型チェッカーで問題を再現し、次に推論された型を同等の or 式の型と比較します。nil-coalescing 式が nullable オペランドをどのように処理するかを追跡します。bar が integer と推論され、比較ケースに対する既存の動作が正しいままであれば完了です。
索引モデルが issue の本文から書いたものです。
説明
How are you using the lua-language-server?
Other
Which OS are you using?
Linux
What is the issue affecting?
Type Checking
Expected Behaviour
Using the nil-coalescing operator should narrow an expressions type. For example, in this sample code, the type of b should be narrowed to integer:
---@type integer?
local foo = 1
local bar = foo ?? 2
Actual Behaviour
Instead of the type being narrowed, the type of foo is copied instead, and the type of bar is thought to be integer? instead of integer.
Reproduction steps
- Insert the following sample code in a project:
---@type integer?
local foo = 1
local bar = foo ?? 2
- Check the type of
b
Additional Notes
This seems to work fine using the classic Lua approach with or:
---@type integer?
local foo = 1
local bar = foo or 2
The type of bar is integer here, as expected.
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 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 52/100
LuaLS/lua-language-server#3456 ·
LuaLS/lua-language-server の issue をすべて見る
似ている issue
-
documentation feature-request mini.completion
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
fluent/fluent-bit-docs#2727 ·
-
OS:Windows
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
api7/lua-resty-saml#62 ·