Skip to content

Commit fc2cc02

Browse files
committed
[Parse/ParsedRawSyntaxRecorder] In recordToken() adjust the range to account for backticks in an identifier
1 parent da6de4b commit fc2cc02

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

lib/Parse/ParsedRawSyntaxRecorder.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,17 @@ ParsedRawSyntaxNode
3030
ParsedRawSyntaxRecorder::recordToken(const Token &tok,
3131
const Trivia &leadingTrivia,
3232
const Trivia &trailingTrivia) {
33+
SourceLoc tokLoc = tok.getLoc();
34+
unsigned tokLength = tok.getLength();
35+
if (tok.isEscapedIdentifier()) {
36+
// Adjust to account for the backticks that are included in trivia.
37+
tokLoc = tokLoc.getAdvancedLoc(1);
38+
tokLength -= 2;
39+
}
3340
unsigned leadingTriviaLen = leadingTrivia.getTextLength();
3441
unsigned trailingTriviaLen = trailingTrivia.getTextLength();
35-
SourceLoc offset = tok.getLoc().getAdvancedLoc(-leadingTriviaLen);
36-
unsigned length = leadingTriviaLen + tok.getLength() + trailingTriviaLen;
42+
SourceLoc offset = tokLoc.getAdvancedLoc(-leadingTriviaLen);
43+
unsigned length = leadingTriviaLen + tokLength + trailingTriviaLen;
3744
CharSourceRange range{offset, length};
3845
OpaqueSyntaxNode n = SPActions->recordToken(tok, leadingTrivia,
3946
trailingTrivia, range);

0 commit comments

Comments
 (0)