================ @@ -170,6 +170,14 @@ void CommandObjectDWIMPrint::DoExecute(StringRef command, ExpressionResults expr_result = target.EvaluateExpression( expr, exe_scope, valobj_sp, eval_options, &fixed_expression); + auto persistent_name = valobj_sp->GetName(); + // EvaluateExpression doesn't generate a new persistent result (`$0`) when + // the expression is already just a persistent variable (`$var`). Instead, + // the same persistent variable is reused. Take note of when a persistent + // result is created, to prevent unintentional deletion of a user's + // persistent variable. + bool did_persist_result = persistent_name != expr; ---------------- jimingham wrote:
It would be good to have EvaluateExpression tell you whether it created a result variable or not. For instance, calling a void function produces no result. It would be nice to know that happened directly rather than attempting to guess from the returned ValueObject. We definitely know this... That would definitely be a better way to do this. https://github.com/llvm/llvm-project/pull/85152 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits