diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2013-08-22 09:24:19 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-08-23 08:00:59 +0200 |
commit | 1708b36910984b116b12432e7d27f8fbb25fadfa (patch) | |
tree | 903794919f2b14fd66842c72aa5fa756d093a295 /tests/auto/qml/qjsengine | |
parent | fac5337abfef36c631fe73152157446aae0ea3ea (diff) |
Allow for function declarations inside conditionals
This is strictly speaking a regression from 5.1/v8, which allows for that
as real world JavaScript appears to require it.
Task-number: QTBUG-33064
Change-Id: Iceaca84373f12fb08459ed007afb25b5a705fa31
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'tests/auto/qml/qjsengine')
-rw-r--r-- | tests/auto/qml/qjsengine/tst_qjsengine.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/auto/qml/qjsengine/tst_qjsengine.cpp b/tests/auto/qml/qjsengine/tst_qjsengine.cpp index b69f57b339..ae9ac6602c 100644 --- a/tests/auto/qml/qjsengine/tst_qjsengine.cpp +++ b/tests/auto/qml/qjsengine/tst_qjsengine.cpp @@ -158,6 +158,8 @@ private slots: void dateConversionQtJS(); void functionPrototypeExtensions(); void threadedEngine(); + + void functionDeclarationsInConditionals(); }; tst_QJSEngine::tst_QJSEngine() @@ -2679,6 +2681,22 @@ void tst_QJSEngine::threadedEngine() QCOMPARE(thread2.result, 2); } +void tst_QJSEngine::functionDeclarationsInConditionals() +{ + // Even though this is bad practice (and test262 covers it with best practices test cases), + // we do allow for function declarations in if and while statements, as unfortunately that's + // real world JavaScript. (QTBUG-33064 for example) + QJSEngine eng; + QJSValue result = eng.evaluate("if (true) {\n" + " function blah() { return false; }\n" + "} else {\n" + " function blah() { return true; }\n" + "}\n" + "blah();"); + QVERIFY(result.isBool()); + QCOMPARE(result.toBool(), true); +} + QTEST_MAIN(tst_QJSEngine) #include "tst_qjsengine.moc" |