From ff83642681ae4717a9e9c81753719483fe0f17f7 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 12 May 2022 11:08:06 +0200 Subject: [PATCH] ClangCodeModel: Use Utils::runAsync instead of QtConcurrent::run That works the same with Qt 5 and Qt 6. This reverts commit c1fcaa28775240af47c62c479918d6f08e74617d. Change-Id: I603e50c793c2477454253a57bfe01eb25ecab6e3 Reviewed-by: Reviewed-by: Christian Kandeler --- .../clangcodemodel/clangcodemodelplugin.cpp | 14 +++++++------- .../clangcodemodel/clangmodelmanagersupport.cpp | 3 +-- src/plugins/clangcodemodel/clangutils.cpp | 16 ++++++++-------- src/plugins/clangcodemodel/clangutils.h | 2 +- 4 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/plugins/clangcodemodel/clangcodemodelplugin.cpp b/src/plugins/clangcodemodel/clangcodemodelplugin.cpp index 49cd18ba95f..17cd0b6ba9a 100644 --- a/src/plugins/clangcodemodel/clangcodemodelplugin.cpp +++ b/src/plugins/clangcodemodel/clangcodemodelplugin.cpp @@ -35,6 +35,8 @@ # include "test/clangfixittest.h" #endif +#include + #include #include #include @@ -51,8 +53,6 @@ #include -#include - using namespace Utils; namespace ClangCodeModel { @@ -83,11 +83,11 @@ void ClangCodeModelPlugin::generateCompilationDB() const CppEditor::ClangDiagnosticConfig warningsConfig = warningsConfigForProject(target->project()); QFuture task - = QtConcurrent::run(&Internal::generateCompilationDB, projectInfo, - projectInfo->buildRoot(), CompilationDbPurpose::Project, - qMakePair(warningsConfig, - optionsForProject(target->project(), warningsConfig)), - FilePath()); + = Utils::runAsync(&Internal::generateCompilationDB, projectInfo, + projectInfo->buildRoot(), CompilationDbPurpose::Project, + warningsConfig, + optionsForProject(target->project(), warningsConfig), + FilePath()); Core::ProgressManager::addTask(task, tr("Generating Compilation DB"), "generate compilation db"); m_generatorWatcher.setFuture(task); } diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp index 917fee3bae3..db95be93d45 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp @@ -415,8 +415,7 @@ void ClangModelManagerSupport::updateLanguageClient( const ClangDiagnosticConfig warningsConfig = warningsConfigForProject(project); auto future = Utils::runAsync(&Internal::generateCompilationDB, projectInfo, jsonDbDir, CompilationDbPurpose::CodeModel, - qMakePair(warningsConfig, - optionsForProject(project, warningsConfig)), + warningsConfig, optionsForProject(project, warningsConfig), includeDir); generatorWatcher->setFuture(future); m_generatorSynchronizer.addFuture(future); diff --git a/src/plugins/clangcodemodel/clangutils.cpp b/src/plugins/clangcodemodel/clangutils.cpp index 3016073b599..664442cced8 100644 --- a/src/plugins/clangcodemodel/clangutils.cpp +++ b/src/plugins/clangcodemodel/clangutils.cpp @@ -168,12 +168,12 @@ static QJsonObject createFileObject(const FilePath &buildDir, return fileObject; } -GenerateCompilationDbResult generateCompilationDB( - const CppEditor::ProjectInfo::ConstPtr projectInfo, - const Utils::FilePath &baseDir, - CompilationDbPurpose purpose, - const QPair &configAndOptions, - const FilePath &clangIncludeDir) +GenerateCompilationDbResult generateCompilationDB(const CppEditor::ProjectInfo::ConstPtr projectInfo, + const Utils::FilePath &baseDir, + CompilationDbPurpose purpose, + const ClangDiagnosticConfig &warningsConfig, + const QStringList &projectOptions, + const FilePath &clangIncludeDir) { QTC_ASSERT(!baseDir.isEmpty(), return GenerateCompilationDbResult(QString(), QCoreApplication::translate("ClangUtils", "Could not retrieve build directory."))); @@ -190,11 +190,11 @@ GenerateCompilationDbResult generateCompilationDB( compileCommandsFile.write("["); const UsePrecompiledHeaders usePch = getPchUsage(); - const QJsonArray jsonProjectOptions = QJsonArray::fromStringList(configAndOptions.second); + const QJsonArray jsonProjectOptions = QJsonArray::fromStringList(projectOptions); for (ProjectPart::ConstPtr projectPart : projectInfo->projectParts()) { QStringList args; const CompilerOptionsBuilder optionsBuilder = clangOptionsBuilder( - *projectPart, configAndOptions.first, clangIncludeDir); + *projectPart, warningsConfig, clangIncludeDir); QJsonArray ppOptions; if (purpose == CompilationDbPurpose::Project) { args = projectPartArguments(*projectPart); diff --git a/src/plugins/clangcodemodel/clangutils.h b/src/plugins/clangcodemodel/clangutils.h index 67e50734be9..71fa0919712 100644 --- a/src/plugins/clangcodemodel/clangutils.h +++ b/src/plugins/clangcodemodel/clangutils.h @@ -90,7 +90,7 @@ public: enum class CompilationDbPurpose { Project, CodeModel }; GenerateCompilationDbResult generateCompilationDB(const CppEditor::ProjectInfo::ConstPtr projectInfo, const Utils::FilePath &baseDir, CompilationDbPurpose purpose, - const QPair &configAndOptions, + const CppEditor::ClangDiagnosticConfig &warningsConfig, const QStringList &projectOptions, const Utils::FilePath &clangIncludeDir); class DiagnosticTextInfo