-
-
Notifications
You must be signed in to change notification settings - Fork 423
Expand file tree
/
Copy pathinit.lua
More file actions
136 lines (125 loc) · 3.39 KB
/
init.lua
File metadata and controls
136 lines (125 loc) · 3.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
local core = require 'core.diagnostics'
local files = require 'files'
local config = require 'config'
local util = require 'utility'
local catch = require 'catch'
local status = config.get(nil, 'Lua.diagnostics.neededFileStatus')
for key in pairs(status) do
status[key] = 'Any!'
end
config.set('nil', 'Lua.type.castNumberToInteger', false)
config.set('nil', 'Lua.type.weakUnionCheck', false)
config.set('nil', 'Lua.type.weakNilCheck', false)
rawset(_G, 'TEST', true)
local function founded(targets, results)
if #targets ~= #results then
return false
end
for _, target in ipairs(targets) do
for _, result in ipairs(results) do
if target[1] == result[1] and target[2] == result[2] then
goto NEXT
end
end
do return false end
::NEXT::
end
return true
end
---@diagnostic disable: await-in-sync
function TEST(script, version)
if version then
config.set(nil, 'Lua.runtime.version', version)
end
local newScript, catched = catch(script, '!')
files.setText(TESTURI, newScript)
files.open(TESTURI)
local origins = {}
local filteds = {}
local results = {}
core(TESTURI, false, function (result)
if DIAG_CARE == result.code
or DIAG_CARE == '*' then
results[#results+1] = { result.start, result.finish }
filteds[#filteds+1] = result
end
origins[#origins+1] = result
end)
if results[1] then
if not founded(catched['!'] or {}, results) then
error(('%s\n%s'):format(util.dump(catched['!']), util.dump(results)))
end
else
assert(#catched['!'] == 0)
end
files.remove(TESTURI)
if version then
config.set(nil, 'Lua.runtime.version', nil)
end
return function (callback)
callback(filteds)
end
end
local function check(name)
DIAG_CARE = name
require('diagnostics.' .. name)
end
check 'ambiguity-1'
check 'assign-type-mismatch'
check 'await-in-sync'
check 'cast-local-type'
check 'cast-type-mismatch'
check 'circle-doc-class'
check 'close-non-object'
check 'code-after-break'
check 'count-down-loop'
check 'deprecated'
check 'discard-returns'
check 'doc-field-no-class'
check 'duplicate-doc-alias'
check 'duplicate-doc-field'
check 'duplicate-doc-param'
check 'duplicate-index'
check 'duplicate-set-field'
check 'empty-block'
check 'global-element'
check 'global-in-nil-env'
check 'incomplete-signature-doc'
check 'inject-field'
check 'invisible'
check 'lowercase-global'
check 'missing-fields'
check 'missing-global-doc'
check 'missing-local-export-doc'
check 'missing-parameter'
check 'missing-return-value'
check 'missing-return'
check 'need-check-nil'
check 'unnecessary-assert'
check 'newfield-call'
check 'newline-call'
check 'not-yieldable'
check 'no-unknown-operations'
check 'param-type-mismatch'
check 'redefined-local'
check 'redundant-parameter'
check 'redundant-return-value'
check 'redundant-return'
check 'redundant-value'
check 'return-type-mismatch'
check 'trailing-space'
check 'unbalanced-assignments'
check 'undefined-doc-class'
check 'undefined-doc-name'
check 'undefined-doc-param'
check 'undefined-env-child'
check 'undefined-field'
check 'undefined-global'
check 'unknown-cast-variable'
check 'unknown-diag-code'
check 'unknown-operator'
check 'unreachable-code'
check 'unused-function'
check 'unused-label'
check 'unused-local'
check 'unused-vararg'