Skip to content

Commit 0f86500

Browse files
committed
fix runtime error
#1911
1 parent c28f8c8 commit 0f86500

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

script/vm/infer.lua

+14-11
Original file line numberDiff line numberDiff line change
@@ -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
248258
function 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
@@ -546,9 +551,7 @@ end
546551
---@param uri uri
547552
---@return string?
548553
function vm.viewObject(source, uri)
549-
local infer = setmetatable({
550-
_drop = {},
551-
}, mt)
554+
local infer = createInfer()
552555
return viewNodeSwitch(source.type, source, infer, uri)
553556
end
554557

0 commit comments

Comments
 (0)