@@ -243,6 +243,16 @@ local viewNodeSwitch;viewNodeSwitch = util.switch()
243
243
--- @class vm.node
244
244
--- @field lastInfer ? vm.infer
245
245
246
+ --- @param node ? vm.node
247
+ --- @return vm.infer
248
+ local function createInfer (node )
249
+ local infer = setmetatable ({
250
+ node = node ,
251
+ _drop = {},
252
+ }, mt )
253
+ return infer
254
+ end
255
+
246
256
--- @param source vm.node.object | vm.node
247
257
--- @return vm.infer
248
258
function vm .getInfer (source )
@@ -258,10 +268,7 @@ function vm.getInfer(source)
258
268
if node .lastInfer then
259
269
return node .lastInfer
260
270
end
261
- local infer = setmetatable ({
262
- node = node ,
263
- _drop = {},
264
- }, mt )
271
+ local infer = createInfer (node )
265
272
node .lastInfer = infer
266
273
267
274
return infer
@@ -311,9 +318,7 @@ function mt:_eraseAlias(uri)
311
318
if set .type == ' doc.alias' then
312
319
if expandAlias then
313
320
self ._drop [n .name ] = true
314
- local newInfer = setmetatable ({
315
- _drop = {},
316
- }, mt )
321
+ local newInfer = createInfer ()
317
322
for _ , ext in ipairs (set .extends .types ) do
318
323
viewNodeSwitch (ext .type , ext , newInfer , uri )
319
324
end
@@ -322,7 +327,7 @@ function mt:_eraseAlias(uri)
322
327
end
323
328
else
324
329
for _ , ext in ipairs (set .extends .types ) do
325
- local view = viewNodeSwitch (ext .type , ext , {} , uri )
330
+ local view = viewNodeSwitch (ext .type , ext , createInfer () , uri )
326
331
if view and view ~= n .name then
327
332
self ._drop [view ] = true
328
333
end
546
551
--- @param uri uri
547
552
--- @return string ?
548
553
function vm .viewObject (source , uri )
549
- local infer = setmetatable ({
550
- _drop = {},
551
- }, mt )
554
+ local infer = createInfer ()
552
555
return viewNodeSwitch (source .type , source , infer , uri )
553
556
end
554
557
0 commit comments