summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author最萌小汐 <sumneko@hotmail.com>2023-01-13 17:05:50 +0800
committer最萌小汐 <sumneko@hotmail.com>2023-01-13 17:05:50 +0800
commite8b46e34769bb1ad974f19ab214f943df8cce072 (patch)
tree37471b616ac978f48263562b52d3ea3e7a35cd42
parentff741df641bbe99a418bb856e14e3ec30bbc08aa (diff)
downloadlua-language-server-e8b46e34769bb1ad974f19ab214f943df8cce072.zip
fix
-rw-r--r--script/vm/compiler.lua2
-rw-r--r--script/vm/global.lua2
-rw-r--r--test/type_inference/init.lua14
3 files changed, 14 insertions, 4 deletions
diff --git a/script/vm/compiler.lua b/script/vm/compiler.lua
index 5a078e70..7a89cbf4 100644
--- a/script/vm/compiler.lua
+++ b/script/vm/compiler.lua
@@ -1270,7 +1270,7 @@ local compilerSwitch = util.switch()
---@cast key string
vm.compileByParentNode(source.node, key, function (src)
vm.setNode(source, vm.compileNode(src))
- if src == source and source.value then
+ if src == source and source.value and source.value.type ~= 'nil' then
vm.setNode(source, vm.compileNode(source.value))
end
end)
diff --git a/script/vm/global.lua b/script/vm/global.lua
index 19474bb5..c1b5f320 100644
--- a/script/vm/global.lua
+++ b/script/vm/global.lua
@@ -552,7 +552,7 @@ function vm.compileByGlobal(source)
if vm.bindDocs(source) then
return true
end
- if source.value then
+ if source.value and source.value.type ~= 'nil' then
vm.setNode(source, vm.compileNode(source.value))
return true
end
diff --git a/test/type_inference/init.lua b/test/type_inference/init.lua
index ed29d3d1..9172ca92 100644
--- a/test/type_inference/init.lua
+++ b/test/type_inference/init.lua
@@ -3407,12 +3407,12 @@ TEST '{ [string]: number, [true]: string, [1]: boolean, tag: integer }' [[
local <?t?>
]]
-TEST 'nil' [[
+TEST 'unknown' [[
local mt = {}
mt.<?x?> = nil
]]
-TEST 'nil' [[
+TEST 'unknown' [[
mt = {}
mt.<?x?> = nil
]]
@@ -4189,3 +4189,13 @@ X.Y = 1
print(X.<?Y?>)
]]
+
+TEST 'integer' [[
+local x = {}
+
+x.y = 1
+local y = x.y
+x.y = nil
+
+print(<?y?>)
+]]