summaryrefslogtreecommitdiff
path: root/server-beta/src/core/diagnostics
diff options
context:
space:
mode:
Diffstat (limited to 'server-beta/src/core/diagnostics')
-rw-r--r--server-beta/src/core/diagnostics/redundant-parameter.lua25
-rw-r--r--server-beta/src/core/diagnostics/unused-local.lua10
-rw-r--r--server-beta/src/core/diagnostics/unused-vararg.lua32
3 files changed, 60 insertions, 7 deletions
diff --git a/server-beta/src/core/diagnostics/redundant-parameter.lua b/server-beta/src/core/diagnostics/redundant-parameter.lua
index c087197c..79c259d8 100644
--- a/server-beta/src/core/diagnostics/redundant-parameter.lua
+++ b/server-beta/src/core/diagnostics/redundant-parameter.lua
@@ -3,12 +3,28 @@ local guide = require 'parser.guide'
local searcher = require 'searcher'
local lang = require 'language'
local define = require 'proto.define'
+local library = require 'library'
-local function packCallArgs(source)
- if not source.args then
+local function packLibraryArgs(source)
+ local func = searcher.getLibrary(source)
+ if not func then
return nil
end
local result = {}
+ if not func.args then
+ return result
+ end
+ for _, lib in ipairs(func.args) do
+ result[#result+1] = lib
+ end
+ return result
+end
+
+local function packCallArgs(source)
+ local result = {}
+ if not source.args then
+ return result
+ end
if source.node and source.node.type == 'getmethod' then
result[#result+1] = source.node.node
end
@@ -19,10 +35,10 @@ local function packCallArgs(source)
end
local function packFuncArgs(source)
+ local result = {}
if not source.args then
- return nil
+ return result
end
- local result = {}
if source.parent and source.parent.type == 'setmethod' then
result[#result+1] = source.parent.node
end
@@ -58,6 +74,7 @@ return function (uri, callback)
end
end)
+ funcArgs = funcArgs or packLibraryArgs(func)
if not funcArgs then
return
end
diff --git a/server-beta/src/core/diagnostics/unused-local.lua b/server-beta/src/core/diagnostics/unused-local.lua
index e6052e39..22b2e16b 100644
--- a/server-beta/src/core/diagnostics/unused-local.lua
+++ b/server-beta/src/core/diagnostics/unused-local.lua
@@ -9,7 +9,15 @@ local function hasGet(loc)
end
for _, ref in ipairs(loc.ref) do
if ref.type == 'getlocal' then
- return true
+ if not ref.next then
+ return true
+ end
+ local nextType = ref.next.type
+ if nextType ~= 'setmethod'
+ and nextType ~= 'setfield'
+ and nextType ~= 'setindex' then
+ return true
+ end
end
end
return false
diff --git a/server-beta/src/core/diagnostics/unused-vararg.lua b/server-beta/src/core/diagnostics/unused-vararg.lua
index b3d19c21..74cc08e7 100644
--- a/server-beta/src/core/diagnostics/unused-vararg.lua
+++ b/server-beta/src/core/diagnostics/unused-vararg.lua
@@ -1,3 +1,31 @@
-return function ()
-
+local files = require 'files'
+local guide = require 'parser.guide'
+local define = require 'proto.define'
+local lang = require 'language'
+
+return function (uri, callback)
+ local ast = files.getAst(uri)
+ if not ast then
+ return
+ end
+
+ guide.eachSourceType(ast.ast, 'function', function (source)
+ local args = source.args
+ if not args then
+ return
+ end
+
+ for _, arg in ipairs(args) do
+ if arg.type == '...' then
+ if not arg.ref then
+ callback {
+ start = arg.start,
+ finish = arg.finish,
+ tags = { define.DiagnosticTag.Unnecessary },
+ message = lang.script.DIAG_UNUSED_VARARG,
+ }
+ end
+ end
+ end
+ end)
end