Index: lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules/TestObjCModules.py =================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules/TestObjCModules.py +++ lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules/TestObjCModules.py @@ -60,6 +60,10 @@ "int", "4"]) + # Type lookup should still work and print something reasonable + # for types from the module. + self.expect("type lookup NSObject", substrs=["instanceMethod"]) + self.expect("expr string.length", VARIABLES_DISPLAYED_CORRECTLY, substrs=["NSUInteger", "5"]) Index: lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp =================================================================== --- lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp +++ lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp @@ -27,6 +27,7 @@ #include "lldb/Core/ModuleList.h" #include "lldb/Host/Host.h" #include "lldb/Host/HostInfo.h" +#include "lldb/Symbol/ClangASTContext.h" #include "lldb/Symbol/CompileUnit.h" #include "lldb/Symbol/SourceModule.h" #include "lldb/Target/Target.h" @@ -110,6 +111,9 @@ ImportedModuleMap m_imported_modules; ImportedModuleSet m_user_imported_modules; const clang::ExternalASTMerger::OriginMap m_origin_map; + // We assume that every ASTContext has an ClangASTContext, so we also store + // a custom ClangASTContext for our internal ASTContext. + std::unique_ptr m_ast_context; }; } // anonymous namespace @@ -155,7 +159,13 @@ : m_diagnostics_engine(std::move(diagnostics_engine)), m_compiler_invocation(std::move(compiler_invocation)), m_compiler_instance(std::move(compiler_instance)), - m_parser(std::move(parser)), m_origin_map() {} + m_parser(std::move(parser)), m_origin_map() { + + // Initialize our ClangASTContext. + auto target_opts = m_compiler_invocation->getTargetOpts(); + m_ast_context.reset(new ClangASTContext(target_opts.Triple.c_str())); + m_ast_context->setASTContext(&m_compiler_instance->getASTContext()); +} void ClangModulesDeclVendorImpl::ReportModuleExportsHelper( std::set &exports,