From 7d206e10da11c2c24ecc75fc000f2924f811b649 Mon Sep 17 00:00:00 2001 From: Heschi Kreinick Date: Fri, 8 Nov 2019 13:43:54 -0500 Subject: [PATCH] internal/lsp/source: start import diffs at byte 0 I assumed that f.Pos() would be the first byte of the file, but it's the position of the package declaration. This kills the file. Just use 0. Fixes golang/go#35458. Change-Id: Ic77c93344c71435ef8e5624c2f2defb619139a15 Reviewed-on: https://go-review.googlesource.com/c/tools/+/206145 Run-TryBot: Heschi Kreinick Reviewed-by: Rebecca Stambler --- internal/lsp/source/format.go | 2 +- .../lsp/testdata/imports/issue35458.go.golden | 14 ++++++++++++ .../lsp/testdata/imports/issue35458.go.in | 22 +++++++++++++++++++ internal/lsp/testdata/summary.txt.golden | 2 +- 4 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 internal/lsp/testdata/imports/issue35458.go.golden create mode 100644 internal/lsp/testdata/imports/issue35458.go.in diff --git a/internal/lsp/source/format.go b/internal/lsp/source/format.go index c6aefeed23..6b0e409bd5 100644 --- a/internal/lsp/source/format.go +++ b/internal/lsp/source/format.go @@ -277,7 +277,7 @@ func trimToFirstNonImport(fset *token.FileSet, f *ast.File, src []byte) []byte { if firstDecl != nil { end = fset.File(f.Pos()).LineStart(fset.Position(firstDecl.Pos()).Line - 1) } - return src[fset.Position(f.Pos()).Offset:fset.Position(end).Offset] + return src[0:fset.Position(end).Offset] } // CandidateImports returns every import that could be added to filename. diff --git a/internal/lsp/testdata/imports/issue35458.go.golden b/internal/lsp/testdata/imports/issue35458.go.golden new file mode 100644 index 0000000000..59aaf148ff --- /dev/null +++ b/internal/lsp/testdata/imports/issue35458.go.golden @@ -0,0 +1,14 @@ +-- goimports -- +package imports //@import("package") + +func _() { + println("Hello, world!") +} + + + + + + + + diff --git a/internal/lsp/testdata/imports/issue35458.go.in b/internal/lsp/testdata/imports/issue35458.go.in new file mode 100644 index 0000000000..f9b07b8844 --- /dev/null +++ b/internal/lsp/testdata/imports/issue35458.go.in @@ -0,0 +1,22 @@ + + + + + +package imports //@import("package") + + + + + + +func _() { + println("Hello, world!") +} + + + + + + + diff --git a/internal/lsp/testdata/summary.txt.golden b/internal/lsp/testdata/summary.txt.golden index 4acd1f3adc..a875e5a8ed 100644 --- a/internal/lsp/testdata/summary.txt.golden +++ b/internal/lsp/testdata/summary.txt.golden @@ -9,7 +9,7 @@ CaseSensitiveCompletionsCount = 4 DiagnosticsCount = 22 FoldingRangesCount = 2 FormatCount = 6 -ImportCount = 6 +ImportCount = 7 SuggestedFixCount = 1 DefinitionsCount = 38 TypeDefinitionsCount = 2