internal/imports: handle out of range panic in modInfo Fixes golang/vscode-go#882 Change-Id: If238f61be5653c159293a811bf9728029701de48 Reviewed-on: https://go-review.googlesource.com/c/tools/+/267125 Trust: Rebecca Stambler <rstambler@golang.org> Run-TryBot: Rebecca Stambler <rstambler@golang.org> gopls-CI: kokoro <noreply+kokoro@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Heschi Kreinick <heschi@google.com>
diff --git a/internal/imports/mod.go b/internal/imports/mod.go index 8a83613..73f7a49 100644 --- a/internal/imports/mod.go +++ b/internal/imports/mod.go
@@ -347,10 +347,11 @@ } if r.dirInModuleCache(dir) { - matches := modCacheRegexp.FindStringSubmatch(dir) - index := strings.Index(dir, matches[1]+"@"+matches[2]) - modDir := filepath.Join(dir[:index], matches[1]+"@"+matches[2]) - return modDir, readModName(filepath.Join(modDir, "go.mod")) + if matches := modCacheRegexp.FindStringSubmatch(dir); len(matches) == 3 { + index := strings.Index(dir, matches[1]+"@"+matches[2]) + modDir := filepath.Join(dir[:index], matches[1]+"@"+matches[2]) + return modDir, readModName(filepath.Join(modDir, "go.mod")) + } } for { if info, ok := r.cacheLoad(dir); ok {