From 00daa669adf01f02803a2ba0e112966da4b5690b Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 2 Aug 2024 09:14:04 +0200 Subject: [PATCH] ProjectExplorer: Fix assert The build key is legitimately empty for CustomExecutableRunConfig. Amends 07df45cdeb0. Change-Id: Iadc992b772913599e5af0d5ea5104188707fad45 Reviewed-by: Christian Kandeler --- .../baremetal/baremetalrunconfiguration.cpp | 1 + .../customexecutablerunconfiguration.cpp | 1 + src/plugins/projectexplorer/runconfiguration.cpp | 15 +++++++++++++-- src/plugins/projectexplorer/runconfiguration.h | 3 +++ .../remotelinuxcustomrunconfiguration.cpp | 1 + 5 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/plugins/baremetal/baremetalrunconfiguration.cpp b/src/plugins/baremetal/baremetalrunconfiguration.cpp index b057ff90d82..d75c2d3d914 100644 --- a/src/plugins/baremetal/baremetalrunconfiguration.cpp +++ b/src/plugins/baremetal/baremetalrunconfiguration.cpp @@ -66,6 +66,7 @@ public: setDefaultDisplayName(RunConfigurationFactory::decoratedTargetName( Tr::tr("Custom Executable"), target)); + setUsesEmptyBuildKeys(); } public: diff --git a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp index 12bc39a7c4d..1ed87420307 100644 --- a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp +++ b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp @@ -42,6 +42,7 @@ CustomExecutableRunConfiguration::CustomExecutableRunConfiguration(Target *targe }); setDefaultDisplayName(defaultDisplayName()); + setUsesEmptyBuildKeys(); } bool CustomExecutableRunConfiguration::isEnabled(Id) const diff --git a/src/plugins/projectexplorer/runconfiguration.cpp b/src/plugins/projectexplorer/runconfiguration.cpp index d9af00a608a..f5b858d141d 100644 --- a/src/plugins/projectexplorer/runconfiguration.cpp +++ b/src/plugins/projectexplorer/runconfiguration.cpp @@ -311,7 +311,13 @@ void RunConfiguration::toMap(Store &map) const void RunConfiguration::toMapSimple(Store &map) const { ProjectConfiguration::toMap(map); - QTC_CHECK(!m_buildKey.isEmpty()); + + if (m_usesEmptyBuildKeys) { + QTC_CHECK(m_buildKey.isEmpty()); + } else { + QTC_CHECK(!m_buildKey.isEmpty()); + } + map.insert(BUILD_KEY, m_buildKey); } @@ -372,7 +378,12 @@ void RunConfiguration::fromMap(const Store &map) m_customized = m_customized || map.value(CUSTOMIZED_KEY, false).toBool(); m_buildKey = map.value(BUILD_KEY).toString(); - QTC_CHECK(!m_buildKey.isEmpty()); + + if (m_usesEmptyBuildKeys) { + QTC_CHECK(m_buildKey.isEmpty()); + } else { + QTC_CHECK(!m_buildKey.isEmpty()); + } } /*! diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h index 39ab9dc0e0b..113bc54426b 100644 --- a/src/plugins/projectexplorer/runconfiguration.h +++ b/src/plugins/projectexplorer/runconfiguration.h @@ -185,6 +185,8 @@ protected: Task createConfigurationIssue(const QString &description) const; + void setUsesEmptyBuildKeys() { m_usesEmptyBuildKeys = true; } + private: // Any additional data should be handled by aspects. void fromMap(const Utils::Store &map) final; @@ -204,6 +206,7 @@ private: Utils::MacroExpander m_expander; Utils::Store m_pristineState; bool m_customized = false; + bool m_usesEmptyBuildKeys = false; }; class RunConfigurationCreationInfo diff --git a/src/plugins/remotelinux/remotelinuxcustomrunconfiguration.cpp b/src/plugins/remotelinux/remotelinuxcustomrunconfiguration.cpp index 327bc55416c..74032bc15ed 100644 --- a/src/plugins/remotelinux/remotelinuxcustomrunconfiguration.cpp +++ b/src/plugins/remotelinux/remotelinuxcustomrunconfiguration.cpp @@ -61,6 +61,7 @@ RemoteLinuxCustomRunConfiguration::RemoteLinuxCustomRunConfiguration(Target *tar x11Forwarding.setMacroExpander(macroExpander()); setDefaultDisplayName(runConfigDefaultDisplayName()); + setUsesEmptyBuildKeys(); } QString RemoteLinuxCustomRunConfiguration::runConfigDefaultDisplayName()