summaryrefslogtreecommitdiff
path: root/script/vm/compiler.lua
diff options
context:
space:
mode:
author最萌小汐 <sumneko@hotmail.com>2022-04-08 14:53:11 +0800
committer最萌小汐 <sumneko@hotmail.com>2022-04-08 14:53:11 +0800
commit78b3a317d66d3066ccda8570737e2ecbe76c6568 (patch)
treef1fc4471cf76f7b6d707095a5570be058fd6413c /script/vm/compiler.lua
parent67a341f3fa26e5a3140cde3420ef2269a84d478f (diff)
downloadlua-language-server-78b3a317d66d3066ccda8570737e2ecbe76c6568.zip
cleanup
Diffstat (limited to 'script/vm/compiler.lua')
-rw-r--r--script/vm/compiler.lua29
1 files changed, 12 insertions, 17 deletions
diff --git a/script/vm/compiler.lua b/script/vm/compiler.lua
index a87f2eba..eeea3c87 100644
--- a/script/vm/compiler.lua
+++ b/script/vm/compiler.lua
@@ -338,12 +338,11 @@ local function getReturn(func, index, args)
end
local node = m.compileNode(func)
---@type vm.node.union
- local result, hasCalled
+ local result
if node then
for cnode in nodeMgr.eachNode(node) do
if cnode.type == 'function'
or cnode.type == 'doc.type.function' then
- hasCalled = true
local returnNode = m.getReturnOfFunction(cnode, index)
if returnNode and returnNode.type == 'generic' then
returnNode = returnNode:resolve(args)
@@ -355,9 +354,6 @@ local function getReturn(func, index, args)
end
end
end
- if not hasCalled then
- result = globalMgr.getGlobal('type', 'unknown')
- end
return result
end
@@ -471,19 +467,18 @@ local function selectNode(source, list, index)
else
result = m.compileNode(exp)
end
- if not result then
- return nodeMgr.setNode(source, result)
- end
- local hasKnownType
- for n in nodeMgr.eachNode(result) do
- if guide.isLiteral(n)
- or (n.type == 'global' and n.cate == 'type') then
- hasKnownType = true
- break
+ if source.type == 'function.return' then
+ local hasKnownType
+ for n in nodeMgr.eachNode(result) do
+ if guide.isLiteral(n)
+ or (n.type == 'global' and n.cate == 'type') then
+ hasKnownType = true
+ break
+ end
+ end
+ if not hasKnownType then
+ result = nodeMgr.mergeNode(result, globalMgr.getGlobal('type', 'unknown'))
end
- end
- if not hasKnownType then
- result = nodeMgr.mergeNode(result, globalMgr.getGlobal('type', 'unknown'))
end
return nodeMgr.setNode(source, result)
end