aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/lib/corelib/api/internaljobs.cpp5
-rw-r--r--src/lib/corelib/language/language.cpp11
-rw-r--r--src/lib/corelib/language/language.h2
3 files changed, 15 insertions, 3 deletions
diff --git a/src/lib/corelib/api/internaljobs.cpp b/src/lib/corelib/api/internaljobs.cpp
index 4d06821fd..f07927c71 100644
--- a/src/lib/corelib/api/internaljobs.cpp
+++ b/src/lib/corelib/api/internaljobs.cpp
@@ -268,8 +268,11 @@ void InternalSetupProjectJob::start()
deleteLocker = true;
}
execute();
- if (m_existingProject)
+ if (m_existingProject) {
+ if (m_existingProject != m_newProject)
+ m_existingProject->makeModuleProvidersNonTransient();
m_existingProject->bgLocker = nullptr;
+ }
m_newProject->bgLocker = bgLocker;
deleteLocker = false;
} catch (const ErrorInfo &error) {
diff --git a/src/lib/corelib/language/language.cpp b/src/lib/corelib/language/language.cpp
index 239eddf1f..f21f724f1 100644
--- a/src/lib/corelib/language/language.cpp
+++ b/src/lib/corelib/language/language.cpp
@@ -622,6 +622,12 @@ QString TopLevelProject::profile() const
return projectProperties().value(StringConstants::profileProperty()).toString();
}
+void TopLevelProject::makeModuleProvidersNonTransient()
+{
+ for (ModuleProviderInfo &m : moduleProviderInfo)
+ m.transientOutput = false;
+}
+
QString TopLevelProject::buildGraphFilePath() const
{
return ProjectBuildData::deriveBuildGraphFilePath(buildDirectory, id());
@@ -637,8 +643,9 @@ void TopLevelProject::store(Logger logger)
qCDebug(lcBuildGraph) << "build graph is unchanged in project" << id();
return;
}
- for (ModuleProviderInfo &m : moduleProviderInfo)
- m.transientOutput = false;
+
+ makeModuleProvidersNonTransient();
+
const QString fileName = buildGraphFilePath();
qCDebug(lcBuildGraph) << "storing:" << fileName;
PersistentPool pool(logger);
diff --git a/src/lib/corelib/language/language.h b/src/lib/corelib/language/language.h
index 82d9f94a2..297fedf1c 100644
--- a/src/lib/corelib/language/language.h
+++ b/src/lib/corelib/language/language.h
@@ -711,6 +711,8 @@ public:
const QVariantMap &buildConfiguration() const { return m_buildConfiguration; }
QString id() const { return m_id; }
QString profile() const;
+ void makeModuleProvidersNonTransient();
+
QVariantMap profileConfigs;
QVariantMap overriddenValues;