ClangCodeModel: Use Utils::runAsync instead of QtConcurrent::run

That works the same with Qt 5 and Qt 6.

This reverts commit c1fcaa2877.

Change-Id: I603e50c793c2477454253a57bfe01eb25ecab6e3
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Eike Ziller
2022-05-12 11:08:06 +02:00
parent 35963fd2b8
commit ff83642681
4 changed files with 17 additions and 18 deletions

View File

@@ -35,6 +35,8 @@
# include "test/clangfixittest.h" # include "test/clangfixittest.h"
#endif #endif
#include <utils/runextensions.h>
#include <coreplugin/actionmanager/actioncontainer.h> #include <coreplugin/actionmanager/actioncontainer.h>
#include <coreplugin/actionmanager/actionmanager.h> #include <coreplugin/actionmanager/actionmanager.h>
#include <coreplugin/messagemanager.h> #include <coreplugin/messagemanager.h>
@@ -51,8 +53,6 @@
#include <texteditor/textmark.h> #include <texteditor/textmark.h>
#include <QtConcurrent>
using namespace Utils; using namespace Utils;
namespace ClangCodeModel { namespace ClangCodeModel {
@@ -83,11 +83,11 @@ void ClangCodeModelPlugin::generateCompilationDB()
const CppEditor::ClangDiagnosticConfig warningsConfig const CppEditor::ClangDiagnosticConfig warningsConfig
= warningsConfigForProject(target->project()); = warningsConfigForProject(target->project());
QFuture<GenerateCompilationDbResult> task QFuture<GenerateCompilationDbResult> task
= QtConcurrent::run(&Internal::generateCompilationDB, projectInfo, = Utils::runAsync(&Internal::generateCompilationDB, projectInfo,
projectInfo->buildRoot(), CompilationDbPurpose::Project, projectInfo->buildRoot(), CompilationDbPurpose::Project,
qMakePair(warningsConfig, warningsConfig,
optionsForProject(target->project(), warningsConfig)), optionsForProject(target->project(), warningsConfig),
FilePath()); FilePath());
Core::ProgressManager::addTask(task, tr("Generating Compilation DB"), "generate compilation db"); Core::ProgressManager::addTask(task, tr("Generating Compilation DB"), "generate compilation db");
m_generatorWatcher.setFuture(task); m_generatorWatcher.setFuture(task);
} }

View File

@@ -415,8 +415,7 @@ void ClangModelManagerSupport::updateLanguageClient(
const ClangDiagnosticConfig warningsConfig = warningsConfigForProject(project); const ClangDiagnosticConfig warningsConfig = warningsConfigForProject(project);
auto future = Utils::runAsync(&Internal::generateCompilationDB, projectInfo, jsonDbDir, auto future = Utils::runAsync(&Internal::generateCompilationDB, projectInfo, jsonDbDir,
CompilationDbPurpose::CodeModel, CompilationDbPurpose::CodeModel,
qMakePair(warningsConfig, warningsConfig, optionsForProject(project, warningsConfig),
optionsForProject(project, warningsConfig)),
includeDir); includeDir);
generatorWatcher->setFuture(future); generatorWatcher->setFuture(future);
m_generatorSynchronizer.addFuture(future); m_generatorSynchronizer.addFuture(future);

View File

@@ -168,12 +168,12 @@ static QJsonObject createFileObject(const FilePath &buildDir,
return fileObject; return fileObject;
} }
GenerateCompilationDbResult generateCompilationDB( GenerateCompilationDbResult generateCompilationDB(const CppEditor::ProjectInfo::ConstPtr projectInfo,
const CppEditor::ProjectInfo::ConstPtr projectInfo, const Utils::FilePath &baseDir,
const Utils::FilePath &baseDir, CompilationDbPurpose purpose,
CompilationDbPurpose purpose, const ClangDiagnosticConfig &warningsConfig,
const QPair<ClangDiagnosticConfig, QStringList> &configAndOptions, const QStringList &projectOptions,
const FilePath &clangIncludeDir) const FilePath &clangIncludeDir)
{ {
QTC_ASSERT(!baseDir.isEmpty(), return GenerateCompilationDbResult(QString(), QTC_ASSERT(!baseDir.isEmpty(), return GenerateCompilationDbResult(QString(),
QCoreApplication::translate("ClangUtils", "Could not retrieve build directory."))); QCoreApplication::translate("ClangUtils", "Could not retrieve build directory.")));
@@ -190,11 +190,11 @@ GenerateCompilationDbResult generateCompilationDB(
compileCommandsFile.write("["); compileCommandsFile.write("[");
const UsePrecompiledHeaders usePch = getPchUsage(); const UsePrecompiledHeaders usePch = getPchUsage();
const QJsonArray jsonProjectOptions = QJsonArray::fromStringList(configAndOptions.second); const QJsonArray jsonProjectOptions = QJsonArray::fromStringList(projectOptions);
for (ProjectPart::ConstPtr projectPart : projectInfo->projectParts()) { for (ProjectPart::ConstPtr projectPart : projectInfo->projectParts()) {
QStringList args; QStringList args;
const CompilerOptionsBuilder optionsBuilder = clangOptionsBuilder( const CompilerOptionsBuilder optionsBuilder = clangOptionsBuilder(
*projectPart, configAndOptions.first, clangIncludeDir); *projectPart, warningsConfig, clangIncludeDir);
QJsonArray ppOptions; QJsonArray ppOptions;
if (purpose == CompilationDbPurpose::Project) { if (purpose == CompilationDbPurpose::Project) {
args = projectPartArguments(*projectPart); args = projectPartArguments(*projectPart);

View File

@@ -90,7 +90,7 @@ public:
enum class CompilationDbPurpose { Project, CodeModel }; enum class CompilationDbPurpose { Project, CodeModel };
GenerateCompilationDbResult generateCompilationDB(const CppEditor::ProjectInfo::ConstPtr projectInfo, GenerateCompilationDbResult generateCompilationDB(const CppEditor::ProjectInfo::ConstPtr projectInfo,
const Utils::FilePath &baseDir, CompilationDbPurpose purpose, const Utils::FilePath &baseDir, CompilationDbPurpose purpose,
const QPair<CppEditor::ClangDiagnosticConfig, QStringList> &configAndOptions, const CppEditor::ClangDiagnosticConfig &warningsConfig, const QStringList &projectOptions,
const Utils::FilePath &clangIncludeDir); const Utils::FilePath &clangIncludeDir);
class DiagnosticTextInfo class DiagnosticTextInfo