diff options
-rw-r--r-- | src/qml/parser/qqmljslexer.cpp | 3 | ||||
-rw-r--r-- | tests/auto/qml/qjsengine/tst_qjsengine.cpp | 5 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/qml/parser/qqmljslexer.cpp b/src/qml/parser/qqmljslexer.cpp index 5d9ca1036f..8e8ed954ad 100644 --- a/src/qml/parser/qqmljslexer.cpp +++ b/src/qml/parser/qqmljslexer.cpp @@ -259,6 +259,7 @@ int Lexer::lex() _parenthesesCount = 0; break; + case T_ELSE: case T_DO: _parenthesesState = BalancedParentheses; break; @@ -287,7 +288,7 @@ int Lexer::lex() break; case BalancedParentheses: - if (_tokenKind != T_DO) + if (_tokenKind != T_DO && _tokenKind != T_ELSE) _parenthesesState = IgnoreParentheses; break; } // switch diff --git a/tests/auto/qml/qjsengine/tst_qjsengine.cpp b/tests/auto/qml/qjsengine/tst_qjsengine.cpp index 1f43d21c51..b69f57b339 100644 --- a/tests/auto/qml/qjsengine/tst_qjsengine.cpp +++ b/tests/auto/qml/qjsengine/tst_qjsengine.cpp @@ -1578,6 +1578,11 @@ void tst_QJSEngine::automaticSemicolonInsertion() QVERIFY(ret.isError()); } { + QJSValue ret = eng.evaluate("n = 0; if (1) --n;else\n ++n;\n n"); + QVERIFY(ret.isNumber()); + QCOMPARE(ret.toInt(), -1); + } + { QJSValue ret = eng.evaluate("while (0)"); QVERIFY(ret.isError()); } |