LuaLS / LuaLS/lua-language-server

`__call` metamethod return type ignored

Open
#95 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement feat/LuaCats Annotations priority.low
Dominant language
Lua
Stars
4.4k
Forks
442
PR merge metrics
No merged PRs in 30d

Description

This works in Intelij but not with your extension

---@class Test
local Test = {
	someval=404
}
---@return Test
function Test:__call() end
setmetatable(Test, Test)

local t = Test()
-- No completion for the following
t.

As i note it seems that setmetatable might not even be accounted for and that only the fact __call is in the same table makes it work in InteliJ, though i am not sure.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the Lua snippet and checking completion after local t = Test() and t.. Trace how the extension infers __call return types and whether setmetatable is considered; done when the returned Test type exposes someval completion.

Written by the indexing model from the issue text.

Assessment

Tech stack
lua
Domain
devtools
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.