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)
|
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);
|
m_clangTool.addUnsavedFiles(fileContainers);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -159,7 +169,14 @@ void PchCreator::clear()
|
|||||||
|
|
||||||
void PchCreator::doInMainThreadAfterFinished()
|
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});
|
m_pchManagerClient.precompiledHeadersUpdated(ProjectPartPchs{m_projectPartPch});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -98,6 +98,7 @@ private:
|
|||||||
ProjectPartPch m_projectPartPch;
|
ProjectPartPch m_projectPartPch;
|
||||||
FilePathCaching m_filePathCache;
|
FilePathCaching m_filePathCache;
|
||||||
FilePathIds m_allInclues;
|
FilePathIds m_allInclues;
|
||||||
|
FilePathIds m_generatedFilePathIds;
|
||||||
Environment &m_environment;
|
Environment &m_environment;
|
||||||
PchManagerClientInterface &m_pchManagerClient;
|
PchManagerClientInterface &m_pchManagerClient;
|
||||||
ClangPathWatcherInterface &m_clangPathwatcher;
|
ClangPathWatcherInterface &m_clangPathwatcher;
|
||||||
|
@@ -78,10 +78,7 @@ MATCHER_P2(HasIdAndType,
|
|||||||
class PchCreator: public ::testing::Test
|
class PchCreator: public ::testing::Test
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
PchCreator()
|
PchCreator() { creator.setUnsavedFiles({generatedFile}); }
|
||||||
{
|
|
||||||
creator.setUnsavedFiles({generatedFile});
|
|
||||||
}
|
|
||||||
|
|
||||||
ClangBackEnd::FilePathId id(ClangBackEnd::FilePathView path)
|
ClangBackEnd::FilePathId id(ClangBackEnd::FilePathView path)
|
||||||
{
|
{
|
||||||
@@ -95,10 +92,9 @@ protected:
|
|||||||
FilePath main2Path = TESTDATA_DIR "/builddependencycollector/project/main2.cpp";
|
FilePath main2Path = TESTDATA_DIR "/builddependencycollector/project/main2.cpp";
|
||||||
FilePath header1Path = TESTDATA_DIR "/builddependencycollector/project/header1.h";
|
FilePath header1Path = TESTDATA_DIR "/builddependencycollector/project/header1.h";
|
||||||
FilePath header2Path = TESTDATA_DIR "/builddependencycollector/project/header2.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";
|
FilePath generatedFilePath = TESTDATA_DIR "/builddependencycollector/project/generated_file.h";
|
||||||
TestEnvironment environment;
|
TestEnvironment environment;
|
||||||
FileContainer generatedFile{{TESTDATA_DIR, generatedFileName}, "#pragma once", {}};
|
FileContainer generatedFile{generatedFilePath.clone(), "#pragma once", {}};
|
||||||
NiceMock<MockPchManagerClient> mockPchManagerClient;
|
NiceMock<MockPchManagerClient> mockPchManagerClient;
|
||||||
NiceMock<MockClangPathWatcher> mockClangPathWatcher;
|
NiceMock<MockClangPathWatcher> mockClangPathWatcher;
|
||||||
ClangBackEnd::PchCreator creator{environment, database, mockPchManagerClient, mockClangPathWatcher};
|
ClangBackEnd::PchCreator creator{environment, database, mockPchManagerClient, mockClangPathWatcher};
|
||||||
@@ -107,7 +103,8 @@ protected:
|
|||||||
{id(TESTDATA_DIR "/builddependencycollector/project/header2.h"),
|
{id(TESTDATA_DIR "/builddependencycollector/project/header2.h"),
|
||||||
id(TESTDATA_DIR "/builddependencycollector/external/external1.h"),
|
id(TESTDATA_DIR "/builddependencycollector/external/external1.h"),
|
||||||
id(TESTDATA_DIR "/builddependencycollector/external/external2.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/external1.h"),
|
||||||
id(TESTDATA_DIR "/builddependencycollector/external/external2.h")},
|
id(TESTDATA_DIR "/builddependencycollector/external/external2.h")},
|
||||||
{},
|
{},
|
||||||
|
Reference in New Issue
Block a user