LuaLS / LuaLS/lua-language-server

A key and value of the nested table are not defined

Aperta
#1,736 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

bug feat/generic
Lingua principale
Lua
Stelle
4.4k
Fork
442
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

### 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?

Other

### Expected Behaviour


![image](https://user-images.githubusercontent.com/57856647/204633131-b651e904-c5dd-4d46-96dc-87f7033a3119.png)

![image](https://user-images.githubusercontent.com/57856647/204633153-d8209139-9ce7-4543-b1c4-37e37c1f536e.png)

![image](https://user-images.githubusercontent.com/57856647/204633184-cab71a17-2f75-44ac-95ba-98bab0877005.png)

### Actual Behaviour

![image](https://user-images.githubusercontent.com/57856647/204633081-2bd4dd79-cae1-4fdb-a78a-c5151897a76e.png)

![image](https://user-images.githubusercontent.com/57856647/204632236-1370ae1e-aa2c-4544-afc5-af330e117ae9.png)

![image](https://user-images.githubusercontent.com/57856647/204632254-2359446b-6365-4064-a1a1-e8c13ed90450.png)

### Reproduction steps

Maybe I'm doing something wrong, but it seems to have worked before

```lua
---@class Test
---@field ID integer
local Test = {};

---@param id integer
---@return Test
function Test:new(id)
return setmetatable({ ID = id }, { __index = self });
end

---@type table >
local tab = {
[1] = { 1.0, 2.1, 3.2 },
[2] = { 4.0, 5.1, 6.2 },
[3] = { 7.0, 8.1, 9.2 }
}

---@generic T
---@param test table
---@return table
local function convert2Test(test)
local t = {};
for k, v in pairs(test) do
t[Test:new(k)] = v;
end
return t;
end

local newTab = convert2Test(tab);

for k, v in pairs(newTab) do
print(k, v); -- ok! k and v detected
end

local test = Test:new(3);
local info = newTab[test];

if info then
for k, v in pairs(info) do
print(k, v); -- oops! k and v not detected
end
end
```

### Additional Notes

_No response_

### Log File

_No response_

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia con la riproduzione in Lua nell’issue e confronta i tipi inferiti negli screenshot previsto ed effettivo. Analizza il tipo di tabella annidata utilizzato per tab e il valore restituito tramite convert2Test. Il lavoro è completato quando i tipi della chiave e del valore della tabella interna vengono inferiti nel ciclo finale pairs.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
lua
Ambito
devtools
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.