[Lldb-commits] [lldb] 46883f4 - [lldb][NFC] NFC refactoring for ClangExpressionDeclMap::LookupInModulesDeclVendor

Raphael Isemann via lldb-commits lldb-commits at lists.llvm.org
Sat Nov 23 11:31:23 PST 2019


Author: Raphael Isemann
Date: 2019-11-23T20:31:13+01:00
New Revision: 46883f46dc4f0ec3eb5cf2a6c5492bbd2c57c8c2

URL: https://github.com/llvm/llvm-project/commit/46883f46dc4f0ec3eb5cf2a6c5492bbd2c57c8c2
DIFF: https://github.com/llvm/llvm-project/commit/46883f46dc4f0ec3eb5cf2a6c5492bbd2c57c8c2.diff

LOG: [lldb][NFC] NFC refactoring for ClangExpressionDeclMap::LookupInModulesDeclVendor

Early exiting and deduplicating copy-pasted code.

Added: 
    

Modified: 
    lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
index 53bcde940e9a..60759be0eb0f 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
@@ -1103,69 +1103,44 @@ void ClangExpressionDeclMap::LookupInModulesDeclVendor(
     NameSearchContext &context, ConstString name, unsigned current_id) {
   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EXPRESSIONS));
 
-  if (ClangModulesDeclVendor *modules_decl_vendor =
-          m_target->GetClangModulesDeclVendor()) {
-    bool append = false;
-    uint32_t max_matches = 1;
-    std::vector<clang::NamedDecl *> decls;
-
-    if (!modules_decl_vendor->FindDecls(name, append, max_matches, decls))
-      return;
-
-    clang::NamedDecl *const decl_from_modules = decls[0];
-
-    if (llvm::isa<clang::FunctionDecl>(decl_from_modules)) {
-      if (log) {
-        LLDB_LOGF(log,
-                  "  CAS::FEVD[%u] Matching function found for "
-                  "\"%s\" in the modules",
-                  current_id, name.GetCString());
-      }
-
-      clang::Decl *copied_decl = CopyDecl(decl_from_modules);
-      clang::FunctionDecl *copied_function_decl =
-          copied_decl ? dyn_cast<clang::FunctionDecl>(copied_decl) : nullptr;
-
-      if (!copied_function_decl) {
-        LLDB_LOGF(log,
-                  "  CAS::FEVD[%u] - Couldn't export a function "
-                  "declaration from the modules",
-                  current_id);
-
-        return;
-      }
+  auto *modules_decl_vendor = m_target->GetClangModulesDeclVendor();
+  if (!modules_decl_vendor)
+    return;
 
-      MaybeRegisterFunctionBody(copied_function_decl);
+  bool append = false;
+  uint32_t max_matches = 1;
+  std::vector<clang::NamedDecl *> decls;
 
-      context.AddNamedDecl(copied_function_decl);
+  if (!modules_decl_vendor->FindDecls(name, append, max_matches, decls))
+    return;
 
-      context.m_found.function_with_type_info = true;
-      context.m_found.function = true;
-    } else if (llvm::isa<clang::VarDecl>(decl_from_modules)) {
-      if (log) {
-        LLDB_LOGF(log,
-                  "  CAS::FEVD[%u] Matching variable found for "
-                  "\"%s\" in the modules",
-                  current_id, name.GetCString());
-      }
+  assert(!decls.empty() && "FindDecls returned true but no decls?");
+  clang::NamedDecl *const decl_from_modules = decls[0];
 
-      clang::Decl *copied_decl = CopyDecl(decl_from_modules);
-      clang::VarDecl *copied_var_decl =
-          copied_decl ? dyn_cast_or_null<clang::VarDecl>(copied_decl) : nullptr;
+  LLDB_LOG(log,
+           "  CAS::FEVD[{0}] Matching decl found for "
+           "\"{1}\" in the modules",
+           current_id, name);
 
-      if (!copied_var_decl) {
-        LLDB_LOGF(log,
-                  "  CAS::FEVD[%u] - Couldn't export a variable "
-                  "declaration from the modules",
-                  current_id);
+  clang::Decl *copied_decl = CopyDecl(decl_from_modules);
+  if (!copied_decl) {
+    LLDB_LOG(log,
+             "  CAS::FEVD[{0}] - Couldn't export a "
+             "declaration from the modules",
+             current_id);
+    return;
+  }
 
-        return;
-      }
+  if (auto copied_function = dyn_cast<clang::FunctionDecl>(copied_decl)) {
+    MaybeRegisterFunctionBody(copied_function);
 
-      context.AddNamedDecl(copied_var_decl);
+    context.AddNamedDecl(copied_function);
 
-      context.m_found.variable = true;
-    }
+    context.m_found.function_with_type_info = true;
+    context.m_found.function = true;
+  } else if (auto copied_var = dyn_cast<clang::VarDecl>(copied_decl)) {
+    context.AddNamedDecl(copied_var);
+    context.m_found.variable = true;
   }
 }
 


        


More information about the lldb-commits mailing list