Skip to content

Commit d26cc04

Browse files
committed
修复lazy的错误
1 parent 0fac06f commit d26cc04

File tree

1 file changed

+8
-33
lines changed

1 file changed

+8
-33
lines changed

extension/script/backend/worker/variables.lua

Lines changed: 8 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -579,24 +579,8 @@ local function varGetValue(context, allow_lazy, v)
579579
return ("%s: %s"):format(type, value), type
580580
end
581581

582-
local function deep_copy(tbl, seen)
583-
if type(tbl) ~= 'table' then
584-
return tbl
585-
end
586-
if seen and seen[tbl] then
587-
return seen[tbl]
588-
end
589-
local s = seen or {}
590-
local res = {}
591-
s[tbl] = res
592-
for k, v in pairs(tbl) do
593-
res[deep_copy(k, s)] = deep_copy(v, s)
594-
end
595-
return res
596-
end
597-
598-
local function varCreateReference(value, evaluateName, presentationHint, context)
599-
local valuestr, type, lazy = varGetValue(context, true, value)
582+
local function varCreateReference(value, evaluateName, presentationHint, context, allow_lazy)
583+
local valuestr, type, lazy = varGetValue(context, allow_lazy, value)
600584
if lazy == nil then
601585
lazy = false
602586
end
@@ -621,24 +605,14 @@ local function varCreateReference(value, evaluateName, presentationHint, context
621605
v = value,
622606
eval = evaluateName,
623607
context = context,
608+
lazy = result.presentationHint.lazy,
624609
}
625610
result.variablesReference = #varPool
626611
if type == "table" then
627612
local asize, hsize = rdebug.tablesize(value)
628613
result.indexedVariables = arrayBase + asize
629614
result.namedVariables = hsize
630615
end
631-
if result.presentationHint.lazy then
632-
local lazy_result = deep_copy(result)
633-
lazy_result.presentationHint.lazy = nil
634-
varPool[#varPool + 1] = {
635-
v = value,
636-
eval = evaluateName,
637-
context = context,
638-
lazy = lazy_result,
639-
}
640-
result.variablesReference = #varPool
641-
end
642616
end
643617
return result
644618
end
@@ -721,7 +695,7 @@ local function varCreate(t)
721695
if type(t.evaluateName) ~= "string" then
722696
t.evaluateName = nil
723697
end
724-
local var = varCreateReference(t.value, t.evaluateName, t.presentationHint or {}, "variables")
698+
local var = varCreateReference(t.value, t.evaluateName, t.presentationHint or {}, "variables", true)
725699
var.name = name
726700
var.evaluateName = t.evaluateName
727701
vars[#vars + 1] = var
@@ -1288,7 +1262,8 @@ end
12881262

12891263
local function extandValue(varRef, filter, start, count)
12901264
if varRef.lazy then
1291-
return { varRef.lazy }
1265+
local var = varCreateReference(varRef.v, varRef.eval, {}, varRef.context, false)
1266+
return { var }
12921267
end
12931268
if varRef.special then
12941269
return special_extand[varRef.special](varRef, filter, start, count)
@@ -1344,7 +1319,7 @@ local function setValue(varRef, name, value)
13441319
end
13451320
end
13461321
end
1347-
return varCreateReference(rvalue, evaluateName, {}, "variables")
1322+
return varCreateReference(rvalue, evaluateName, {}, "variables", true)
13481323
end
13491324

13501325
local m = {}
@@ -1464,7 +1439,7 @@ function m.createText(value, context)
14641439
end
14651440

14661441
function m.createRef(value, evaluateName, context)
1467-
return varCreateReference(value, evaluateName, {}, context)
1442+
return varCreateReference(value, evaluateName, {}, context, true)
14681443
end
14691444

14701445
function m.tostring(v)

0 commit comments

Comments
 (0)