summaryrefslogtreecommitdiff
path: root/server-beta/src
diff options
context:
space:
mode:
Diffstat (limited to 'server-beta/src')
-rw-r--r--server-beta/src/searcher/isGlobal.lua22
-rw-r--r--server-beta/src/searcher/searcher.lua1
2 files changed, 19 insertions, 4 deletions
diff --git a/server-beta/src/searcher/isGlobal.lua b/server-beta/src/searcher/isGlobal.lua
index 549220a9..d59a6876 100644
--- a/server-beta/src/searcher/isGlobal.lua
+++ b/server-beta/src/searcher/isGlobal.lua
@@ -1,15 +1,29 @@
local searcher = require 'searcher.searcher'
-function searcher.isGlobal(source)
+local function isGlobal(source)
local node = source.node
if not node then
return false
end
- local isGlobal
+ local global
searcher.eachRef(node, function (info)
if info.source.tag == '_ENV' then
- isGlobal = true
+ global = true
end
end)
- return isGlobal
+ return global
+end
+
+function searcher.isGlobal(source)
+ local cache = searcher.cache.isGlobal[source]
+ if cache ~= nil then
+ return cache
+ end
+ cache = isGlobal(source)
+ searcher.cache.isGlobal[source] = cache
+ searcher.eachRef(source, function (info)
+ local src = info.source
+ searcher.cache.isGlobal[src] = cache
+ end)
+ return cache
end
diff --git a/server-beta/src/searcher/searcher.lua b/server-beta/src/searcher/searcher.lua
index 059afe8a..a5b2d677 100644
--- a/server-beta/src/searcher/searcher.lua
+++ b/server-beta/src/searcher/searcher.lua
@@ -108,6 +108,7 @@ function m.refreshCache()
eachRef = {},
eachField = {},
eachGlobal = {},
+ isGlobal = {},
specialName = {},
getLibrary = {},
specials = nil,