@@ -8,18 +8,23 @@ rawset(_G, 'TEST', true)
88function TEST (script )
99 return function (expect )
1010 local newScript , catched1 = catch (script , ' ?' )
11- local newExpect , catched2 = catch (expect or ' ' , ' !' )
1211 files .setText (' ' , newScript )
1312 local hovers = core (' ' , catched1 [' ?' ][1 ][1 ])
1413 if hovers then
15- assert (expect )
16- local hover = hovers [# hovers ]
17-
18- local arg = hover .params [hover .index ].label
19-
20- assert (newExpect == hover .label )
21- assert (catched2 [' !' ][1 ][1 ] == arg [1 ])
22- assert (catched2 [' !' ][1 ][2 ] == arg [2 ])
14+ assert (# hovers == # expect )
15+ for i , hover in ipairs (hovers ) do
16+ local newExpect , catched2 = catch (expect [i ], ' !' )
17+ local arg = hover .params [hover .index ]
18+
19+ assert (newExpect == hover .label )
20+ if arg then
21+ assert (catched2 [' !' ][1 ] ~= nil )
22+ assert (catched2 [' !' ][1 ][1 ] == arg .label [1 ])
23+ assert (catched2 [' !' ][1 ][2 ] == arg .label [2 ])
24+ else
25+ assert (# catched2 [' !' ] == 0 )
26+ end
27+ end
2328 else
2429 assert (expect == nil )
2530 end
3338
3439x(<??>
3540]]
36- ' function x(<!a: any!>, b: any)'
41+ { ' function x(<!a: any!>, b: any)' }
3742
3843TEST [[
3944local function x(a, b)
4045end
4146
4247x(<??>)
4348]]
44- ' function x(<!a: any!>, b: any)'
49+ { ' function x(<!a: any!>, b: any)' }
4550
4651TEST [[
4752local function x(a, b)
4853end
4954
5055x(xxx<??>)
5156]]
52- ' function x(<!a: any!>, b: any)'
57+ { ' function x(<!a: any!>, b: any)' }
5358
5459TEST [[
5560local function x(a, b)
5661end
5762
5863x(xxx, <??>)
5964]]
60- ' function x(a: any, <!b: any!>)'
65+ { ' function x(a: any, <!b: any!>)' }
6166
6267TEST [[
6368function mt:f(a)
6469end
6570
6671mt:f(<??>
6772]]
68- ' (method) mt:f(<!a: any!>)'
73+ { ' (method) mt:f(<!a: any!>)' }
6974
7075TEST [[
7176local function x(a, b)
7479
7580x(<??>
7681]]
77- ' function x(<!a: any!>, b: any)'
82+ { ' function x(<!a: any!>, b: any)' }
7883
7984TEST [[
8085local function x(a, ...)
8388
8489x(1, 2, 3, <??>
8590]]
86- ' function x(a: any, <!...any!>)'
91+ { ' function x(a: any, <!...any!>)' }
8792
8893TEST [[
8994(''):sub(<??>
9095]]
91- ' (method) string:sub(<!i: integer!>, j?: integer)'
96+ { ' (method) string:sub(<!i: integer!>, j?: integer)' }
9297
9398TEST [[
9499(''):sub(1)<??>
101106
102107f(1, 'string<??>')
103108]]
104- ' function f(a: any, <!b: any!>, c: any)'
109+ { ' function f(a: any, <!b: any!>, c: any)' }
105110
106111TEST [[
107112pcall(function () <??> end)
@@ -118,7 +123,7 @@ TEST [[
118123local zzzz
119124zzzz(<??>)
120125]]
121- ' function zzzz(<!x: number!>, y: number)'
126+ { ' function zzzz(<!x: number!>, y: number)' }
122127
123128TEST [[
124129('abc'):format(f(<??>))
132137
133138Foo(<??>)
134139]]
135- ' function Foo(<!param01: any!>, param02: any)'
140+ { ' function Foo(<!param01: any!>, param02: any)' }
136141
137142TEST [[
138143function f1(a, b)
@@ -143,29 +148,29 @@ end
143148
144149f2(f1(),<??>)
145150]]
146- ' function f2(c: any, <!d: any!>)'
151+ { ' function f2(c: any, <!d: any!>)' }
147152
148153TEST [[
149154local function f(a, b, c)
150155end
151156
152157f({},<??>)
153158]]
154- ' function f(a: any, <!b: any!>, c: any)'
159+ { ' function f(a: any, <!b: any!>, c: any)' }
155160
156161TEST [[
157162for _ in pairs(<??>) do
158163end
159164]]
160- ' function pairs(<!t: <T>!>)'
165+ { ' function pairs(<!t: <T>!>)' }
161166
162167TEST [[
163168function m:f()
164169end
165170
166171m.f(<??>)
167172]]
168- ' function m.f(<!self: any!>)'
173+ { ' function m.f(<!self: any!>)' }
169174
170175TEST [[
171176---@alias nnn table<number, string>
@@ -175,39 +180,39 @@ local function f(x, y, z) end
175180
176181f(<??>)
177182]]
178- ' function f(<!x: table<number, string>!>, y: any, z: any)'
183+ { ' function f(<!x: table<number, string>!>, y: any, z: any)' }
179184
180185TEST [[
181186local function x(a, b)
182187end
183188
184189x( aaaa <??>, 2)
185190]]
186- " function x(<!a: any!>, b: any)"
191+ { " function x(<!a: any!>, b: any)" }
187192
188193TEST [[
189194local function x(a, b)
190195end
191196
192197x(<??> aaaa , 2)
193198]]
194- ' function x(<!a: any!>, b: any)'
199+ { ' function x(<!a: any!>, b: any)' }
195200
196201TEST [[
197202local function x(a, b)
198203end
199204
200205x(aaaa ,<??> 2)
201206]]
202- ' function x(a: any, <!b: any!>)'
207+ { ' function x(a: any, <!b: any!>)' }
203208
204209TEST [[
205210local function x(a, b)
206211end
207212
208213x(aaaa , 2 <??>)
209214]]
210- ' function x(a: any, <!b: any!>)'
215+ { ' function x(a: any, <!b: any!>)' }
211216
212217TEST [[
213218local fooC
@@ -221,10 +226,77 @@ fooC(function (x, s)
221226
222227end,<??>)
223228]]
224- ' function fooC(callback: fun(x: number, s: string):nil, <!par: number!>)'
229+ { ' function fooC(callback: fun(x: number, s: string):nil, <!par: number!>)' }
225230
226231TEST [[
227232(function (a, b)
228233end)(<??>)
229234]]
230- ' function (<!a: any!>, b: any)'
235+ {' function (<!a: any!>, b: any)' }
236+
237+ TEST [[
238+ function X() end
239+
240+ ---@param a number
241+ function X(a) end
242+
243+ ---@param a number
244+ ---@param b number
245+ function X(a, b) end
246+
247+ X(<??>)
248+ ]]
249+ {
250+ ' function X()' ,
251+ ' function X(<!a: number!>)' ,
252+ ' function X(<!a: number!>, b: number)' ,
253+ }
254+
255+ TEST [[
256+ function X() end
257+
258+ ---@param a number
259+ function X(a) end
260+
261+ ---@param a number
262+ ---@param b number
263+ function X(a, b) end
264+
265+ X(<?1?>)
266+ ]]
267+ {
268+ ' function X(<!a: number!>)' ,
269+ ' function X(<!a: number!>, b: number)' ,
270+ }
271+
272+ TEST [[
273+ function X() end
274+
275+ ---@param a number
276+ function X(a) end
277+
278+ ---@param a number
279+ ---@param b number
280+ function X(a, b) end
281+
282+ X(1, <??>)
283+ ]]
284+ {
285+ ' function X(a: number, <!b: number!>)' ,
286+ }
287+
288+ TEST [[
289+ function X() end
290+
291+ ---@param a number
292+ function X(a) end
293+
294+ ---@param a number
295+ ---@param b number
296+ function X(a, b) end
297+
298+ X(1, <?2?>)
299+ ]]
300+ {
301+ ' function X(a: number, <!b: number!>)' ,
302+ }
0 commit comments