Skip to content

A key and value of the nested table are not defined #1736

Open
@RomanSpector

Description

@RomanSpector

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

image

image

Actual Behaviour

image

image

image

Reproduction steps

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

---@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 <integer, table<integer, number>>
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<integer, T>
---@return table<Test, T>
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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingfeat/genericRelated to generic emulation feature

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions