Skip to content

Commit d788a6f

Browse files
adonovangopherbot
authored andcommitted
gopls/internal/protocol: Mapper: reject start > end
+ test Fixes golang/go#74394 Change-Id: I1539501bb1b8e0f538e73a1a0c1073d6d47aa6f4 Reviewed-on: https://go-review.googlesource.com/c/tools/+/684255 Auto-Submit: Alan Donovan <[email protected]> Reviewed-by: Robert Findley <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]>
1 parent 406c179 commit d788a6f

File tree

3 files changed

+33
-0
lines changed

3 files changed

+33
-0
lines changed

gopls/internal/protocol/mapper.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,9 @@ func (m *Mapper) RangeOffsets(r Range) (int, int, error) {
256256
if err != nil {
257257
return 0, 0, err
258258
}
259+
if start > end {
260+
return 0, 0, fmt.Errorf("start (offset %d) > end (offset %d)", start, end)
261+
}
259262
return start, end, nil
260263
}
261264

gopls/internal/test/integration/misc/codeactions_test.go

Lines changed: 26 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gopls/internal/util/safetoken/safetoken.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ func Offset(f *token.File, pos token.Pos) (int, error) {
4242
}
4343

4444
// Offsets returns Offset(start) and Offset(end).
45+
// It returns an error if either failed, or if start > end.
4546
func Offsets(f *token.File, start, end token.Pos) (int, int, error) {
4647
startOffset, err := Offset(f, start)
4748
if err != nil {
@@ -51,6 +52,9 @@ func Offsets(f *token.File, start, end token.Pos) (int, int, error) {
5152
if err != nil {
5253
return 0, 0, fmt.Errorf("end: %v", err)
5354
}
55+
if start > end {
56+
return 0, 0, fmt.Errorf("start (offset %d) > end (offset %d)", start, end)
57+
}
5458
return startOffset, endOffset, nil
5559
}
5660

0 commit comments

Comments
 (0)