[Lldb-commits] [lldb] r143276 - in /lldb/trunk: include/lldb/Expression/ClangASTSource.h include/lldb/Expression/ClangExpressionDeclMap.h source/Expression/ClangASTSource.cpp source/Expression/ClangExpressionDeclMap.cpp
Sean Callanan
scallanan at apple.com
Fri Oct 28 19:28:18 PDT 2011
Author: spyffe
Date: Fri Oct 28 21:28:18 2011
New Revision: 143276
URL: http://llvm.org/viewvc/llvm-project?rev=143276&view=rev
Log:
Moved FindExternalLexicalDecls and a few smaller
functions from ClangExpressionDeclMap to ClangASTSource.
Modified:
lldb/trunk/include/lldb/Expression/ClangASTSource.h
lldb/trunk/include/lldb/Expression/ClangExpressionDeclMap.h
lldb/trunk/source/Expression/ClangASTSource.cpp
lldb/trunk/source/Expression/ClangExpressionDeclMap.cpp
Modified: lldb/trunk/include/lldb/Expression/ClangASTSource.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Expression/ClangASTSource.h?rev=143276&r1=143275&r2=143276&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Expression/ClangASTSource.h (original)
+++ lldb/trunk/include/lldb/Expression/ClangASTSource.h Fri Oct 28 21:28:18 2011
@@ -120,7 +120,7 @@
/// @param[in] Decls
/// A vector that is filled in with matching Decls.
//------------------------------------------------------------------
- virtual clang::ExternalLoadResult
+ clang::ExternalLoadResult
FindExternalLexicalDecls (const clang::DeclContext *DC,
bool (*isKindWeWant)(clang::Decl::Kind),
llvm::SmallVectorImpl<clang::Decl*> &Decls);
@@ -157,7 +157,6 @@
// APIs for NamespaceMapCompleter
//
-
//------------------------------------------------------------------
/// Look up the modules containing a given namespace and put the
/// appropriate entries in the namespace map.
@@ -180,6 +179,10 @@
// Helper APIs
//
+ clang::NamespaceDecl *
+ AddNamespace (NameSearchContext &context,
+ ClangASTImporter::NamespaceMapSP &namespace_decls);
+
//------------------------------------------------------------------
/// The worker function for FindExternalVisibleDeclsByName.
///
Modified: lldb/trunk/include/lldb/Expression/ClangExpressionDeclMap.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Expression/ClangExpressionDeclMap.h?rev=143276&r1=143275&r2=143276&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Expression/ClangExpressionDeclMap.h (original)
+++ lldb/trunk/include/lldb/Expression/ClangExpressionDeclMap.h Fri Oct 28 21:28:18 2011
@@ -117,10 +117,6 @@
//------------------------------------------------------------------
const ConstString &
GetPersistentResultName ();
-
- clang::NamespaceDecl *
- AddNamespace (NameSearchContext &context,
- ClangASTImporter::NamespaceMapSP &namespace_decls);
//------------------------------------------------------------------
/// [Used by IRForTarget] Get a constant variable given a name,
@@ -625,45 +621,6 @@
//------------------------------------------------------------------
void
FindExternalVisibleDecls (NameSearchContext &context);
-
- //------------------------------------------------------------------
- /// [Used by ClangASTSource] Find all Decls in a context that match
- /// a given criterion.
- ///
- /// @param[in] decl_context
- /// The DeclContext to search.
- ///
- /// @param[in] predicate
- /// Returns True if a DeclKind is desired; False if not.
- ///
- /// @param[in] decls
- /// A list to add all found Decls that have a desired DeclKind
- /// into.
- //------------------------------------------------------------------
- clang::ExternalLoadResult
- FindExternalLexicalDecls (const clang::DeclContext *decl_context,
- bool (*predicate)(clang::Decl::Kind),
- llvm::SmallVectorImpl<clang::Decl*> &decls);
-
- //------------------------------------------------------------------
- /// [Used by ClangASTSource] Complete the definition of a TagDecl.
- ///
- /// @param[in] tag_decl
- /// The TagDecl to be completed.
- //------------------------------------------------------------------
- void
- CompleteType (clang::TagDecl *tag_decl);
-
- //------------------------------------------------------------------
- /// [Used by ClangASTSource] Complete the definition of an
- /// ObjCInterfaceDecl.
- ///
- /// @param[in] tag_decl
- /// The ObjCInterfaceDecl to be completed.
- //------------------------------------------------------------------
- void
- CompleteType (clang::ObjCInterfaceDecl *interface_decl);
-
private:
ClangExpressionVariableList m_found_entities; ///< All entities that were looked up for the parser.
ClangExpressionVariableList m_struct_members; ///< All entities that need to be placed in the struct.
Modified: lldb/trunk/source/Expression/ClangASTSource.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/ClangASTSource.cpp?rev=143276&r1=143275&r2=143276&view=diff
==============================================================================
--- lldb/trunk/source/Expression/ClangASTSource.cpp (original)
+++ lldb/trunk/source/Expression/ClangASTSource.cpp Fri Oct 28 21:28:18 2011
@@ -12,9 +12,9 @@
#include "lldb/Core/Log.h"
#include "lldb/Core/Module.h"
#include "lldb/Core/ModuleList.h"
+#include "lldb/Expression/ASTDumper.h"
#include "lldb/Expression/ClangASTSource.h"
#include "lldb/Expression/ClangExpression.h"
-#include "lldb/Expression/ClangExpressionDeclMap.h"
#include "lldb/Symbol/ClangNamespaceDecl.h"
#include "lldb/Symbol/SymbolVendor.h"
#include "lldb/Target/Target.h"
@@ -128,23 +128,133 @@
void
ClangASTSource::CompleteType (TagDecl *tag_decl)
-{
+{
+ lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
+
+ if (log)
+ {
+ log->Printf(" [CompleteTagDecl] Completing a TagDecl named %s", tag_decl->getName().str().c_str());
+ log->Printf(" [CTD] Before:");
+ ASTDumper dumper((Decl*)tag_decl);
+ dumper.ToLog(log, " [CTD] ");
+ }
+
+ m_ast_importer->CompleteTagDecl (tag_decl);
+
+ if (log)
+ {
+ log->Printf(" [CTD] After:");
+ ASTDumper dumper((Decl*)tag_decl);
+ dumper.ToLog(log, " [CTD] ");
+ }
}
void
-ClangASTSource::CompleteType (ObjCInterfaceDecl *objc_decl)
-{
+ClangASTSource::CompleteType (clang::ObjCInterfaceDecl *interface_decl)
+{
+ lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
+
+ if (log)
+ {
+ log->Printf(" [CompleteObjCInterfaceDecl] Completing an ObjCInterfaceDecl named %s", interface_decl->getName().str().c_str());
+ log->Printf(" [COID] Before:");
+ ASTDumper dumper((Decl*)interface_decl);
+ dumper.ToLog(log, " [COID] ");
+ }
+
+ m_ast_importer->CompleteObjCInterfaceDecl (interface_decl);
+
+ if (log)
+ {
+ log->Printf(" [COID] After:");
+ ASTDumper dumper((Decl*)interface_decl);
+ dumper.ToLog(log, " [COID] ");
+ }
}
clang::ExternalLoadResult
-ClangASTSource::FindExternalLexicalDecls
-(
- const DeclContext *DC,
- bool (*isKindWeWant)(Decl::Kind),
- llvm::SmallVectorImpl<Decl*> &Decls
-)
-{
- return ELR_Success;
+ClangASTSource::FindExternalLexicalDecls (const DeclContext *decl_context,
+ bool (*predicate)(Decl::Kind),
+ llvm::SmallVectorImpl<Decl*> &decls)
+{
+ lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
+
+ const Decl *context_decl = dyn_cast<Decl>(decl_context);
+
+ if (!context_decl)
+ return ELR_Failure;
+
+ static unsigned int invocation_id = 0;
+ unsigned int current_id = invocation_id++;
+
+ if (log)
+ {
+ if (const NamedDecl *context_named_decl = dyn_cast<NamedDecl>(context_decl))
+ log->Printf("FindExternalLexicalDecls[%u] in '%s' (a %s) with %s predicate",
+ current_id,
+ context_named_decl->getNameAsString().c_str(),
+ context_decl->getDeclKindName(),
+ (predicate ? "non-null" : "null"));
+ else if(context_decl)
+ log->Printf("FindExternalLexicalDecls[%u] in a %s with %s predicate",
+ current_id,
+ context_decl->getDeclKindName(),
+ (predicate ? "non-null" : "null"));
+ else
+ log->Printf("FindExternalLexicalDecls[%u] in a NULL context with %s predicate",
+ current_id,
+ (predicate ? "non-null" : "null"));
+ }
+
+ Decl *original_decl = NULL;
+ ASTContext *original_ctx = NULL;
+
+ if (!m_ast_importer->ResolveDeclOrigin(context_decl, &original_decl, &original_ctx))
+ return ELR_Failure;
+
+ if (log)
+ {
+ log->Printf(" FELD[%u] Original decl:", current_id);
+ ASTDumper(original_decl).ToLog(log, " ");
+ }
+
+ if (TagDecl *original_tag_decl = dyn_cast<TagDecl>(original_decl))
+ {
+ ExternalASTSource *external_source = original_ctx->getExternalSource();
+
+ if (external_source)
+ external_source->CompleteType (original_tag_decl);
+ }
+
+ DeclContext *original_decl_context = dyn_cast<DeclContext>(original_decl);
+
+ if (!original_decl_context)
+ return ELR_Failure;
+
+ for (TagDecl::decl_iterator iter = original_decl_context->decls_begin();
+ iter != original_decl_context->decls_end();
+ ++iter)
+ {
+ Decl *decl = *iter;
+
+ if (!predicate || predicate(decl->getKind()))
+ {
+ if (log)
+ {
+ ASTDumper ast_dumper(decl);
+ if (const NamedDecl *context_named_decl = dyn_cast<NamedDecl>(context_decl))
+ log->Printf(" FELD[%d] Adding [to %s] lexical decl %s", current_id, context_named_decl->getNameAsString().c_str(), ast_dumper.GetCString());
+ else
+ log->Printf(" FELD[%d] Adding lexical decl %s", current_id, ast_dumper.GetCString());
+ }
+
+ Decl *copied_decl = m_ast_importer->CopyDecl(original_ctx, decl);
+
+ decls.push_back(copied_decl);
+ }
+ }
+
+ return ELR_AlreadyLoaded;
}
void
@@ -242,6 +352,25 @@
}
}
+NamespaceDecl *
+ClangASTSource::AddNamespace (NameSearchContext &context, ClangASTImporter::NamespaceMapSP &namespace_decls)
+{
+ if (namespace_decls.empty())
+ return NULL;
+
+ lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
+
+ const ClangNamespaceDecl &namespace_decl = namespace_decls->begin()->second;
+
+ Decl *copied_decl = m_ast_importer->CopyDecl(namespace_decl.GetASTContext(), namespace_decl.GetNamespaceDecl());
+
+ NamespaceDecl *copied_namespace_decl = dyn_cast<NamespaceDecl>(copied_decl);
+
+ m_ast_importer->RegisterNamespaceMap(copied_namespace_decl, namespace_decls);
+
+ return dyn_cast<NamespaceDecl>(copied_decl);
+}
+
clang::NamedDecl *
NameSearchContext::AddVarDecl(void *type)
{
Modified: lldb/trunk/source/Expression/ClangExpressionDeclMap.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/ClangExpressionDeclMap.cpp?rev=143276&r1=143275&r2=143276&view=diff
==============================================================================
--- lldb/trunk/source/Expression/ClangExpressionDeclMap.cpp (original)
+++ lldb/trunk/source/Expression/ClangExpressionDeclMap.cpp Fri Oct 28 21:28:18 2011
@@ -2648,143 +2648,6 @@
} while(0);
}
-clang::ExternalLoadResult
-ClangExpressionDeclMap::FindExternalLexicalDecls (const DeclContext *decl_context,
- bool (*predicate)(Decl::Kind),
- llvm::SmallVectorImpl<Decl*> &decls)
-{
- assert (m_parser_vars.get());
-
- lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
-
- const Decl *context_decl = dyn_cast<Decl>(decl_context);
-
- if (!context_decl)
- return ELR_Failure;
-
- static unsigned int invocation_id = 0;
- unsigned int current_id = invocation_id++;
-
- if (log)
- {
- if (const NamedDecl *context_named_decl = dyn_cast<NamedDecl>(context_decl))
- log->Printf("FindExternalLexicalDecls[%u] in '%s' (a %s) with %s predicate",
- current_id,
- context_named_decl->getNameAsString().c_str(),
- context_decl->getDeclKindName(),
- (predicate ? "non-null" : "null"));
- else if(context_decl)
- log->Printf("FindExternalLexicalDecls[%u] in a %s with %s predicate",
- current_id,
- context_decl->getDeclKindName(),
- (predicate ? "non-null" : "null"));
- else
- log->Printf("FindExternalLexicalDecls[%u] in a NULL context with %s predicate",
- current_id,
- (predicate ? "non-null" : "null"));
- }
-
- Decl *original_decl = NULL;
- ASTContext *original_ctx = NULL;
-
- if (!m_ast_importer->ResolveDeclOrigin(context_decl, &original_decl, &original_ctx))
- return ELR_Failure;
-
- if (log)
- {
- log->Printf(" FELD[%u] Original decl:", current_id);
- ASTDumper(original_decl).ToLog(log, " ");
- }
-
- if (TagDecl *original_tag_decl = dyn_cast<TagDecl>(original_decl))
- {
- ExternalASTSource *external_source = original_ctx->getExternalSource();
-
- if (external_source)
- external_source->CompleteType (original_tag_decl);
- }
-
- DeclContext *original_decl_context = dyn_cast<DeclContext>(original_decl);
-
- if (!original_decl_context)
- return ELR_Failure;
-
- for (TagDecl::decl_iterator iter = original_decl_context->decls_begin();
- iter != original_decl_context->decls_end();
- ++iter)
- {
- Decl *decl = *iter;
-
- if (!predicate || predicate(decl->getKind()))
- {
- if (log)
- {
- ASTDumper ast_dumper(decl);
- if (const NamedDecl *context_named_decl = dyn_cast<NamedDecl>(context_decl))
- log->Printf(" FELD[%d] Adding [to %s] lexical decl %s", current_id, context_named_decl->getNameAsString().c_str(), ast_dumper.GetCString());
- else
- log->Printf(" FELD[%d] Adding lexical decl %s", current_id, ast_dumper.GetCString());
- }
-
- Decl *copied_decl = m_ast_importer->CopyDecl(original_ctx, decl);
-
- decls.push_back(copied_decl);
- }
- }
-
- return ELR_AlreadyLoaded;
-}
-
-void
-ClangExpressionDeclMap::CompleteType (TagDecl *tag_decl)
-{
- assert (m_parser_vars.get());
-
- lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
-
- if (log)
- {
- log->Printf(" [CompleteTagDecl] Completing a TagDecl named %s", tag_decl->getName().str().c_str());
- log->Printf(" [CTD] Before:");
- ASTDumper dumper((Decl*)tag_decl);
- dumper.ToLog(log, " [CTD] ");
- }
-
- m_ast_importer->CompleteTagDecl (tag_decl);
-
- if (log)
- {
- log->Printf(" [CTD] After:");
- ASTDumper dumper((Decl*)tag_decl);
- dumper.ToLog(log, " [CTD] ");
- }
-}
-
-void
-ClangExpressionDeclMap::CompleteType (clang::ObjCInterfaceDecl *interface_decl)
-{
- assert (m_parser_vars.get());
-
- lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
-
- if (log)
- {
- log->Printf(" [CompleteObjCInterfaceDecl] Completing an ObjCInterfaceDecl named %s", interface_decl->getName().str().c_str());
- log->Printf(" [COID] Before:");
- ASTDumper dumper((Decl*)interface_decl);
- dumper.ToLog(log, " [COID] ");
- }
-
- m_ast_importer->CompleteObjCInterfaceDecl (interface_decl);
-
- if (log)
- {
- log->Printf(" [COID] After:");
- ASTDumper dumper((Decl*)interface_decl);
- dumper.ToLog(log, " [COID] ");
- }
-}
-
Value *
ClangExpressionDeclMap::GetVariableValue
(
@@ -3031,7 +2894,6 @@
entity->m_parser_vars->m_llvm_value = NULL;
entity->m_parser_vars->m_lldb_value = symbol_location.release();
entity->m_parser_vars->m_lldb_sym = &symbol;
- //entity->m_flags |= ClangExpressionVariable::EVUnknownType;
if (log)
{
@@ -3136,27 +2998,6 @@
}
}
-NamespaceDecl *
-ClangExpressionDeclMap::AddNamespace (NameSearchContext &context, ClangASTImporter::NamespaceMapSP &namespace_decls)
-{
- if (namespace_decls.empty())
- return NULL;
-
- lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
-
- assert (m_parser_vars.get());
-
- const ClangNamespaceDecl &namespace_decl = namespace_decls->begin()->second;
-
- Decl *copied_decl = m_ast_importer->CopyDecl(namespace_decl.GetASTContext(), namespace_decl.GetNamespaceDecl());
-
- NamespaceDecl *copied_namespace_decl = dyn_cast<NamespaceDecl>(copied_decl);
-
- m_ast_importer->RegisterNamespaceMap(copied_namespace_decl, namespace_decls);
-
- return dyn_cast<NamespaceDecl>(copied_decl);
-}
-
void
ClangExpressionDeclMap::AddOneFunction (NameSearchContext &context,
Function* fun,
More information about the lldb-commits
mailing list