diff options
author | Joerg Bornemann <joerg.bornemann@qt.io> | 2017-03-22 13:43:31 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@qt.io> | 2017-03-23 10:47:52 +0000 |
commit | e2e5e2e3691a5444e2bf79b729657e78b326312d (patch) | |
tree | 639ad54ff3466cec65fa0fcf77349f2d9bf7fc59 /src/lib/corelib | |
parent | 2f9e30261f9d0c6d9dfe1675d93135cd659c4ef9 (diff) |
Add Item::ownProperty for symmetry and use it where appropriate
Change-Id: I721f0db1dde46eea9bf8de74a3052f76bd52dd4b
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/lib/corelib')
-rw-r--r-- | src/lib/corelib/language/evaluatorscriptclass.cpp | 2 | ||||
-rw-r--r-- | src/lib/corelib/language/item.cpp | 5 | ||||
-rw-r--r-- | src/lib/corelib/language/item.h | 1 | ||||
-rw-r--r-- | src/lib/corelib/language/itemreaderastvisitor.cpp | 2 | ||||
-rw-r--r-- | src/lib/corelib/language/moduleloader.cpp | 6 |
5 files changed, 11 insertions, 5 deletions
diff --git a/src/lib/corelib/language/evaluatorscriptclass.cpp b/src/lib/corelib/language/evaluatorscriptclass.cpp index 4af9ccc58..c68a195bc 100644 --- a/src/lib/corelib/language/evaluatorscriptclass.cpp +++ b/src/lib/corelib/language/evaluatorscriptclass.cpp @@ -361,7 +361,7 @@ QScriptClass::QueryFlags EvaluatorScriptClass::queryItemProperty(const Evaluatio bool ignoreParent) { for (const Item *item = data->item; item; item = item->prototype()) { - m_queryResult.value = item->properties().value(name); + m_queryResult.value = item->ownProperty(name); if (!m_queryResult.value.isNull()) { m_queryResult.data = data; m_queryResult.itemOfProperty = item; diff --git a/src/lib/corelib/language/item.cpp b/src/lib/corelib/language/item.cpp index f4a170619..3e6da3231 100644 --- a/src/lib/corelib/language/item.cpp +++ b/src/lib/corelib/language/item.cpp @@ -140,6 +140,11 @@ ValuePtr Item::property(const QString &name) const return value; } +ValuePtr Item::ownProperty(const QString &name) const +{ + return m_properties.value(name); +} + ItemValuePtr Item::itemProperty(const QString &name, const Item *itemTemplate) { ItemValuePtr result; diff --git a/src/lib/corelib/language/item.h b/src/lib/corelib/language/item.h index cae59d3ad..cac10b197 100644 --- a/src/lib/corelib/language/item.h +++ b/src/lib/corelib/language/item.h @@ -111,6 +111,7 @@ public: bool hasProperty(const QString &name) const; bool hasOwnProperty(const QString &name) const; ValuePtr property(const QString &name) const; + ValuePtr ownProperty(const QString &name) const; ItemValuePtr itemProperty(const QString &name, const Item *itemTemplate = nullptr); JSSourceValuePtr sourceProperty(const QString &name) const; VariantValuePtr variantProperty(const QString &name) const; diff --git a/src/lib/corelib/language/itemreaderastvisitor.cpp b/src/lib/corelib/language/itemreaderastvisitor.cpp index fddb103f3..b9d62492f 100644 --- a/src/lib/corelib/language/itemreaderastvisitor.cpp +++ b/src/lib/corelib/language/itemreaderastvisitor.cpp @@ -264,7 +264,7 @@ Item *ItemReaderASTVisitor::targetItemForBinding(const QStringList &bindingName, Item *targetItem = m_item; const int c = bindingName.count() - 1; for (int i = 0; i < c; ++i) { - ValuePtr v = targetItem->properties().value(bindingName.at(i)); + ValuePtr v = targetItem->ownProperty(bindingName.at(i)); if (!v) { const ItemType itemType = i < c - 1 ? ItemType::ModulePrefix : ItemType::ModuleInstance; Item *newItem = Item::create(m_itemPool, itemType); diff --git a/src/lib/corelib/language/moduleloader.cpp b/src/lib/corelib/language/moduleloader.cpp index f5ede7673..6ddd6c4fe 100644 --- a/src/lib/corelib/language/moduleloader.cpp +++ b/src/lib/corelib/language/moduleloader.cpp @@ -1318,7 +1318,7 @@ void ModuleLoader::adjustDefiningItemsInGroupModuleInstances(const Item::Module // gets inherited in that case. In particular, setting a list property // overwrites the value from the product's (or parent group's) instance completely, // rather than appending to it (concatenation happens via outer.concat()). - ValueConstPtr propValue = module.item->properties().value(propName); + ValueConstPtr propValue = module.item->ownProperty(propName); if (propValue) continue; @@ -1332,7 +1332,7 @@ void ModuleLoader::adjustDefiningItemsInGroupModuleInstances(const Item::Module instanceWithProperty = instanceWithProperty->prototype(); QBS_CHECK(instanceWithProperty); ++prototypeChainLen; - propValue = instanceWithProperty->properties().value(propName); + propValue = instanceWithProperty->ownProperty(propName); } while (!propValue); QBS_CHECK(propValue); @@ -1641,7 +1641,7 @@ Item *ModuleLoader::moduleInstanceItem(Item *containerItem, const QualifiedId &m Item *instance = containerItem; for (int i = 0; i < moduleName.count(); ++i) { const QString &moduleNameSegment = moduleName.at(i); - const ValuePtr v = instance->properties().value(moduleName.at(i)); + const ValuePtr v = instance->ownProperty(moduleName.at(i)); if (v && v->type() == Value::ItemValueType) { instance = v.staticCast<ItemValue>()->item(); } else { |