CPlusPlus: Don't double uniquify

CppDocument::includedFiles removes duplicates.
Snapshot::allIncludesForDocument also removes duplicates.
Once is enough.

This doubles test scan performance on my machine.

Change-Id: I892908cf0820cfa11854ac3d82e9175d1fc38043
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Marcus Tillmanns
2023-05-09 15:11:18 +02:00
parent c68a013a3e
commit 905d76961d
2 changed files with 10 additions and 4 deletions

View File

@@ -296,12 +296,13 @@ void Document::setLastModified(const QDateTime &lastModified)
_lastModified = lastModified;
}
FilePaths Document::includedFiles() const
FilePaths Document::includedFiles(Duplicates duplicates) const
{
FilePaths files;
for (const Include &i : std::as_const(_resolvedIncludes))
files.append(i.resolvedFileName());
FilePath::removeDuplicates(files);
if (duplicates == Duplicates::Remove)
FilePath::removeDuplicates(files);
return files;
}
@@ -771,7 +772,7 @@ QSet<FilePath> Snapshot::allIncludesForDocument(const FilePath &filePath) const
while (!files.isEmpty()) {
FilePath file = files.pop();
if (Document::Ptr doc = document(file)) {
const FilePaths includedFiles = doc->includedFiles();
const FilePaths includedFiles = doc->includedFiles(Document::Duplicates::Keep);
for (const FilePath &inc : includedFiles) {
if (!result.contains(inc)) {
result.insert(inc);