diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-11-28 04:56:00 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-11-28 04:56:00 +0000 |
commit | b11f5a4cbbcac4781ab5cddc29764bfc689e266e (patch) | |
tree | a26e6e3daebcb55b26047ec1cd07ce00d6156190 /clang/tools/libclang/Indexing.cpp | |
parent | 67aa7db0a47da2293bcd6998d3d2c1b1ab6ec1ba (diff) | |
download | bcm5719-llvm-b11f5a4cbbcac4781ab5cddc29764bfc689e266e.tar.gz bcm5719-llvm-b11f5a4cbbcac4781ab5cddc29764bfc689e266e.zip |
[libclang] Indexing API: If the client requested to get a CXTranslationUnit after
indexing, honor all the TU options.
llvm-svn: 145229
Diffstat (limited to 'clang/tools/libclang/Indexing.cpp')
-rw-r--r-- | clang/tools/libclang/Indexing.cpp | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/clang/tools/libclang/Indexing.cpp b/clang/tools/libclang/Indexing.cpp index 5af1d50e720..222e301d46e 100644 --- a/clang/tools/libclang/Indexing.cpp +++ b/clang/tools/libclang/Indexing.cpp @@ -244,9 +244,6 @@ static void clang_indexSourceFile_Impl(void *UserData) { CIndexer *CXXIdx = static_cast<CIndexer *>(CIdx); - (void)CXXIdx; - (void)TU_options; - CaptureDiagnosticConsumer *CaptureDiag = new CaptureDiagnosticConsumer(); // Configure the diagnostics. @@ -333,9 +330,38 @@ static void clang_indexSourceFile_Impl(void *UserData) { llvm::CrashRecoveryContextCleanupRegistrar<IndexingFrontendAction> IndexActionCleanup(IndexAction.get()); + bool Persistent = requestedToGetTU; + StringRef ResourceFilesPath = CXXIdx->getClangResourcesPath(); + bool OnlyLocalDecls = false; + bool CaptureDiagnostics = true; + bool PrecompilePreamble = false; + bool CacheCodeCompletionResults = false; + PreprocessorOptions &PPOpts = CInvok->getPreprocessorOpts(); + PPOpts.DetailedRecord = false; + PPOpts.DetailedRecordIncludesNestedMacroExpansions = false; + + if (requestedToGetTU) { + OnlyLocalDecls = CXXIdx->getOnlyLocalDecls(); + PrecompilePreamble = TU_options & CXTranslationUnit_PrecompiledPreamble; + // FIXME: Add a flag for modules. + CacheCodeCompletionResults + = TU_options & CXTranslationUnit_CacheCompletionResults; + if (TU_options & CXTranslationUnit_DetailedPreprocessingRecord) { + PPOpts.DetailedRecord = true; + PPOpts.DetailedRecordIncludesNestedMacroExpansions + = (TU_options & CXTranslationUnit_NestedMacroExpansions); + } + } + Unit = ASTUnit::LoadFromCompilerInvocationAction(CInvok.getPtr(), Diags, IndexAction.get(), - Unit); + Unit, + Persistent, + ResourceFilesPath, + OnlyLocalDecls, + CaptureDiagnostics, + PrecompilePreamble, + CacheCodeCompletionResults); if (!Unit) return; |