summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLei Zhu <uhziel@gmail.com>2021-01-05 16:50:34 +0800
committerLei Zhu <uhziel@gmail.com>2021-01-05 16:50:34 +0800
commit39bbefd8b4c98be50955b2484af1a6b6f9541f54 (patch)
tree8de7b76600c0dee0a9a0030cbf5e2da49fa725e1
parentc57556e25cb02e01011272c305854d0f1c106e1c (diff)
downloadlua-language-server-39bbefd8b4c98be50955b2484af1a6b6f9541f54.zip
原生API不要去判名字,用 special 字段来判断,这样支持 local ipairs = ipairs 的情况
-rw-r--r--script/parser/compile.lua2
-rw-r--r--script/parser/guide.lua4
-rw-r--r--test/definition/luadoc.lua1
3 files changed, 5 insertions, 2 deletions
diff --git a/script/parser/compile.lua b/script/parser/compile.lua
index d4129ab4..f9992047 100644
--- a/script/parser/compile.lua
+++ b/script/parser/compile.lua
@@ -12,6 +12,8 @@ local specials = {
['loadfile'] = true,
['pcall'] = true,
['xpcall'] = true,
+ ['pairs'] = true,
+ ['ipairs'] = true,
}
_ENV = nil
diff --git a/script/parser/guide.lua b/script/parser/guide.lua
index 7a5be591..56f6ac38 100644
--- a/script/parser/guide.lua
+++ b/script/parser/guide.lua
@@ -2206,8 +2206,8 @@ local function getTableAndIndexIfIsForPairsKeyOrValue(ref)
end
local pairsCallObj = rootCallObj.node
- if not pairsCallObj.node or pairsCallObj.node.type ~= 'getglobal'
- or (pairsCallObj.node[1] ~= 'pairs' and pairsCallObj.node[1] ~= 'ipairs') then
+ if not pairsCallObj.node
+ or (pairsCallObj.node.special ~= 'pairs' and pairsCallObj.node.special ~= 'ipairs') then
return
end
diff --git a/test/definition/luadoc.lua b/test/definition/luadoc.lua
index 210f5a26..3c0c764b 100644
--- a/test/definition/luadoc.lua
+++ b/test/definition/luadoc.lua
@@ -300,6 +300,7 @@ function Foo:<!bar1!>() end
---@type table<number, Foo>
local v1
+local ipairs = ipairs
for i, v in ipairs(v1) do
print(v.<?bar1?>)
end