forked from qt-creator/qt-creator
ClangPchManager: Don't watch generated files
Task-number: QTCREATORBUG-21983 Change-Id: I80af39278140c48c8740c83af85596d3ee9bf2da Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
@@ -138,6 +138,16 @@ const ProjectPartPch &PchCreator::projectPartPch()
|
||||
|
||||
void PchCreator::setUnsavedFiles(const V2::FileContainers &fileContainers)
|
||||
{
|
||||
m_generatedFilePathIds.clear();
|
||||
m_generatedFilePathIds.reserve(fileContainers.size());
|
||||
std::transform(fileContainers.begin(),
|
||||
fileContainers.end(),
|
||||
std::back_inserter(m_generatedFilePathIds),
|
||||
[&](const V2::FileContainer &fileContainer) {
|
||||
return m_filePathCache.filePathId(fileContainer.filePath);
|
||||
});
|
||||
std::sort(m_generatedFilePathIds.begin(), m_generatedFilePathIds.end());
|
||||
|
||||
m_clangTool.addUnsavedFiles(fileContainers);
|
||||
}
|
||||
|
||||
@@ -159,7 +169,14 @@ void PchCreator::clear()
|
||||
|
||||
void PchCreator::doInMainThreadAfterFinished()
|
||||
{
|
||||
m_clangPathwatcher.updateIdPaths({{m_projectPartPch.projectPartId, m_allInclues}});
|
||||
FilePathIds existingIncludes;
|
||||
existingIncludes.reserve(m_allInclues.size());
|
||||
std::set_difference(m_allInclues.begin(),
|
||||
m_allInclues.end(),
|
||||
m_generatedFilePathIds.begin(),
|
||||
m_generatedFilePathIds.end(),
|
||||
std::back_inserter(existingIncludes));
|
||||
m_clangPathwatcher.updateIdPaths({{m_projectPartPch.projectPartId, existingIncludes}});
|
||||
m_pchManagerClient.precompiledHeadersUpdated(ProjectPartPchs{m_projectPartPch});
|
||||
}
|
||||
|
||||
|
@@ -98,6 +98,7 @@ private:
|
||||
ProjectPartPch m_projectPartPch;
|
||||
FilePathCaching m_filePathCache;
|
||||
FilePathIds m_allInclues;
|
||||
FilePathIds m_generatedFilePathIds;
|
||||
Environment &m_environment;
|
||||
PchManagerClientInterface &m_pchManagerClient;
|
||||
ClangPathWatcherInterface &m_clangPathwatcher;
|
||||
|
@@ -78,10 +78,7 @@ MATCHER_P2(HasIdAndType,
|
||||
class PchCreator: public ::testing::Test
|
||||
{
|
||||
protected:
|
||||
PchCreator()
|
||||
{
|
||||
creator.setUnsavedFiles({generatedFile});
|
||||
}
|
||||
PchCreator() { creator.setUnsavedFiles({generatedFile}); }
|
||||
|
||||
ClangBackEnd::FilePathId id(ClangBackEnd::FilePathView path)
|
||||
{
|
||||
@@ -95,10 +92,9 @@ protected:
|
||||
FilePath main2Path = TESTDATA_DIR "/builddependencycollector/project/main2.cpp";
|
||||
FilePath header1Path = TESTDATA_DIR "/builddependencycollector/project/header1.h";
|
||||
FilePath header2Path = TESTDATA_DIR "/builddependencycollector/project/header2.h";
|
||||
Utils::SmallStringView generatedFileName = "builddependencycollector/project/generated_file.h";
|
||||
FilePath generatedFilePath = TESTDATA_DIR "/builddependencycollector/project/generated_file.h";
|
||||
TestEnvironment environment;
|
||||
FileContainer generatedFile{{TESTDATA_DIR, generatedFileName}, "#pragma once", {}};
|
||||
FileContainer generatedFile{generatedFilePath.clone(), "#pragma once", {}};
|
||||
NiceMock<MockPchManagerClient> mockPchManagerClient;
|
||||
NiceMock<MockClangPathWatcher> mockClangPathWatcher;
|
||||
ClangBackEnd::PchCreator creator{environment, database, mockPchManagerClient, mockClangPathWatcher};
|
||||
@@ -107,7 +103,8 @@ protected:
|
||||
{id(TESTDATA_DIR "/builddependencycollector/project/header2.h"),
|
||||
id(TESTDATA_DIR "/builddependencycollector/external/external1.h"),
|
||||
id(TESTDATA_DIR "/builddependencycollector/external/external2.h")},
|
||||
{id(TESTDATA_DIR "/builddependencycollector/project/header2.h"),
|
||||
{id(generatedFilePath),
|
||||
id(TESTDATA_DIR "/builddependencycollector/project/header2.h"),
|
||||
id(TESTDATA_DIR "/builddependencycollector/external/external1.h"),
|
||||
id(TESTDATA_DIR "/builddependencycollector/external/external2.h")},
|
||||
{},
|
||||
|
Reference in New Issue
Block a user