summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--script-beta/core/hover/init.lua2
-rw-r--r--script-beta/core/hover/label.lua2
-rw-r--r--script-beta/parser/guide.lua7
-rw-r--r--script-beta/vm/eachDef.lua12
-rw-r--r--script-beta/vm/eachField.lua8
-rw-r--r--script-beta/vm/eachRef.lua8
6 files changed, 20 insertions, 19 deletions
diff --git a/script-beta/core/hover/init.lua b/script-beta/core/hover/init.lua
index 77f9d6d9..ab8bd566 100644
--- a/script-beta/core/hover/init.lua
+++ b/script-beta/core/hover/init.lua
@@ -80,7 +80,7 @@ end
local function getHover(source)
vm.setSearchLevel(5)
- local isFunction = vm.hasInferType(source, 'function')
+ local isFunction = vm.hasInferType(source, 'function', 'deep')
if isFunction then
return getHoverAsFunction(source)
else
diff --git a/script-beta/core/hover/label.lua b/script-beta/core/hover/label.lua
index 67faefe6..2c0bdcd1 100644
--- a/script-beta/core/hover/label.lua
+++ b/script-beta/core/hover/label.lua
@@ -36,7 +36,7 @@ local function asValue(source, title)
local class = vm.getClass(source)
local literal = vm.getInferLiteral(source)
local cont
- if vm.hasInferType(source, 'table') then
+ if vm.hasInferType(source, 'table', 'deep') then
cont = buildTable(source)
end
local pack = {}
diff --git a/script-beta/parser/guide.lua b/script-beta/parser/guide.lua
index 1d375d89..7144ebbe 100644
--- a/script-beta/parser/guide.lua
+++ b/script-beta/parser/guide.lua
@@ -1186,7 +1186,7 @@ function m.status(parentStatus, interface)
deep = parentStatus and parentStatus.deep,
results = {},
}
- if status.depth >= 3 then
+ if status.depth >= 5 then
status.deep = false
end
status.lock = status.locks[status.depth] or {}
@@ -1319,7 +1319,7 @@ function m.searchFields(status, obj, key, interface, deep)
return results
else
local newStatus = m.status(status, interface)
- --newStatus.deep = deep
+ newStatus.deep = deep
local simple = m.getSimple(obj)
if not simple then
return {}
@@ -2221,7 +2221,8 @@ end
function m.getRefCache(status, obj, mode)
local cache, globalCache
- if status.depth == 1 then
+ if status.depth == 1
+ and status.deep then
globalCache = status.interface.cache and status.interface.cache() or {}
end
cache = status.cache.refCache or {}
diff --git a/script-beta/vm/eachDef.lua b/script-beta/vm/eachDef.lua
index 46d1887e..5d1aa566 100644
--- a/script-beta/vm/eachDef.lua
+++ b/script-beta/vm/eachDef.lua
@@ -4,7 +4,7 @@ local files = require 'files'
local util = require 'utility'
local await = require 'await'
-local function eachDef(source, simple)
+local function eachDef(source, deep)
local results = {}
local lock = vm.lock('eachDef', source)
if not lock then
@@ -14,7 +14,7 @@ local function eachDef(source, simple)
await.delay()
local clock = os.clock()
- local myResults, count = guide.requestDefinition(source, vm.interface, simple)
+ local myResults, count = guide.requestDefinition(source, vm.interface, deep)
if DEVELOP and os.clock() - clock > 0.1 then
log.warn('requestDefinition', count, os.clock() - clock, guide.getUri(source), util.dump(source, { deep = 1 }))
end
@@ -30,15 +30,15 @@ function vm.getDefs(source, deep)
local name = guide.getKeyName(source)
local cache = vm.getCache('eachDefOfGlobal')[name]
or vm.getCache('eachDef')[source]
- or eachDef(source, deep)
+ or eachDef(source, 'deep')
vm.getCache('eachDefOfGlobal')[name] = cache
return cache
- elseif not deep then
- return eachDef(source, deep)
else
local cache = vm.getCache('eachDef')[source]
or eachDef(source, deep)
- vm.getCache('eachDef')[source] = cache
+ if deep then
+ vm.getCache('eachDef')[source] = cache
+ end
return cache
end
end
diff --git a/script-beta/vm/eachField.lua b/script-beta/vm/eachField.lua
index b644cbd9..90892f03 100644
--- a/script-beta/vm/eachField.lua
+++ b/script-beta/vm/eachField.lua
@@ -51,15 +51,15 @@ function vm.getFields(source, deep)
local name = guide.getKeyName(source)
local cache = vm.getCache('eachFieldOfGlobal')[name]
or vm.getCache('eachField')[source]
- or eachField(source, deep)
+ or eachField(source, 'deep')
vm.getCache('eachFieldOfGlobal')[name] = cache
return cache
- elseif not deep then
- return eachField(source, deep)
else
local cache = vm.getCache('eachField')[source]
or eachField(source, deep)
- vm.getCache('eachField')[source] = cache
+ if deep then
+ vm.getCache('eachField')[source] = cache
+ end
return cache
end
end
diff --git a/script-beta/vm/eachRef.lua b/script-beta/vm/eachRef.lua
index 8df45c67..ea46c9ee 100644
--- a/script-beta/vm/eachRef.lua
+++ b/script-beta/vm/eachRef.lua
@@ -29,15 +29,15 @@ function vm.getRefs(source, deep)
local name = guide.getKeyName(source)
local cache = vm.getCache('eachRefOfGlobal')[name]
or vm.getCache('eachRef')[source]
- or getRefs(source, deep)
+ or getRefs(source, 'deep')
vm.getCache('eachRefOfGlobal')[name] = cache
return cache
- elseif not deep then
- return getRefs(source, deep)
else
local cache = vm.getCache('eachRef')[source]
or getRefs(source, deep)
- vm.getCache('eachRef')[source] = cache
+ if deep then
+ vm.getCache('eachRef')[source] = cache
+ end
return cache
end
end