summaryrefslogtreecommitdiff
path: root/src/qml/jsruntime/qv4function.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/jsruntime/qv4function.cpp')
-rw-r--r--src/qml/jsruntime/qv4function.cpp23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/qml/jsruntime/qv4function.cpp b/src/qml/jsruntime/qv4function.cpp
index 34b548113d..29e3d8d7ef 100644
--- a/src/qml/jsruntime/qv4function.cpp
+++ b/src/qml/jsruntime/qv4function.cpp
@@ -139,12 +139,16 @@ Function::Function(ExecutionEngine *engine, ExecutableCompilationUnit *unit,
QQmlEnginePrivate *enginePrivate = QQmlEnginePrivate::get(engine->qmlEngine());
auto findMetaType = [&](const CompiledData::ParameterType &param) {
+ const quint32 type = param.typeNameIndexOrBuiltinType();
if (param.indexIsBuiltinType()) {
+ if (param.isList()) {
+ return QQmlPropertyCacheCreatorBase::listTypeForPropertyType(
+ QV4::CompiledData::BuiltinType(type));
+ }
return QQmlPropertyCacheCreatorBase::metaTypeForPropertyType(
- QV4::CompiledData::BuiltinType(param.typeNameIndexOrBuiltinType()));
+ QV4::CompiledData::BuiltinType(type));
}
- const quint32 type = param.typeNameIndexOrBuiltinType();
if (type == 0)
return QMetaType();
@@ -152,18 +156,21 @@ Function::Function(ExecutionEngine *engine, ExecutableCompilationUnit *unit,
if (!qmltype.isValid())
return QMetaType();
- const QMetaType metaType = qmltype.typeId();
+ const QMetaType metaType = param.isList() ? qmltype.qListTypeId() : qmltype.typeId();
if (metaType.isValid())
return metaType;
if (!qmltype.isComposite()) {
- return qmltype.isInlineComponentType()
- ? unit->typeIdsForComponent(qmltype.inlineComponentId()).id
- : QMetaType();
+ if (!qmltype.isInlineComponentType())
+ return QMetaType();
+ const CompositeMetaTypeIds typeIds
+ = unit->typeIdsForComponent(qmltype.inlineComponentId());
+ return param.isList() ? typeIds.listId : typeIds.id;
}
- return enginePrivate->typeLoader.getType(
- qmltype.sourceUrl())->compilationUnit()->typeIds.id;
+ const CompositeMetaTypeIds typeIds = enginePrivate->typeLoader.getType(
+ qmltype.sourceUrl())->compilationUnit()->typeIds;
+ return param.isList() ? typeIds.listId : typeIds.id;
};
for (quint16 i = 0; i < nFormals; ++i)