aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJarek Kobus <[email protected]>2024-01-12 22:33:16 +0100
committerJarek Kobus <[email protected]>2024-01-15 14:16:18 +0000
commit89e446fb4dd9fad8d10699ce4d22cbcbf92b16de (patch)
tree28fc15ff9c8cf174b3c78013f8ba0576cc8f3b15
parent27471f6c550d1274f5a7cf6c7072efc10172171c (diff)
ClangTool: Pass AnalyzeUnit to clang setup handler
Change-Id: I4cfbe5c241fcf8d42e5ad597db1dd84bff439ec4 Reviewed-by: <[email protected]> Reviewed-by: Christian Kandeler <[email protected]>
-rw-r--r--src/plugins/clangtools/clangtool.cpp6
-rw-r--r--src/plugins/clangtools/clangtoolrunner.cpp2
-rw-r--r--src/plugins/clangtools/clangtoolrunner.h2
-rw-r--r--src/plugins/clangtools/documentclangtoolrunner.cpp2
4 files changed, 6 insertions, 6 deletions
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<bool()>;
+using AnalyzeSetupHandler = std::function<bool(const AnalyzeUnit &)>;
using AnalyzeOutputHandler = std::function<void(const AnalyzeOutputData &)>;
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); };