From a1fd2866465c4be2815a6ada776867b3d4efc557 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Wed, 13 Dec 2017 14:30:28 +0100 Subject: Fix QJSEngine::evaluate regression The compilation mode used in the evaluate method was changed to eval, breaking existing uses. This patch fixes that. Task-number: QTBUG-65167 Change-Id: I645ad50be36884eb10bf86ecf060b2b62b50f122 Reviewed-by: Lars Knoll --- tests/auto/qml/qjsengine/tst_qjsengine.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'tests/auto/qml/qjsengine') diff --git a/tests/auto/qml/qjsengine/tst_qjsengine.cpp b/tests/auto/qml/qjsengine/tst_qjsengine.cpp index 446f9b04a7..519c57efb2 100644 --- a/tests/auto/qml/qjsengine/tst_qjsengine.cpp +++ b/tests/auto/qml/qjsengine/tst_qjsengine.cpp @@ -201,6 +201,8 @@ private slots: void malformedExpression(); + void scriptScopes(); + signals: void testSignal(); }; @@ -4118,6 +4120,22 @@ void tst_QJSEngine::malformedExpression() engine.evaluate("5%55555&&5555555\n7-0"); } +void tst_QJSEngine::scriptScopes() +{ + QJSEngine engine; + + QJSValue def = engine.evaluate("'use strict'; function foo() { return 42 }"); + QVERIFY(!def.isError()); + QJSValue globalObject = engine.globalObject(); + QJSValue foo = globalObject.property("foo"); + QVERIFY(foo.isObject()); + QVERIFY(foo.isCallable()); + + QJSValue use = engine.evaluate("'use strict'; foo()"); + QVERIFY(use.isNumber()); + QCOMPARE(use.toInt(), 42); +} + QTEST_MAIN(tst_QJSEngine) #include "tst_qjsengine.moc" -- cgit v1.2.3