internal/lsp: re-run go/packages.Load when the package name changes

Fixes golang/go#32149

Change-Id: Ic02af6fd4fb19aae0d38a4d51ec4462abdc4f446
Reviewed-on: https://go-review.googlesource.com/c/tools/+/178162
Run-TryBot: Rebecca Stambler <rstambler@golang.org>
Reviewed-by: Ian Cottrell <iancottrell@google.com>
diff --git a/internal/lsp/cache/check.go b/internal/lsp/cache/check.go
index a81f690..67b9256 100644
--- a/internal/lsp/cache/check.go
+++ b/internal/lsp/cache/check.go
@@ -103,12 +103,17 @@
 	if f.meta == nil {
 		return true
 	}
-	// Get file content in case we don't already have it?
+	// Get file content in case we don't already have it.
 	f.read(ctx)
 	parsed, _ := parser.ParseFile(f.FileSet(), filename, f.content, parser.ImportsOnly)
 	if parsed == nil {
 		return true
 	}
+	// If the package name has changed, re-run `go list`.
+	if f.meta.name != parsed.Name.Name {
+		return true
+	}
+	// If the package's imports have changed, re-run `go list`.
 	if len(f.imports) != len(parsed.Imports) {
 		return true
 	}