diff options
-rw-r--r-- | src/qml/parser/qqmljslexer.cpp | 4 | ||||
-rw-r--r-- | tests/auto/qml/ecmascripttests/TestExpectations | 1 | ||||
-rw-r--r-- | tests/auto/qml/qjsengine/tst_qjsengine.cpp | 15 |
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" |