diff --git a/src/plugins/clangtools/clangtool.cpp b/src/plugins/clangtools/clangtool.cpp index 448f8fbfdfe..c889bd8c34d 100644 --- a/src/plugins/clangtools/clangtool.cpp +++ b/src/plugins/clangtools/clangtool.cpp @@ -762,14 +762,12 @@ Group ClangTool::runRecipe(const RunSettings &runSettings, if (!diagnosticConfig.isEnabled(tool) && !runSettings.hasConfigFileForSourceFile(unit.file)) continue; - const auto setupHandler = [this, unit, tool] { + const auto setupHandler = [this, tool](const AnalyzeUnit &unit) { const QString filePath = unit.file.toUserOutput(); m_runControl->postMessage(Tr::tr("Analyzing \"%1\" [%2].") .arg(filePath, clangToolName(tool)), StdOutFormat); return true; }; - const AnalyzeInputData input{tool, runSettings, diagnosticConfig, tempDir->path(), - environment, unit}; const auto outputHandler = [this, runSettings](const AnalyzeOutputData &output) { if (!output.success) { qCDebug(LOG).noquote() << "Clang tool task finished with an error:" @@ -799,6 +797,8 @@ Group ClangTool::runRecipe(const RunSettings &runSettings, } updateForCurrentState(); }; + const AnalyzeInputData input{tool, runSettings, diagnosticConfig, tempDir->path(), + environment, unit}; tasks.append(clangToolTask(input, setupHandler, outputHandler)); } taskTree.setRecipe(tasks); diff --git a/src/plugins/clangtools/clangtoolrunner.cpp b/src/plugins/clangtools/clangtoolrunner.cpp index dda4c80b4a4..3d415d862c3 100644 --- a/src/plugins/clangtools/clangtoolrunner.cpp +++ b/src/plugins/clangtools/clangtoolrunner.cpp @@ -131,7 +131,7 @@ GroupItem clangToolTask(const AnalyzeInputData &input, }; const auto onSetup = [storage, input, setupHandler] { - if (setupHandler && !setupHandler()) + if (setupHandler && !setupHandler(input.unit)) return SetupResult::StopWithError; ClangToolStorage *data = storage.activeStorage(); diff --git a/src/plugins/clangtools/clangtoolrunner.h b/src/plugins/clangtools/clangtoolrunner.h index ab4039c92c8..cf77107e71d 100644 --- a/src/plugins/clangtools/clangtoolrunner.h +++ b/src/plugins/clangtools/clangtoolrunner.h @@ -51,7 +51,7 @@ struct AnalyzeOutputData QString errorDetails = {}; }; -using AnalyzeSetupHandler = std::function; +using AnalyzeSetupHandler = std::function; using AnalyzeOutputHandler = std::function; Tasking::GroupItem clangToolTask(const AnalyzeInputData &input, diff --git a/src/plugins/clangtools/documentclangtoolrunner.cpp b/src/plugins/clangtools/documentclangtoolrunner.cpp index c5dd3c8db6a..eee5206f46f 100644 --- a/src/plugins/clangtools/documentclangtoolrunner.cpp +++ b/src/plugins/clangtools/documentclangtoolrunner.cpp @@ -212,7 +212,7 @@ void DocumentClangToolRunner::run() unit, vfso().overlayFilePath().toString(), diagnosticFilter}; - const auto setupHandler = [this, executable] { + const auto setupHandler = [this, executable](const AnalyzeUnit &) { return !m_document->isModified() || isVFSOverlaySupported(executable); }; const auto outputHandler = [this](const AnalyzeOutputData &output) { onDone(output); };