Skip to content

Commit

Permalink
go/scanner: align line and column limit with the compiler's limit
Browse files Browse the repository at this point in the history
The compiler disallows line and column numbers > (1<<30)
(cmd/compiler/internal/syntax.PosMax).

Set the go/scanner limit to the same rather than off by one.

For #59180

Change-Id: Ibf9e0e6826d6f6230b0d492543b7e906298a0524
Reviewed-on: https://go-review.googlesource.com/c/go/+/482595
TryBot-Result: Gopher Robot <[email protected]>
Reviewed-by: Matthew Dempsky <[email protected]>
Run-TryBot: Damien Neil <[email protected]>
  • Loading branch information
neild committed Apr 6, 2023
1 parent 7ce4587 commit 63f5596
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 1 deletion.
2 changes: 2 additions & 0 deletions src/cmd/compile/internal/syntax/pos.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import "fmt"

// PosMax is the largest line or column value that can be represented without loss.
// Incoming values (arguments) larger than PosMax will be set to PosMax.
//
// Keep this consistent with maxLineCol in go/scanner.
const PosMax = 1 << 30

// A Pos represents an absolute (line, col) source position
Expand Down
3 changes: 2 additions & 1 deletion src/go/scanner/scanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,8 @@ func (s *Scanner) updateLineInfo(next, offs int, text []byte) {

// Put a cap on the maximum size of line and column numbers.
// 30 bits allows for some additional space before wrapping an int32.
const maxLineCol = 1<<30 - 1
// Keep this consistent with cmd/compile/internal/syntax.PosMax.
const maxLineCol = 1 << 30
var line, col int
i2, n2, ok2 := trailingDigits(text[:i-1])
if ok2 {
Expand Down

0 comments on commit 63f5596

Please sign in to comment.