diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2018-01-05 10:33:43 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2018-01-05 10:33:59 +0100 |
commit | e1fd4f05b13292998dc8b2a3bf89369da5a062d9 (patch) | |
tree | ae5bb6d6344991f9bd0c456cbd97ab01081fc7b8 /src/lib/corelib/language | |
parent | 2b0f23a49fb63d091c635ce449545a4ec9f5e5cc (diff) | |
parent | 3bde712fa2c1f926720e85d20ae7fd5f9f378fef (diff) |
Merge 1.10 into master
Change-Id: I29a74f96381a1b77c6cb1959547314786690baa4
Diffstat (limited to 'src/lib/corelib/language')
-rw-r--r-- | src/lib/corelib/language/moduleloader.cpp | 27 | ||||
-rw-r--r-- | src/lib/corelib/language/moduleloader.h | 1 |
2 files changed, 7 insertions, 21 deletions
diff --git a/src/lib/corelib/language/moduleloader.cpp b/src/lib/corelib/language/moduleloader.cpp index f8d112165..56dda767c 100644 --- a/src/lib/corelib/language/moduleloader.cpp +++ b/src/lib/corelib/language/moduleloader.cpp @@ -1543,17 +1543,18 @@ static void mergeParameters(QVariantMap &dst, const QVariantMap &src) } } -static void adjustParametersItemTypes(Item *item) +static void adjustParametersItemTypesAndScopes(Item *item, Item *scope) { if (item->type() == ItemType::ModuleInstance) { item->setType(ItemType::ModuleParameters); + item->setScope(scope); return; } for (auto value : item->properties()) { if (value->type() != Value::ItemValueType) continue; - adjustParametersItemTypes(std::static_pointer_cast<ItemValue>(value)->item()); + adjustParametersItemTypesAndScopes(std::static_pointer_cast<ItemValue>(value)->item(), scope); } } @@ -1595,7 +1596,7 @@ void ModuleLoader::mergeExportItems(const ProductContext &productContext) filesWithExportItem += exportItem->file(); for (Item * const child : exportItem->children()) { if (child->type() == ItemType::Parameters) { - adjustParametersItemTypes(child); + adjustParametersItemTypesAndScopes(child, child); mergeParameters(pmi.defaultParameters, m_evaluator->scriptValue(child).toVariant().toMap()); } else { @@ -1998,7 +1999,7 @@ void ModuleLoader::resolveDependencies(DependsContext *dependsContext, Item *ite for (Item * const dependsItem : dependsItemPerLoadedModule) { if (dependsItem == lastDependsItem) continue; - adjustParametersItemTypes(dependsItem); + adjustParametersItemTypesAndScopes(dependsItem, dependsItem); forwardParameterDeclarations(dependsItem, loadedModules); lastDependsItem = dependsItem; } @@ -2802,6 +2803,8 @@ void ModuleLoader::instantiateModule(ProductContext *productContext, Item *expor + QLatin1Char('.') + fullName; for (Item *instance = moduleInstance; instance; instance = instance->prototype()) { overrideItemProperties(instance, generalOverrideKey, m_parameters.overriddenValuesTree()); + if (fullName == QStringLiteral("qbs")) + overrideItemProperties(instance, fullName, m_parameters.overriddenValuesTree()); overrideItemProperties(instance, perProductOverrideKey, m_parameters.overriddenValuesTree()); if (instance == deepestModuleInstance) @@ -3128,26 +3131,10 @@ void ModuleLoader::setScopeForDescendants(Item *item, Item *scope) { for (Item * const child : item->children()) { child->setScope(scope); - if (child->type() == ItemType::Depends) - forwardScopeToItemValues(child, scope); setScopeForDescendants(child, scope); } } -void ModuleLoader::forwardScopeToItemValues(Item *item, Item *scope) -{ - const auto &itemProperties = item->properties(); - for (const ValuePtr &v : itemProperties) { - if (v->type() != Value::ItemValueType) - continue; - Item *k = std::static_pointer_cast<ItemValue>(v)->item(); - if (k->type() == ItemType::ModulePrefix) - forwardScopeToItemValues(k, scope); - else - k->setScope(scope); - } -} - void ModuleLoader::overrideItemProperties(Item *item, const QString &buildConfigKey, const QVariantMap &buildConfig) { diff --git a/src/lib/corelib/language/moduleloader.h b/src/lib/corelib/language/moduleloader.h index d12944329..3dafd42de 100644 --- a/src/lib/corelib/language/moduleloader.h +++ b/src/lib/corelib/language/moduleloader.h @@ -305,7 +305,6 @@ private: static QString findExistingModulePath(const QString &searchPath, const QualifiedId &moduleName); static void setScopeForDescendants(Item *item, Item *scope); - static void forwardScopeToItemValues(Item *item, Item *scope); void overrideItemProperties(Item *item, const QString &buildConfigKey, const QVariantMap &buildConfig); void addProductModuleDependencies(ProductContext *ctx, const Item::Module &module); |