diff options
| author | Jonas Devlieghere <jonas@devlieghere.com> | 2019-07-23 21:14:41 +0000 |
|---|---|---|
| committer | Jonas Devlieghere <jonas@devlieghere.com> | 2019-07-23 21:14:41 +0000 |
| commit | b362c976fb7d25f3eb4a5297abbad5489ea8deef (patch) | |
| tree | 770299ad80a0137b2774f55fda7d29dee016982b /lldb | |
| parent | 50a3f0e08e3597f49f0c66e9f6b6181fccf154ff (diff) | |
| download | bcm5719-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
Diffstat (limited to 'lldb')
| -rw-r--r-- | lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp | 12 |
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)) |

