forked from qt-creator/qt-creator
ClangRefactoring: Activate updating for indexing
Change-Id: I6fb818edfab8ef7d9cfab0520276acedf0597fd3 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -66,6 +66,12 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FilePathIds fetchSources(ProjectPartId projectPartId) const override
|
||||||
|
{
|
||||||
|
return fetchProjectPartsFilesStatement.template values<FilePathId>(1024,
|
||||||
|
projectPartId.projectPathId);
|
||||||
|
}
|
||||||
|
|
||||||
void insertOrUpdateFileStatuses(const FileStatuses &fileStatuses) override
|
void insertOrUpdateFileStatuses(const FileStatuses &fileStatuses) override
|
||||||
{
|
{
|
||||||
WriteStatement &statement = insertOrUpdateFileStatusesStatement;
|
WriteStatement &statement = insertOrUpdateFileStatusesStatement;
|
||||||
@@ -246,6 +252,8 @@ public:
|
|||||||
"CONFLICT(sourceId, projectPartId) DO UPDATE SET sourceType = ?003, "
|
"CONFLICT(sourceId, projectPartId) DO UPDATE SET sourceType = ?003, "
|
||||||
"hasMissingIncludes = ?004",
|
"hasMissingIncludes = ?004",
|
||||||
database};
|
database};
|
||||||
|
mutable ReadStatement fetchProjectPartsFilesStatement{
|
||||||
|
"SELECT sourceId FROM projectPartsFiles WHERE projectPartId = ? ORDER BY sourceId", database};
|
||||||
mutable ReadStatement fetchSourceDependenciesStatement{
|
mutable ReadStatement fetchSourceDependenciesStatement{
|
||||||
"WITH RECURSIVE collectedDependencies(sourceId) AS (VALUES(?) UNION "
|
"WITH RECURSIVE collectedDependencies(sourceId) AS (VALUES(?) UNION "
|
||||||
"SELECT dependencySourceId FROM sourceDependencies, "
|
"SELECT dependencySourceId FROM sourceDependencies, "
|
||||||
|
@@ -56,6 +56,7 @@ public:
|
|||||||
virtual UsedMacros fetchUsedMacros(FilePathId sourceId) const = 0;
|
virtual UsedMacros fetchUsedMacros(FilePathId sourceId) const = 0;
|
||||||
virtual ProjectPartId fetchProjectPartId(Utils::SmallStringView projectPartName) = 0;
|
virtual ProjectPartId fetchProjectPartId(Utils::SmallStringView projectPartName) = 0;
|
||||||
virtual void updatePchCreationTimeStamp(long long pchCreationTimeStamp, ProjectPartId projectPartId) = 0;
|
virtual void updatePchCreationTimeStamp(long long pchCreationTimeStamp, ProjectPartId projectPartId) = 0;
|
||||||
|
virtual FilePathIds fetchSources(ProjectPartId projectPartId) const = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
~BuildDependenciesStorageInterface() = default;
|
~BuildDependenciesStorageInterface() = default;
|
||||||
|
@@ -144,6 +144,8 @@ void SymbolIndexer::updateProjectPart(ProjectPartContainer &&projectPart)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_pathWatcher.updateIdPaths(
|
||||||
|
{{projectPartId, m_buildDependencyStorage.fetchSources(projectPartId)}});
|
||||||
m_symbolIndexerTaskQueue.addOrUpdateTasks(std::move(symbolIndexerTask));
|
m_symbolIndexerTaskQueue.addOrUpdateTasks(std::move(symbolIndexerTask));
|
||||||
m_symbolIndexerTaskQueue.processEntries();
|
m_symbolIndexerTaskQueue.processEntries();
|
||||||
}
|
}
|
||||||
|
@@ -70,6 +70,7 @@ protected:
|
|||||||
MockSqliteWriteStatement &updatePchCreationTimeStampStatement = storage.updatePchCreationTimeStampStatement;
|
MockSqliteWriteStatement &updatePchCreationTimeStampStatement = storage.updatePchCreationTimeStampStatement;
|
||||||
MockSqliteWriteStatement &deleteAllProjectPartsFilesWithProjectPartNameStatement
|
MockSqliteWriteStatement &deleteAllProjectPartsFilesWithProjectPartNameStatement
|
||||||
= storage.deleteAllProjectPartsFilesWithProjectPartNameStatement;
|
= storage.deleteAllProjectPartsFilesWithProjectPartNameStatement;
|
||||||
|
MockSqliteReadStatement &fetchProjectPartsFilesStatement = storage.fetchProjectPartsFilesStatement;
|
||||||
};
|
};
|
||||||
|
|
||||||
TEST_F(BuildDependenciesStorage, ConvertStringsToJson)
|
TEST_F(BuildDependenciesStorage, ConvertStringsToJson)
|
||||||
@@ -232,5 +233,13 @@ TEST_F(BuildDependenciesStorage, FetchUsedMacros)
|
|||||||
ASSERT_THAT(usedMacros, result);
|
ASSERT_THAT(usedMacros, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
TEST_F(BuildDependenciesStorage, FetchSources)
|
||||||
|
{
|
||||||
|
ClangBackEnd::FilePathIds result{3, 5, 7};
|
||||||
|
EXPECT_CALL(fetchProjectPartsFilesStatement, valuesReturnFilePathIds(_, 22)).WillOnce(Return(result));
|
||||||
|
|
||||||
|
auto sources = storage.fetchSources(22);
|
||||||
|
|
||||||
|
ASSERT_THAT(sources, result);
|
||||||
|
}
|
||||||
|
} // namespace
|
||||||
|
@@ -51,5 +51,7 @@ public:
|
|||||||
ClangBackEnd::ProjectPartId(Utils::SmallStringView projectPartName));
|
ClangBackEnd::ProjectPartId(Utils::SmallStringView projectPartName));
|
||||||
MOCK_METHOD2(updatePchCreationTimeStamp,
|
MOCK_METHOD2(updatePchCreationTimeStamp,
|
||||||
void(long long pchCreationTimeStamp, ClangBackEnd::ProjectPartId projectPartId));
|
void(long long pchCreationTimeStamp, ClangBackEnd::ProjectPartId projectPartId));
|
||||||
|
MOCK_CONST_METHOD1(fetchSources,
|
||||||
|
ClangBackEnd::FilePathIds(ClangBackEnd::ProjectPartId projectPartId));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -922,6 +922,21 @@ TEST_F(SymbolIndexer, DependentSourceAreUpToDate)
|
|||||||
indexer.updateProjectParts({projectPart1});
|
indexer.updateProjectParts({projectPart1});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(SymbolIndexer, SourcesAreWatched)
|
||||||
|
{
|
||||||
|
using ClangBackEnd::IdPaths;
|
||||||
|
InSequence s;
|
||||||
|
FilePathIds sourcePathIds{4, 6, 8};
|
||||||
|
|
||||||
|
EXPECT_CALL(mockBuildDependenciesStorage, fetchSources(projectPart1.projectPartId))
|
||||||
|
.WillOnce(Return(sourcePathIds));
|
||||||
|
EXPECT_CALL(mockPathWatcher,
|
||||||
|
updateIdPaths(ElementsAre(AllOf(Field(&IdPaths::id, projectPart1.projectPartId),
|
||||||
|
Field(&IdPaths::filePathIds, sourcePathIds)))));
|
||||||
|
|
||||||
|
indexer.updateProjectParts({projectPart1});
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(SymbolIndexer, CallSetNotifier)
|
TEST_F(SymbolIndexer, CallSetNotifier)
|
||||||
{
|
{
|
||||||
EXPECT_CALL(mockPathWatcher, setNotifier(_));
|
EXPECT_CALL(mockPathWatcher, setNotifier(_));
|
||||||
|
Reference in New Issue
Block a user