summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonas Devlieghere <jonas@devlieghere.com>2019-07-23 21:14:41 +0000
committerJonas Devlieghere <jonas@devlieghere.com>2019-07-23 21:14:41 +0000
commitb362c976fb7d25f3eb4a5297abbad5489ea8deef (patch)
tree770299ad80a0137b2774f55fda7d29dee016982b
parent50a3f0e08e3597f49f0c66e9f6b6181fccf154ff (diff)
downloadbcm5719-llvm-b362c976fb7d25f3eb4a5297abbad5489ea8deef.tar.gz
bcm5719-llvm-b362c976fb7d25f3eb4a5297abbad5489ea8deef.zip
[ExpressionParser] Handle llvm::Expected result
This fixes the unchecked-error assertion at runtime. Expected<T> must be checked before access or destruction. Expected<T> value was in success state. (Note: Expected<T> values in success mode must still be checked prior to being destroyed). llvm-svn: 366853
-rw-r--r--lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
index 5b10b585620..e95a0305cd1 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
@@ -204,7 +204,11 @@ private:
llvm::DenseSet<clang::Decl *> m_completed;
bool ImportAndCheckCompletable(clang::Decl *decl) {
- (void)m_exporter.Import(decl);
+ llvm::Expected<clang::Decl *> imported_decl = m_exporter.Import(decl);
+ if (!imported_decl) {
+ llvm::consumeError(imported_decl.takeError());
+ return false;
+ }
if (m_completed.count(decl))
return false;
if (!llvm::isa<DeclContext>(decl))
@@ -225,7 +229,11 @@ private:
void Complete(clang::Decl *decl) {
m_completed.insert(decl);
auto *decl_context = llvm::cast<DeclContext>(decl);
- (void)m_exporter.Import(decl);
+ llvm::Expected<clang::Decl *> imported_decl = m_exporter.Import(decl);
+ if (!imported_decl) {
+ llvm::consumeError(imported_decl.takeError());
+ return;
+ }
m_exporter.CompleteDecl(decl);
for (Decl *child : decl_context->decls())
if (ImportAndCheckCompletable(child))
OpenPOWER on IntegriCloud