internal/lsp/source: remove unused parameters from functions

This change uses the new unusedparams analyzer to remove any unused parameters from functions inside of internal/lsp/source :)

Change-Id: I220100e832971b07cd80a701cd8b293fe708af3d
Reviewed-on: https://go-review.googlesource.com/c/tools/+/225997
Run-TryBot: Rohan Challa <rohan@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
diff --git a/internal/lsp/cache/analysis.go b/internal/lsp/cache/analysis.go
index 9a6478b..a81a0b8 100644
--- a/internal/lsp/cache/analysis.go
+++ b/internal/lsp/cache/analysis.go
@@ -137,7 +137,7 @@
 
 	h := s.view.session.cache.store.Bind(buildActionKey(a, ph), func(ctx context.Context) interface{} {
 		// Analyze dependencies first.
-		results, err := execAll(ctx, fset, deps)
+		results, err := execAll(ctx, deps)
 		if err != nil {
 			return &actionData{
 				err: err,
@@ -174,7 +174,7 @@
 	return fmt.Sprintf("%s@%s", act.analyzer, act.pkg.PkgPath())
 }
 
-func execAll(ctx context.Context, fset *token.FileSet, actions []*actionHandle) (map[*actionHandle]*actionData, error) {
+func execAll(ctx context.Context, actions []*actionHandle) (map[*actionHandle]*actionData, error) {
 	var mu sync.Mutex
 	results := make(map[*actionHandle]*actionData)
 
diff --git a/internal/lsp/cache/errors.go b/internal/lsp/cache/errors.go
index aba5f07..4ea0cf0 100644
--- a/internal/lsp/cache/errors.go
+++ b/internal/lsp/cache/errors.go
@@ -45,7 +45,7 @@
 			spn = parseGoListError(e.Msg)
 
 			// We may not have been able to parse a valid span.
-			if _, err := spanToRange(ctx, pkg, spn); err != nil {
+			if _, err := spanToRange(pkg, spn); err != nil {
 				return &source.Error{
 					URI:     spn.URI(),
 					Message: msg,
@@ -58,7 +58,7 @@
 	case *scanner.Error:
 		msg = e.Msg
 		kind = source.ParseError
-		spn, err = scannerErrorRange(ctx, fset, pkg, e.Pos)
+		spn, err = scannerErrorRange(fset, pkg, e.Pos)
 		if err != nil {
 			event.Error(ctx, "no span for scanner.Error pos", err, tag.Package.Of(pkg.ID()))
 			spn = span.Parse(e.Pos.String())
@@ -71,7 +71,7 @@
 		}
 		msg = e[0].Msg
 		kind = source.ParseError
-		spn, err = scannerErrorRange(ctx, fset, pkg, e[0].Pos)
+		spn, err = scannerErrorRange(fset, pkg, e[0].Pos)
 		if err != nil {
 			event.Error(ctx, "no span for scanner.Error pos", err, tag.Package.Of(pkg.ID()))
 			spn = span.Parse(e[0].Pos.String())
@@ -92,16 +92,16 @@
 		msg = e.Message
 		kind = source.Analysis
 		category = e.Category
-		fixes, err = suggestedFixes(ctx, fset, pkg, e)
+		fixes, err = suggestedFixes(fset, pkg, e)
 		if err != nil {
 			return nil, err
 		}
-		related, err = relatedInformation(ctx, fset, pkg, e)
+		related, err = relatedInformation(fset, pkg, e)
 		if err != nil {
 			return nil, err
 		}
 	}
-	rng, err := spanToRange(ctx, pkg, spn)
+	rng, err := spanToRange(pkg, spn)
 	if err != nil {
 		return nil, err
 	}
@@ -116,7 +116,7 @@
 	}, nil
 }
 
-func suggestedFixes(ctx context.Context, fset *token.FileSet, pkg *pkg, diag *analysis.Diagnostic) ([]source.SuggestedFix, error) {
+func suggestedFixes(fset *token.FileSet, pkg *pkg, diag *analysis.Diagnostic) ([]source.SuggestedFix, error) {
 	var fixes []source.SuggestedFix
 	for _, fix := range diag.SuggestedFixes {
 		edits := make(map[span.URI][]protocol.TextEdit)
@@ -125,7 +125,7 @@
 			if err != nil {
 				return nil, err
 			}
-			rng, err := spanToRange(ctx, pkg, spn)
+			rng, err := spanToRange(pkg, spn)
 			if err != nil {
 				return nil, err
 			}
@@ -142,14 +142,14 @@
 	return fixes, nil
 }
 
-func relatedInformation(ctx context.Context, fset *token.FileSet, pkg *pkg, diag *analysis.Diagnostic) ([]source.RelatedInformation, error) {
+func relatedInformation(fset *token.FileSet, pkg *pkg, diag *analysis.Diagnostic) ([]source.RelatedInformation, error) {
 	var out []source.RelatedInformation
 	for _, related := range diag.Related {
 		spn, err := span.NewRange(fset, related.Pos, related.End).Span()
 		if err != nil {
 			return nil, err
 		}
-		rng, err := spanToRange(ctx, pkg, spn)
+		rng, err := spanToRange(pkg, spn)
 		if err != nil {
 			return nil, err
 		}
@@ -200,7 +200,7 @@
 	}.Span()
 }
 
-func scannerErrorRange(ctx context.Context, fset *token.FileSet, pkg *pkg, posn token.Position) (span.Span, error) {
+func scannerErrorRange(fset *token.FileSet, pkg *pkg, posn token.Position) (span.Span, error) {
 	ph, _, err := source.FindFileInPackage(pkg, span.URIFromPath(posn.Filename))
 	if err != nil {
 		return span.Span{}, err
@@ -219,7 +219,7 @@
 
 // spanToRange converts a span.Span to a protocol.Range,
 // assuming that the span belongs to the package whose diagnostics are being computed.
-func spanToRange(ctx context.Context, pkg *pkg, spn span.Span) (protocol.Range, error) {
+func spanToRange(pkg *pkg, spn span.Span) (protocol.Range, error) {
 	ph, _, err := source.FindFileInPackage(pkg, spn.URI())
 	if err != nil {
 		return protocol.Range{}, err
diff --git a/internal/lsp/cache/load.go b/internal/lsp/cache/load.go
index 7e91753..dab568c 100644
--- a/internal/lsp/cache/load.go
+++ b/internal/lsp/cache/load.go
@@ -114,7 +114,7 @@
 			continue
 		}
 		// Skip test main packages.
-		if isTestMain(ctx, pkg, s.view.gocache) {
+		if isTestMain(pkg, s.view.gocache) {
 			continue
 		}
 		// Set the metadata for this package.
@@ -161,7 +161,7 @@
 	}
 
 	copied := map[packageID]struct{}{
-		id: struct{}{},
+		id: {},
 	}
 	for k, v := range seen {
 		copied[k] = v
@@ -218,7 +218,7 @@
 	return m, nil
 }
 
-func isTestMain(ctx context.Context, pkg *packages.Package, gocache string) bool {
+func isTestMain(pkg *packages.Package, gocache string) bool {
 	// Test mains must have an import path that ends with ".test".
 	if !strings.HasSuffix(pkg.PkgPath, ".test") {
 		return false
diff --git a/internal/lsp/cache/mod.go b/internal/lsp/cache/mod.go
index af4fd8d..1cccaa4 100644
--- a/internal/lsp/cache/mod.go
+++ b/internal/lsp/cache/mod.go
@@ -402,7 +402,7 @@
 				data.missingDeps[req.Mod.Path] = req
 			}
 		}
-		data.parseErrors, data.err = modRequireErrors(ctx, options, data)
+		data.parseErrors, data.err = modRequireErrors(options, data)
 
 		for _, req := range data.missingDeps {
 			if data.unusedDeps[req.Mod.Path] != nil {
@@ -464,7 +464,7 @@
 
 // modRequireErrors extracts the errors that occur on the require directives.
 // It checks for directness issues and unused dependencies.
-func modRequireErrors(ctx context.Context, options source.Options, data *modData) ([]source.Error, error) {
+func modRequireErrors(options source.Options, data *modData) ([]source.Error, error) {
 	var errors []source.Error
 	for dep, req := range data.unusedDeps {
 		if req.Syntax == nil {
@@ -472,7 +472,7 @@
 		}
 		// Handle dependencies that are incorrectly labeled indirect and vice versa.
 		if data.missingDeps[dep] != nil && req.Indirect != data.missingDeps[dep].Indirect {
-			directErr, err := modDirectnessErrors(ctx, options, data, req)
+			directErr, err := modDirectnessErrors(options, data, req)
 			if err != nil {
 				return nil, err
 			}
@@ -484,7 +484,7 @@
 			if err != nil {
 				return nil, err
 			}
-			edits, err := dropDependencyEdits(ctx, options, data, req)
+			edits, err := dropDependencyEdits(options, data, req)
 			if err != nil {
 				return nil, err
 			}
@@ -504,7 +504,7 @@
 }
 
 // modDirectnessErrors extracts errors when a dependency is labeled indirect when it should be direct and vice versa.
-func modDirectnessErrors(ctx context.Context, options source.Options, data *modData, req *modfile.Require) (source.Error, error) {
+func modDirectnessErrors(options source.Options, data *modData, req *modfile.Require) (source.Error, error) {
 	rng, err := rangeFromPositions(data.origfh.Identity().URI, data.origMapper, req.Syntax.Start, req.Syntax.End)
 	if err != nil {
 		return source.Error{}, err
@@ -520,7 +520,7 @@
 				return source.Error{}, err
 			}
 		}
-		edits, err := changeDirectnessEdits(ctx, options, data, req, false)
+		edits, err := changeDirectnessEdits(options, data, req, false)
 		if err != nil {
 			return source.Error{}, err
 		}
@@ -536,7 +536,7 @@
 		}, nil
 	}
 	// If the dependency should be indirect, add the // indirect.
-	edits, err := changeDirectnessEdits(ctx, options, data, req, true)
+	edits, err := changeDirectnessEdits(options, data, req, true)
 	if err != nil {
 		return source.Error{}, err
 	}
@@ -564,7 +564,7 @@
 // 	module t
 //
 // 	go 1.11
-func dropDependencyEdits(ctx context.Context, options source.Options, data *modData, req *modfile.Require) ([]protocol.TextEdit, error) {
+func dropDependencyEdits(options source.Options, data *modData, req *modfile.Require) ([]protocol.TextEdit, error) {
 	if err := data.origParsedFile.DropRequire(req.Mod.Path); err != nil {
 		return nil, err
 	}
@@ -598,7 +598,7 @@
 // 	go 1.11
 //
 // 	require golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee // indirect
-func changeDirectnessEdits(ctx context.Context, options source.Options, data *modData, req *modfile.Require, indirect bool) ([]protocol.TextEdit, error) {
+func changeDirectnessEdits(options source.Options, data *modData, req *modfile.Require, indirect bool) ([]protocol.TextEdit, error) {
 	var newReq []*modfile.Require
 	prevIndirect := false
 	// Change the directness in the matching require statement.
diff --git a/internal/lsp/cache/parse.go b/internal/lsp/cache/parse.go
index 9b52f9e..3c796c9 100644
--- a/internal/lsp/cache/parse.go
+++ b/internal/lsp/cache/parse.go
@@ -307,7 +307,7 @@
 		case *ast.BlockStmt:
 			newSrc = fixMissingCurlies(f, n, parent, tok, src)
 		case *ast.SelectorExpr:
-			newSrc = fixDanglingSelector(f, n, parent, tok, src)
+			newSrc = fixDanglingSelector(n, tok, src)
 		}
 
 		return newSrc == nil
@@ -460,7 +460,7 @@
 // To fix completion at "<>", we insert a real "_" after the "." so the
 // following declaration of "x" can be parsed and type checked
 // normally.
-func fixDanglingSelector(f *ast.File, s *ast.SelectorExpr, parent ast.Node, tok *token.File, src []byte) []byte {
+func fixDanglingSelector(s *ast.SelectorExpr, tok *token.File, src []byte) []byte {
 	if !isPhantomUnderscore(s.Sel, tok, src) {
 		return nil
 	}
diff --git a/internal/lsp/code_action.go b/internal/lsp/code_action.go
index f3dd2c2..75a2cae 100644
--- a/internal/lsp/code_action.go
+++ b/internal/lsp/code_action.go
@@ -111,7 +111,7 @@
 			}
 
 			// Get any actions that might be attributed to missing modules in the go.mod file.
-			actions, err := mod.SuggestedGoFixes(ctx, snapshot, fh, diagnostics)
+			actions, err := mod.SuggestedGoFixes(ctx, snapshot, diagnostics)
 			if err != nil {
 				event.Error(ctx, "quick fixes failed", err, tag.URI.Of(uri))
 			}
diff --git a/internal/lsp/mod/diagnostics.go b/internal/lsp/mod/diagnostics.go
index 16aebe0..d4ad606 100644
--- a/internal/lsp/mod/diagnostics.go
+++ b/internal/lsp/mod/diagnostics.go
@@ -44,7 +44,7 @@
 	}
 
 	reports := map[source.FileIdentity][]source.Diagnostic{
-		realfh.Identity(): []source.Diagnostic{},
+		realfh.Identity(): {},
 	}
 	for _, e := range parseErrors {
 		diag := source.Diagnostic{
@@ -117,7 +117,7 @@
 	return actions
 }
 
-func SuggestedGoFixes(ctx context.Context, snapshot source.Snapshot, gofh source.FileHandle, diags []protocol.Diagnostic) ([]protocol.CodeAction, error) {
+func SuggestedGoFixes(ctx context.Context, snapshot source.Snapshot, diags []protocol.Diagnostic) ([]protocol.CodeAction, error) {
 	// TODO: We will want to support diagnostics for go.mod files even when the -modfile flag is turned off.
 	realURI, tempURI := snapshot.View().ModFiles()
 
diff --git a/internal/lsp/source/completion.go b/internal/lsp/source/completion.go
index 995fd45..7637b3b 100644
--- a/internal/lsp/source/completion.go
+++ b/internal/lsp/source/completion.go
@@ -488,7 +488,7 @@
 		path:                      path,
 		pos:                       pos,
 		seen:                      make(map[types.Object]bool),
-		enclosingFunc:             enclosingFunction(path, rng.Start, pkg.GetTypesInfo()),
+		enclosingFunc:             enclosingFunction(path, pkg.GetTypesInfo()),
 		enclosingCompositeLiteral: enclosingCompositeLiteral(path, rng.Start, pkg.GetTypesInfo()),
 		opts: &completionOptions{
 			matcher:           opts.Matcher,
@@ -953,7 +953,7 @@
 			}
 
 			// Don't use LHS of value spec in RHS.
-			if vs := enclosingValueSpec(c.path, c.pos); vs != nil {
+			if vs := enclosingValueSpec(c.path); vs != nil {
 				for _, ident := range vs.Names {
 					if obj.Pos() == ident.Pos() {
 						continue Names
@@ -1263,7 +1263,7 @@
 
 // enclosingFunction returns the signature and body of the function
 // enclosing the given position.
-func enclosingFunction(path []ast.Node, pos token.Pos, info *types.Info) *funcInfo {
+func enclosingFunction(path []ast.Node, info *types.Info) *funcInfo {
 	for _, node := range path {
 		switch t := node.(type) {
 		case *ast.FuncDecl:
diff --git a/internal/lsp/source/completion_format.go b/internal/lsp/source/completion_format.go
index 00b5ac3..4e3afc8 100644
--- a/internal/lsp/source/completion_format.go
+++ b/internal/lsp/source/completion_format.go
@@ -67,7 +67,7 @@
 			detail = "struct{...}" // for anonymous structs
 		} else if obj.IsField() {
 			var err error
-			detail, err = formatFieldType(c.ctx, c.snapshot, c.pkg, obj, c.qf)
+			detail, err = formatFieldType(c.ctx, c.snapshot, c.pkg, obj)
 			if err != nil {
 				detail = types.TypeString(obj.Type(), c.qf)
 			}
diff --git a/internal/lsp/source/diagnostics.go b/internal/lsp/source/diagnostics.go
index eb6c869..dbf7529 100644
--- a/internal/lsp/source/diagnostics.go
+++ b/internal/lsp/source/diagnostics.go
@@ -210,7 +210,7 @@
 		} else if len(set.typeErrors) > 0 {
 			hasTypeErrors = true
 		}
-		if err := addReports(ctx, snapshot, reports, uri, diags...); err != nil {
+		if err := addReports(snapshot, reports, uri, diags...); err != nil {
 			return false, false, err
 		}
 	}
@@ -302,7 +302,7 @@
 		if onlyDeletions(e.SuggestedFixes) {
 			tags = append(tags, protocol.Unnecessary)
 		}
-		if err := addReports(ctx, snapshot, reports, e.URI, &Diagnostic{
+		if err := addReports(snapshot, reports, e.URI, &Diagnostic{
 			Range:          e.Range,
 			Message:        e.Message,
 			Source:         e.Category,
@@ -329,7 +329,7 @@
 	return nil
 }
 
-func addReports(ctx context.Context, snapshot Snapshot, reports map[FileIdentity][]Diagnostic, uri span.URI, diagnostics ...*Diagnostic) error {
+func addReports(snapshot Snapshot, reports map[FileIdentity][]Diagnostic, uri span.URI, diagnostics ...*Diagnostic) error {
 	if snapshot.View().Ignore(uri) {
 		return nil
 	}
diff --git a/internal/lsp/source/format.go b/internal/lsp/source/format.go
index 643d599..d55ed28 100644
--- a/internal/lsp/source/format.go
+++ b/internal/lsp/source/format.go
@@ -36,7 +36,7 @@
 	// Using format.Node on an AST with errors may result in code being modified.
 	// Attempt to format the source of this file instead.
 	if parseErrors != nil {
-		formatted, err := formatSource(ctx, snapshot, fh)
+		formatted, err := formatSource(ctx, fh)
 		if err != nil {
 			return nil, err
 		}
@@ -56,7 +56,7 @@
 	return computeTextEdits(ctx, snapshot.View(), pgh.File(), m, buf.String())
 }
 
-func formatSource(ctx context.Context, s Snapshot, fh FileHandle) ([]byte, error) {
+func formatSource(ctx context.Context, fh FileHandle) ([]byte, error) {
 	ctx, done := event.StartSpan(ctx, "source.formatSource")
 	defer done()
 
diff --git a/internal/lsp/source/rename.go b/internal/lsp/source/rename.go
index d47a604..6f79e26 100644
--- a/internal/lsp/source/rename.go
+++ b/internal/lsp/source/rename.go
@@ -219,7 +219,7 @@
 
 // docComment returns the doc for an identifier.
 func (r *renamer) docComment(pkg Package, id *ast.Ident) *ast.CommentGroup {
-	_, nodes, _ := pathEnclosingInterval(r.ctx, r.fset, pkg, id.Pos(), id.End())
+	_, nodes, _ := pathEnclosingInterval(r.fset, pkg, id.Pos(), id.End())
 	for _, node := range nodes {
 		switch decl := node.(type) {
 		case *ast.FuncDecl:
@@ -250,7 +250,7 @@
 func (r *renamer) updatePkgName(pkgName *types.PkgName) (*diff.TextEdit, error) {
 	// Modify ImportSpec syntax to add or remove the Name as needed.
 	pkg := r.packages[pkgName.Pkg()]
-	_, path, _ := pathEnclosingInterval(r.ctx, r.fset, pkg, pkgName.Pos(), pkgName.Pos())
+	_, path, _ := pathEnclosingInterval(r.fset, pkg, pkgName.Pos(), pkgName.Pos())
 	if len(path) < 2 {
 		return nil, errors.Errorf("no path enclosing interval for %s", pkgName.Name())
 	}
diff --git a/internal/lsp/source/rename_check.go b/internal/lsp/source/rename_check.go
index 44cc555..8ff2879 100644
--- a/internal/lsp/source/rename_check.go
+++ b/internal/lsp/source/rename_check.go
@@ -7,7 +7,6 @@
 package source
 
 import (
-	"context"
 	"fmt"
 	"go/ast"
 	"go/token"
@@ -193,7 +192,7 @@
 			// Check for super-block conflict.
 			// The name r.to is defined in a superblock.
 			// Is that name referenced from within this block?
-			forEachLexicalRef(r.ctx, pkg, to, func(id *ast.Ident, block *types.Scope) bool {
+			forEachLexicalRef(pkg, to, func(id *ast.Ident, block *types.Scope) bool {
 				_, obj := lexicalLookup(block, from.Name(), id.Pos())
 				if obj == from {
 					// super-block conflict
@@ -211,7 +210,7 @@
 	// Check for sub-block conflict.
 	// Is there an intervening definition of r.to between
 	// the block defining 'from' and some reference to it?
-	forEachLexicalRef(r.ctx, pkg, from, func(id *ast.Ident, block *types.Scope) bool {
+	forEachLexicalRef(pkg, from, func(id *ast.Ident, block *types.Scope) bool {
 		// Find the block that defines the found reference.
 		// It may be an ancestor.
 		fromBlock, _ := lexicalLookup(block, from.Name(), id.Pos())
@@ -283,7 +282,7 @@
 // pkg that is a reference to obj in lexical scope.  block is the
 // lexical block enclosing the reference.  If fn returns false the
 // iteration is terminated and findLexicalRefs returns false.
-func forEachLexicalRef(ctx context.Context, pkg Package, obj types.Object, fn func(id *ast.Ident, block *types.Scope) bool) bool {
+func forEachLexicalRef(pkg Package, obj types.Object, fn func(id *ast.Ident, block *types.Scope) bool) bool {
 	ok := true
 	var stack []ast.Node
 
@@ -386,7 +385,7 @@
 	// go/types offers no easy way to get from a field (or interface
 	// method) to its declaring struct (or interface), so we must
 	// ascend the AST.
-	pkg, path, _ := pathEnclosingInterval(r.ctx, r.fset, r.packages[from.Pkg()], from.Pos(), from.Pos())
+	pkg, path, _ := pathEnclosingInterval(r.fset, r.packages[from.Pkg()], from.Pos(), from.Pos())
 	if pkg == nil || path == nil {
 		return
 	}
@@ -842,7 +841,7 @@
 //
 // The zero value is returned if not found.
 //
-func pathEnclosingInterval(ctx context.Context, fset *token.FileSet, pkg Package, start, end token.Pos) (resPkg Package, path []ast.Node, exact bool) {
+func pathEnclosingInterval(fset *token.FileSet, pkg Package, start, end token.Pos) (resPkg Package, path []ast.Node, exact bool) {
 	var pkgs = []Package{pkg}
 	for _, f := range pkg.GetSyntax() {
 		for _, imp := range f.Imports {
diff --git a/internal/lsp/source/symbols.go b/internal/lsp/source/symbols.go
index dff505d..1a1624d 100644
--- a/internal/lsp/source/symbols.go
+++ b/internal/lsp/source/symbols.go
@@ -36,7 +36,7 @@
 		switch decl := decl.(type) {
 		case *ast.FuncDecl:
 			if obj := info.ObjectOf(decl.Name); obj != nil {
-				fs, err := funcSymbol(ctx, snapshot.View(), pkg, decl, obj, q)
+				fs, err := funcSymbol(snapshot.View(), pkg, decl, obj, q)
 				if err != nil {
 					return nil, err
 				}
@@ -52,7 +52,7 @@
 				switch spec := spec.(type) {
 				case *ast.TypeSpec:
 					if obj := info.ObjectOf(spec.Name); obj != nil {
-						ts, err := typeSymbol(ctx, snapshot.View(), pkg, info, spec, obj, q)
+						ts, err := typeSymbol(snapshot.View(), pkg, info, spec, obj, q)
 						if err != nil {
 							return nil, err
 						}
@@ -62,7 +62,7 @@
 				case *ast.ValueSpec:
 					for _, name := range spec.Names {
 						if obj := info.ObjectOf(name); obj != nil {
-							vs, err := varSymbol(ctx, snapshot.View(), pkg, decl, name, obj, q)
+							vs, err := varSymbol(snapshot.View(), pkg, decl, name, obj, q)
 							if err != nil {
 								return nil, err
 							}
@@ -76,7 +76,7 @@
 	return symbols, nil
 }
 
-func funcSymbol(ctx context.Context, view View, pkg Package, decl *ast.FuncDecl, obj types.Object, q types.Qualifier) (protocol.DocumentSymbol, error) {
+func funcSymbol(view View, pkg Package, decl *ast.FuncDecl, obj types.Object, q types.Qualifier) (protocol.DocumentSymbol, error) {
 	s := protocol.DocumentSymbol{
 		Name: obj.Name(),
 		Kind: protocol.Function,
@@ -112,7 +112,7 @@
 	return s, nil
 }
 
-func typeSymbol(ctx context.Context, view View, pkg Package, info *types.Info, spec *ast.TypeSpec, obj types.Object, q types.Qualifier) (protocol.DocumentSymbol, error) {
+func typeSymbol(view View, pkg Package, info *types.Info, spec *ast.TypeSpec, obj types.Object, q types.Qualifier) (protocol.DocumentSymbol, error) {
 	s := protocol.DocumentSymbol{
 		Name: obj.Name(),
 	}
@@ -238,7 +238,7 @@
 	return nil, nil
 }
 
-func varSymbol(ctx context.Context, view View, pkg Package, decl ast.Node, name *ast.Ident, obj types.Object, q types.Qualifier) (protocol.DocumentSymbol, error) {
+func varSymbol(view View, pkg Package, decl ast.Node, name *ast.Ident, obj types.Object, q types.Qualifier) (protocol.DocumentSymbol, error) {
 	s := protocol.DocumentSymbol{
 		Name: obj.Name(),
 		Kind: protocol.Variable,
diff --git a/internal/lsp/source/util.go b/internal/lsp/source/util.go
index 407169c..16fa1be 100644
--- a/internal/lsp/source/util.go
+++ b/internal/lsp/source/util.go
@@ -458,7 +458,7 @@
 	return nil
 }
 
-func enclosingValueSpec(path []ast.Node, pos token.Pos) *ast.ValueSpec {
+func enclosingValueSpec(path []ast.Node) *ast.ValueSpec {
 	for _, n := range path {
 		if vs, ok := n.(*ast.ValueSpec); ok {
 			return vs
@@ -504,7 +504,7 @@
 	params := make([]string, 0, sig.Params().Len())
 	for i := 0; i < sig.Params().Len(); i++ {
 		el := sig.Params().At(i)
-		typ, err := formatFieldType(ctx, s, pkg, el, qf)
+		typ, err := formatFieldType(ctx, s, pkg, el)
 		if err != nil {
 			typ = types.TypeString(el.Type(), qf)
 		}
@@ -523,7 +523,7 @@
 	return params
 }
 
-func formatFieldType(ctx context.Context, s Snapshot, srcpkg Package, obj types.Object, qf types.Qualifier) (string, error) {
+func formatFieldType(ctx context.Context, s Snapshot, srcpkg Package, obj types.Object) (string, error) {
 	file, pkg, err := findPosInPackage(s.View(), srcpkg, obj.Pos())
 	if err != nil {
 		return "", err
diff --git a/internal/lsp/tests/tests.go b/internal/lsp/tests/tests.go
index efdff59..c4c4834 100644
--- a/internal/lsp/tests/tests.go
+++ b/internal/lsp/tests/tests.go
@@ -1215,7 +1215,7 @@
 	folders := []string{}
 	root = filepath.FromSlash(root)
 	// Get all test directories that are one level deeper than root.
-	if err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
+	if err := filepath.Walk(root, func(path string, info os.FileInfo, _ error) error {
 		if !info.IsDir() {
 			return nil
 		}
diff --git a/internal/lsp/tests/util.go b/internal/lsp/tests/util.go
index 924fbd5..d6864d3 100644
--- a/internal/lsp/tests/util.go
+++ b/internal/lsp/tests/util.go
@@ -66,18 +66,18 @@
 	sort.Slice(want, func(i, j int) bool { return want[i].Name < want[j].Name })
 	sort.Slice(got, func(i, j int) bool { return got[i].Name < got[j].Name })
 	if len(got) != len(want) {
-		return summarizeSymbols(t, -1, want, got, "different lengths got %v want %v", len(got), len(want))
+		return summarizeSymbols(-1, want, got, "different lengths got %v want %v", len(got), len(want))
 	}
 	for i, w := range want {
 		g := got[i]
 		if w.Name != g.Name {
-			return summarizeSymbols(t, i, want, got, "incorrect name got %v want %v", g.Name, w.Name)
+			return summarizeSymbols(i, want, got, "incorrect name got %v want %v", g.Name, w.Name)
 		}
 		if w.Kind != g.Kind {
-			return summarizeSymbols(t, i, want, got, "incorrect kind got %v want %v", g.Kind, w.Kind)
+			return summarizeSymbols(i, want, got, "incorrect kind got %v want %v", g.Kind, w.Kind)
 		}
 		if protocol.CompareRange(w.SelectionRange, g.SelectionRange) != 0 {
-			return summarizeSymbols(t, i, want, got, "incorrect span got %v want %v", g.SelectionRange, w.SelectionRange)
+			return summarizeSymbols(i, want, got, "incorrect span got %v want %v", g.SelectionRange, w.SelectionRange)
 		}
 		if msg := DiffSymbols(t, uri, w.Children, g.Children); msg != "" {
 			return fmt.Sprintf("children of %s: %s", w.Name, msg)
@@ -86,7 +86,7 @@
 	return ""
 }
 
-func summarizeSymbols(t *testing.T, i int, want, got []protocol.DocumentSymbol, reason string, args ...interface{}) string {
+func summarizeSymbols(i int, want, got []protocol.DocumentSymbol, reason string, args ...interface{}) string {
 	msg := &bytes.Buffer{}
 	fmt.Fprint(msg, "document symbols failed")
 	if i >= 0 {