forked from qt-creator/qt-creator
CMake: Filter duplicate files from tree in tealeaf mode
Task-number: QTCREATORBUG-17955 Change-Id: Ibd19c7a0d398f3f26d63983ec024722933485513 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -309,7 +309,16 @@ void TeaLeafReader::generateProjectTree(CMakeProjectNode *root, const QList<cons
|
||||
return Utils::contains(allIncludePaths, [fn](const FileName &inc) { return fn->filePath().isChildOf(inc); });
|
||||
});
|
||||
|
||||
QList<FileNode *> fileNodes = m_files + Utils::transform(missingHeaders, [](const FileNode *fn) { return fn->clone(); });
|
||||
// filter duplicates:
|
||||
auto alreadySeen = QSet<FileName>::fromList(Utils::transform(m_files, &FileNode::filePath));
|
||||
const QList<const FileNode *> unseenMissingHeaders = Utils::filtered(missingHeaders, [&alreadySeen](const FileNode *fn) {
|
||||
const int count = alreadySeen.count();
|
||||
alreadySeen.insert(fn->filePath());
|
||||
return (alreadySeen.count() != count);
|
||||
});
|
||||
|
||||
const QList<FileNode *> fileNodes = m_files
|
||||
+ Utils::transform(unseenMissingHeaders, [](const FileNode *fn) { return fn->clone(); });
|
||||
|
||||
root->addNestedNodes(fileNodes, m_parameters.sourceDirectory);
|
||||
m_files.clear(); // Some of the FileNodes in files() were deleted!
|
||||
|
||||
Reference in New Issue
Block a user