[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