diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index e42732c4b51..6988cdb8825 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -527,11 +527,9 @@ void CMakeBuildSystem::clearCMakeCache() } std::unique_ptr CMakeBuildSystem::generateProjectTree( - const TreeScanner::Result &allFiles, bool includeHeaderNodes) + const TreeScanner::Result &allFiles, bool failedToParse) { - QString errorMessage; - auto root = m_reader.generateProjectTree(allFiles, errorMessage, includeHeaderNodes); - checkAndReportError(errorMessage); + auto root = m_reader.generateProjectTree(allFiles, failedToParse); return root; } @@ -604,7 +602,7 @@ void CMakeBuildSystem::updateProjectData() Project *p = project(); { - auto newRoot = generateProjectTree(m_allFiles, true); + auto newRoot = generateProjectTree(m_allFiles, false); if (newRoot) { setRootProjectNode(std::move(newRoot)); @@ -703,7 +701,7 @@ void CMakeBuildSystem::updateFallbackProjectData() QTC_ASSERT(m_treeScanner.isFinished() && !m_reader.isParsing(), return ); - auto newRoot = generateProjectTree(m_allFiles, false); + auto newRoot = generateProjectTree(m_allFiles, true); setRootProjectNode(std::move(newRoot)); qCDebug(cmakeBuildSystemLog) << "All fallback CMake project data up to date."; diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.h b/src/plugins/cmakeprojectmanager/cmakebuildsystem.h index 95d31367d81..c722ee172f0 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.h @@ -133,7 +133,7 @@ private: void combineScanAndParse(); std::unique_ptr generateProjectTree( - const ProjectExplorer::TreeScanner::Result &allFiles, bool includeHeadersNode); + const ProjectExplorer::TreeScanner::Result &allFiles, bool failedToParse); void checkAndReportError(QString &errorMessage); void updateCMakeConfiguration(QString &errorMessage); diff --git a/src/plugins/cmakeprojectmanager/fileapireader.cpp b/src/plugins/cmakeprojectmanager/fileapireader.cpp index 09aa375bd24..b7da82f568a 100644 --- a/src/plugins/cmakeprojectmanager/fileapireader.cpp +++ b/src/plugins/cmakeprojectmanager/fileapireader.cpp @@ -217,16 +217,13 @@ bool FileApiReader::usesAllCapsTargets() const } std::unique_ptr FileApiReader::generateProjectTree( - const ProjectExplorer::TreeScanner::Result &allFiles, - QString &errorMessage, - bool includeHeaderNodes) + const ProjectExplorer::TreeScanner::Result &allFiles, bool failedToParse) { - Q_UNUSED(errorMessage) - - if (includeHeaderNodes) { + if (failedToParse) + addFileSystemNodes(m_rootProjectNode.get(), allFiles.folderNode); + else addHeaderNodes(m_rootProjectNode.get(), m_knownHeaders, allFiles.allFiles); - } - addFileSystemNodes(m_rootProjectNode.get(), allFiles.folderNode); + return std::exchange(m_rootProjectNode, {}); } diff --git a/src/plugins/cmakeprojectmanager/fileapireader.h b/src/plugins/cmakeprojectmanager/fileapireader.h index 4e447966990..30cdae42679 100644 --- a/src/plugins/cmakeprojectmanager/fileapireader.h +++ b/src/plugins/cmakeprojectmanager/fileapireader.h @@ -72,9 +72,7 @@ public: CMakeConfig takeParsedConfiguration(QString &errorMessage); QString ctestPath() const; std::unique_ptr generateProjectTree( - const ProjectExplorer::TreeScanner::Result &allFiles, - QString &errorMessage, - bool includeHeaderNodes); + const ProjectExplorer::TreeScanner::Result &allFiles, bool failedToParse); ProjectExplorer::RawProjectParts createRawProjectParts(QString &errorMessage); bool isMultiConfig() const;