Skip to content

Commit 98a5687

Browse files
committed
[lldb] Make conversions from llvm::Error explicit with Status::FromError() [NFC]
1 parent 9626e84 commit 98a5687

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+151
-132
lines changed

lldb/include/lldb/Utility/Status.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,9 @@ class Status {
9191

9292
~Status();
9393

94-
// llvm::Error support
95-
explicit Status(llvm::Error error) { *this = std::move(error); }
96-
const Status &operator=(llvm::Error error);
94+
/// Avoid using this in new code. Migrate APIs to llvm::Expected instead.
95+
static Status FromError(llvm::Error &&error);
96+
/// FIXME: Replace this with a takeError method.
9797
llvm::Error ToError() const;
9898

9999
/// Get the error string associated with the current error.
@@ -145,6 +145,7 @@ class Status {
145145
bool Success() const;
146146

147147
protected:
148+
Status(llvm::Error &&error);
148149
/// Status code as an integer value.
149150
ValueType m_code = 0;
150151
/// The type of the above error code.

lldb/source/API/SBDebugger.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ lldb::SBError SBDebugger::InitializeWithErrorHandling() {
220220
SBError error;
221221
if (auto e = g_debugger_lifetime->Initialize(
222222
std::make_unique<SystemInitializerFull>(), LoadPlugin)) {
223-
error.SetError(Status(std::move(e)));
223+
error.SetError(Status::FromError(std::move(e)));
224224
}
225225
return error;
226226
}

lldb/source/API/SBTarget.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1658,7 +1658,7 @@ SBError SBTarget::SetLabel(const char *label) {
16581658
if (!target_sp)
16591659
return Status::FromErrorString("Couldn't get internal target object.");
16601660

1661-
return Status(target_sp->SetLabel(label));
1661+
return Status::FromError(target_sp->SetLabel(label));
16621662
}
16631663

16641664
uint32_t SBTarget::GetDataByteSize() {

lldb/source/Commands/CommandObjectBreakpoint.cpp

Lines changed: 57 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -89,14 +89,16 @@ class lldb_private::BreakpointOptionGroup : public OptionGroup {
8989
if (success)
9090
m_bp_opts.SetAutoContinue(value);
9191
else
92-
error = CreateOptionParsingError(option_arg, short_option, long_option,
93-
g_bool_parsing_error_message);
92+
error = Status::FromError(
93+
CreateOptionParsingError(option_arg, short_option, long_option,
94+
g_bool_parsing_error_message));
9495
} break;
9596
case 'i': {
9697
uint32_t ignore_count;
9798
if (option_arg.getAsInteger(0, ignore_count))
98-
error = CreateOptionParsingError(option_arg, short_option, long_option,
99-
g_int_parsing_error_message);
99+
error = Status::FromError(
100+
CreateOptionParsingError(option_arg, short_option, long_option,
101+
g_int_parsing_error_message));
100102
else
101103
m_bp_opts.SetIgnoreCount(ignore_count);
102104
} break;
@@ -106,29 +108,31 @@ class lldb_private::BreakpointOptionGroup : public OptionGroup {
106108
if (success) {
107109
m_bp_opts.SetOneShot(value);
108110
} else
109-
error = CreateOptionParsingError(option_arg, short_option, long_option,
110-
g_bool_parsing_error_message);
111+
error = Status::FromError(
112+
CreateOptionParsingError(option_arg, short_option, long_option,
113+
g_bool_parsing_error_message));
111114
} break;
112115
case 't': {
113116
lldb::tid_t thread_id = LLDB_INVALID_THREAD_ID;
114117
if (option_arg == "current") {
115118
if (!execution_context) {
116-
error = CreateOptionParsingError(
119+
error = Status::FromError(CreateOptionParsingError(
117120
option_arg, short_option, long_option,
118-
"No context to determine current thread");
121+
"No context to determine current thread"));
119122
} else {
120123
ThreadSP ctx_thread_sp = execution_context->GetThreadSP();
121124
if (!ctx_thread_sp || !ctx_thread_sp->IsValid()) {
122-
error =
125+
error = Status::FromError(
123126
CreateOptionParsingError(option_arg, short_option, long_option,
124-
"No currently selected thread");
127+
"No currently selected thread"));
125128
} else {
126129
thread_id = ctx_thread_sp->GetID();
127130
}
128131
}
129132
} else if (option_arg.getAsInteger(0, thread_id)) {
130-
error = CreateOptionParsingError(option_arg, short_option, long_option,
131-
g_int_parsing_error_message);
133+
error = Status::FromError(
134+
CreateOptionParsingError(option_arg, short_option, long_option,
135+
g_int_parsing_error_message));
132136
}
133137
if (thread_id != LLDB_INVALID_THREAD_ID)
134138
m_bp_opts.SetThreadID(thread_id);
@@ -142,8 +146,9 @@ class lldb_private::BreakpointOptionGroup : public OptionGroup {
142146
case 'x': {
143147
uint32_t thread_index = UINT32_MAX;
144148
if (option_arg.getAsInteger(0, thread_index)) {
145-
error = CreateOptionParsingError(option_arg, short_option, long_option,
146-
g_int_parsing_error_message);
149+
error = Status::FromError(
150+
CreateOptionParsingError(option_arg, short_option, long_option,
151+
g_int_parsing_error_message));
147152
} else {
148153
m_bp_opts.GetThreadSpec()->SetIndex(thread_index);
149154
}
@@ -286,9 +291,9 @@ class CommandObjectBreakpointSet : public CommandObjectParsed {
286291

287292
case 'u':
288293
if (option_arg.getAsInteger(0, m_column))
289-
error =
294+
error = Status::FromError(
290295
CreateOptionParsingError(option_arg, short_option, long_option,
291-
g_int_parsing_error_message);
296+
g_int_parsing_error_message));
292297
break;
293298

294299
case 'E': {
@@ -326,8 +331,8 @@ class CommandObjectBreakpointSet : public CommandObjectParsed {
326331
error_context = "Unsupported language type for exception breakpoint";
327332
}
328333
if (!error_context.empty())
329-
error = CreateOptionParsingError(option_arg, short_option,
330-
long_option, error_context);
334+
error = Status::FromError(CreateOptionParsingError(
335+
option_arg, short_option, long_option, error_context));
331336
} break;
332337

333338
case 'f':
@@ -343,9 +348,9 @@ class CommandObjectBreakpointSet : public CommandObjectParsed {
343348
bool success;
344349
m_catch_bp = OptionArgParser::ToBoolean(option_arg, true, &success);
345350
if (!success)
346-
error =
351+
error = Status::FromError(
347352
CreateOptionParsingError(option_arg, short_option, long_option,
348-
g_bool_parsing_error_message);
353+
g_bool_parsing_error_message));
349354
} break;
350355

351356
case 'H':
@@ -362,24 +367,24 @@ class CommandObjectBreakpointSet : public CommandObjectParsed {
362367
m_skip_prologue = eLazyBoolNo;
363368

364369
if (!success)
365-
error =
370+
error = Status::FromError(
366371
CreateOptionParsingError(option_arg, short_option, long_option,
367-
g_bool_parsing_error_message);
372+
g_bool_parsing_error_message));
368373
} break;
369374

370375
case 'l':
371376
if (option_arg.getAsInteger(0, m_line_num))
372-
error =
377+
error = Status::FromError(
373378
CreateOptionParsingError(option_arg, short_option, long_option,
374-
g_int_parsing_error_message);
379+
g_int_parsing_error_message));
375380
break;
376381

377382
case 'L':
378383
m_language = Language::GetLanguageTypeFromString(option_arg);
379384
if (m_language == eLanguageTypeUnknown)
380-
error =
385+
error = Status::FromError(
381386
CreateOptionParsingError(option_arg, short_option, long_option,
382-
g_language_parsing_error_message);
387+
g_language_parsing_error_message));
383388
break;
384389

385390
case 'm': {
@@ -392,9 +397,9 @@ class CommandObjectBreakpointSet : public CommandObjectParsed {
392397
m_move_to_nearest_code = eLazyBoolNo;
393398

394399
if (!success)
395-
error =
400+
error = Status::FromError(
396401
CreateOptionParsingError(option_arg, short_option, long_option,
397-
g_bool_parsing_error_message);
402+
g_bool_parsing_error_message));
398403
break;
399404
}
400405

@@ -412,8 +417,9 @@ class CommandObjectBreakpointSet : public CommandObjectParsed {
412417
if (BreakpointID::StringIsBreakpointName(option_arg, error))
413418
m_breakpoint_names.push_back(std::string(option_arg));
414419
else
415-
error = CreateOptionParsingError(
416-
option_arg, short_option, long_option, "Invalid breakpoint name");
420+
error = Status::FromError(
421+
CreateOptionParsingError(option_arg, short_option, long_option,
422+
"Invalid breakpoint name"));
417423
break;
418424
}
419425

@@ -451,9 +457,9 @@ class CommandObjectBreakpointSet : public CommandObjectParsed {
451457
bool success;
452458
m_throw_bp = OptionArgParser::ToBoolean(option_arg, true, &success);
453459
if (!success)
454-
error =
460+
error = Status::FromError(
455461
CreateOptionParsingError(option_arg, short_option, long_option,
456-
g_bool_parsing_error_message);
462+
g_bool_parsing_error_message));
457463
} break;
458464

459465
case 'X':
@@ -465,8 +471,8 @@ class CommandObjectBreakpointSet : public CommandObjectParsed {
465471
OptionValueFileColonLine value;
466472
Status fcl_err = value.SetValueFromString(option_arg);
467473
if (!fcl_err.Success()) {
468-
error = CreateOptionParsingError(option_arg, short_option,
469-
long_option, fcl_err.AsCString());
474+
error = Status::FromError(CreateOptionParsingError(
475+
option_arg, short_option, long_option, fcl_err.AsCString()));
470476
} else {
471477
m_filenames.AppendIfUnique(value.GetFileSpec());
472478
m_line_num = value.GetLineNumber();
@@ -1551,13 +1557,15 @@ class BreakpointNameOptionGroup : public OptionGroup {
15511557
break;
15521558
case 'B':
15531559
if (m_breakpoint.SetValueFromString(option_arg).Fail())
1554-
error = CreateOptionParsingError(option_arg, short_option, long_option,
1555-
g_int_parsing_error_message);
1560+
error = Status::FromError(
1561+
CreateOptionParsingError(option_arg, short_option, long_option,
1562+
g_int_parsing_error_message));
15561563
break;
15571564
case 'D':
15581565
if (m_use_dummy.SetValueFromString(option_arg).Fail())
1559-
error = CreateOptionParsingError(option_arg, short_option, long_option,
1560-
g_bool_parsing_error_message);
1566+
error = Status::FromError(
1567+
CreateOptionParsingError(option_arg, short_option, long_option,
1568+
g_bool_parsing_error_message));
15611569
break;
15621570
case 'H':
15631571
m_help_string.SetValueFromString(option_arg);
@@ -1610,26 +1618,29 @@ class BreakpointAccessOptionGroup : public OptionGroup {
16101618
if (success) {
16111619
m_permissions.SetAllowList(value);
16121620
} else
1613-
error = CreateOptionParsingError(option_arg, short_option, long_option,
1614-
g_bool_parsing_error_message);
1621+
error = Status::FromError(
1622+
CreateOptionParsingError(option_arg, short_option, long_option,
1623+
g_bool_parsing_error_message));
16151624
} break;
16161625
case 'A': {
16171626
bool value, success;
16181627
value = OptionArgParser::ToBoolean(option_arg, false, &success);
16191628
if (success) {
16201629
m_permissions.SetAllowDisable(value);
16211630
} else
1622-
error = CreateOptionParsingError(option_arg, short_option, long_option,
1623-
g_bool_parsing_error_message);
1631+
error = Status::FromError(
1632+
CreateOptionParsingError(option_arg, short_option, long_option,
1633+
g_bool_parsing_error_message));
16241634
} break;
16251635
case 'D': {
16261636
bool value, success;
16271637
value = OptionArgParser::ToBoolean(option_arg, false, &success);
16281638
if (success) {
16291639
m_permissions.SetAllowDelete(value);
16301640
} else
1631-
error = CreateOptionParsingError(option_arg, short_option, long_option,
1632-
g_bool_parsing_error_message);
1641+
error = Status::FromError(
1642+
CreateOptionParsingError(option_arg, short_option, long_option,
1643+
g_bool_parsing_error_message));
16331644
} break;
16341645
default:
16351646
llvm_unreachable("Unimplemented option");
@@ -2113,8 +2124,8 @@ class CommandObjectBreakpointRead : public CommandObjectParsed {
21132124
Status name_error;
21142125
if (!BreakpointID::StringIsBreakpointName(llvm::StringRef(option_arg),
21152126
name_error)) {
2116-
error = CreateOptionParsingError(option_arg, short_option,
2117-
long_option, name_error.AsCString());
2127+
error = Status::FromError(CreateOptionParsingError(
2128+
option_arg, short_option, long_option, name_error.AsCString()));
21182129
}
21192130
m_names.push_back(std::string(option_arg));
21202131
break;

lldb/source/Commands/CommandObjectMemoryTag.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ class CommandObjectMemoryTagRead : public CommandObjectParsed {
7777
process->GetMemoryTagManager();
7878

7979
if (!tag_manager_or_err) {
80-
result.SetError(Status(tag_manager_or_err.takeError()));
80+
result.SetError(Status::FromError(tag_manager_or_err.takeError()));
8181
return;
8282
}
8383

@@ -102,15 +102,15 @@ class CommandObjectMemoryTagRead : public CommandObjectParsed {
102102
tag_manager->MakeTaggedRange(start_addr, end_addr, memory_regions);
103103

104104
if (!tagged_range) {
105-
result.SetError(Status(tagged_range.takeError()));
105+
result.SetError(Status::FromError(tagged_range.takeError()));
106106
return;
107107
}
108108

109109
llvm::Expected<std::vector<lldb::addr_t>> tags = process->ReadMemoryTags(
110110
tagged_range->GetRangeBase(), tagged_range->GetByteSize());
111111

112112
if (!tags) {
113-
result.SetError(Status(tags.takeError()));
113+
result.SetError(Status::FromError(tags.takeError()));
114114
return;
115115
}
116116

@@ -230,7 +230,7 @@ class CommandObjectMemoryTagWrite : public CommandObjectParsed {
230230
process->GetMemoryTagManager();
231231

232232
if (!tag_manager_or_err) {
233-
result.SetError(Status(tag_manager_or_err.takeError()));
233+
result.SetError(Status::FromError(tag_manager_or_err.takeError()));
234234
return;
235235
}
236236

@@ -282,7 +282,7 @@ class CommandObjectMemoryTagWrite : public CommandObjectParsed {
282282
memory_regions);
283283

284284
if (!tagged_range) {
285-
result.SetError(Status(tagged_range.takeError()));
285+
result.SetError(Status::FromError(tagged_range.takeError()));
286286
return;
287287
}
288288

lldb/source/Commands/CommandObjectStats.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,21 +87,21 @@ class CommandObjectStatsDump : public CommandObjectParsed {
8787
OptionArgParser::ToBoolean("--targets", option_arg))
8888
m_stats_options.SetIncludeTargets(*bool_or_error);
8989
else
90-
error = bool_or_error.takeError();
90+
error = Status::FromError(bool_or_error.takeError());
9191
break;
9292
case 'm':
9393
if (llvm::Expected<bool> bool_or_error =
9494
OptionArgParser::ToBoolean("--modules", option_arg))
9595
m_stats_options.SetIncludeModules(*bool_or_error);
9696
else
97-
error = bool_or_error.takeError();
97+
error = Status::FromError(bool_or_error.takeError());
9898
break;
9999
case 't':
100100
if (llvm::Expected<bool> bool_or_error =
101101
OptionArgParser::ToBoolean("--transcript", option_arg))
102102
m_stats_options.SetIncludeTranscript(*bool_or_error);
103103
else
104-
error = bool_or_error.takeError();
104+
error = Status::FromError(bool_or_error.takeError());
105105
break;
106106
default:
107107
llvm_unreachable("Unimplemented option");

lldb/source/Commands/CommandObjectTrace.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ class CommandObjectTraceSchema : public CommandObjectParsed {
361361
Trace::FindPluginSchema(plugin_name))
362362
result.AppendMessage(*schemaOrErr);
363363
else
364-
error = schemaOrErr.takeError();
364+
error = Status::FromError(schemaOrErr.takeError());
365365
}
366366

367367
if (error.Success()) {

lldb/source/Core/PluginManager.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -723,7 +723,7 @@ Status PluginManager::SaveCore(const lldb::ProcessSP &process_sp,
723723
llvm::Expected<bool> ret =
724724
process_sp->SaveCore(options.GetOutputFile()->GetPath());
725725
if (!ret)
726-
return Status(ret.takeError());
726+
return Status::FromError(ret.takeError());
727727
if (ret.get())
728728
return Status();
729729
}

lldb/source/Core/ThreadedCommunication.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ bool ThreadedCommunication::StartReadThread(Status *error_ptr) {
178178
m_read_thread = *maybe_thread;
179179
} else {
180180
if (error_ptr)
181-
*error_ptr = Status(maybe_thread.takeError());
181+
*error_ptr = Status::FromError(maybe_thread.takeError());
182182
else {
183183
LLDB_LOG_ERROR(GetLog(LLDBLog::Host), maybe_thread.takeError(),
184184
"failed to launch host thread: {0}");

lldb/source/Core/ValueObjectVTable.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ bool ValueObjectVTable::UpdateValue() {
220220
llvm::Expected<LanguageRuntime::VTableInfo> vtable_info_or_err =
221221
language_runtime->GetVTableInfo(*parent, /*check_type=*/true);
222222
if (!vtable_info_or_err) {
223-
m_error = vtable_info_or_err.takeError();
223+
m_error = Status::FromError(vtable_info_or_err.takeError());
224224
return false;
225225
}
226226

0 commit comments

Comments
 (0)