LuaLS / LuaLS/lua-language-server

View definition of overloaded value via __index of metatable doesn't seem right

Offen
#2,380 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Lua
Sterne
4.4k
Forks
442
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

How are you using the lua-language-server?

Visual Studio Code Extension (sumneko.lua)

Which OS are you using?

Windows

What is the issue affecting?

Hover

Expected Behaviour
local a = {k = 'v1'}
local b = setmetatable({}, {__index = a})
b.k = 'v2'

View definition of a.k:

local a = {k = 'v1'}
Actual Behaviour

image
View definition of a.k:
image

Reproduction steps

Press F12 while selecting the k of the first line of the code below:

local a = {k = 'v1'}
local b = setmetatable({}, {__index = a})
b.k = 'v2'
Additional Notes

Chinese colloquial description:

如上所述,当我试图浏览 a.k 的定义时,同时弹出了 a.k 与 b.k 的定义。这显然是不对的:表 b 元表的__index 为 a,因此 b.k 只是继承了 a.k,其定义与 a.k 的定义并无关联,不应显示到 a.k 上。

当借助__index 实现的继承较多时,定义就失去了它应有的作用,非常凌乱。

我正在为一款游戏的 mod 开发 LLS 的 Addon 与 Plugin,因此我愿意提供我力所能及的帮助。如果已有重复的 issue,恳请谅解!

Log File

file_c%3A_LLS-issue.log
I suppose this may not be helpful. But just upload it.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Reproduziere das Definitionsverhalten in der VS Code extension mit dem dreizeiligen Lua-Snippet und vergleiche die F12-Ergebnisse für die beiden k-Referenzen. Verfolge den Pfad der Definitionsauflösung für Tabellenfelder und die Behandlung von __index; abgeschlossen ist die Aufgabe, wenn beim Auswählen von a.k nur die Definition von a.k und nicht zusätzlich die von b.k angezeigt wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
lua
Bereich
devtools
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.