[Lldb-commits] [lldb] r366853 - [ExpressionParser] Handle llvm::Expected result
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Tue Jul 23 14:14:41 PDT 2019
Author: jdevlieghere
Date: Tue Jul 23 14:14:41 2019
New Revision: 366853
URL: http://llvm.org/viewvc/llvm-project?rev=366853&view=rev
Log:
[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).
Modified:
lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
Modified: lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp?rev=366853&r1=366852&r2=366853&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp (original)
+++ lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp Tue Jul 23 14:14:41 2019
@@ -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))
More information about the lldb-commits
mailing list