aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2013-08-22 09:24:19 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-08-23 08:00:59 +0200
commit1708b36910984b116b12432e7d27f8fbb25fadfa (patch)
tree903794919f2b14fd66842c72aa5fa756d093a295 /tests
parentfac5337abfef36c631fe73152157446aae0ea3ea (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')
-rw-r--r--tests/auto/qml/qjsengine/tst_qjsengine.cpp18
-rw-r--r--tests/manual/v4/TestExpectations8
2 files changed, 26 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"
diff --git a/tests/manual/v4/TestExpectations b/tests/manual/v4/TestExpectations
index 8af484277f..5bf5dbb6c7 100644
--- a/tests/manual/v4/TestExpectations
+++ b/tests/manual/v4/TestExpectations
@@ -13,3 +13,11 @@ S15.4.4.3_A1_T1 failing
S15.4.4.3_A3_T1 failing
S15.5.4.11_A5_T1 failing
S15.2.4.4_A14 failing
+
+# Function declarations in conditionals. We allow them, because the real
+# world requires them.
+Sbp_12.5_A9_T3 failing
+Sbp_12.6.1_A13_T3 failing
+Sbp_12.6.2_A13_T3 failing
+Sbp_12.6.4_A13_T3 failing
+