aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Commands/CommandObjectExpression.cpp
diff options
context:
space:
mode:
authorAdrian Prantl <aprantl@apple.com>2022-10-14 16:45:01 -0700
committerAdrian Prantl <aprantl@apple.com>2022-10-17 15:21:41 -0700
commita31a5da3c7d7393749a43dbc678fd28fb94d07f6 (patch)
treef506f389482aa9cea7150395f4c04536680fca85 /lldb/source/Commands/CommandObjectExpression.cpp
parentdd38f899803465dd2765d1601b3989df3bd53863 (diff)
downloadllvm-a31a5da3c7d7393749a43dbc678fd28fb94d07f6.zip
llvm-a31a5da3c7d7393749a43dbc678fd28fb94d07f6.tar.gz
llvm-a31a5da3c7d7393749a43dbc678fd28fb94d07f6.tar.bz2
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
Diffstat (limited to 'lldb/source/Commands/CommandObjectExpression.cpp')
-rw-r--r--lldb/source/Commands/CommandObjectExpression.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/lldb/source/Commands/CommandObjectExpression.cpp b/lldb/source/Commands/CommandObjectExpression.cpp
index b7d129e..be306f2 100644
--- a/lldb/source/Commands/CommandObjectExpression.cpp
+++ b/lldb/source/Commands/CommandObjectExpression.cpp
@@ -461,6 +461,8 @@ bool CommandObjectExpression::EvaluateExpression(llvm::StringRef expr,
result.SetStatus(eReturnStatusFailed);
}
}
+ } else {
+ error_stream.Printf("error: unknown error\n");
}
return (success != eExpressionSetupError &&