internal/lsp: add additional check for analysis value

Updates golang/go#35339

Change-Id: Ie990672b619d1844f66abf62010fe9a69daf00d9
Reviewed-on: https://go-review.googlesource.com/c/tools/+/205161
Run-TryBot: Rebecca Stambler <rstambler@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Cottrell <iancottrell@google.com>
diff --git a/internal/lsp/cache/analysis.go b/internal/lsp/cache/analysis.go
index 84f1815..2adc23f 100644
--- a/internal/lsp/cache/analysis.go
+++ b/internal/lsp/cache/analysis.go
@@ -131,8 +131,7 @@
 				err: err,
 			}
 		}
-		data := runAnalysis(ctx, fset, a, pkg, results)
-		return data
+		return runAnalysis(ctx, fset, a, pkg, results)
 	})
 	ah.handle = h
 
@@ -145,7 +144,10 @@
 	if v == nil {
 		return nil, nil, errors.Errorf("no analyses for %s", act.pkg.ID())
 	}
-	data := v.(*actionData)
+	data, ok := v.(*actionData)
+	if !ok {
+		return nil, nil, errors.Errorf("unexpected type for %s:%s", act.pkg.ID(), act.analyzer.Name)
+	}
 	return data.diagnostics, data.result, data.err
 }
 
@@ -154,7 +156,10 @@
 	if v == nil {
 		return nil, nil, errors.Errorf("no analyses for %s", act.pkg.ID())
 	}
-	data := v.(*actionData)
+	data, ok := v.(*actionData)
+	if !ok {
+		return nil, nil, errors.Errorf("unexpected type for %s:%s", act.pkg.ID(), act.analyzer.Name)
+	}
 	return data.diagnostics, data.result, data.err
 }