internal/lsp: fix nil pointer in renaming to "error"
Fixes golang/go#37963
Change-Id: I0a46cbcbd250729761b9a8323b942202bb1dbd75
Reviewed-on: https://go-review.googlesource.com/c/tools/+/224477
Run-TryBot: Rebecca Stambler <rstambler@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rohan Challa <rohan@golang.org>
diff --git a/internal/lsp/source/rename_check.go b/internal/lsp/source/rename_check.go
index d08b29f..44cc555 100644
--- a/internal/lsp/source/rename_check.go
+++ b/internal/lsp/source/rename_check.go
@@ -258,7 +258,10 @@
// so ignore pos in that case.
// No analogous clause is needed for file-level objects
// since no reference can appear before an import decl.
- if obj != nil && (b == obj.Pkg().Scope() || obj.Pos() < pos) {
+ if obj == nil || obj.Pkg() == nil {
+ continue
+ }
+ if b == obj.Pkg().Scope() || obj.Pos() < pos {
return b, obj
}
}
diff --git a/internal/lsp/testdata/lsp/primarymod/rename/b/b.go b/internal/lsp/testdata/lsp/primarymod/rename/b/b.go
index c6f7f31..2fd4c7d 100644
--- a/internal/lsp/testdata/lsp/primarymod/rename/b/b.go
+++ b/internal/lsp/testdata/lsp/primarymod/rename/b/b.go
@@ -1,3 +1,9 @@
package b
var c int //@rename("int", "uint")
+
+func _() {
+ a := 1 //@rename("a", "error")
+ a = 2
+ _ = a
+}
diff --git a/internal/lsp/testdata/lsp/primarymod/rename/b/b.go.golden b/internal/lsp/testdata/lsp/primarymod/rename/b/b.go.golden
index 5fd037a..a402a58 100644
--- a/internal/lsp/testdata/lsp/primarymod/rename/b/b.go.golden
+++ b/internal/lsp/testdata/lsp/primarymod/rename/b/b.go.golden
@@ -1,2 +1,13 @@
+-- error-rename --
+package b
+
+var c int //@rename("int", "uint")
+
+func _() {
+ error := 1 //@rename("a", "error")
+ error = 2
+ _ = error
+}
+
-- uint-rename --
cannot rename builtin "int"
diff --git a/internal/lsp/testdata/lsp/summary.txt.golden b/internal/lsp/testdata/lsp/summary.txt.golden
index b7bdc3b..09247fa 100644
--- a/internal/lsp/testdata/lsp/summary.txt.golden
+++ b/internal/lsp/testdata/lsp/summary.txt.golden
@@ -16,7 +16,7 @@
TypeDefinitionsCount = 2
HighlightsCount = 52
ReferencesCount = 9
-RenamesCount = 23
+RenamesCount = 24
PrepareRenamesCount = 7
SymbolsCount = 3
WorkspaceSymbolsCount = 2