diff options
author | Chris Adams <christopher.adams@nokia.com> | 2012-07-05 11:53:18 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-07-11 02:59:49 +0200 |
commit | 03192f749c14ffdde24d3e1585fadf98f9750938 (patch) | |
tree | db285bd45521e1e0799d9c3a4536ea0bdf2e8f31 | |
parent | 7ee8156116581e08466ebc23b31e2b76c127e742 (diff) |
Don't provide typehint in QQmlExpression::evaluate()
Previously, the result returned by QQmlExpression::evaluate() was
converted from the actual JavaScript result with a default typehint
of QList<QObject*>. This commit removes that typehint so that the
engine's conversion code will choose the most appropriate return type
for the result JavaScript value, instead.
Task-number: QTBUG-17082
Change-Id: I368a018b235e9e001b1b92db3699de377748b74f
Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
-rw-r--r-- | src/qml/qml/qqmlexpression.cpp | 2 | ||||
-rw-r--r-- | tests/auto/qml/debugger/qqmlenginedebugservice/tst_qqmlenginedebugservice.cpp | 4 | ||||
-rw-r--r-- | tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp | 12 |
3 files changed, 9 insertions, 9 deletions
diff --git a/src/qml/qml/qqmlexpression.cpp b/src/qml/qml/qqmlexpression.cpp index 8c24c4ab88..2ab412ba01 100644 --- a/src/qml/qml/qqmlexpression.cpp +++ b/src/qml/qml/qqmlexpression.cpp @@ -378,7 +378,7 @@ QVariant QQmlExpressionPrivate::value(bool *isUndefined) v8::HandleScope handle_scope; v8::Context::Scope context_scope(ep->v8engine()->context()); v8::Local<v8::Value> result = v8value(isUndefined); - rv = ep->v8engine()->toVariant(result, qMetaTypeId<QList<QObject*> >()); + rv = ep->v8engine()->toVariant(result, -1); } ep->dereferenceScarceResources(); // "release" scarce resources if top-level expression evaluation is complete. diff --git a/tests/auto/qml/debugger/qqmlenginedebugservice/tst_qqmlenginedebugservice.cpp b/tests/auto/qml/debugger/qqmlenginedebugservice/tst_qqmlenginedebugservice.cpp index f0e3d956ab..3ecc0d6e95 100644 --- a/tests/auto/qml/debugger/qqmlenginedebugservice/tst_qqmlenginedebugservice.cpp +++ b/tests/auto/qml/debugger/qqmlenginedebugservice/tst_qqmlenginedebugservice.cpp @@ -858,7 +858,7 @@ void tst_QQmlEngineDebugService::queryExpressionResult_data() QTest::newRow("blueRect.width") << "blueRect.width" << qVariantFromValue(500); QTest::newRow("bad expr") << "aeaef" << qVariantFromValue(QString("<undefined>")); QTest::newRow("QObject*") << "varObj" << qVariantFromValue(QString("<unnamed object>")); - QTest::newRow("list of QObject*") << "varObjList" << qVariantFromValue(QString("<unknown value>")); + QTest::newRow("list of QObject*") << "varObjList" << qVariantFromValue(QVariantList() << QVariant(QString("<unnamed object>"))); QVariantMap map; map.insert(QLatin1String("rect"), QVariant(QLatin1String("<unnamed object>"))); QTest::newRow("varObjMap") << "varObjMap" << qVariantFromValue(map); @@ -906,7 +906,7 @@ void tst_QQmlEngineDebugService::queryExpressionResultBC_data() QTest::newRow("blueRect.width") << "blueRect.width" << qVariantFromValue(500); QTest::newRow("bad expr") << "aeaef" << qVariantFromValue(QString("<undefined>")); QTest::newRow("QObject*") << "varObj" << qVariantFromValue(QString("<unnamed object>")); - QTest::newRow("list of QObject*") << "varObjList" << qVariantFromValue(QString("<unknown value>")); + QTest::newRow("list of QObject*") << "varObjList" << qVariantFromValue(QVariantList() << QVariant(QString("<unnamed object>"))); QVariantMap map; map.insert(QLatin1String("rect"), QVariant(QLatin1String("<unnamed object>"))); QTest::newRow("varObjMap") << "varObjMap" << qVariantFromValue(map); diff --git a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp index 66ae27e9ec..aaa6d365bd 100644 --- a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp +++ b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp @@ -660,13 +660,13 @@ void tst_qqmlecmascript::arrayExpressions() MyExpression expr(&context, "[a, b, c, 10]"); QVariant result = expr.evaluate(); - QCOMPARE(result.userType(), qMetaTypeId<QList<QObject *> >()); - QList<QObject *> list = qvariant_cast<QList<QObject *> >(result); + QCOMPARE(result.userType(), qMetaTypeId<QVariantList>()); + QVariantList list = qvariant_cast<QVariantList>(result); QCOMPARE(list.count(), 4); - QCOMPARE(list.at(0), &obj1); - QCOMPARE(list.at(1), &obj2); - QCOMPARE(list.at(2), &obj3); - QCOMPARE(list.at(3), (QObject *)0); + QCOMPARE(list.at(0).value<QObject*>(), &obj1); + QCOMPARE(list.at(1).value<QObject*>(), &obj2); + QCOMPARE(list.at(2).value<QObject*>(), &obj3); + QCOMPARE(list.at(3).value<int>(), 10); } // Tests that modifying a context property will reevaluate expressions |