gopls/internal/lsp: simplify prepareRename tests

- simplify collection to use an expected span.Span and use mustRange
- remove the source_test.go version of the test, as it is redundant

For golang/go#54845

Change-Id: I3a7da8547e27dc157fb513486a151031ec135746
Reviewed-on: https://go-review.googlesource.com/c/tools/+/432138
gopls-CI: kokoro <noreply+kokoro@google.com>
Run-TryBot: Robert Findley <rfindley@google.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
diff --git a/gopls/internal/lsp/lsp_test.go b/gopls/internal/lsp/lsp_test.go
index 02b5727..bdf8a6b 100644
--- a/gopls/internal/lsp/lsp_test.go
+++ b/gopls/internal/lsp/lsp_test.go
@@ -1074,7 +1074,12 @@
 		t.Errorf("prepare rename failed for %v: got error: %v", src, err)
 		return
 	}
-	// we all love typed nils
+
+	// TODO(rfindley): can we consolidate on a single representation for
+	// PrepareRename results, and use cmp.Diff here?
+
+	// PrepareRename may fail with no error if there was no object found at the
+	// position.
 	if got == nil {
 		if want.Text != "" { // expected an ident.
 			t.Errorf("prepare rename failed for %v: got nil", src)
@@ -1088,7 +1093,7 @@
 			t.Errorf("prepare rename failed: incorrect point, got %v want %v", got.Range.Start, want.Range.Start)
 		}
 	} else {
-		if protocol.CompareRange(got.Range, want.Range) != 0 {
+		if got.Range != want.Range {
 			t.Errorf("prepare rename failed: incorrect range got %v want %v", got.Range, want.Range)
 		}
 	}
diff --git a/gopls/internal/lsp/rename.go b/gopls/internal/lsp/rename.go
index 5127b5d..aff2f30 100644
--- a/gopls/internal/lsp/rename.go
+++ b/gopls/internal/lsp/rename.go
@@ -35,6 +35,12 @@
 	}, nil
 }
 
+// prepareRename implements the textDocument/prepareRename handler. It may
+// return (nil, nil) if there is no rename at the cursor position, but it is
+// not desirable to display an error to the user.
+//
+// TODO(rfindley): why wouldn't we want to show an error to the user, if the
+// user initiated a rename request at the cursor?
 func (s *Server) prepareRename(ctx context.Context, params *protocol.PrepareRenameParams) (*protocol.PrepareRename2Gn, error) {
 	snapshot, fh, ok, release, err := s.beginFileRequest(ctx, params.TextDocument.URI, source.Go)
 	defer release()
diff --git a/gopls/internal/lsp/source/source_test.go b/gopls/internal/lsp/source/source_test.go
index ad2ca6b..155832a 100644
--- a/gopls/internal/lsp/source/source_test.go
+++ b/gopls/internal/lsp/source/source_test.go
@@ -839,43 +839,7 @@
 }
 
 func (r *runner) PrepareRename(t *testing.T, src span.Span, want *source.PrepareItem) {
-	_, srcRng, err := spanToRange(r.data, src)
-	if err != nil {
-		t.Fatal(err)
-	}
-	// Find the identifier at the position.
-	fh, err := r.snapshot.GetFile(r.ctx, src.URI())
-	if err != nil {
-		t.Fatal(err)
-	}
-	item, _, err := source.PrepareRename(r.ctx, r.snapshot, fh, srcRng.Start)
-	if err != nil {
-		if want.Text != "" { // expected an ident.
-			t.Errorf("prepare rename failed for %v: got error: %v", src, err)
-		}
-		return
-	}
-	if item == nil {
-		if want.Text != "" {
-			t.Errorf("prepare rename failed for %v: got nil", src)
-		}
-		return
-	}
-	if want.Text == "" {
-		t.Errorf("prepare rename failed for %v: expected nil, got %v", src, item)
-		return
-	}
-	if item.Range.Start == item.Range.End {
-		// Special case for 0-length ranges. Marks can't specify a 0-length range,
-		// so just compare the start.
-		if item.Range.Start != want.Range.Start {
-			t.Errorf("prepare rename failed: incorrect point, got %v want %v", item.Range.Start, want.Range.Start)
-		}
-	} else {
-		if protocol.CompareRange(item.Range, want.Range) != 0 {
-			t.Errorf("prepare rename failed: incorrect range got %v want %v", item.Range, want.Range)
-		}
-	}
+	// Removed in favor of just using the lsp_test implementation. See ../lsp_test.go
 }
 
 func (r *runner) Symbols(t *testing.T, uri span.URI, expectedSymbols []protocol.DocumentSymbol) {
diff --git a/gopls/internal/lsp/tests/tests.go b/gopls/internal/lsp/tests/tests.go
index f953a8f..39849ca 100644
--- a/gopls/internal/lsp/tests/tests.go
+++ b/gopls/internal/lsp/tests/tests.go
@@ -1365,22 +1365,9 @@
 	data.Renames[src] = newText
 }
 
-func (data *Data) collectPrepareRenames(src span.Span, rng span.Range, placeholder string) {
-	m, err := data.Mapper(src.URI())
-	if err != nil {
-		data.t.Fatal(err)
-	}
-	// Convert range to span and then to protocol.Range.
-	spn, err := rng.Span()
-	if err != nil {
-		data.t.Fatal(err)
-	}
-	prng, err := m.Range(spn)
-	if err != nil {
-		data.t.Fatal(err)
-	}
+func (data *Data) collectPrepareRenames(src, spn span.Span, placeholder string) {
 	data.PrepareRenames[src] = &source.PrepareItem{
-		Range: prng,
+		Range: data.mustRange(spn),
 		Text:  placeholder,
 	}
 }