diff options
-rw-r--r-- | script/vm/runner.lua | 2 | ||||
-rw-r--r-- | test/type_inference/init.lua | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/script/vm/runner.lua b/script/vm/runner.lua index ec3449ee..49626665 100644 --- a/script/vm/runner.lua +++ b/script/vm/runner.lua @@ -117,6 +117,7 @@ function mt:_lookIntoChild(action, topNode, outNode) return topNode, topNode or outNode end self._mark[action] = true + topNode = self:_fastWardCasts(action.start, topNode) if action.type == 'getlocal' then if action.node == self._loc then self._callback(action, topNode) @@ -323,7 +324,6 @@ function mt:_lookIntoBlock(block, topNode) end for _, action in ipairs(block) do if self._has[action] then - topNode = self:_fastWardCasts(action.start, topNode) topNode = self:_lookIntoChild(action, topNode) end end diff --git a/test/type_inference/init.lua b/test/type_inference/init.lua index 50b3901d..02e9364e 100644 --- a/test/type_inference/init.lua +++ b/test/type_inference/init.lua @@ -3219,6 +3219,16 @@ local n print(<?n?>) ]] +TEST 'table' [[ +---@type number|table +local n + +if n +---@cast n table +and <?n?>.type == 'xxx' then +end +]] + TEST 'integer' [[ ---@type integer? local n |