[all-commits] [llvm/llvm-project] a31a5d: Make sure Target::EvaluateExpression() passes up a...
Adrian Prantl via All-commits
all-commits at lists.llvm.org
Mon Oct 17 15:22:09 PDT 2022
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: a31a5da3c7d7393749a43dbc678fd28fb94d07f6
https://github.com/llvm/llvm-project/commit/a31a5da3c7d7393749a43dbc678fd28fb94d07f6
Author: Adrian Prantl <aprantl at apple.com>
Date: 2022-10-17 (Mon, 17 Oct 2022)
Changed paths:
M lldb/source/Commands/CommandObjectExpression.cpp
M lldb/source/Target/Target.cpp
Log Message:
-----------
Make sure Target::EvaluateExpression() passes up an error instead of silently dropping it.
When UserExpression::Evaluate() fails and doesn't return a ValueObject there is no vehicle for returning the error in the return value.
This behavior can be observed by applying the following patch:
diff --git a/lldb/source/Target/Target.cpp b/lldb/source/Target/Target.cpp
index f1a311b7252c..58c03ccdb068 100644
--- a/lldb/source/Target/Target.cpp
+++ b/lldb/source/Target/Target.cpp
@@ -2370,6 +2370,7 @@ UserExpression *Target::GetUserExpressionForLanguage(
Expression::ResultType desired_type,
const EvaluateExpressionOptions &options, ValueObject *ctx_obj,
Status &error) {
+ error.SetErrorStringWithFormat("Ha ha!"); return nullptr;
auto type_system_or_err = GetScratchTypeSystemForLanguage(language);
if (auto err = type_system_or_err.takeError()) {
error.SetErrorStringWithFormat(
and then running
$ lldb -o "p 1"
(lldb) p 1
(lldb)
This patch fixes this by creating an empty result ValueObject that wraps the error.
Differential Revision: https://reviews.llvm.org/D135998
More information about the All-commits
mailing list