diff options
author | Christian Stenger <christian.stenger@qt.io> | 2020-06-09 14:19:42 +0200 |
---|---|---|
committer | Christian Stenger <christian.stenger@qt.io> | 2020-06-10 13:07:23 +0000 |
commit | ba580bba83a261e6327334b947c01fa172b30362 (patch) | |
tree | c45b386216217bf79c301c8dd0e1dbe881d3b644 | |
parent | bd432c2c8a319b61e7fb1b51785103db6128cd65 (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.cpp | 6 |
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; } } |