[lldb] Fix dwim-print to not delete non-result persistent variables (#85152) #8428
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
EvaluateExpression
does not always create a new persistent result. If the expressionis a bare persistent variable, then a new persistent result is not created. This means
the caller can't assume a new persistent result is created for each evaluation.
However,
dwim-print
was doing exactly that: assuming a new persistent result for eachevaluation. This resulted in a bug:
The first
p $j
would not create a persistent result, and sodwim-print
wouldinadvertently delete
$j
. The secondp $j
would fail.The fix is to try
expr
as a persistent variable, after tryingexpr
as a framevariable. For persistent variables, this avoids calling
EvaluateExpression
.Resolves llvm#84806
rdar://124688427
(cherry picked from commit 4da2b54)
(cherry-picked from commit 38b55e1)