internal/lsp: return error if there is no builtin package

When we stopped returning an error from awaitInitialized, we didn't
handle this case in LookupBuiltin.

Fixes golang/go#36975.

Change-Id: I9668a7148f60ca1f9cad953d46caf6ec5500541e
Reviewed-on: https://go-review.googlesource.com/c/tools/+/217399
Run-TryBot: Rebecca Stambler <rstambler@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
(cherry picked from commit 2de6fe5e3ec42efdf110c2da1a1d164023677380)
Reviewed-on: https://go-review.googlesource.com/c/tools/+/217638
Reviewed-by: Heschi Kreinick <heschi@google.com>
diff --git a/internal/lsp/cache/view.go b/internal/lsp/cache/view.go
index 8ab09cc..be9e59b 100644
--- a/internal/lsp/cache/view.go
+++ b/internal/lsp/cache/view.go
@@ -206,6 +206,9 @@
 func (v *view) LookupBuiltin(ctx context.Context, name string) (*ast.Object, error) {
 	v.awaitInitialized(ctx)
 
+	if v.builtin == nil {
+		return nil, errors.Errorf("no builtin package for view %s", v.name)
+	}
 	data := v.builtin.handle.Get(ctx)
 	if ctx.Err() != nil {
 		return nil, ctx.Err()