aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2018-04-10 11:07:24 +0200
committerLars Knoll <lars.knoll@qt.io>2018-04-11 08:59:37 +0000
commit8780764b274217b256aadd00114a76bdffbdb1ef (patch)
tree9629fd8c29fd32fb9397452a2132f368a9d2df89 /src/qml
parente185d303839f2a8bb0e5769ba465b971ae354bd5 (diff)
Warn about non spec compliant extension being used
eval("function(){}") would return a function object in our engine. This is not compliant with the ES spec, so warn about it, as it'll start throwing a syntax error in 5.12. Also fix the two places where we were using that syntax in our auto tests. Change-Id: I573c2ad0ec4955570b857c69edef2f75998d55a9 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml')
-rw-r--r--src/qml/jsruntime/qv4script.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/qml/jsruntime/qv4script.cpp b/src/qml/jsruntime/qv4script.cpp
index b4d9e11716..afa7d2ed52 100644
--- a/src/qml/jsruntime/qv4script.cpp
+++ b/src/qml/jsruntime/qv4script.cpp
@@ -90,6 +90,12 @@ void Script::parse()
Module module(v4->debugger() != nullptr);
+ if (sourceCode.startsWith(QLatin1String("function("))) {
+ qWarning() << "Warning: Using function expressions as statements in scripts in not compliant with the ECMAScript specification at\n"
+ << (sourceCode.leftRef(70) + QLatin1String("..."))
+ << "\nThis will throw a syntax error in Qt 5.12. If you want a function expression, surround it by parentheses.";
+ }
+
Engine ee, *engine = &ee;
Lexer lexer(engine);
lexer.setCode(sourceCode, line, parseAsBinding);