aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language/evaluatorscriptclass.cpp
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2017-05-26 16:21:21 +0200
committerJoerg Bornemann <joerg.bornemann@qt.io>2017-05-29 13:30:40 +0000
commitc35ff7aa67fc8af6ccb98bc2eb8f59e8e9ad3bcf (patch)
treebcfc781d2f6932f3a810f9880b39d095c0ec9b87 /src/lib/corelib/language/evaluatorscriptclass.cpp
parent624f19acc7c4c3cf6487cc14062cb7a2284af4ab (diff)
Ensure every module property is tracked when evaluating
When evaluating a property we take note of the module properties it references. To make that work in every circumstance every module item must have the name property set before evaluating any properties. Also, for debugging it's extremely helpful if every created item has a location assigned. Add sensible locations for newly created items. The special item containing the outer property and items for setting parameters had the type ModuleInstance which is wrong. Add new dedicated item types Outer and ModuleParameters Change-Id: I5a58a02734f3809525c2752b5b6fb4358f8b286b Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/lib/corelib/language/evaluatorscriptclass.cpp')
-rwxr-xr-xsrc/lib/corelib/language/evaluatorscriptclass.cpp19
1 files changed, 8 insertions, 11 deletions
diff --git a/src/lib/corelib/language/evaluatorscriptclass.cpp b/src/lib/corelib/language/evaluatorscriptclass.cpp
index c43c6725e..5d96be561 100755
--- a/src/lib/corelib/language/evaluatorscriptclass.cpp
+++ b/src/lib/corelib/language/evaluatorscriptclass.cpp
@@ -223,7 +223,7 @@ private:
if (value->sourceUsesBase())
outerValue->setSourceUsesBaseFlag();
outerValue->setLocation(value->line(), value->column());
- outerItem = Item::create(data->item->pool(), ItemType::ModuleInstance);
+ outerItem = Item::create(data->item->pool(), ItemType::Outer);
outerItem->setProperty(propertyName->toString(), outerValue);
}
if (overrides.toBool())
@@ -542,16 +542,13 @@ public:
|| itemOfProperty->type() == ItemType::Export)) {
const VariantValueConstPtr varValue
= itemOfProperty->variantProperty(QLatin1String("name"));
- // QBS_CHECK(varValue);
- // TODO: Check why the base module sometimes has no name. Code suggests it has to have one.
- if (varValue) {
- m_stackUpdate = true;
- const QualifiedId fullPropName
- = QualifiedId::fromString(varValue->value().toString()) << name.toString();
- if (!requestedProperties.empty())
- propertyDependencies[fullPropName].insert(requestedProperties.top());
- m_requestedProperties.push(fullPropName);
- }
+ QBS_ASSERT(varValue, return);
+ m_stackUpdate = true;
+ const QualifiedId fullPropName
+ = QualifiedId::fromString(varValue->value().toString()) << name.toString();
+ if (!requestedProperties.empty())
+ propertyDependencies[fullPropName].insert(requestedProperties.top());
+ m_requestedProperties.push(fullPropName);
}
}