summaryrefslogtreecommitdiff
path: root/server-beta/src/parser
diff options
context:
space:
mode:
author最萌小汐 <sumneko@hotmail.com>2019-11-05 11:27:05 +0800
committer最萌小汐 <sumneko@hotmail.com>2019-11-05 11:27:05 +0800
commit9b7a246d397aff61bc29837c40a1317ff18c7887 (patch)
tree7a2f18d7dd0b590a3aee32cdcaaa0d4bfb91759f /server-beta/src/parser
parent8f505a0b999d1432dfc107133e7ac2ba591cbed2 (diff)
downloadlua-language-server-9b7a246d397aff61bc29837c40a1317ff18c7887.zip
支持重定义局部变量
Diffstat (limited to 'server-beta/src/parser')
-rw-r--r--server-beta/src/parser/ast.lua2
-rw-r--r--server-beta/src/parser/guide.lua12
2 files changed, 8 insertions, 6 deletions
diff --git a/server-beta/src/parser/ast.lua b/server-beta/src/parser/ast.lua
index ae8f9a7a..39e7d871 100644
--- a/server-beta/src/parser/ast.lua
+++ b/server-beta/src/parser/ast.lua
@@ -862,7 +862,7 @@ local Defs = {
return
end
- local loc = createLocal(name, start, actions)
+ local loc = createLocal(name, name.start, actions)
loc.localfunction = true
return loc
diff --git a/server-beta/src/parser/guide.lua b/server-beta/src/parser/guide.lua
index d8dd873e..02284b1e 100644
--- a/server-beta/src/parser/guide.lua
+++ b/server-beta/src/parser/guide.lua
@@ -316,12 +316,14 @@ function m.eachSourceType(ast, type, callback)
if not cache then
cache = {}
ast.typeCache[type] = cache
+ local mark = {}
+ m.eachSource(ast, function (source)
+ if source.type == type and not mark[source] then
+ mark[source] = true
+ cache[#cache+1] = source
+ end
+ end)
end
- m.eachSource(ast, function (source)
- if source.type == type then
- cache[#cache+1] = source
- end
- end)
for i = 1, #cache do
callback(cache[i])
end