Skip to content

Commit 0d152d3

Browse files
authored
Handle nil end position in getMappedLocation (#1920)
1 parent cfbb8b4 commit 0d152d3

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

internal/ls/converters.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,8 @@ func (c *Converters) LineAndCharacterToPosition(script Script, lineAndCharacter
166166
func (c *Converters) PositionToLineAndCharacter(script Script, position core.TextPos) lsproto.Position {
167167
// UTF-8 offset to UTF-8/16 0-indexed line and character
168168

169+
position = min(position, core.TextPos(len(script.Text())))
170+
169171
lineMap := c.getLineMap(script.FileName())
170172

171173
line, isLineStart := slices.BinarySearch(lineMap.LineStarts, position)

internal/ls/source_map.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ func (l *LanguageService) getMappedLocation(fileName string, fileRange core.Text
1818
}
1919
}
2020
endPos := l.tryGetSourcePosition(fileName, core.TextPos(fileRange.End()))
21+
if endPos == nil {
22+
endPos = &sourcemap.DocumentPosition{
23+
FileName: startPos.FileName,
24+
Pos: startPos.Pos + fileRange.Len(),
25+
}
26+
}
2127
debug.Assert(endPos.FileName == startPos.FileName, "start and end should be in same file")
2228
newRange := core.NewTextRange(startPos.Pos, endPos.Pos)
2329
lspRange := l.createLspRangeFromRange(newRange, l.getScript(startPos.FileName))

0 commit comments

Comments
 (0)