aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2016-11-15 09:22:53 +0100
committerhjk <hjk@qt.io>2016-11-16 08:37:35 +0000
commit80b2a4f1ba6591c68101438f9cd6d62c6e737a14 (patch)
treea174c506fac5054673cb7dc478f6c9226752819d
parent5b058ebb34b035f71081921e5c76b09b401fc45a (diff)
Debugger: Expose DebuggerKitInformation::ConfigurationErrors
... to allow more fine-grained decision making for kit choosers. Change-Id: I9a4e97f7b4f4b074e1c764f6b134c15e2896dc79 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r--src/plugins/debugger/debuggerdialogs.cpp4
-rw-r--r--src/plugins/debugger/debuggerkitinformation.cpp21
-rw-r--r--src/plugins/debugger/debuggerkitinformation.h13
-rw-r--r--src/plugins/debugger/debuggerplugin.cpp6
4 files changed, 21 insertions, 23 deletions
diff --git a/src/plugins/debugger/debuggerdialogs.cpp b/src/plugins/debugger/debuggerdialogs.cpp
index 416c27eacc..d950a26b3f 100644
--- a/src/plugins/debugger/debuggerdialogs.cpp
+++ b/src/plugins/debugger/debuggerdialogs.cpp
@@ -107,7 +107,7 @@ DebuggerKitChooser::DebuggerKitChooser(Mode mode, QWidget *parent)
{
setKitMatcher([this](const Kit *k) {
// Match valid debuggers and restrict local debugging to compatible toolchains.
- if (!DebuggerKitInformation::isValidDebugger(k))
+ if (DebuggerKitInformation::configurationErrors(k))
return false;
if (m_mode == LocalDebugging)
return ToolChainKitInformation::targetAbi(k).os() == m_hostAbi.os();
@@ -223,7 +223,7 @@ StartApplicationDialog::StartApplicationDialog(QWidget *parent)
d->kitChooser = new KitChooser(this);
d->kitChooser->setKitMatcher([this](const Kit *k) {
- return DebuggerKitInformation::isValidDebugger(k);
+ return !DebuggerKitInformation::configurationErrors(k);
});
d->kitChooser->populate();
diff --git a/src/plugins/debugger/debuggerkitinformation.cpp b/src/plugins/debugger/debuggerkitinformation.cpp
index 6aaaa4074c..115e630dfb 100644
--- a/src/plugins/debugger/debuggerkitinformation.cpp
+++ b/src/plugins/debugger/debuggerkitinformation.cpp
@@ -191,15 +191,7 @@ void DebuggerKitInformation::fix(Kit *k)
// Check the configuration errors and return a flag mask. Provide a quick check and
// a verbose one with a list of errors.
-enum DebuggerConfigurationErrors {
- NoDebugger = 0x1,
- DebuggerNotFound = 0x2,
- DebuggerNotExecutable = 0x4,
- DebuggerNeedsAbsolutePath = 0x8,
- DebuggerDoesNotMatch = 0x10
-};
-
-static unsigned debuggerConfigurationErrors(const Kit *k)
+DebuggerKitInformation::ConfigurationErrors DebuggerKitInformation::configurationErrors(const Kit *k)
{
QTC_ASSERT(k, return NoDebugger);
@@ -210,7 +202,7 @@ static unsigned debuggerConfigurationErrors(const Kit *k)
if (item->command().isEmpty())
return NoDebugger;
- unsigned result = 0;
+ ConfigurationErrors result = NoConfigurationError;
const QFileInfo fi = item->command().toFileInfo();
if (!fi.exists() || fi.isDir())
result |= DebuggerNotFound;
@@ -257,17 +249,12 @@ StandardRunnable DebuggerKitInformation::runnable(const Kit *kit)
return runnable;
}
-bool DebuggerKitInformation::isValidDebugger(const Kit *k)
-{
- return debuggerConfigurationErrors(k) == 0;
-}
-
QList<Task> DebuggerKitInformation::validateDebugger(const Kit *k)
{
QList<Task> result;
- const unsigned errors = debuggerConfigurationErrors(k);
- if (!errors)
+ const ConfigurationErrors errors = configurationErrors(k);
+ if (errors == NoConfigurationError)
return result;
QString path;
diff --git a/src/plugins/debugger/debuggerkitinformation.h b/src/plugins/debugger/debuggerkitinformation.h
index cae68aaf5a..cbe438e3f5 100644
--- a/src/plugins/debugger/debuggerkitinformation.h
+++ b/src/plugins/debugger/debuggerkitinformation.h
@@ -52,8 +52,19 @@ public:
static const DebuggerItem *debugger(const ProjectExplorer::Kit *kit);
static ProjectExplorer::StandardRunnable runnable(const ProjectExplorer::Kit *kit);
+ enum ConfigurationError
+ {
+ NoConfigurationError = 0x0,
+ NoDebugger = 0x1,
+ DebuggerNotFound = 0x2,
+ DebuggerNotExecutable = 0x4,
+ DebuggerNeedsAbsolutePath = 0x8,
+ DebuggerDoesNotMatch = 0x10
+ };
+ Q_DECLARE_FLAGS(ConfigurationErrors, ConfigurationError)
+
static QList<ProjectExplorer::Task> validateDebugger(const ProjectExplorer::Kit *k);
- static bool isValidDebugger(const ProjectExplorer::Kit *k);
+ static ConfigurationErrors configurationErrors(const ProjectExplorer::Kit *k);
ProjectExplorer::KitConfigWidget *createConfigWidget(ProjectExplorer::Kit *k) const override;
void addToMacroExpander(ProjectExplorer::Kit *kit, Utils::MacroExpander *expander) const override;
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index bdc94011a1..6437643f51 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -583,7 +583,7 @@ static std::function<bool(const Kit *)> cdbMatcher(char wordWidth = 0)
{
return [wordWidth](const Kit *k) -> bool {
if (DebuggerKitInformation::engineType(k) != CdbEngineType
- || !DebuggerKitInformation::isValidDebugger(k)) {
+ || DebuggerKitInformation::configurationErrors(k)) {
return false;
}
if (wordWidth)
@@ -1125,13 +1125,13 @@ static Kit *guessKitFromParameters(const DebuggerRunParameters &rp)
// Try exact abis.
kit = KitManager::find(KitMatcher([abis](const Kit *k) -> bool {
const Abi tcAbi = ToolChainKitInformation::targetAbi(k);
- return abis.contains(tcAbi) && DebuggerKitInformation::isValidDebugger(k);
+ return abis.contains(tcAbi) && !DebuggerKitInformation::configurationErrors(k);
}));
if (!kit) {
// Or something compatible.
kit = KitManager::find(KitMatcher([abis](const Kit *k) -> bool {
const Abi tcAbi = ToolChainKitInformation::targetAbi(k);
- return DebuggerKitInformation::isValidDebugger(k)
+ return !DebuggerKitInformation::configurationErrors(k)
&& Utils::contains(abis, [tcAbi](const Abi &a) { return a.isCompatibleWith(tcAbi); });
}));
}