gopls/internal/lsp/cache: use distinct types for mod and work parse keys

Change-Id: Ic75b5dddb266e601c3f5e496a48a7389da4a1330
Reviewed-on: https://go-review.googlesource.com/c/tools/+/460857
Run-TryBot: Robert Findley <rfindley@google.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
gopls-CI: kokoro <noreply+kokoro@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
diff --git a/gopls/internal/lsp/cache/mod.go b/gopls/internal/lsp/cache/mod.go
index a3d207d..5566539 100644
--- a/gopls/internal/lsp/cache/mod.go
+++ b/gopls/internal/lsp/cache/mod.go
@@ -32,6 +32,7 @@
 	entry, hit := s.parseModHandles.Get(uri)
 	s.mu.Unlock()
 
+	type parseModKey source.FileIdentity
 	type parseModResult struct {
 		parsed *source.ParsedModule
 		err    error
@@ -39,7 +40,7 @@
 
 	// cache miss?
 	if !hit {
-		promise, release := s.store.Promise(fh.FileIdentity(), func(ctx context.Context, _ interface{}) interface{} {
+		promise, release := s.store.Promise(parseModKey(fh.FileIdentity()), func(ctx context.Context, _ interface{}) interface{} {
 			parsed, err := parseModImpl(ctx, fh)
 			return parseModResult{parsed, err}
 		})
@@ -109,6 +110,7 @@
 	entry, hit := s.parseWorkHandles.Get(uri)
 	s.mu.Unlock()
 
+	type parseWorkKey source.FileIdentity
 	type parseWorkResult struct {
 		parsed *source.ParsedWorkFile
 		err    error
@@ -116,7 +118,7 @@
 
 	// cache miss?
 	if !hit {
-		handle, release := s.store.Promise(fh.FileIdentity(), func(ctx context.Context, _ interface{}) interface{} {
+		handle, release := s.store.Promise(parseWorkKey(fh.FileIdentity()), func(ctx context.Context, _ interface{}) interface{} {
 			parsed, err := parseWorkImpl(ctx, fh)
 			return parseWorkResult{parsed, err}
 		})