@@ -579,24 +579,8 @@ local function varGetValue(context, allow_lazy, v)
579579 return (" %s: %s" ):format (type , value ), type
580580end
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
644618end
@@ -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
12891263local 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 )
13481323end
13491324
13501325local m = {}
@@ -1464,7 +1439,7 @@ function m.createText(value, context)
14641439end
14651440
14661441function m .createRef (value , evaluateName , context )
1467- return varCreateReference (value , evaluateName , {}, context )
1442+ return varCreateReference (value , evaluateName , {}, context , true )
14681443end
14691444
14701445function m .tostring (v )
0 commit comments