From 43c6e97529e571b5702b2ca04f18ab67c0d5f9e1 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Mon, 12 Dec 2016 17:13:29 +0100 Subject: [PATCH] ToolChainKitInformation: Remove setToolChain(kit, language, toolchain) Replace that with clearToolChain(kit, languguage). The only use-case for that method was to unset toolchains in a kit. Change-Id: I8cffe39393281f424fa8e044e6b90c5cea17ac90 Reviewed-by: Eike Ziller --- src/plugins/ios/iosconfigurations.cpp | 11 +++++++++-- src/plugins/projectexplorer/kitinformation.cpp | 18 +++++++++++------- src/plugins/projectexplorer/kitinformation.h | 2 +- .../kitinformationconfigwidget.cpp | 7 ++++++- src/plugins/qnx/qnxconfiguration.cpp | 2 +- 5 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/plugins/ios/iosconfigurations.cpp b/src/plugins/ios/iosconfigurations.cpp index 0a8f45f2db5..1f1c77f7e4d 100644 --- a/src/plugins/ios/iosconfigurations.cpp +++ b/src/plugins/ios/iosconfigurations.cpp @@ -186,8 +186,15 @@ static void setupKit(Kit *kit, Core::Id pDeviceType, const ToolChainPair& toolCh const QVariant &debuggerId, const Utils::FileName &sdkPath, BaseQtVersion *qtVersion) { DeviceTypeKitInformation::setDeviceTypeId(kit, pDeviceType); - ToolChainKitInformation::setToolChain(kit, ToolChain::Language::C, toolChains.first); - ToolChainKitInformation::setToolChain(kit, ToolChain::Language::Cxx, toolChains.second); + if (toolChains.first) + ToolChainKitInformation::setToolChain(kit, toolChains.first); + else + ToolChainKitInformation::clearToolChain(kit, ToolChain::Language::C); + if (toolChains.second) + ToolChainKitInformation::setToolChain(kit, toolChains.second); + else + ToolChainKitInformation::clearToolChain(kit, ToolChain::Language::Cxx); + QtKitInformation::setQtVersion(kit, qtVersion); // only replace debugger with the default one if we find an unusable one here // (since the user could have changed it) diff --git a/src/plugins/projectexplorer/kitinformation.cpp b/src/plugins/projectexplorer/kitinformation.cpp index dc147e1cd65..c2d83e974d7 100644 --- a/src/plugins/projectexplorer/kitinformation.cpp +++ b/src/plugins/projectexplorer/kitinformation.cpp @@ -226,7 +226,7 @@ void ToolChainKitInformation::fix(Kit *k) if (!toolChain(k, l)) { qWarning("No tool chain set from kit \"%s\".", qPrintable(k->displayName())); - setToolChain(k, l, nullptr); // make sure to clear out no longer known tool chains + clearToolChain(k, l); // make sure to clear out no longer known tool chains } } } @@ -256,7 +256,10 @@ void ToolChainKitInformation::setup(Kit *k) tc = Utils::findOrDefault(knownTcs, [abi, l](ToolChain *t) { return t->targetAbi().toString() == abi && t->language() == l; }); - setToolChain(k, l, tc); + if (tc) + setToolChain(k, tc); + else + clearToolChain(k, l); } } @@ -355,16 +358,17 @@ QList ToolChainKitInformation::toolChains(const Kit *k) void ToolChainKitInformation::setToolChain(Kit *k, ToolChain *tc) { QTC_ASSERT(tc, return); - setToolChain(k, tc->language(), tc); + QVariantMap result = k->value(ToolChainKitInformation::id()).toMap(); + result.insert(ToolChain::languageId(tc->language()), tc->id()); + k->setValue(id(), result); } -void ToolChainKitInformation::setToolChain(Kit *k, ToolChain::Language l, ToolChain *tc) +void ToolChainKitInformation::clearToolChain(Kit *k, ToolChain::Language l) { - if (l == ToolChain::Language::None) - return; + QTC_ASSERT(l != ToolChain::Language::None, return); QVariantMap result = k->value(ToolChainKitInformation::id()).toMap(); - result.insert(ToolChain::languageId(l), tc ? tc->id() : QByteArray()); + result.insert(ToolChain::languageId(l), QByteArray()); k->setValue(id(), result); } diff --git a/src/plugins/projectexplorer/kitinformation.h b/src/plugins/projectexplorer/kitinformation.h index 07f5e4d83c5..14d46c719cf 100644 --- a/src/plugins/projectexplorer/kitinformation.h +++ b/src/plugins/projectexplorer/kitinformation.h @@ -97,7 +97,7 @@ public: static ToolChain *toolChain(const Kit *k, ToolChain::Language l); static QList toolChains(const Kit *k); static void setToolChain(Kit *k, ToolChain *tc); - static void setToolChain(Kit *k, ToolChain::Language l, ToolChain *tc); + static void clearToolChain(Kit *k, ToolChain::Language l); static Abi targetAbi(const Kit *k); static QString msgNoToolChainInTarget(); diff --git a/src/plugins/projectexplorer/kitinformationconfigwidget.cpp b/src/plugins/projectexplorer/kitinformationconfigwidget.cpp index 870874b1b56..b0faff0dd47 100644 --- a/src/plugins/projectexplorer/kitinformationconfigwidget.cpp +++ b/src/plugins/projectexplorer/kitinformationconfigwidget.cpp @@ -236,7 +236,12 @@ void ToolChainInformationConfigWidget::currentToolChainChanged(ToolChain::Langua return; const QByteArray id = m_languageComboboxMap.value(l)->itemData(idx).toByteArray(); - ToolChainKitInformation::setToolChain(m_kit, l, ToolChainManager::findToolChain(id)); + ToolChain *tc = ToolChainManager::findToolChain(id); + QTC_ASSERT(!tc || tc->language() == l, return); + if (tc) + ToolChainKitInformation::setToolChain(m_kit, tc); + else + ToolChainKitInformation::clearToolChain(m_kit, l); } int ToolChainInformationConfigWidget::indexOf(QComboBox *cb, const ToolChain *tc) diff --git a/src/plugins/qnx/qnxconfiguration.cpp b/src/plugins/qnx/qnxconfiguration.cpp index c0b20989467..ebe4c38d4b5 100644 --- a/src/plugins/qnx/qnxconfiguration.cpp +++ b/src/plugins/qnx/qnxconfiguration.cpp @@ -318,7 +318,7 @@ Kit *QnxConfiguration::createKit(QnxArchitecture arch, QtKitInformation::setQtVersion(kit, qnxQt); ToolChainKitInformation::setToolChain(kit, toolChain); - ToolChainKitInformation::setToolChain(kit, ToolChain::Language::C, nullptr); + ToolChainKitInformation::clearToolChain(kit, ToolChain::Language::C); if (debuggerItemId.isValid()) DebuggerKitInformation::setDebugger(kit, debuggerItemId);