From abfc4c1b37d18515c8da0678a665886d7cb69af5 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 6 Mar 2018 18:17:04 +0100 Subject: Fix exports from multiplexed products While we did set up the dependencies between multiplexed products correctly, the *module* (i.e. Export item) that we pulled in was always the same one and corresponded to the wrong product variant in most cases. Change-Id: If42cf7e946689259c7433d81fd35d8798919eb15 Reviewed-by: Joerg Bornemann --- src/lib/corelib/language/moduleloader.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/lib/corelib/language/moduleloader.h') diff --git a/src/lib/corelib/language/moduleloader.h b/src/lib/corelib/language/moduleloader.h index 8eafb54da..7573acb3e 100644 --- a/src/lib/corelib/language/moduleloader.h +++ b/src/lib/corelib/language/moduleloader.h @@ -188,6 +188,7 @@ private: struct ProductModuleInfo { Item *exportItem = nullptr; + QString multiplexId; QVariantMap defaultParameters; }; @@ -199,7 +200,7 @@ private: ~TopLevelProjectContext() { qDeleteAll(projects); } std::vector projects; - QHash productModules; + QMultiHash productModules; QList probes; QString buildDirectory; }; @@ -276,13 +277,14 @@ private: void resolveParameterDeclarations(const Item *module); QVariantMap extractParameters(Item *dependsItem) const; Item *moduleInstanceItem(Item *containerItem, const QualifiedId &moduleName); - static ProductModuleInfo *productModule(ProductContext *productContext, const QString &name); + static ProductModuleInfo *productModule(ProductContext *productContext, const QString &name, + const QString &multiplexId); static ProductContext *product(ProjectContext *projectContext, const QString &name); static ProductContext *product(TopLevelProjectContext *tlpContext, const QString &name); Item *loadModule(ProductContext *productContext, Item *exportingProductItem, Item *item, const CodeLocation &dependsItemLocation, const QString &moduleId, - const QualifiedId &moduleName, bool isRequired, bool *isProductDependency, - QVariantMap *defaultParameters); + const QualifiedId &moduleName, const QString &multiplexId, bool isRequired, + bool *isProductDependency, QVariantMap *defaultParameters); Item *searchAndLoadModuleFile(ProductContext *productContext, const CodeLocation &dependsItemLocation, const QualifiedId &moduleName, bool isRequired, Item *moduleInstance); -- cgit v1.2.3