aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Stenger <christian.stenger@qt.io>2020-06-09 14:19:42 +0200
committerChristian Stenger <christian.stenger@qt.io>2020-06-10 13:07:23 +0000
commitba580bba83a261e6327334b947c01fa172b30362 (patch)
treec45b386216217bf79c301c8dd0e1dbe881d3b644
parentbd432c2c8a319b61e7fb1b51785103db6128cd65 (diff)
QmlJS: Fix line number for string literals (Part 2)
Amends 626807c94e3c1e3d. Scanning the strings appears differently if using multi-line strings and using the line terminator at the beginning of a string or having already some characters present. Fixes: QTCREATORBUG-23777 Change-Id: I840a11e3b0e06adda443849f926189bda9dc2e4b Reviewed-by: Fawzi Mohamed <fawzi.mohamed@qt.io>
-rw-r--r--src/libs/qmljs/parser/qmljslexer.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/libs/qmljs/parser/qmljslexer.cpp b/src/libs/qmljs/parser/qmljslexer.cpp
index 0ae581724d..97f33bdda6 100644
--- a/src/libs/qmljs/parser/qmljslexer.cpp
+++ b/src/libs/qmljs/parser/qmljslexer.cpp
@@ -877,12 +877,13 @@ int Lexer::scanString(ScanStringMode mode)
// in case we just parsed a \r, we need to reset this flag to get things working
// correctly in the loop below and afterwards
_skipLinefeed = false;
-
+ bool first = true;
if (_engine) {
while (_codePtr <= _endPtr) {
if (isLineTerminator()) {
if ((quote == QLatin1Char('`') || qmlMode())) {
- --_currentLineNumber;
+ if (first)
+ --_currentLineNumber;
break;
}
_errorCode = IllegalCharacter;
@@ -910,6 +911,7 @@ int Lexer::scanString(ScanStringMode mode)
// don't use scanChar() here, that would transform \r sequences and the midRef() call would create the wrong result
_char = *_codePtr++;
++_currentColumnNumber;
+ first = false;
}
}