aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2020-09-17 10:17:13 +0200
committerShawn Rutledge <shawn.rutledge@qt.io>2020-09-25 19:09:40 +0200
commitfe27257a0722c777968c81027b65b0a7bda3f53e (patch)
tree68094cdf701c630f0941eef9a9dc64898a4a6373 /src
parent0cc0c8535b17adc01525b6d309c3e38fd46d7917 (diff)
Adapt to changes in QMetaSequenceInterface and iterables
metaSequence() became metaContainer() and we should ask for canConvert() as there are two ways to convert to a container. Change-Id: Iba868491ff9d2cc8fc89de1cab29818b834b53f4 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/qml/jsruntime/qv4engine.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp
index f8134d56c6..5afe7b5923 100644
--- a/src/qml/jsruntime/qv4engine.cpp
+++ b/src/qml/jsruntime/qv4engine.cpp
@@ -122,6 +122,7 @@
#include <private/qv4sqlerrors_p.h>
#include <qqmlfile.h>
#include <qmetatype.h>
+#include <qsequentialiterable.h>
#if USE(PTHREADS)
# include <pthread.h>
@@ -1581,22 +1582,21 @@ static QVariant toVariant(QV4::ExecutionEngine *e, const QV4::Value &value, int
auto metaType = QMetaType(typeHint);
retn = QVariant(metaType, nullptr);
auto retnAsIterable = retn.value<QSequentialIterable>();
- if (retnAsIterable.metaSequence().canAddValue()) {
- QMetaType valueMetaType = retnAsIterable.metaSequence().valueMetaType();
+ if (retnAsIterable.metaContainer().canAddValue()) {
+ QMetaType valueMetaType = retnAsIterable.metaContainer().valueMetaType();
auto const length = a->getLength();
QV4::ScopedValue arrayValue(scope);
for (qint64 i = 0; i < length; ++i) {
arrayValue = a->get(i);
QVariant asVariant;
- if (QMetaType::hasRegisteredConverterFunction(
- qMetaTypeId<QJSValue>(), valueMetaType.id())) {
+ if (QMetaType::canConvert(QMetaType::fromType<QJSValue>(), valueMetaType)) {
// before attempting a conversion from the concrete types,
// check if there exists a conversion from QJSValue -> out type
// prefer that one for compatibility reasons
asVariant = QVariant::fromValue(QJSValuePrivate::fromReturnedValue(
arrayValue->asReturnedValue()));
if (asVariant.convert(valueMetaType)) {
- retnAsIterable.metaSequence().addValue(retn.data(), asVariant.constData());
+ retnAsIterable.metaContainer().addValue(retn.data(), asVariant.constData());
continue;
}
}
@@ -1614,7 +1614,7 @@ static QVariant toVariant(QV4::ExecutionEngine *e, const QV4::Value &value, int
asVariant = QVariant(valueMetaType, nullptr);
}
}
- retnAsIterable.metaSequence().addValue(retn.data(), asVariant.constData());
+ retnAsIterable.metaContainer().addValue(retn.data(), asVariant.constData());
}
return retn;
}
@@ -1846,7 +1846,7 @@ QV4::ReturnedValue QV4::ExecutionEngine::fromVariant(const QVariant &variant)
return retn->asReturnedValue();
#endif
- if (QMetaType::hasRegisteredConverterFunction(type, qMetaTypeId<QSequentialIterable>())) {
+ if (QMetaType::canConvert(variant.metaType(), QMetaType::fromType<QSequentialIterable>())) {
QSequentialIterable lst = variant.value<QSequentialIterable>();
return sequentialIterableToJS(this, lst);
}