summaryrefslogtreecommitdiff
path: root/server-beta/src/core/diagnostics/redundant-parameter.lua
diff options
context:
space:
mode:
Diffstat (limited to 'server-beta/src/core/diagnostics/redundant-parameter.lua')
-rw-r--r--server-beta/src/core/diagnostics/redundant-parameter.lua102
1 files changed, 0 insertions, 102 deletions
diff --git a/server-beta/src/core/diagnostics/redundant-parameter.lua b/server-beta/src/core/diagnostics/redundant-parameter.lua
deleted file mode 100644
index ec14188e..00000000
--- a/server-beta/src/core/diagnostics/redundant-parameter.lua
+++ /dev/null
@@ -1,102 +0,0 @@
-local files = require 'files'
-local guide = require 'parser.guide'
-local vm = require 'vm'
-local lang = require 'language'
-local define = require 'proto.define'
-local await = require 'await'
-
-local function countLibraryArgs(source)
- local func = vm.getLibrary(source)
- if not func then
- return nil
- end
- local result = 0
- if not func.args then
- return result
- end
- if func.args[#func.args].type == '...' then
- return math.maxinteger
- end
- result = result + #func.args
- return result
-end
-
-local function countCallArgs(source)
- local result = 0
- if not source.args then
- return 0
- end
- if source.node and source.node.type == 'getmethod' then
- result = result + 1
- end
- result = result + #source.args
- return result
-end
-
-local function countFuncArgs(source)
- local result = 0
- if not source.args then
- return result
- end
- if source.args[#source.args].type == '...' then
- return math.maxinteger
- end
- if source.parent and source.parent.type == 'setmethod' then
- result = result + 1
- end
- result = result + #source.args
- return result
-end
-
-return function (uri, callback)
- local ast = files.getAst(uri)
- if not ast then
- return
- end
-
- guide.eachSourceType(ast.ast, 'call', function (source)
- local callArgs = countCallArgs(source)
- if callArgs == 0 then
- return
- end
-
- await.delay(function ()
- return files.globalVersion
- end)
-
- local func = source.node
- local funcArgs
- vm.eachDef(func, function (info)
- if info.mode == 'value' then
- local src = info.source
- if src.type == 'function' then
- local args = countFuncArgs(src)
- if not funcArgs or args > funcArgs then
- funcArgs = args
- end
- end
- end
- end)
-
- funcArgs = funcArgs or countLibraryArgs(func)
- if not funcArgs then
- return
- end
-
- local delta = callArgs - funcArgs
- if delta <= 0 then
- return
- end
- for i = #source.args - delta + 1, #source.args do
- local arg = source.args[i]
- if arg then
- callback {
- start = arg.start,
- finish = arg.finish,
- tags = { define.DiagnosticTag.Unnecessary },
- message = lang.script('DIAG_OVER_MAX_ARGS', funcArgs, callArgs)
- }
- end
- end
- end)
-end