aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2017-03-22 13:43:31 +0100
committerJoerg Bornemann <joerg.bornemann@qt.io>2017-03-23 10:47:52 +0000
commite2e5e2e3691a5444e2bf79b729657e78b326312d (patch)
tree639ad54ff3466cec65fa0fcf77349f2d9bf7fc59 /src/lib/corelib
parent2f9e30261f9d0c6d9dfe1675d93135cd659c4ef9 (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.cpp2
-rw-r--r--src/lib/corelib/language/item.cpp5
-rw-r--r--src/lib/corelib/language/item.h1
-rw-r--r--src/lib/corelib/language/itemreaderastvisitor.cpp2
-rw-r--r--src/lib/corelib/language/moduleloader.cpp6
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 {