internal/lsp: check if analysis enabled in convenience fixes

Change-Id: I49c7808ee07340cea0381f324b1fb113ec405213
Reviewed-on: https://go-review.googlesource.com/c/tools/+/241519
Run-TryBot: Rebecca Stambler <rstambler@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Heschi Kreinick <heschi@google.com>
diff --git a/internal/lsp/code_action.go b/internal/lsp/code_action.go
index 24151fa..75aeef7 100644
--- a/internal/lsp/code_action.go
+++ b/internal/lsp/code_action.go
@@ -356,6 +356,9 @@
 func convenienceFixes(ctx context.Context, snapshot source.Snapshot, ph source.PackageHandle, uri span.URI, rng protocol.Range) ([]protocol.CodeAction, error) {
 	var analyzers []*analysis.Analyzer
 	for _, a := range snapshot.View().Options().ConvenienceAnalyzers {
+		if !a.Enabled(snapshot) {
+			continue
+		}
 		analyzers = append(analyzers, a.Analyzer)
 	}
 	diagnostics, err := snapshot.Analyze(ctx, ph.ID(), analyzers...)
diff --git a/internal/lsp/tests/util.go b/internal/lsp/tests/util.go
index 8310a08..9e6e63b 100644
--- a/internal/lsp/tests/util.go
+++ b/internal/lsp/tests/util.go
@@ -516,6 +516,11 @@
 			opts.UserEnabledAnalyses[a.Analyzer.Name] = true
 		}
 	}
+	for _, a := range opts.ConvenienceAnalyzers {
+		if !a.Enabled(snapshot) {
+			opts.UserEnabledAnalyses[a.Analyzer.Name] = true
+		}
+	}
 }
 
 func Diff(want, got string) string {