[Lldb-commits] [lldb] 05d174d - [lldb][NFC] Move namespace lookup in ClangASTSource to own function.

Raphael Isemann via lldb-commits lldb-commits at lists.llvm.org
Tue Feb 25 01:28:49 PST 2020


Author: Raphael Isemann
Date: 2020-02-25T10:27:47+01:00
New Revision: 05d174d30159579ae19e90899736d98e2544c0e3

URL: https://github.com/llvm/llvm-project/commit/05d174d30159579ae19e90899736d98e2544c0e3
DIFF: https://github.com/llvm/llvm-project/commit/05d174d30159579ae19e90899736d98e2544c0e3.diff

LOG: [lldb][NFC] Move namespace lookup in ClangASTSource to own function.

Beside being cleaner we can probably reuse that logic elsewhere.

Added: 
    

Modified: 
    lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
    lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.h

Removed: 
    


################################################################################
diff  --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp b/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
index a17d1de4841e..b01b221ea760 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
@@ -556,26 +556,8 @@ void ClangASTSource::FindExternalVisibleDecls(NameSearchContext &context) {
 
   context.m_namespace_map = std::make_shared<ClangASTImporter::NamespaceMap>();
 
-  if (const NamespaceDecl *namespace_context =
-          dyn_cast<NamespaceDecl>(context.m_decl_context)) {
-    ClangASTImporter::NamespaceMapSP namespace_map =
-        m_ast_importer_sp->GetNamespaceMap(namespace_context);
-
-    if (log && log->GetVerbose())
-      LLDB_LOG(log, "  CAS::FEVD Inspecting namespace map {1} ({2} entries)",
-               namespace_map.get(), namespace_map->size());
-
-    if (!namespace_map)
-      return;
-
-    for (ClangASTImporter::NamespaceMap::iterator i = namespace_map->begin(),
-                                                  e = namespace_map->end();
-         i != e; ++i) {
-      LLDB_LOG(log, "  CAS::FEVD Searching namespace {1} in module {2}",
-               i->second.GetName(), i->first->GetFileSpec().GetFilename());
-
-      FindExternalVisibleDecls(context, i->first, i->second);
-    }
+  if (isa<NamespaceDecl>(context.m_decl_context)) {
+    LookupInNamespace(context);
   } else if (isa<ObjCInterfaceDecl>(context.m_decl_context)) {
     FindObjCPropertyAndIvarDecls(context);
   } else if (!isa<TranslationUnitDecl>(context.m_decl_context)) {
@@ -1417,6 +1399,32 @@ void ClangASTSource::FindObjCPropertyAndIvarDecls(NameSearchContext &context) {
   } while (false);
 }
 
+void ClangASTSource::LookupInNamespace(NameSearchContext &context) {
+  const NamespaceDecl *namespace_context =
+      dyn_cast<NamespaceDecl>(context.m_decl_context);
+
+  Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EXPRESSIONS));
+
+  ClangASTImporter::NamespaceMapSP namespace_map =
+      m_ast_importer_sp->GetNamespaceMap(namespace_context);
+
+  if (log && log->GetVerbose())
+    LLDB_LOG(log, "  CAS::FEVD Inspecting namespace map {1} ({2} entries)",
+             namespace_map.get(), namespace_map->size());
+
+  if (!namespace_map)
+    return;
+
+  for (ClangASTImporter::NamespaceMap::iterator i = namespace_map->begin(),
+                                                e = namespace_map->end();
+       i != e; ++i) {
+    LLDB_LOG(log, "  CAS::FEVD Searching namespace {1} in module {2}",
+             i->second.GetName(), i->first->GetFileSpec().GetFilename());
+
+    FindExternalVisibleDecls(context, i->first, i->second);
+  }
+}
+
 typedef llvm::DenseMap<const FieldDecl *, uint64_t> FieldOffsetMap;
 typedef llvm::DenseMap<const CXXRecordDecl *, CharUnits> BaseOffsetMap;
 

diff  --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.h b/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.h
index 6219a870e2e7..1d9b36a803d4 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.h
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.h
@@ -302,6 +302,12 @@ class ClangASTSource : public clang::ExternalASTSource,
   ///     is the containing object.
   void FindObjCPropertyAndIvarDecls(NameSearchContext &context);
 
+  /// Performs lookup into a namespace.
+  ///
+  /// \param context
+  ///     The NameSearchContext for a lookup inside a namespace.
+  void LookupInNamespace(NameSearchContext &context);
+
   /// A wrapper for TypeSystemClang::CopyType that sets a flag that
   /// indicates that we should not respond to queries during import.
   ///


        


More information about the lldb-commits mailing list