summaryrefslogtreecommitdiffstats
path: root/lldb/source/API/SBModule.cpp
diff options
context:
space:
mode:
authorAlex Langford <apl@fb.com>2019-07-30 22:12:34 +0000
committerAlex Langford <apl@fb.com>2019-07-30 22:12:34 +0000
commit0e252e38ef84e42cc0b6d0e6b0f0894f6867e5a7 (patch)
treee74b7e4f611ee1a334968d8cedd4c9f3cb921269 /lldb/source/API/SBModule.cpp
parentd56dc1d926b9ee2317f3766d21700bdc77dd84f6 (diff)
downloadbcm5719-llvm-0e252e38ef84e42cc0b6d0e6b0f0894f6867e5a7.tar.gz
bcm5719-llvm-0e252e38ef84e42cc0b6d0e6b0f0894f6867e5a7.zip
[Symbol] Use llvm::Expected when getting TypeSystems
Summary: This commit achieves the following: - Functions used to return a `TypeSystem *` return an `llvm::Expected<TypeSystem *>` now. This means that the result of a call is always checked, forcing clients to move more carefully. - `TypeSystemMap::GetTypeSystemForLanguage` will either return an Error or a non-null pointer to a TypeSystem. Reviewers: JDevlieghere, davide, compnerd Subscribers: jdoerfert, lldb-commits Differential Revision: https://reviews.llvm.org/D65122 llvm-svn: 367360
Diffstat (limited to 'lldb/source/API/SBModule.cpp')
-rw-r--r--lldb/source/API/SBModule.cpp28
1 files changed, 19 insertions, 9 deletions
diff --git a/lldb/source/API/SBModule.cpp b/lldb/source/API/SBModule.cpp
index 4bd32bce1c5..e3c48cfcecc 100644
--- a/lldb/source/API/SBModule.cpp
+++ b/lldb/source/API/SBModule.cpp
@@ -468,10 +468,13 @@ lldb::SBType SBModule::FindFirstType(const char *name_cstr) {
sb_type = SBType(module_sp->FindFirstType(sc, name, exact_match));
if (!sb_type.IsValid()) {
- TypeSystem *type_system =
+ auto type_system_or_err =
module_sp->GetTypeSystemForLanguage(eLanguageTypeC);
- if (type_system)
- sb_type = SBType(type_system->GetBuiltinTypeByName(name));
+ if (auto err = type_system_or_err.takeError()) {
+ llvm::consumeError(std::move(err));
+ return LLDB_RECORD_RESULT(SBType());
+ }
+ sb_type = SBType(type_system_or_err->GetBuiltinTypeByName(name));
}
}
return LLDB_RECORD_RESULT(sb_type);
@@ -483,10 +486,14 @@ lldb::SBType SBModule::GetBasicType(lldb::BasicType type) {
ModuleSP module_sp(GetSP());
if (module_sp) {
- TypeSystem *type_system =
+ auto type_system_or_err =
module_sp->GetTypeSystemForLanguage(eLanguageTypeC);
- if (type_system)
- return LLDB_RECORD_RESULT(SBType(type_system->GetBasicTypeFromAST(type)));
+ if (auto err = type_system_or_err.takeError()) {
+ llvm::consumeError(std::move(err));
+ } else {
+ return LLDB_RECORD_RESULT(
+ SBType(type_system_or_err->GetBasicTypeFromAST(type)));
+ }
}
return LLDB_RECORD_RESULT(SBType());
}
@@ -513,10 +520,13 @@ lldb::SBTypeList SBModule::FindTypes(const char *type) {
retval.Append(SBType(type_sp));
}
} else {
- TypeSystem *type_system =
+ auto type_system_or_err =
module_sp->GetTypeSystemForLanguage(eLanguageTypeC);
- if (type_system) {
- CompilerType compiler_type = type_system->GetBuiltinTypeByName(name);
+ if (auto err = type_system_or_err.takeError()) {
+ llvm::consumeError(std::move(err));
+ } else {
+ CompilerType compiler_type =
+ type_system_or_err->GetBuiltinTypeByName(name);
if (compiler_type)
retval.Append(SBType(compiler_type));
}
OpenPOWER on IntegriCloud