aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qml/parser/qqmljslexer.cpp4
-rw-r--r--tests/auto/qml/ecmascripttests/TestExpectations1
-rw-r--r--tests/auto/qml/qjsengine/tst_qjsengine.cpp15
3 files changed, 17 insertions, 3 deletions
diff --git a/src/qml/parser/qqmljslexer.cpp b/src/qml/parser/qqmljslexer.cpp
index 1617f3dfa5..453c8ca474 100644
--- a/src/qml/parser/qqmljslexer.cpp
+++ b/src/qml/parser/qqmljslexer.cpp
@@ -628,7 +628,7 @@ again:
} else if (_char == QLatin1Char('-')) {
scanChar();
- if (_terminator && !_delimited && !_prohibitAutomaticSemicolon) {
+ if (_terminator && !_delimited && !_prohibitAutomaticSemicolon && _tokenKind != T_LPAREN) {
_stackToken = T_MINUS_MINUS;
return T_SEMICOLON;
}
@@ -646,7 +646,7 @@ again:
} else if (_char == QLatin1Char('+')) {
scanChar();
- if (_terminator && !_delimited && !_prohibitAutomaticSemicolon) {
+ if (_terminator && !_delimited && !_prohibitAutomaticSemicolon && _tokenKind != T_LPAREN) {
_stackToken = T_PLUS_PLUS;
return T_SEMICOLON;
}
diff --git a/tests/auto/qml/ecmascripttests/TestExpectations b/tests/auto/qml/ecmascripttests/TestExpectations
index 753381698f..9fe9c0a07c 100644
--- a/tests/auto/qml/ecmascripttests/TestExpectations
+++ b/tests/auto/qml/ecmascripttests/TestExpectations
@@ -5498,7 +5498,6 @@ language/expressions/equals/symbol-strict-equality-comparison
language/expressions/equals/to-prim-hint
language/expressions/exponentiation/applying-the-exp-operator_A7
language/expressions/exponentiation/applying-the-exp-operator_A8
-language/expressions/exponentiation/exp-operator-precedence-update-expression-semantics
language/expressions/exponentiation/order-of-evaluation
language/expressions/function/arguments-with-arguments-fn
language/expressions/function/arguments-with-arguments-lex
diff --git a/tests/auto/qml/qjsengine/tst_qjsengine.cpp b/tests/auto/qml/qjsengine/tst_qjsengine.cpp
index 0e6b77f02b..a57e0b2c79 100644
--- a/tests/auto/qml/qjsengine/tst_qjsengine.cpp
+++ b/tests/auto/qml/qjsengine/tst_qjsengine.cpp
@@ -208,6 +208,8 @@ private slots:
void binaryNumbers();
void octalNumbers();
+ void incrementAfterNewline();
+
signals:
void testSignal();
};
@@ -4192,6 +4194,19 @@ void tst_QJSEngine::octalNumbers()
QVERIFY(result.isError());
}
+void tst_QJSEngine::incrementAfterNewline()
+{
+ QJSEngine engine;
+
+ QJSValue result = engine.evaluate("var x = 0; if (\n++x) x; else -x;");
+ QVERIFY(result.isNumber());
+ QVERIFY(result.toNumber() == 1);
+
+ result = engine.evaluate("var x = 0; if (\n--x) x; else -x;");
+ QVERIFY(result.isNumber());
+ QVERIFY(result.toNumber() == -1);
+}
+
QTEST_MAIN(tst_QJSEngine)
#include "tst_qjsengine.moc"