Closed
Description
Describe the bug
When creating a class and overloading its operators, the extension doesn't seem to detect the new return value of the operation. The result is detected as a "number":
--- Class representing Vectors.
--- @class Vector
--- @field x number
--- @field y number
Vector = {}
--- Constructor of Vector.
--- @param x number
--- @param y number
--- @return Vector
function Vector:new(x, y)
local e = {}
setmetatable(e, self)
self.__index = self
e.x = x or 0
e.y = y or 0
return e
end
--- Add to another Vector.
--- @param v Vector
--- @return Vector
function Vector:__add(v)
return Vector:new(self.x + v.x, self.y + v.y)
end
local v = Vector:new(3, 4)
v = v + Vector:new(1, 2) --- Warning here
print(v)
The __add function is detected:
This may be related to #599, but I'm not sure.
To Reproduce
Create a class and overload the operators. (See the code above).
Expected behavior
This shouldn't trigger a warning: since __add is documented, the result of the operation should be detected as a Vector (or at least an "any" for a sum/div/... with tables).
Environment:
- OS: Windows 10 x64
- Is WSL remote? No
- Client: VSCode