forked from qt-creator/qt-creator
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:
@@ -296,11 +296,12 @@ 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());
|
||||
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);
|
||||
|
||||
@@ -297,7 +297,12 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
Utils::FilePaths includedFiles() const;
|
||||
enum class Duplicates {
|
||||
Remove,
|
||||
Keep,
|
||||
};
|
||||
|
||||
Utils::FilePaths includedFiles(Duplicates duplicates = Duplicates::Remove) const;
|
||||
void addIncludeFile(const Include &include);
|
||||
|
||||
const QList<Include> &resolvedIncludes() const
|
||||
|
||||
Reference in New Issue
Block a user