aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2018-05-25 10:41:26 +0200
committerLars Knoll <lars.knoll@qt.io>2018-05-26 06:49:08 +0000
commit4bbd8859624da1cf396c09d5a0dd778c985118c0 (patch)
tree05d2933ec961b9020179d1a9fb24924d3cbc8d99
parent6cbc287c06dd61988f2d4f4de253d89103919d2e (diff)
Fix multi line string literals using backquotes
Task-number: QTBUG-67476 Change-Id: Ia8c6863ad35c8a92298e5dffd750d17628200573 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
-rw-r--r--src/qml/parser/qqmljslexer.cpp2
-rw-r--r--tests/auto/qml/qjsengine/tst_qjsengine.cpp12
2 files changed, 13 insertions, 1 deletions
diff --git a/src/qml/parser/qqmljslexer.cpp b/src/qml/parser/qqmljslexer.cpp
index 69e73f1374..ae016076b8 100644
--- a/src/qml/parser/qqmljslexer.cpp
+++ b/src/qml/parser/qqmljslexer.cpp
@@ -823,7 +823,7 @@ int Lexer::scanString(ScanStringMode mode)
if (_engine) {
while (_codePtr <= _endPtr) {
- if (isLineTerminator()) {
+ if (isLineTerminator() && quote != QLatin1Char('`')) {
if (qmlMode())
break;
_errorCode = IllegalCharacter;
diff --git a/tests/auto/qml/qjsengine/tst_qjsengine.cpp b/tests/auto/qml/qjsengine/tst_qjsengine.cpp
index e4bf2ff1aa..b9050fad73 100644
--- a/tests/auto/qml/qjsengine/tst_qjsengine.cpp
+++ b/tests/auto/qml/qjsengine/tst_qjsengine.cpp
@@ -216,6 +216,7 @@ private slots:
void functionToString();
void protoChanges_QTBUG68369();
+ void multilineStrings();
signals:
void testSignal();
@@ -4265,6 +4266,17 @@ void tst_QJSEngine::protoChanges_QTBUG68369()
QVERIFY(ok.toBool() == true);
}
+void tst_QJSEngine::multilineStrings()
+{
+ QJSEngine engine;
+ QJSValue result = engine.evaluate(
+ "var x = `a\nb`; x;"
+ );
+ QVERIFY(result.isString());
+ QVERIFY(result.toString() == QStringLiteral("a\nb"));
+
+}
+
QTEST_MAIN(tst_QJSEngine)
#include "tst_qjsengine.moc"