Author: Raphael Isemann
Date: 2019-12-28T15:20:19+01:00
New Revision: 8612e92ed590e615f9f56e4fb86a1fdaf3a39e15

URL: 
https://github.com/llvm/llvm-project/commit/8612e92ed590e615f9f56e4fb86a1fdaf3a39e15
DIFF: 
https://github.com/llvm/llvm-project/commit/8612e92ed590e615f9f56e4fb86a1fdaf3a39e15.diff

LOG: [lldb][NFC] Remove GetASTContext call in ClangDeclVendor

Instead of returning NamedDecls and then calling GetASTContext
to find back the ClangASTContext we used can just implement the
FindDecl variant that returns CompilerDecls (and implement the
other function by throwing away the ClangASTContext part of the
compiler decl).

Added: 
    

Modified: 
    lldb/source/Plugins/ExpressionParser/Clang/ClangDeclVendor.cpp
    lldb/source/Plugins/ExpressionParser/Clang/ClangDeclVendor.h
    lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp
    
lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp
    
lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.h

Removed: 
    


################################################################################
diff  --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangDeclVendor.cpp 
b/lldb/source/Plugins/ExpressionParser/Clang/ClangDeclVendor.cpp
index c59722b7b4f8..0c5796650d45 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangDeclVendor.cpp
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangDeclVendor.cpp
@@ -15,16 +15,17 @@ using namespace lldb_private;
 
 uint32_t ClangDeclVendor::FindDecls(ConstString name, bool append,
                                     uint32_t max_matches,
-                                    std::vector<CompilerDecl> &decls) {
+                                    std::vector<clang::NamedDecl *> &decls) {
   if (!append)
     decls.clear();
 
-  std::vector<clang::NamedDecl *> named_decls;
-  uint32_t ret = FindDecls(name, /*append*/ false, max_matches, named_decls);
-  for (auto *named_decl : named_decls) {
-    decls.push_back(CompilerDecl(
-        ClangASTContext::GetASTContext(&named_decl->getASTContext()),
-        named_decl));
+  std::vector<CompilerDecl> compiler_decls;
+  uint32_t ret = FindDecls(name, /*append*/ false, max_matches, 
compiler_decls);
+  for (CompilerDecl compiler_decl : compiler_decls) {
+    clang::Decl *d =
+        reinterpret_cast<clang::Decl *>(compiler_decl.GetOpaqueDecl());
+    clang::NamedDecl *nd = llvm::cast<clang::NamedDecl>(d);
+    decls.push_back(nd);
   }
   return ret;
 }

diff  --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangDeclVendor.h 
b/lldb/source/Plugins/ExpressionParser/Clang/ClangDeclVendor.h
index 85a10400a201..0c888de08841 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangDeclVendor.h
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangDeclVendor.h
@@ -21,12 +21,10 @@ class ClangDeclVendor : public DeclVendor {
 
   virtual ~ClangDeclVendor() {}
 
-  uint32_t FindDecls(ConstString name, bool append, uint32_t max_matches,
-                     std::vector<CompilerDecl> &decls) override;
+  using DeclVendor::FindDecls;
 
-  virtual uint32_t FindDecls(ConstString name, bool append,
-                             uint32_t max_matches,
-                             std::vector<clang::NamedDecl *> &decls) = 0;
+  uint32_t FindDecls(ConstString name, bool append, uint32_t max_matches,
+                     std::vector<clang::NamedDecl *> &decls);
 
   static bool classof(const DeclVendor *vendor) {
     return vendor->GetKind() >= eClangDeclVendor &&

diff  --git 
a/lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp 
b/lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp
index ff0905dda4ef..0696c669f2e2 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp
@@ -80,7 +80,7 @@ class ClangModulesDeclVendorImpl : public 
ClangModulesDeclVendor {
                                 Stream &error_stream) override;
 
   uint32_t FindDecls(ConstString name, bool append, uint32_t max_matches,
-                     std::vector<clang::NamedDecl *> &decls) override;
+                     std::vector<CompilerDecl> &decls) override;
 
   void ForEachMacro(const ModuleVector &modules,
                     std::function<bool(const std::string &)> handler) override;
@@ -356,7 +356,7 @@ bool ClangModulesDeclVendorImpl::AddModulesForCompileUnit(
 uint32_t
 ClangModulesDeclVendorImpl::FindDecls(ConstString name, bool append,
                                       uint32_t max_matches,
-                                      std::vector<clang::NamedDecl *> &decls) {
+                                      std::vector<CompilerDecl> &decls) {
   if (!m_enabled) {
     return 0;
   }
@@ -382,7 +382,7 @@ ClangModulesDeclVendorImpl::FindDecls(ConstString name, 
bool append,
     if (num_matches >= max_matches)
       return num_matches;
 
-    decls.push_back(named_decl);
+    decls.push_back(CompilerDecl(m_ast_context.get(), named_decl));
     ++num_matches;
   }
 

diff  --git 
a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp
 
b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp
index 54f8397e1dad..29930c303b07 100644
--- 
a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp
+++ 
b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp
@@ -537,10 +537,9 @@ bool 
AppleObjCDeclVendor::FinishDecl(clang::ObjCInterfaceDecl *interface_decl) {
   return true;
 }
 
-uint32_t
-AppleObjCDeclVendor::FindDecls(ConstString name, bool append,
-                               uint32_t max_matches,
-                               std::vector<clang::NamedDecl *> &decls) {
+uint32_t AppleObjCDeclVendor::FindDecls(ConstString name, bool append,
+                                        uint32_t max_matches,
+                                        std::vector<CompilerDecl> &decls) {
   static unsigned int invocation_id = 0;
   unsigned int current_id = invocation_id++;
 
@@ -587,7 +586,7 @@ AppleObjCDeclVendor::FindDecls(ConstString name, bool 
append,
                    current_id, result_iface_type.getAsString(), isa_value);
         }
 
-        decls.push_back(result_iface_decl);
+        decls.push_back(CompilerDecl(&m_ast_ctx, result_iface_decl));
         ret++;
         break;
       } else {
@@ -630,7 +629,7 @@ AppleObjCDeclVendor::FindDecls(ConstString name, bool 
append,
                new_iface_type.getAsString(), (uint64_t)isa);
     }
 
-    decls.push_back(iface_decl);
+    decls.push_back(CompilerDecl(&m_ast_ctx, iface_decl));
     ret++;
     break;
   } while (false);

diff  --git 
a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.h
 
b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.h
index 311113a27735..f49ca3540c2c 100644
--- 
a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.h
+++ 
b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.h
@@ -28,7 +28,7 @@ class AppleObjCDeclVendor : public ClangDeclVendor {
   }
 
   uint32_t FindDecls(ConstString name, bool append, uint32_t max_matches,
-                     std::vector<clang::NamedDecl *> &decls) override;
+                     std::vector<CompilerDecl> &decls) override;
 
   friend class AppleObjCExternalASTSource;
 


        
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to