typechecked optargs constructors for Sorter

This commit is contained in:
Alexander Courtis
2024-11-06 17:07:08 +11:00
parent b2f7b9a876
commit 692fff7745
4 changed files with 36 additions and 39 deletions

View File

@@ -1,12 +1,12 @@
---Generic class, useful for inheritence.
---@class (exact) Class
local Class = {}
---@class (exact) ClassOld
local ClassOld = {}
---@generic T
---@param self T
---@param o T|nil
---@return T
function Class:new(o)
function ClassOld:new(o)
o = o or {}
setmetatable(o, self)
@@ -20,7 +20,7 @@ end
---@generic T
---@param class T
---@return boolean
function Class:is(class)
function ClassOld:is(class)
local mt = getmetatable(self)
while mt do
if mt == class then
@@ -35,13 +35,13 @@ end
---@generic T
---@param class T
---@return T|nil
function Class:as(class)
function ClassOld:as(class)
return self:is(class) and self or nil
end
-- avoid unused param warnings in abstract methods
---@param ... any
function Class:nop(...) --luacheck: ignore 212
function ClassOld:nop(...) --luacheck: ignore 212
end
return Class
return ClassOld