[Lldb-commits] [lldb] r143292 - 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
Sat Oct 29 12:50:44 PDT 2011
Author: spyffe
Date: Sat Oct 29 14:50:43 2011
New Revision: 143292
URL: http://llvm.org/viewvc/llvm-project?rev=143292&view=rev
Log:
Cloned FindExternalVisibleDecls from
ClangExpressionDeclMap to ClangASTSource, and
moved all general type and namespace lookups
into ClangASTSource. Now ClangASTSource is ready
to complete types given nothing more than a target
and an AST context.
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=143292&r1=143291&r2=143292&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Expression/ClangASTSource.h (original)
+++ lldb/trunk/include/lldb/Expression/ClangASTSource.h Sat Oct 29 14:50:43 2011
@@ -195,7 +195,7 @@
bool GetImportInProgress () { return m_import_in_progress; }
void SetLookupsEnabled (bool lookups_enabled) { m_lookups_enabled = lookups_enabled; }
- bool GetLookupsEnabled () { return m_lookups_enabled; }
+ bool GetLookupsEnabled () { return m_lookups_enabled; }
//----------------------------------------------------------------------
/// @class ClangASTSourceProxy ClangASTSource.h "lldb/Expression/ClangASTSource.h"
@@ -253,6 +253,54 @@
}
protected:
+ //------------------------------------------------------------------
+ /// Find all entities matching a given name in a given module,
+ /// using a NameSearchContext to make Decls for them.
+ ///
+ /// @param[in] context
+ /// The NameSearchContext that can construct Decls for this name.
+ ///
+ /// @param[in] module
+ /// If non-NULL, the module to query.
+ ///
+ /// @param[in] namespace_decl
+ /// If valid and module is non-NULL, the parent namespace.
+ ///
+ /// @param[in] current_id
+ /// The ID for the current FindExternalVisibleDecls invocation,
+ /// for logging purposes.
+ ///
+ /// @return
+ /// True on success; false otherwise.
+ //------------------------------------------------------------------
+ void
+ FindExternalVisibleDecls (NameSearchContext &context,
+ lldb::ModuleSP module,
+ ClangNamespaceDecl &namespace_decl,
+ unsigned int current_id);
+
+ //------------------------------------------------------------------
+ /// A wrapper for ClangASTContext::CopyType that sets a flag that
+ /// indicates that we should not respond to queries during import.
+ ///
+ /// @param[in] dest_context
+ /// The target AST context, typically the parser's AST context.
+ ///
+ /// @param[in] source_context
+ /// The source AST context, typically the AST context of whatever
+ /// symbol file the type was found in.
+ ///
+ /// @param[in] clang_type
+ /// The source type.
+ ///
+ /// @return
+ /// The imported type.
+ //------------------------------------------------------------------
+ void *
+ GuardedCopyType (clang::ASTContext *dest_context,
+ clang::ASTContext *source_context,
+ void *clang_type);
+
friend struct NameSearchContext;
bool m_import_in_progress;
Modified: lldb/trunk/include/lldb/Expression/ClangExpressionDeclMap.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Expression/ClangExpressionDeclMap.h?rev=143292&r1=143291&r2=143292&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Expression/ClangExpressionDeclMap.h (original)
+++ lldb/trunk/include/lldb/Expression/ClangExpressionDeclMap.h Sat Oct 29 14:50:43 2011
@@ -621,6 +621,38 @@
//------------------------------------------------------------------
void
FindExternalVisibleDecls (NameSearchContext &context);
+
+ //------------------------------------------------------------------
+ /// Find all entities matching a given name in a given module/namespace,
+ /// using a NameSearchContext to make Decls for them.
+ ///
+ /// @param[in] context
+ /// The NameSearchContext that can construct Decls for this name.
+ ///
+ /// @param[in] module
+ /// If non-NULL, the module to query.
+ ///
+ /// @param[in] namespace_decl
+ /// If valid and module is non-NULL, the parent namespace.
+ ///
+ /// @param[in] name
+ /// The name as a plain C string. The NameSearchContext contains
+ /// a DeclarationName for the name so at first the name may seem
+ /// redundant, but ClangExpressionDeclMap operates in RTTI land so
+ /// it can't access DeclarationName.
+ ///
+ /// @param[in] current_id
+ /// The ID for the current FindExternalVisibleDecls invocation,
+ /// for logging purposes.
+ ///
+ /// @return
+ /// True on success; false otherwise.
+ //------------------------------------------------------------------
+ void
+ FindExternalVisibleDecls (NameSearchContext &context,
+ lldb::ModuleSP module,
+ ClangNamespaceDecl &namespace_decl,
+ unsigned int current_id);
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.
@@ -637,8 +669,7 @@
m_exe_ctx(NULL),
m_sym_ctx(),
m_persistent_vars(NULL),
- m_enable_lookups(false),
- m_ignore_lookups(false)
+ m_enable_lookups(false)
{
}
@@ -656,7 +687,6 @@
SymbolContext m_sym_ctx; ///< The symbol context to use in finding variables and types.
ClangPersistentVariables *m_persistent_vars; ///< The persistent variables for the process.
bool m_enable_lookups; ///< Set to true during parsing if we have found the first "$__lldb" name.
- bool m_ignore_lookups; ///< True during an import when we should be ignoring type lookups.
std::auto_ptr<ClangASTImporter> m_ast_importer; ///< The importer used to import types on the parser's behalf.
TargetInfo m_target_info; ///< Basic information about the target.
private:
@@ -765,39 +795,6 @@
}
//------------------------------------------------------------------
- /// [Used by ClangASTSource] Find all entities matching a given name,
- /// using a NameSearchContext to make Decls for them.
- ///
- /// @param[in] context
- /// The NameSearchContext that can construct Decls for this name.
- ///
- /// @param[in] module
- /// If non-NULL, the module to query.
- ///
- /// @param[in] namespace_decl
- /// If valid and module is non-NULL, the parent namespace.
- ///
- /// @param[in] name
- /// The name as a plain C string. The NameSearchContext contains
- /// a DeclarationName for the name so at first the name may seem
- /// redundant, but ClangExpressionDeclMap operates in RTTI land so
- /// it can't access DeclarationName.
- ///
- /// @param[in] current_id
- /// The ID for the current FindExternalVisibleDecls invocation,
- /// for logging purposes.
- ///
- /// @return
- /// True on success; false otherwise.
- //------------------------------------------------------------------
- void
- FindExternalVisibleDecls (NameSearchContext &context,
- lldb::ModuleSP module,
- ClangNamespaceDecl &namespace_decl,
- const ConstString &name,
- unsigned int current_id);
-
- //------------------------------------------------------------------
/// Given a stack frame, find a variable that matches the given name and
/// type. We need this for expression re-use; we may not always get the
/// same lldb::Variable back, and we want the expression to work wherever
@@ -1167,28 +1164,6 @@
const RegisterInfo ®_info,
lldb::addr_t addr,
Error &err);
-
- //------------------------------------------------------------------
- /// A wrapper for ClangASTContext::CopyType that sets a flag that
- /// indicates that we should not respond to queries during import.
- ///
- /// @param[in] dest_context
- /// The target AST context, typically the parser's AST context.
- ///
- /// @param[in] source_context
- /// The source AST context, typically the AST context of whatever
- /// symbol file the type was found in.
- ///
- /// @param[in] clang_type
- /// The source type.
- ///
- /// @return
- /// The imported type.
- //------------------------------------------------------------------
- void *
- GuardedCopyType (clang::ASTContext *dest_context,
- clang::ASTContext *source_context,
- void *clang_type);
};
} // namespace lldb_private
Modified: lldb/trunk/source/Expression/ClangASTSource.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/ClangASTSource.cpp?rev=143292&r1=143291&r2=143292&view=diff
==============================================================================
--- lldb/trunk/source/Expression/ClangASTSource.cpp (original)
+++ lldb/trunk/source/Expression/ClangASTSource.cpp Sat Oct 29 14:50:43 2011
@@ -122,11 +122,6 @@
}
void
-ClangASTSource::FindExternalVisibleDecls (NameSearchContext &context)
-{
-}
-
-void
ClangASTSource::CompleteType (TagDecl *tag_decl)
{
lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
@@ -257,6 +252,211 @@
return ELR_AlreadyLoaded;
}
+void
+ClangASTSource::FindExternalVisibleDecls (NameSearchContext &context)
+{
+ assert (m_ast_context);
+
+ const ConstString name(context.m_decl_name.getAsString().c_str());
+
+ lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
+
+ static unsigned int invocation_id = 0;
+ unsigned int current_id = invocation_id++;
+
+ if (log)
+ {
+ if (!context.m_decl_context)
+ log->Printf("ClangASTSource::FindExternalVisibleDecls[%u] for '%s' in a NULL DeclContext", current_id, name.GetCString());
+ else if (const NamedDecl *context_named_decl = dyn_cast<NamedDecl>(context.m_decl_context))
+ log->Printf("ClangASTSource::FindExternalVisibleDecls[%u] for '%s' in '%s'", current_id, name.GetCString(), context_named_decl->getNameAsString().c_str());
+ else
+ log->Printf("ClangASTSource::FindExternalVisibleDecls[%u] for '%s' in a '%s'", current_id, name.GetCString(), context.m_decl_context->getDeclKindName());
+ }
+
+ context.m_namespace_map.reset(new ClangASTImporter::NamespaceMap);
+
+ if (const NamespaceDecl *namespace_context = dyn_cast<NamespaceDecl>(context.m_decl_context))
+ {
+ ClangASTImporter::NamespaceMapSP namespace_map = m_ast_importer->GetNamespaceMap(namespace_context);
+
+ if (log && log->GetVerbose())
+ log->Printf(" CAS::FEVD[%u] Inspecting namespace map %p (%d entries)",
+ current_id,
+ namespace_map.get(),
+ (int)namespace_map->size());
+
+ if (!namespace_map)
+ return;
+
+ for (ClangASTImporter::NamespaceMap::iterator i = namespace_map->begin(), e = namespace_map->end();
+ i != e;
+ ++i)
+ {
+ if (log)
+ log->Printf(" CAS::FEVD[%u] Searching namespace %s in module %s",
+ current_id,
+ i->second.GetNamespaceDecl()->getNameAsString().c_str(),
+ i->first->GetFileSpec().GetFilename().GetCString());
+
+ FindExternalVisibleDecls(context,
+ i->first,
+ i->second,
+ current_id);
+ }
+ }
+ else if (!isa<TranslationUnitDecl>(context.m_decl_context))
+ {
+ // we shouldn't be getting FindExternalVisibleDecls calls for these
+ return;
+ }
+ else
+ {
+ ClangNamespaceDecl namespace_decl;
+
+ if (log)
+ log->Printf(" CAS::FEVD[%u] Searching the root namespace", current_id);
+
+ FindExternalVisibleDecls(context,
+ lldb::ModuleSP(),
+ namespace_decl,
+ current_id);
+ }
+
+ if (!context.m_namespace_map->empty())
+ {
+ if (log && log->GetVerbose())
+ log->Printf(" CAS::FEVD[%u] Registering namespace map %p (%d entries)",
+ current_id,
+ context.m_namespace_map.get(),
+ (int)context.m_namespace_map->size());
+
+ NamespaceDecl *clang_namespace_decl = AddNamespace(context, context.m_namespace_map);
+
+ if (clang_namespace_decl)
+ clang_namespace_decl->setHasExternalVisibleStorage();
+ }
+}
+
+void
+ClangASTSource::FindExternalVisibleDecls (NameSearchContext &context,
+ lldb::ModuleSP module_sp,
+ ClangNamespaceDecl &namespace_decl,
+ unsigned int current_id)
+{
+ assert (m_ast_context);
+
+ lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
+
+ SymbolContextList sc_list;
+
+ const ConstString name(context.m_decl_name.getAsString().c_str());
+
+ const char *name_unique_cstr = name.GetCString();
+
+ if (name_unique_cstr == NULL)
+ return;
+
+ // The ClangASTSource is not responsible for finding $-names.
+ if (name_unique_cstr[0] == '$')
+ return;
+
+ if (module_sp && namespace_decl)
+ {
+ ClangNamespaceDecl found_namespace_decl;
+
+ SymbolVendor *symbol_vendor = module_sp->GetSymbolVendor();
+
+ if (symbol_vendor)
+ {
+ SymbolContext null_sc;
+
+ found_namespace_decl = symbol_vendor->FindNamespace(null_sc, name, &namespace_decl);
+
+ if (found_namespace_decl)
+ {
+ context.m_namespace_map->push_back(std::pair<lldb::ModuleSP, ClangNamespaceDecl>(module_sp, found_namespace_decl));
+
+ if (log)
+ log->Printf(" CAS::FEVD[%u] Found namespace %s in module %s",
+ current_id,
+ name.GetCString(),
+ module_sp->GetFileSpec().GetFilename().GetCString());
+ }
+ }
+ }
+ else
+ {
+ ModuleList &images = m_target->GetImages();
+
+ for (uint32_t i = 0, e = images.GetSize();
+ i != e;
+ ++i)
+ {
+ lldb::ModuleSP image = images.GetModuleAtIndex(i);
+
+ if (!image)
+ continue;
+
+ ClangNamespaceDecl found_namespace_decl;
+
+ SymbolVendor *symbol_vendor = image->GetSymbolVendor();
+
+ if (!symbol_vendor)
+ continue;
+
+ SymbolContext null_sc;
+
+ found_namespace_decl = symbol_vendor->FindNamespace(null_sc, name, &namespace_decl);
+
+ if (found_namespace_decl)
+ {
+ context.m_namespace_map->push_back(std::pair<lldb::ModuleSP, ClangNamespaceDecl>(image, found_namespace_decl));
+
+ if (log)
+ log->Printf(" CAS::FEVD[%u] Found namespace %s in module %s",
+ current_id,
+ name.GetCString(),
+ image->GetFileSpec().GetFilename().GetCString());
+ }
+ }
+ }
+
+ static ConstString id_name("id");
+
+ do
+ {
+ TypeList types;
+ SymbolContext null_sc;
+
+ if (module_sp && namespace_decl)
+ module_sp->FindTypes(null_sc, name, &namespace_decl, true, 1, types);
+ else if(name != id_name)
+ m_target->GetImages().FindTypes (null_sc, name, true, 1, types);
+ else
+ break;
+
+ if (types.GetSize())
+ {
+ lldb::TypeSP type_sp = types.GetTypeAtIndex(0);
+
+ if (log)
+ {
+ const char *name_string = type_sp->GetName().GetCString();
+
+ log->Printf(" CAS::FEVD[%u] Matching type found for \"%s\": %s",
+ current_id,
+ name.GetCString(),
+ (name_string ? name_string : "<anonymous>"));
+ }
+
+ void *copied_type = GuardedCopyType(m_ast_context, type_sp->GetClangAST(), type_sp->GetClangFullType());
+
+ context.AddTypeDecl(copied_type);
+ }
+ } while(0);
+}
+
void
ClangASTSource::CompleteNamespaceMap (ClangASTImporter::NamespaceMapSP &namespace_map,
const ConstString &name,
@@ -371,6 +571,22 @@
return dyn_cast<NamespaceDecl>(copied_decl);
}
+void *
+ClangASTSource::GuardedCopyType (ASTContext *dest_context,
+ ASTContext *source_context,
+ void *clang_type)
+{
+ SetImportInProgress(true);
+
+ QualType ret_qual_type = m_ast_importer->CopyType (source_context, QualType::getFromOpaquePtr(clang_type));
+
+ void *ret = ret_qual_type.getAsOpaquePtr();
+
+ SetImportInProgress(false);
+
+ return ret;
+}
+
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=143292&r1=143291&r2=143292&view=diff
==============================================================================
--- lldb/trunk/source/Expression/ClangExpressionDeclMap.cpp (original)
+++ lldb/trunk/source/Expression/ClangExpressionDeclMap.cpp Sat Oct 29 14:50:43 2011
@@ -2140,7 +2140,7 @@
lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
- if (m_parser_vars->m_ignore_lookups)
+ if (GetImportInProgress())
{
if (log && log->GetVerbose())
log->Printf("Ignoring a query during an import");
@@ -2153,21 +2153,19 @@
if (log)
{
if (!context.m_decl_context)
- log->Printf("FindExternalVisibleDecls[%u] for '%s' in a NULL DeclContext", current_id, name.GetCString());
+ log->Printf("ClangExpressionDeclMap::FindExternalVisibleDecls[%u] for '%s' in a NULL DeclContext", current_id, name.GetCString());
else if (const NamedDecl *context_named_decl = dyn_cast<NamedDecl>(context.m_decl_context))
- log->Printf("FindExternalVisibleDecls[%u] for '%s' in '%s'", current_id, name.GetCString(), context_named_decl->getNameAsString().c_str());
+ log->Printf("ClangExpressionDeclMap::FindExternalVisibleDecls[%u] for '%s' in '%s'", current_id, name.GetCString(), context_named_decl->getNameAsString().c_str());
else
- log->Printf("FindExternalVisibleDecls[%u] for '%s' in a '%s'", current_id, name.GetCString(), context.m_decl_context->getDeclKindName());
+ log->Printf("ClangExpressionDeclMap::FindExternalVisibleDecls[%u] for '%s' in a '%s'", current_id, name.GetCString(), context.m_decl_context->getDeclKindName());
}
-
- context.m_namespace_map.reset(new ClangASTImporter::NamespaceMap);
-
+
if (const NamespaceDecl *namespace_context = dyn_cast<NamespaceDecl>(context.m_decl_context))
{
ClangASTImporter::NamespaceMapSP namespace_map = m_ast_importer->GetNamespaceMap(namespace_context);
if (log && log->GetVerbose())
- log->Printf(" FEVD[%u] Inspecting namespace map %p (%d entries)",
+ log->Printf(" CEDM::FEVD[%u] Inspecting namespace map %p (%d entries)",
current_id,
namespace_map.get(),
(int)namespace_map->size());
@@ -2180,7 +2178,7 @@
++i)
{
if (log)
- log->Printf(" FEVD[%u] Searching namespace %s in module %s",
+ log->Printf(" CEDM::FEVD[%u] Searching namespace %s in module %s",
current_id,
i->second.GetNamespaceDecl()->getNameAsString().c_str(),
i->first->GetFileSpec().GetFilename().GetCString());
@@ -2188,7 +2186,6 @@
FindExternalVisibleDecls(context,
i->first,
i->second,
- name,
current_id);
}
}
@@ -2202,50 +2199,37 @@
ClangNamespaceDecl namespace_decl;
if (log)
- log->Printf(" FEVD[%u] Searching the root namespace", current_id);
+ log->Printf(" CEDM::FEVD[%u] Searching the root namespace", current_id);
FindExternalVisibleDecls(context,
lldb::ModuleSP(),
namespace_decl,
- name,
current_id);
}
- if (!context.m_namespace_map->empty())
- {
- if (log && log->GetVerbose())
- log->Printf(" FEVD[%u] Registering namespace map %p (%d entries)",
- current_id,
- context.m_namespace_map.get(),
- (int)context.m_namespace_map->size());
-
- NamespaceDecl *clang_namespace_decl = AddNamespace(context, context.m_namespace_map);
-
- if (clang_namespace_decl)
- clang_namespace_decl->setHasExternalVisibleStorage();
- }
+ if (!context.m_found.variable)
+ ClangASTSource::FindExternalVisibleDecls(context);
}
void
ClangExpressionDeclMap::FindExternalVisibleDecls (NameSearchContext &context,
lldb::ModuleSP module_sp,
ClangNamespaceDecl &namespace_decl,
- const ConstString &name,
unsigned int current_id)
{
- assert (m_struct_vars.get());
- assert (m_parser_vars.get());
assert (m_ast_context);
lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
-
+
SymbolContextList sc_list;
+ const ConstString name(context.m_decl_name.getAsString().c_str());
+
const char *name_unique_cstr = name.GetCString();
if (name_unique_cstr == NULL)
return;
-
+
// Only look for functions by name out in our symbols if the function
// doesn't start with our phony prefix of '$'
Target *target = m_parser_vars->m_exe_ctx->GetTargetPtr();
@@ -2280,7 +2264,7 @@
if (log && log->GetVerbose())
{
- log->Printf (" FEVD[%u] Type for \"this\" is: ", current_id);
+ log->Printf (" CEDM::FEVD[%u] Type for \"this\" is: ", current_id);
StreamString strm;
this_type->Dump(&strm, true);
log->PutCString (strm.GetData());
@@ -2308,7 +2292,7 @@
if (log)
{
ASTDumper ast_dumper(pointer_target_qual_type);
- log->Printf(" FEVD[%u] Adding type for $__lldb_class: %s", current_id, ast_dumper.GetCString());
+ log->Printf(" CEDM::FEVD[%u] Adding type for $__lldb_class: %s", current_id, ast_dumper.GetCString());
}
AddOneType(context, class_user_type, current_id, true);
@@ -2402,7 +2386,7 @@
break;
if (log)
- log->Printf(" FEVD[%u] Found persistent type %s", current_id, name.GetCString());
+ log->Printf(" CEDM::FEVD[%u] Found persistent type %s", current_id, name.GetCString());
context.AddNamedDecl(parser_ptype_type_decl);
} while (0);
@@ -2420,11 +2404,11 @@
if (m_parser_vars->m_exe_ctx->GetRegisterContext())
{
const RegisterInfo *reg_info(m_parser_vars->m_exe_ctx->GetRegisterContext()->GetRegisterInfoByName(reg_name));
-
+
if (reg_info)
{
if (log)
- log->Printf(" FEVD[%u] Found register %s", current_id, reg_info->name);
+ log->Printf(" CEDM::FEVD[%u] Found register %s", current_id, reg_info->name);
AddOneRegister(context, reg_info, current_id);
}
@@ -2549,103 +2533,7 @@
}
}
}
-
- if (module_sp && namespace_decl)
- {
- ClangNamespaceDecl found_namespace_decl;
-
- SymbolVendor *symbol_vendor = module_sp->GetSymbolVendor();
-
- if (symbol_vendor)
- {
- SymbolContext null_sc;
-
- found_namespace_decl = symbol_vendor->FindNamespace(null_sc, name, &namespace_decl);
-
- if (found_namespace_decl)
- {
- context.m_namespace_map->push_back(std::pair<ModuleSP, ClangNamespaceDecl>(module_sp, found_namespace_decl));
-
- if (log)
- log->Printf(" FEVD[%u] Found namespace %s in module %s",
- current_id,
- name.GetCString(),
- module_sp->GetFileSpec().GetFilename().GetCString());
- }
- }
- }
- else
- {
- ModuleList &images = m_parser_vars->m_sym_ctx.target_sp->GetImages();
-
- for (uint32_t i = 0, e = images.GetSize();
- i != e;
- ++i)
- {
- ModuleSP image = images.GetModuleAtIndex(i);
-
- if (!image)
- continue;
-
- ClangNamespaceDecl found_namespace_decl;
-
- SymbolVendor *symbol_vendor = image->GetSymbolVendor();
-
- if (!symbol_vendor)
- continue;
-
- SymbolContext null_sc;
-
- found_namespace_decl = symbol_vendor->FindNamespace(null_sc, name, &namespace_decl);
-
- if (found_namespace_decl)
- {
- context.m_namespace_map->push_back(std::pair<ModuleSP, ClangNamespaceDecl>(image, found_namespace_decl));
-
- if (log)
- log->Printf(" FEVD[%u] Found namespace %s in module %s",
- current_id,
- name.GetCString(),
- image->GetFileSpec().GetFilename().GetCString());
- }
- }
- }
}
-
- static ConstString id_name("id");
-
- do
- {
- TypeList types;
- SymbolContext null_sc;
-
- if (module_sp && namespace_decl)
- module_sp->FindTypes(null_sc, name, &namespace_decl, true, 1, types);
- else if(name != id_name)
- target->GetImages().FindTypes (null_sc, name, true, 1, types);
- else
- break;
-
- if (types.GetSize())
- {
- TypeSP type_sp = types.GetTypeAtIndex(0);
-
- if (log)
- {
- const char *name_string = type_sp->GetName().GetCString();
-
- log->Printf(" FEVD[%u] Matching type found for \"%s\": %s",
- current_id,
- name.GetCString(),
- (name_string ? name_string : "<anonymous>"));
- }
-
- TypeFromUser user_type(type_sp->GetClangFullType(),
- type_sp->GetClangAST());
-
- AddOneType(context, user_type, current_id, false);
- }
- } while(0);
}
Value *
@@ -2812,7 +2700,7 @@
if (log)
{
ASTDumper ast_dumper(var_decl);
- log->Printf(" FEVD[%u] Found variable %s, returned %s", current_id, decl_name.c_str(), ast_dumper.GetCString());
+ log->Printf(" CEDM::FEVD[%u] Found variable %s, returned %s", current_id, decl_name.c_str(), ast_dumper.GetCString());
}
}
@@ -2841,7 +2729,7 @@
if (log)
{
ASTDumper ast_dumper(var_decl);
- log->Printf(" FEVD[%u] Added pvar %s, returned %s", current_id, pvar_sp->GetName().GetCString(), ast_dumper.GetCString());
+ log->Printf(" CEDM::FEVD[%u] Added pvar %s, returned %s", current_id, pvar_sp->GetName().GetCString(), ast_dumper.GetCString());
}
}
@@ -2899,7 +2787,7 @@
{
ASTDumper ast_dumper(var_decl);
- log->Printf(" FEVD[%u] Found variable %s, returned %s", current_id, decl_name.c_str(), ast_dumper.GetCString());
+ log->Printf(" CEDM::FEVD[%u] Found variable %s, returned %s", current_id, decl_name.c_str(), ast_dumper.GetCString());
}
}
@@ -2994,7 +2882,7 @@
if (log && log->GetVerbose())
{
ASTDumper ast_dumper(var_decl);
- log->Printf(" FEVD[%d] Added register %s, returned %s", current_id, context.m_decl_name.getAsString().c_str(), ast_dumper.GetCString());
+ log->Printf(" CEDM::FEVD[%d] Added register %s, returned %s", current_id, context.m_decl_name.getAsString().c_str(), ast_dumper.GetCString());
}
}
@@ -3092,7 +2980,7 @@
{
ASTDumper ast_dumper(fun_decl);
- log->Printf(" FEVD[%u] Found %s function %s, returned %s",
+ log->Printf(" CEDM::FEVD[%u] Found %s function %s, returned %s",
current_id,
(fun ? "specific" : "generic"),
decl_name.c_str(),
@@ -3110,9 +2998,7 @@
ASTContext *user_ast_context = ut.GetASTContext();
void *copied_type = GuardedCopyType(parser_ast_context, user_ast_context, ut.GetOpaqueQualType());
-
- TypeFromParser parser_type(copied_type, parser_ast_context);
-
+
if (add_method && ClangASTContext::IsAggregateType(copied_type))
{
void *args[1];
@@ -3144,21 +3030,3 @@
context.AddTypeDecl(copied_type);
}
-
-void *
-ClangExpressionDeclMap::GuardedCopyType (ASTContext *dest_context,
- ASTContext *source_context,
- void *clang_type)
-{
- assert (m_parser_vars.get());
-
- m_parser_vars->m_ignore_lookups = true;
-
- QualType ret_qual_type = m_ast_importer->CopyType (source_context, QualType::getFromOpaquePtr(clang_type));
-
- void *ret = ret_qual_type.getAsOpaquePtr();
-
- m_parser_vars->m_ignore_lookups = false;
-
- return ret;
-}
More information about the lldb-commits
mailing list