diff --git a/src/libs/cplusplus/CppDocument.cpp b/src/libs/cplusplus/CppDocument.cpp index d28fdd50baa..07714c0fe2f 100644 --- a/src/libs/cplusplus/CppDocument.cpp +++ b/src/libs/cplusplus/CppDocument.cpp @@ -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 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); diff --git a/src/libs/cplusplus/CppDocument.h b/src/libs/cplusplus/CppDocument.h index 679663f2d99..00bebf277d9 100644 --- a/src/libs/cplusplus/CppDocument.h +++ b/src/libs/cplusplus/CppDocument.h @@ -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 &resolvedIncludes() const