diff options
author | Joerg Bornemann <joerg.bornemann@qt.io> | 2018-01-31 09:23:54 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@qt.io> | 2018-01-31 13:50:36 +0000 |
commit | 764fd1f6ea3f317ad4b50a865ab56b8a8c93080f (patch) | |
tree | 53aaf9d4ddede25716f043b5666d09260e539f14 /src/lib/corelib/language/itemreaderastvisitor.cpp | |
parent | 3953e11a8491323bed6d45d3ced59f15b87a96a8 (diff) |
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.cpp | 6 |
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); |