@@ -243,6 +243,16 @@ local viewNodeSwitch;viewNodeSwitch = util.switch()
243243--- @class vm.node
244244--- @field lastInfer ? vm.infer
245245
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+
246256--- @param source vm.node.object | vm.node
247257--- @return vm.infer
248258function vm .getInfer (source )
@@ -258,10 +268,7 @@ function vm.getInfer(source)
258268 if node .lastInfer then
259269 return node .lastInfer
260270 end
261- local infer = setmetatable ({
262- node = node ,
263- _drop = {},
264- }, mt )
271+ local infer = createInfer (node )
265272 node .lastInfer = infer
266273
267274 return infer
@@ -311,9 +318,7 @@ function mt:_eraseAlias(uri)
311318 if set .type == ' doc.alias' then
312319 if expandAlias then
313320 self ._drop [n .name ] = true
314- local newInfer = setmetatable ({
315- _drop = {},
316- }, mt )
321+ local newInfer = createInfer ()
317322 for _ , ext in ipairs (set .extends .types ) do
318323 viewNodeSwitch (ext .type , ext , newInfer , uri )
319324 end
@@ -322,7 +327,7 @@ function mt:_eraseAlias(uri)
322327 end
323328 else
324329 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 )
326331 if view and view ~= n .name then
327332 self ._drop [view ] = true
328333 end
546551--- @param uri uri
547552--- @return string ?
548553function vm .viewObject (source , uri )
549- local infer = setmetatable ({
550- _drop = {},
551- }, mt )
554+ local infer = createInfer ()
552555 return viewNodeSwitch (source .type , source , infer , uri )
553556end
554557
0 commit comments