gopls/internal/lsp/cache: add additional debug assertions during parsing To narrow down the concerning issue golang/go#59080, add additional early debug assertions to help narrow down a root cause. For golang/go#59080 Change-Id: Ib18c2e7328eaf059c908afc6260f3212f685573c Reviewed-on: https://go-review.googlesource.com/c/tools/+/477275 Reviewed-by: Alan Donovan <adonovan@google.com> gopls-CI: kokoro <noreply+kokoro@google.com> Run-TryBot: Robert Findley <rfindley@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
diff --git a/gopls/internal/lsp/cache/parse_cache.go b/gopls/internal/lsp/cache/parse_cache.go index 3511b75..231ede3 100644 --- a/gopls/internal/lsp/cache/parse_cache.go +++ b/gopls/internal/lsp/cache/parse_cache.go
@@ -7,6 +7,7 @@ import ( "container/heap" "context" + "fmt" "go/parser" "go/token" "math/bits" @@ -295,6 +296,22 @@ } tokeninternal.AddExistingFiles(fset, tokenFiles) + const debugIssue59080 = true + if debugIssue59080 { + for _, f := range tokenFiles { + pos := token.Pos(f.Base()) + f2 := fset.File(pos) + if f2 != f { + panic(fmt.Sprintf("internal error: File(%d (start)) = %v, not %v", pos, f2, f)) + } + pos = token.Pos(f.Base() + f.Size()) + f2 = fset.File(pos) + if f2 != f { + panic(fmt.Sprintf("internal error: File(%d (end)) = %v, not %v", pos, f2, f)) + } + } + } + return pgfs, firstErr }