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)) _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits