internal/lsp: create the undelivered map

(for real, this time)

Change-Id: I563b7b34a1849914e9b922b07a86916bac7be30d
Reviewed-on: https://go-review.googlesource.com/c/tools/+/170183
Reviewed-by: Ian Cottrell <iancottrell@google.com>
diff --git a/internal/lsp/diagnostics.go b/internal/lsp/diagnostics.go
index 7ec6b96..0602bbd 100644
--- a/internal/lsp/diagnostics.go
+++ b/internal/lsp/diagnostics.go
@@ -32,6 +32,9 @@
 
 		for uri, diagnostics := range reports {
 			if err := s.publishDiagnostics(ctx, uri, diagnostics); err != nil {
+				if s.undelivered == nil {
+					s.undelivered = make(map[span.URI][]source.Diagnostic)
+				}
 				s.undelivered[uri] = diagnostics
 				continue
 			}
diff --git a/internal/lsp/lsp_test.go b/internal/lsp/lsp_test.go
index a21b86c..26da588 100644
--- a/internal/lsp/lsp_test.go
+++ b/internal/lsp/lsp_test.go
@@ -74,7 +74,8 @@
 
 	log := xlog.New(xlog.StdSink{})
 	s := &Server{
-		view: cache.NewView(ctx, log, "lsp_test", span.FileURI(cfg.Dir), &cfg),
+		view:        cache.NewView(ctx, log, "lsp_test", span.FileURI(cfg.Dir), &cfg),
+		undelivered: make(map[span.URI][]source.Diagnostic),
 	}
 	// Do a first pass to collect special markers for completion.
 	if err := exported.Expect(map[string]interface{}{