diff options
| author | Arthur Eubanks <aeubanks@google.com> | 2024-06-27 16:32:27 -0700 |
|---|---|---|
| committer | shawbyoung <shawbyoung@gmail.com> | 2024-06-27 16:32:27 -0700 |
| commit | f5c7df12cacdb84552b36a7ac598a8db41acc680 (patch) | |
| tree | 3b33e941b9bfb88c40c64fd18ee32a633423cbed /lldb/source/Commands/CommandObjectDWIMPrint.cpp | |
| parent | 608880c3a7a59c86db82728067e553a8d4665a45 (diff) | |
| parent | 804415825b97e974c96a92580bcbeaf4c7ff0a04 (diff) | |
[𝘀𝗽𝗿] changes introduced through rebaseusers/shawbyoung/spr/main.boltnfc-refactoring-callgraph
Created using spr 1.3.4
[skip ci]
Diffstat (limited to 'lldb/source/Commands/CommandObjectDWIMPrint.cpp')
| -rw-r--r-- | lldb/source/Commands/CommandObjectDWIMPrint.cpp | 63 |
1 files changed, 36 insertions, 27 deletions
diff --git a/lldb/source/Commands/CommandObjectDWIMPrint.cpp b/lldb/source/Commands/CommandObjectDWIMPrint.cpp index 57a372a762e1..b7cd955e0020 100644 --- a/lldb/source/Commands/CommandObjectDWIMPrint.cpp +++ b/lldb/source/Commands/CommandObjectDWIMPrint.cpp @@ -133,13 +133,22 @@ void CommandObjectDWIMPrint::DoExecute(StringRef command, auto dump_val_object = [&](ValueObject &valobj) { if (is_po) { StreamString temp_result_stream; - valobj.Dump(temp_result_stream, dump_options); + if (llvm::Error error = valobj.Dump(temp_result_stream, dump_options)) { + result.AppendError(toString(std::move(error))); + return; + } llvm::StringRef output = temp_result_stream.GetString(); maybe_add_hint(output); result.GetOutputStream() << output; } else { - valobj.Dump(result.GetOutputStream(), dump_options); + llvm::Error error = + valobj.Dump(result.GetOutputStream(), dump_options); + if (error) { + result.AppendError(toString(std::move(error))); + return; + } } + result.SetStatus(eReturnStatusSuccessFinishResult); }; // First, try `expr` as the name of a frame variable. @@ -160,7 +169,6 @@ void CommandObjectDWIMPrint::DoExecute(StringRef command, } dump_val_object(*valobj_sp); - result.SetStatus(eReturnStatusSuccessFinishResult); return; } } @@ -171,7 +179,6 @@ void CommandObjectDWIMPrint::DoExecute(StringRef command, if (auto var_sp = state->GetVariable(expr)) if (auto valobj_sp = var_sp->GetValueObject()) { dump_val_object(*valobj_sp); - result.SetStatus(eReturnStatusSuccessFinishResult); return; } @@ -192,34 +199,36 @@ void CommandObjectDWIMPrint::DoExecute(StringRef command, error_stream << " " << fixed_expression << "\n"; } - if (expr_result == eExpressionCompleted) { - if (verbosity != eDWIMPrintVerbosityNone) { - StringRef flags; - if (args.HasArgs()) - flags = args.GetArgStringWithDelimiter(); - result.AppendMessageWithFormatv("note: ran `expression {0}{1}`", flags, - expr); - } - - if (valobj_sp->GetError().GetError() != UserExpression::kNoResult) - dump_val_object(*valobj_sp); - - if (suppress_result) - if (auto result_var_sp = - target.GetPersistentVariable(valobj_sp->GetName())) { - auto language = valobj_sp->GetPreferredDisplayLanguage(); - if (auto *persistent_state = - target.GetPersistentExpressionStateForLanguage(language)) - persistent_state->RemovePersistentVariable(result_var_sp); - } - - result.SetStatus(eReturnStatusSuccessFinishResult); - } else { + // If the expression failed, return an error. + if (expr_result != eExpressionCompleted) { if (valobj_sp) result.SetError(valobj_sp->GetError()); else result.AppendErrorWithFormatv( "unknown error evaluating expression `{0}`", expr); + return; + } + + if (verbosity != eDWIMPrintVerbosityNone) { + StringRef flags; + if (args.HasArgs()) + flags = args.GetArgStringWithDelimiter(); + result.AppendMessageWithFormatv("note: ran `expression {0}{1}`", flags, + expr); } + + if (valobj_sp->GetError().GetError() != UserExpression::kNoResult) + dump_val_object(*valobj_sp); + else + result.SetStatus(eReturnStatusSuccessFinishResult); + + if (suppress_result) + if (auto result_var_sp = + target.GetPersistentVariable(valobj_sp->GetName())) { + auto language = valobj_sp->GetPreferredDisplayLanguage(); + if (auto *persistent_state = + target.GetPersistentExpressionStateForLanguage(language)) + persistent_state->RemovePersistentVariable(result_var_sp); + } } } |
