diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index e0fcb4f3aec..eaded9a9683 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -522,11 +522,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; } @@ -599,7 +597,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)); @@ -698,7 +696,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 f004e9e6b4f..68a745a4dd5 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.h @@ -131,7 +131,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 43c43f296ca..eae84e18047 100644 --- a/src/plugins/cmakeprojectmanager/fileapireader.cpp +++ b/src/plugins/cmakeprojectmanager/fileapireader.cpp @@ -216,16 +216,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;