summaryrefslogtreecommitdiffstats
path: root/clang/tools/libclang/Indexing.cpp
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2011-11-28 04:56:00 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2011-11-28 04:56:00 +0000
commitb11f5a4cbbcac4781ab5cddc29764bfc689e266e (patch)
treea26e6e3daebcb55b26047ec1cd07ce00d6156190 /clang/tools/libclang/Indexing.cpp
parent67aa7db0a47da2293bcd6998d3d2c1b1ab6ec1ba (diff)
downloadbcm5719-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.cpp34
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;
OpenPOWER on IntegriCloud