gopls/internal/golang: strength reduce ComputeImportFixEdits
Simplify the API of ComputeOneImportFixEdits (renamed to
ComputeImportFixEdits), so that it can be used in more scenarios.
Change-Id: I4c4adb5f38947074dfb005e0c745d1a623bd3fd8
Reviewed-on: https://go-review.googlesource.com/c/tools/+/626280
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Hongxiang Jiang <hxjiang@golang.org>
Auto-Submit: Robert Findley <rfindley@google.com>
diff --git a/gopls/internal/golang/add_import.go b/gopls/internal/golang/add_import.go
index a43256a..7581bc0 100644
--- a/gopls/internal/golang/add_import.go
+++ b/gopls/internal/golang/add_import.go
@@ -20,7 +20,7 @@
if err != nil {
return nil, err
}
- return ComputeOneImportFixEdits(snapshot, pgf, &imports.ImportFix{
+ return ComputeImportFixEdits(snapshot.Options().Local, pgf.Src, &imports.ImportFix{
StmtInfo: imports.ImportInfo{
ImportPath: importPath,
},
diff --git a/gopls/internal/golang/completion/format.go b/gopls/internal/golang/completion/format.go
index 45d734e..baf0890 100644
--- a/gopls/internal/golang/completion/format.go
+++ b/gopls/internal/golang/completion/format.go
@@ -299,7 +299,7 @@
return nil, err
}
- return golang.ComputeOneImportFixEdits(c.snapshot, pgf, &imports.ImportFix{
+ return golang.ComputeImportFixEdits(c.snapshot.Options().Local, pgf.Src, &imports.ImportFix{
StmtInfo: imports.ImportInfo{
ImportPath: imp.importPath,
Name: imp.name,
diff --git a/gopls/internal/golang/fix.go b/gopls/internal/golang/fix.go
index 119ca39..a20658f 100644
--- a/gopls/internal/golang/fix.go
+++ b/gopls/internal/golang/fix.go
@@ -188,7 +188,7 @@
// addEmbedImport adds a missing embed "embed" import with blank name.
func addEmbedImport(ctx context.Context, snapshot *cache.Snapshot, pkg *cache.Package, pgf *parsego.File, _, _ token.Pos) (*token.FileSet, *analysis.SuggestedFix, error) {
// Like golang.AddImport, but with _ as Name and using our pgf.
- protoEdits, err := ComputeOneImportFixEdits(snapshot, pgf, &imports.ImportFix{
+ protoEdits, err := ComputeImportFixEdits(snapshot.Options().Local, pgf.Src, &imports.ImportFix{
StmtInfo: imports.ImportInfo{
ImportPath: "embed",
Name: "_",
diff --git a/gopls/internal/golang/format.go b/gopls/internal/golang/format.go
index 1a7ffbd..fa255e6 100644
--- a/gopls/internal/golang/format.go
+++ b/gopls/internal/golang/format.go
@@ -140,7 +140,7 @@
return nil, nil, err
}
- allFixEdits, err = computeFixEdits(pgf, options, allFixes)
+ allFixEdits, err = computeFixEdits(pgf.Src, options, allFixes)
if err != nil {
return nil, nil, err
}
@@ -148,7 +148,7 @@
// Apply all of the import fixes to the file.
// Add the edits for each fix to the result.
for _, fix := range allFixes {
- edits, err := computeFixEdits(pgf, options, []*imports.ImportFix{fix})
+ edits, err := computeFixEdits(pgf.Src, options, []*imports.ImportFix{fix})
if err != nil {
return nil, nil, err
}
@@ -160,10 +160,10 @@
return allFixEdits, editsPerFix, nil
}
-// ComputeOneImportFixEdits returns text edits for a single import fix.
-func ComputeOneImportFixEdits(snapshot *cache.Snapshot, pgf *parsego.File, fix *imports.ImportFix) ([]protocol.TextEdit, error) {
+// ComputeImportFixEdits returns text edits for a single import fix.
+func ComputeImportFixEdits(localPrefix string, src []byte, fixes ...*imports.ImportFix) ([]protocol.TextEdit, error) {
options := &imports.Options{
- LocalPrefix: snapshot.Options().Local,
+ LocalPrefix: localPrefix,
// Defaults.
AllErrors: true,
Comments: true,
@@ -172,18 +172,18 @@
TabIndent: true,
TabWidth: 8,
}
- return computeFixEdits(pgf, options, []*imports.ImportFix{fix})
+ return computeFixEdits(src, options, fixes)
}
-func computeFixEdits(pgf *parsego.File, options *imports.Options, fixes []*imports.ImportFix) ([]protocol.TextEdit, error) {
+func computeFixEdits(src []byte, options *imports.Options, fixes []*imports.ImportFix) ([]protocol.TextEdit, error) {
// trim the original data to match fixedData
- left, err := importPrefix(pgf.Src)
+ left, err := importPrefix(src)
if err != nil {
return nil, err
}
extra := !strings.Contains(left, "\n") // one line may have more than imports
if extra {
- left = string(pgf.Src)
+ left = string(src)
}
if len(left) > 0 && left[len(left)-1] != '\n' {
left += "\n"
@@ -195,7 +195,7 @@
// used all of origData above, use all of it here too
flags = 0
}
- fixedData, err := imports.ApplyFixes(fixes, "", pgf.Src, options, flags)
+ fixedData, err := imports.ApplyFixes(fixes, "", src, options, flags)
if err != nil {
return nil, err
}