From ae0a2ea25714af603babe5aa0de364d1ebae1170 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Wed, 15 Jan 2014 17:29:04 +0100 Subject: [new compiler] Add support for QML list models List model definitions make heavy use of custom parsers, which requires AST access as well as a general port to the new QQmlCustomParser API. Additional fixes in the custom parser support were needed to pass all tests: * Fix support for AcceptsSignalHandlers and AcceptsAttachedProperties * Don't call setCustomData unless the compiler generated data earlier Change-Id: Ic42f8a890391267c94f63d35f055b60fdbf3c83d Reviewed-by: Lars Knoll --- tests/auto/qml/qqmllanguage/testtypes.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'tests/auto/qml/qqmllanguage/testtypes.cpp') diff --git a/tests/auto/qml/qqmllanguage/testtypes.cpp b/tests/auto/qml/qqmllanguage/testtypes.cpp index 4a4ab3b81a..98a803a594 100644 --- a/tests/auto/qml/qqmllanguage/testtypes.cpp +++ b/tests/auto/qml/qqmllanguage/testtypes.cpp @@ -126,6 +126,26 @@ QByteArray CustomBindingParser::compile(const QList &p return result; } +QByteArray CustomBindingParser::compile(const QV4::CompiledData::QmlUnit *qmlUnit, const QList &bindings) +{ + QByteArray result; + QDataStream ds(&result, QIODevice::WriteOnly); + + ds << bindings.count(); + for (int i = 0; i < bindings.count(); ++i) { + const QV4::CompiledData::Binding *binding = bindings.at(i); + ds << qmlUnit->header.stringAt(binding->propertyNameIndex); + + Q_ASSERT(binding->type == QV4::CompiledData::Binding::Type_Script); + int bindingId = bindingIdentifier(binding); + ds << bindingId; + + ds << binding->location.line; + } + + return result; +} + void CustomBindingParser::setCustomData(QObject *object, const QByteArray &data) { CustomBinding *customBinding = qobject_cast(object); -- cgit v1.2.3