aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/compiler/qqmltypecompiler.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2014-01-28 16:24:15 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-03 14:37:46 +0100
commit76f27aeff6362670e2b58fdd16b835d854e31782 (patch)
treed14de6903e7380c62a0ed4fa7926bf7789aef03e /src/qml/compiler/qqmltypecompiler.cpp
parentae19cdacbeade9e55bd4bf15314221c8fa182b5f (diff)
[new compiler] Fix recursive property validation across component boundaries
Change-Id: Ia2a6e9de534fcc4e3780544ad0d5708e656e11a1 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/compiler/qqmltypecompiler.cpp')
-rw-r--r--src/qml/compiler/qqmltypecompiler.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/qml/compiler/qqmltypecompiler.cpp b/src/qml/compiler/qqmltypecompiler.cpp
index 1dc10fbf0a..d67aca5f4d 100644
--- a/src/qml/compiler/qqmltypecompiler.cpp
+++ b/src/qml/compiler/qqmltypecompiler.cpp
@@ -1193,8 +1193,13 @@ QQmlBinding::Identifier QQmlPropertyValidator::bindingIdentifier(const QV4::Comp
bool QQmlPropertyValidator::validateObject(int objectIndex, const QV4::CompiledData::Binding *instantiatingBinding)
{
const QV4::CompiledData::Object *obj = qmlUnit->objectAt(objectIndex);
- if (isComponent(objectIndex))
- return true;
+
+ if (isComponent(objectIndex)) {
+ Q_ASSERT(obj->nBindings == 1);
+ const QV4::CompiledData::Binding *componentBinding = obj->bindingTable();
+ Q_ASSERT(componentBinding->type == QV4::CompiledData::Binding::Type_Object);
+ return validateObject(componentBinding->value.objectIndex, componentBinding);
+ }
QQmlPropertyCache *propertyCache = propertyCaches.at(objectIndex);
if (!propertyCache)