aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qml/parser/qqmljslexer.cpp3
-rw-r--r--tests/auto/qml/qjsengine/tst_qjsengine.cpp5
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());
}