From 9cb3dcf692a103de0fd68c26f4f04183e0933f7c Mon Sep 17 00:00:00 2001 From: Ian Cottrell Date: Thu, 2 May 2019 13:01:46 -0400 Subject: [PATCH] internal/span: update the offset if the end offset should be valid but is not It used to be that when the start offset was valid, it was presumed the end was as well. This was not true in the case where the start offset was not supplied but could be inferred (at the very start of the file). Fixes golang/go#31797 Change-Id: Ie5a079796fa0f77cef5571a4e5b309c798e1e06b Reviewed-on: https://go-review.googlesource.com/c/tools/+/174943 Run-TryBot: Ian Cottrell TryBot-Result: Gobot Gobot Reviewed-by: Rebecca Stambler --- internal/lsp/testdata/format/one_line.go.in | 1 + internal/lsp/testdata/format/one_line.gofmt-d.golden.go | 6 ++++++ internal/lsp/testdata/format/one_line.gofmt.golden.go | 1 + internal/lsp/tests/tests.go | 2 +- internal/span/span.go | 2 +- 5 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 internal/lsp/testdata/format/one_line.go.in create mode 100644 internal/lsp/testdata/format/one_line.gofmt-d.golden.go create mode 100644 internal/lsp/testdata/format/one_line.gofmt.golden.go diff --git a/internal/lsp/testdata/format/one_line.go.in b/internal/lsp/testdata/format/one_line.go.in new file mode 100644 index 0000000000..30f4137553 --- /dev/null +++ b/internal/lsp/testdata/format/one_line.go.in @@ -0,0 +1 @@ +package format //@format("package") \ No newline at end of file diff --git a/internal/lsp/testdata/format/one_line.gofmt-d.golden.go b/internal/lsp/testdata/format/one_line.gofmt-d.golden.go new file mode 100644 index 0000000000..44f557c94c --- /dev/null +++ b/internal/lsp/testdata/format/one_line.gofmt-d.golden.go @@ -0,0 +1,6 @@ +--- format/one_line.go.orig ++++ format/one_line.go +@@ -1 +1 @@ +-package format //@format("package") +\ No newline at end of file ++package format //@format("package") diff --git a/internal/lsp/testdata/format/one_line.gofmt.golden.go b/internal/lsp/testdata/format/one_line.gofmt.golden.go new file mode 100644 index 0000000000..59aca82310 --- /dev/null +++ b/internal/lsp/testdata/format/one_line.gofmt.golden.go @@ -0,0 +1 @@ +package format //@format("package") diff --git a/internal/lsp/tests/tests.go b/internal/lsp/tests/tests.go index 22d4a5d88e..4a0363b344 100644 --- a/internal/lsp/tests/tests.go +++ b/internal/lsp/tests/tests.go @@ -29,7 +29,7 @@ import ( const ( ExpectedCompletionsCount = 85 ExpectedDiagnosticsCount = 17 - ExpectedFormatCount = 4 + ExpectedFormatCount = 5 ExpectedDefinitionsCount = 21 ExpectedTypeDefinitionsCount = 2 ExpectedHighlightsCount = 2 diff --git a/internal/span/span.go b/internal/span/span.go index 7719257ddb..6da7a05f15 100644 --- a/internal/span/span.go +++ b/internal/span/span.go @@ -249,7 +249,7 @@ func (s *Span) update(c Converter, withPos, withOffset bool) error { return err } } - if withOffset && !s.HasOffset() { + if withOffset && (!s.HasOffset() || (s.v.End.hasPosition() && !s.v.End.hasOffset())) { if err := s.v.Start.updateOffset(c); err != nil { return err }