LuaLS / LuaLS/lua-language-server
Better global recognizing for loadfile
まだ誰も着手していません。
- 主要言語
- Lua
- スター
- 4.4k
- フォーク
- 442
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
In some cases you might need to make the plugin recognize a specific local variable as global, without declaring that variable as an actual global, one of these cases are using `load` and `loadfile` were you can pass an `env` variable that represents the chunk environment.
*mainFile.lua
```lua
local env = setmetatable(
{foo = function(a, b) return a == b end},
{__index = _G}
)
loadfile('./secondFile.lua', 't', env)
```
*secondFile.lua
```lua
foo(1, 2) -- Undefined global `foo` . Lua Diagnostics.(undefined-global)
```
So i would suggest better recognizing for `load`/`loadfile`/`loadstring` environment or/and a custom emmylua annotations `--- @global` that marks the local var as a global one.
Thanks in advance.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず、言語サーバーが `undefined-global` 診断をどのように報告し、`load`、`loadfile`、`loadstring` の環境をどのように処理しているかを追跡します。その動作を `mainFile.lua` と `secondFile.lua` の例と比較し、環境の認識と `@global` アノテーションのどちらが意図されたスコープなのかを判断します。選択した動作で、例が `foo` を未定義として報告しなくなれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- lua
- 領域
- devtools
- issue の種類
- 機能追加
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 25/100