Skip to content

Commit dbbf051

Browse files
author
Andy
authored
Add assertion to computePositionOfLineAndCharacter (#17121)
1 parent 1c93531 commit dbbf051

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

src/compiler/scanner.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -326,13 +326,20 @@ namespace ts {
326326
}
327327

328328
export function getPositionOfLineAndCharacter(sourceFile: SourceFile, line: number, character: number): number {
329-
return computePositionOfLineAndCharacter(getLineStarts(sourceFile), line, character);
329+
return computePositionOfLineAndCharacter(getLineStarts(sourceFile), line, character, sourceFile.text);
330330
}
331331

332332
/* @internal */
333-
export function computePositionOfLineAndCharacter(lineStarts: number[], line: number, character: number): number {
333+
export function computePositionOfLineAndCharacter(lineStarts: number[], line: number, character: number, debugText?: string): number {
334334
Debug.assert(line >= 0 && line < lineStarts.length);
335-
return lineStarts[line] + character;
335+
const res = lineStarts[line] + character;
336+
if (line < lineStarts.length - 1) {
337+
Debug.assert(res < lineStarts[line + 1]);
338+
}
339+
else if (debugText !== undefined) {
340+
Debug.assert(res < debugText.length);
341+
}
342+
return res;
336343
}
337344

338345
/* @internal */

src/server/scriptInfo.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ namespace ts.server {
8686
*/
8787
lineOffsetToPosition(line: number, offset: number): number {
8888
if (!this.svc) {
89-
return computePositionOfLineAndCharacter(this.getLineMap(), line - 1, offset - 1);
89+
return computePositionOfLineAndCharacter(this.getLineMap(), line - 1, offset - 1, this.text);
9090
}
9191

9292
// TODO: assert this offset is actually on the line

0 commit comments

Comments
 (0)