================
@@ -1376,6 +1382,16 @@ void request_evaluate(const llvm::json::Object &request)
{
EmplaceSafeString(body, "result", result);
body.try_emplace("variablesReference", (int64_t)0);
} else {
+ if (context == "repl") {
+ // If the expression is empty and the last expression was for a
+ // variable, set the expression to the previous expression (repeat the
+ // evaluation); otherwise save the current non-empty expression for the
+ // next (possibly empty) variable expression.
+ if (expression.empty())
+ expression = g_dap.last_nonempty_var_expression;
----------------
cmtice wrote:
Your description of the behavior is not correct. last_nonempty_var_expression
is now being used for two purposes: It both holds the last non-empty var
expression IF-AND-ONLY-IF the last expression was a var expression; or it
indicates that the last expression was a command, by being empty itself. Note
the very first thing we do, unconditionally, when processing a command is to
clear this variable.
When we receive an empty expression, we check to see if the most recent
non-empty expression was a command (test to see if last_nonempty_var_expression
is empty). If it was a command, then we pass the empty expression to the
command interpreter. If the most recent non-empty expression was a variable
expression (i.e. last_nonempty_var_expression is NOT empty), then we treat the
empty expression as a variable expression, re-evalulating the contents of
last_nonempty_var_expression.
https://github.com/llvm/llvm-project/pull/107485
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits