aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language/itemreaderastvisitor.cpp
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2018-01-31 09:23:54 +0100
committerJoerg Bornemann <joerg.bornemann@qt.io>2018-01-31 13:50:36 +0000
commit764fd1f6ea3f317ad4b50a865ab56b8a8c93080f (patch)
tree53aaf9d4ddede25716f043b5666d09260e539f14 /src/lib/corelib/language/itemreaderastvisitor.cpp
parent3953e11a8491323bed6d45d3ced59f15b87a96a8 (diff)
Fix SOFT ASSERT for parametrized dependencies in Export/Module itemsv1.10.11.10
The SOFT ASSERT was triggered, because the Depends items in Export/Module had the type ModuleInstance instead of ModuleParameters. Move the assignment of that item type to ItemReaderASTVisitor instead of adjusting it in the ModuleLoader, because this ensures that we don't have to traverse prototypes in the adjustment procedure. Task-number: QBS-1287 Change-Id: Ie1a1080d40b8bebe5c205f8b34298469cde5bd46 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/lib/corelib/language/itemreaderastvisitor.cpp')
-rw-r--r--src/lib/corelib/language/itemreaderastvisitor.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/lib/corelib/language/itemreaderastvisitor.cpp b/src/lib/corelib/language/itemreaderastvisitor.cpp
index 9d77472c2..788539141 100644
--- a/src/lib/corelib/language/itemreaderastvisitor.cpp
+++ b/src/lib/corelib/language/itemreaderastvisitor.cpp
@@ -117,7 +117,11 @@ bool ItemReaderASTVisitor::visit(AST::UiObjectDefinition *ast)
if (ast->initializer) {
qSwap(m_item, item);
+ const ItemType oldInstanceItemType = m_instanceItemType;
+ if (itemType == ItemType::Parameters || itemType == ItemType::Depends)
+ m_instanceItemType = ItemType::ModuleParameters;
ast->initializer->accept(this);
+ m_instanceItemType = oldInstanceItemType;
qSwap(m_item, item);
}
@@ -266,7 +270,7 @@ Item *ItemReaderASTVisitor::targetItemForBinding(const QStringList &bindingName,
for (int i = 0; i < c; ++i) {
ValuePtr v = targetItem->ownProperty(bindingName.at(i));
if (!v) {
- const ItemType itemType = i < c - 1 ? ItemType::ModulePrefix : ItemType::ModuleInstance;
+ const ItemType itemType = i < c - 1 ? ItemType::ModulePrefix : m_instanceItemType;
Item *newItem = Item::create(m_itemPool, itemType);
newItem->setLocation(value->location());
v = ItemValue::create(newItem);