diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2014-01-28 16:24:15 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-02-03 14:37:46 +0100 |
commit | 76f27aeff6362670e2b58fdd16b835d854e31782 (patch) | |
tree | d14de6903e7380c62a0ed4fa7926bf7789aef03e /src/qml/compiler/qqmltypecompiler.cpp | |
parent | ae19cdacbeade9e55bd4bf15314221c8fa182b5f (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.cpp | 9 |
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) |