diff options
Diffstat (limited to 'tools/libclang')
-rw-r--r-- | tools/libclang/CIndex.cpp | 7 | ||||
-rw-r--r-- | tools/libclang/CIndexCodeCompletion.cpp | 11 | ||||
-rw-r--r-- | tools/libclang/CIndexer.h | 6 |
3 files changed, 17 insertions, 7 deletions
diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp index ac57a6941c..3afe3007ea 100644 --- a/tools/libclang/CIndex.cpp +++ b/tools/libclang/CIndex.cpp @@ -1977,9 +1977,11 @@ CXTranslationUnit clang_createTranslationUnit(CXIndex CIdx, return 0; CIndexer *CXXIdx = static_cast<CIndexer *>(CIdx); + FileSystemOptions FileSystemOpts; + FileSystemOpts.WorkingDir = CXXIdx->getWorkingDirectory(); llvm::IntrusiveRefCntPtr<Diagnostic> Diags; - return ASTUnit::LoadFromASTFile(ast_filename, Diags, + return ASTUnit::LoadFromASTFile(ast_filename, Diags, FileSystemOpts, CXXIdx->getOnlyLocalDecls(), 0, 0, true); } @@ -2405,7 +2407,8 @@ CXFile clang_getFile(CXTranslationUnit tu, const char *file_name) { ASTUnit *CXXUnit = static_cast<ASTUnit *>(tu); FileManager &FMgr = CXXUnit->getFileManager(); - const FileEntry *File = FMgr.getFile(file_name, file_name+strlen(file_name)); + const FileEntry *File = FMgr.getFile(file_name, file_name+strlen(file_name), + CXXUnit->getFileSystemOpts()); return const_cast<FileEntry *>(File); } diff --git a/tools/libclang/CIndexCodeCompletion.cpp b/tools/libclang/CIndexCodeCompletion.cpp index d42e9eacd0..c92e2afaf3 100644 --- a/tools/libclang/CIndexCodeCompletion.cpp +++ b/tools/libclang/CIndexCodeCompletion.cpp @@ -232,12 +232,14 @@ struct AllocatedCXCodeCompleteResults : public CXCodeCompleteResults { /// \brief Language options used to adjust source locations. LangOptions LangOpts; - - /// \brief Source manager, used for diagnostics. - SourceManager SourceMgr; /// \brief File manager, used for diagnostics. FileManager FileMgr; + + FileSystemOptions FileSystemOpts; + + /// \brief Source manager, used for diagnostics. + SourceManager SourceMgr; /// \brief Temporary files that should be removed once we have finished /// with the code-completion results. @@ -248,7 +250,8 @@ struct AllocatedCXCodeCompleteResults : public CXCodeCompleteResults { }; AllocatedCXCodeCompleteResults::AllocatedCXCodeCompleteResults() - : CXCodeCompleteResults(), Diag(new Diagnostic), SourceMgr(*Diag) { } + : CXCodeCompleteResults(), Diag(new Diagnostic), + SourceMgr(*Diag, FileMgr, FileSystemOpts) { } AllocatedCXCodeCompleteResults::~AllocatedCXCodeCompleteResults() { for (unsigned I = 0, N = NumResults; I != N; ++I) diff --git a/tools/libclang/CIndexer.h b/tools/libclang/CIndexer.h index 89b098728d..1fcb964c6e 100644 --- a/tools/libclang/CIndexer.h +++ b/tools/libclang/CIndexer.h @@ -32,7 +32,8 @@ class CIndexer { bool DisplayDiagnostics; llvm::sys::Path ResourcesPath; - + std::string WorkingDir; + public: CIndexer() : OnlyLocalDecls(false), DisplayDiagnostics(false) { } @@ -49,6 +50,9 @@ public: /// \brief Get the path of the clang resource files. std::string getClangResourcesPath(); + + const std::string &getWorkingDirectory() const { return WorkingDir; } + void setWorkingDirectory(const std::string &Dir) { WorkingDir = Dir; } }; namespace clang { |