lua-language-server icon indicating copy to clipboard operation
lua-language-server copied to clipboard

---@class with function return question

Open MisteryDuck opened this issue 1 year ago • 0 comments

so I have this (as a mockup):

do
    ---@class a
    local a = {}

    ---@generic T
    ---@param self a
    ---@param new T
    ---@return T
    a.extend = function(self, new)
        --...
        return new
    end
end

and it's supposed to be inheritance for prototypes, right, but I'm trying to make the LS think that it returns the second parameter new and it does that and the LS thinks that, so far so good. So this

    local b = a:extend{
        n = 1
    }

will make it like this: p1 but the problem is, that if I use ---@class b here, then it will ignore what the function returns and I get this: p2 am I missing something or is it just not possible? Though, if I separate it into two statements like this,

    ---@class b
    local b = {
        n = 1
    }

    b = a:extend(b)

then I get what I want: p3 but it's not ideal, since it's two statements now and I can't use the fun{} syntactic sugar this way, which would be the whole reason, right. Is there a way to make it work? Also I'm unsure about how to properly word the title here

MisteryDuck avatar Apr 08 '24 04:04 MisteryDuck