diff --git a/src/plugins/projectexplorer/kitinformation.cpp b/src/plugins/projectexplorer/kitinformation.cpp index 1f9b7b6e6ac..7752c1b8f9d 100644 --- a/src/plugins/projectexplorer/kitinformation.cpp +++ b/src/plugins/projectexplorer/kitinformation.cpp @@ -239,6 +239,20 @@ void ToolChainKitInformation::upgrade(Kit *k) k->setSticky(ToolChainKitInformation::id(), k->isSticky(oldIdV2)); } } + + // upgrade 4.3-temporary-master-state to 4.3: + { + const QVariantMap valueMap = k->value(ToolChainKitInformation::id()).toMap(); + QVariantMap result; + for (const QString &key : valueMap.keys()) { + const int pos = key.lastIndexOf('.'); + if (pos >= 0) + result.insert(key.mid(pos + 1), valueMap.value(key)); + else + result.insert(key, valueMap.value(key)); + } + k->setValue(ToolChainKitInformation::id(), result); + } } void ToolChainKitInformation::fix(Kit *k) diff --git a/src/plugins/projectexplorer/projectexplorerconstants.h b/src/plugins/projectexplorer/projectexplorerconstants.h index 3adae9ef025..dab1f51f25c 100644 --- a/src/plugins/projectexplorer/projectexplorerconstants.h +++ b/src/plugins/projectexplorer/projectexplorerconstants.h @@ -210,8 +210,10 @@ const char BUILDSTEPS_DEPLOY[] = "ProjectExplorer.BuildSteps.Deploy"; const char DEFAULT_DEPLOYCONFIGURATION_ID[] = "ProjectExplorer.DefaultDeployConfiguration"; // Language -const char C_LANGUAGE_ID[] = "ProjectExplorer.Language.C"; -const char CXX_LANGUAGE_ID[] = "ProjectExplorer.Language.Cxx"; + +// Keep these short: These constants are exposed to the MacroExplorer! +const char C_LANGUAGE_ID[] = "C"; +const char CXX_LANGUAGE_ID[] = "Cxx"; // ToolChain TypeIds const char CLANG_TOOLCHAIN_TYPEID[] = "ProjectExplorer.ToolChain.Clang"; diff --git a/src/plugins/projectexplorer/toolchain.cpp b/src/plugins/projectexplorer/toolchain.cpp index 0d72beb187a..7e867b0c472 100644 --- a/src/plugins/projectexplorer/toolchain.cpp +++ b/src/plugins/projectexplorer/toolchain.cpp @@ -262,10 +262,18 @@ bool ToolChain::fromMap(const QVariantMap &data) const bool autoDetect = data.value(QLatin1String(AUTODETECT_KEY), false).toBool(); d->m_detection = autoDetect ? AutoDetectionFromSettings : ManualDetection; - if (data.contains(LANGUAGE_KEY_V2)) - d->m_language = Core::Id::fromSetting(data.value(QLatin1String(LANGUAGE_KEY_V2))); - else if (data.contains(LANGUAGE_KEY_V1)) // Import from old settings + if (data.contains(LANGUAGE_KEY_V2)) { + // remove hack to trim language id in 4.4: This is to fix up broken language + // ids that happened in 4.3 master branch + const QString langId = data.value(QLatin1String(LANGUAGE_KEY_V2)).toString(); + const int pos = langId.lastIndexOf('.'); + if (pos >= 0) + d->m_language = Core::Id::fromString(langId.mid(pos + 1)); + else + d->m_language = Core::Id::fromString(langId); + } else if (data.contains(LANGUAGE_KEY_V1)) { // Import from old settings d->m_language = Internal::fromLanguageV1(data.value(QLatin1String(LANGUAGE_KEY_V1)).toInt()); + } if (!d->m_language.isValid()) d->m_language = Core::Id(Constants::CXX_LANGUAGE_ID);