diff options
author | Marco Bubke <marco.bubke@qt.io> | 2019-01-22 14:38:02 +0100 |
---|---|---|
committer | Marco Bubke <marco.bubke@qt.io> | 2019-01-24 12:47:30 +0000 |
commit | 693c896e5aa10c12e739f94cbf45d35f091e2477 (patch) | |
tree | 0ae8a5058bf482d9fafa7d0f229bfb9abeec0339 /src | |
parent | b5f7e303ee55ae5cf3d851296c0a1dd72462c6fb (diff) | |
download | qt-creator-693c896e5aa10c12e739f94cbf45d35f091e2477.tar.gz |
PchManager: Use Generated Files in BuildDependencyCollector
Task-number: QTCREATORBUG-21843
Change-Id: I33c29d50943a914313a4c2e577b0210460f663d8
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
Diffstat (limited to 'src')
4 files changed, 18 insertions, 4 deletions
diff --git a/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp b/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp index 4e2b19db8b..d62fa6e41d 100644 --- a/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp +++ b/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp @@ -192,7 +192,7 @@ struct Data // because we have a cycle dependency database}; ClangBackEnd::PchTasksMerger pchTaskMerger{pchTaskQueue}; ClangBackEnd::BuildDependenciesStorage<> buildDependencyStorage{database}; - ClangBackEnd::BuildDependencyCollector buildDependencyCollector{filePathCache}; + ClangBackEnd::BuildDependencyCollector buildDependencyCollector{filePathCache, generatedFiles}; std::function<TimeStamp(FilePathView filePath)> getModifiedTime{ [&](ClangBackEnd::FilePathView path) -> TimeStamp { return QFileInfo(QString(path)).lastModified().toSecsSinceEpoch(); diff --git a/src/tools/clangpchmanagerbackend/source/builddependencycollector.cpp b/src/tools/clangpchmanagerbackend/source/builddependencycollector.cpp index 833691fa89..6647d02531 100644 --- a/src/tools/clangpchmanagerbackend/source/builddependencycollector.cpp +++ b/src/tools/clangpchmanagerbackend/source/builddependencycollector.cpp @@ -55,6 +55,8 @@ BuildDependency BuildDependencyCollector::create(const ProjectPartContainer &pro setExcludedFilePaths( m_filePathCache.filePaths(projectPart.headerPathIds + projectPart.sourcePathIds)); + addUnsavedFiles(m_generatedFiles.fileContainers()); + collect(); auto buildDependency = std::move(m_buildDependency); diff --git a/src/tools/clangpchmanagerbackend/source/builddependencycollector.h b/src/tools/clangpchmanagerbackend/source/builddependencycollector.h index 2ea7fb7c90..b9446c9692 100644 --- a/src/tools/clangpchmanagerbackend/source/builddependencycollector.h +++ b/src/tools/clangpchmanagerbackend/source/builddependencycollector.h @@ -28,6 +28,7 @@ #include "builddependencygeneratorinterface.h" #include <clangtool.h> +#include <generatedfilesinterface.h> #include <sourcesmanager.h> #include <filepathcachingfwd.h> @@ -37,8 +38,10 @@ namespace ClangBackEnd { class BuildDependencyCollector : public BuildDependencyGeneratorInterface { public: - BuildDependencyCollector(const FilePathCachingInterface &filePathCache) - : m_filePathCache(filePathCache) + BuildDependencyCollector(const FilePathCachingInterface &filePathCache, + const GeneratedFilesInterface &generatedFiles) + : m_filePathCache(filePathCache) + , m_generatedFiles(generatedFiles) { } @@ -92,6 +95,7 @@ private: Utils::SmallStringVector m_directories; SourcesManager m_sourcesManager; const FilePathCachingInterface &m_filePathCache; + const GeneratedFilesInterface &m_generatedFiles; }; } // namespace ClangBackEnd diff --git a/src/tools/clangrefactoringbackend/source/sourcelocationsutils.h b/src/tools/clangrefactoringbackend/source/sourcelocationsutils.h index c179c9599e..45bc71fdb4 100644 --- a/src/tools/clangrefactoringbackend/source/sourcelocationsutils.h +++ b/src/tools/clangrefactoringbackend/source/sourcelocationsutils.h @@ -44,9 +44,17 @@ llvm::SmallString<256> absolutePath(clang::StringRef path) { llvm::SmallString<256> absolutePath; + if (llvm::sys::path::is_absolute(path)) { + absolutePath = path; + + llvm::sys::path::remove_dots(absolutePath, true); + + return absolutePath; + } + std::error_code errorCode = llvm::sys::fs::real_path(path, absolutePath, true); - if (!errorCode && !llvm::sys::path::is_absolute(absolutePath)) + if (!errorCode) llvm::sys::fs::make_absolute(absolutePath); return absolutePath; |