summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server/src/core/diagnostics.lua3
-rw-r--r--server/src/vm/emmy.lua3
-rw-r--r--server/src/vm/function.lua1
-rw-r--r--server/test/diagnostics/init.lua6
4 files changed, 12 insertions, 1 deletions
diff --git a/server/src/core/diagnostics.lua b/server/src/core/diagnostics.lua
index badf3b00..8eab5960 100644
--- a/server/src/core/diagnostics.lua
+++ b/server/src/core/diagnostics.lua
@@ -14,6 +14,9 @@ function mt:searchUnusedLocals(callback)
if not loc then
return
end
+ if loc:get 'emmy arg' then
+ return
+ end
local name = loc:getName()
if name == '_' or name == '_ENV' or name == '' then
return
diff --git a/server/src/vm/emmy.lua b/server/src/vm/emmy.lua
index 45fb13f9..b193a7de 100644
--- a/server/src/vm/emmy.lua
+++ b/server/src/vm/emmy.lua
@@ -312,7 +312,8 @@ function mt:buildEmmyFunctionType(source)
local value = self:createValue(paramType:getType(), typeSource)
value:setEmmy(paramType)
self:instantSource(nameSource)
- func:addArg(nameSource[1], nameSource, value)
+ local arg = func:addArg(nameSource[1], nameSource, value)
+ arg:set('emmy arg', true)
end
end
local returns = source.returns
diff --git a/server/src/vm/function.lua b/server/src/vm/function.lua
index b6772cd1..1ba01363 100644
--- a/server/src/vm/function.lua
+++ b/server/src/vm/function.lua
@@ -391,6 +391,7 @@ function mt:addArg(name, source, value, close)
loc:close(close)
self:saveUpvalue(name, loc)
self.args[#self.args+1] = loc
+ return loc
end
function mt:createArg(vm, arg, close)
diff --git a/server/test/diagnostics/init.lua b/server/test/diagnostics/init.lua
index 5d015dfd..094e7549 100644
--- a/server/test/diagnostics/init.lua
+++ b/server/test/diagnostics/init.lua
@@ -444,6 +444,12 @@ TEST [[
]]
TEST [[
+---@type fun(a: integer)
+local f
+f()
+]]
+
+TEST [[
local x <const> = 1
<!x!> = 2
return x