aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlan Donovan <adonovan@google.com>2025-11-21 11:05:05 -0500
committerAlan Donovan <adonovan@google.com>2025-12-03 06:50:50 -0800
commitfa30b68767fd3ad67517bc6601ae79f9d89e1b51 (patch)
treef05df377ce42a93939ac7fc4443e2b7c1a393842 /src
parent32a9804c7ba3f4a0e0bd26cc24b9204860a49ec8 (diff)
downloadgo-fa30b68767fd3ad67517bc6601ae79f9d89e1b51.tar.xz
go/{ast,doc}: update BasicLit.ValueEnd as well as ValuePos
For #76395 Change-Id: Ie2ad715a05cb298b08667cfe8a8394f1dfa3936c Reviewed-on: https://go-review.googlesource.com/c/go/+/722880 Reviewed-by: Robert Findley <rfindley@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Diffstat (limited to 'src')
-rw-r--r--src/go/ast/import.go13
-rw-r--r--src/go/doc/example.go13
2 files changed, 24 insertions, 2 deletions
diff --git a/src/go/ast/import.go b/src/go/ast/import.go
index 3e53f10677..84d00fef99 100644
--- a/src/go/ast/import.go
+++ b/src/go/ast/import.go
@@ -222,7 +222,7 @@ func sortSpecs(fset *token.FileSet, f *File, d *GenDecl, specs []Spec) []Spec {
if s.Name != nil {
s.Name.NamePos = pos[i].Start
}
- s.Path.ValuePos = pos[i].Start
+ updateBasicLitPos(s.Path, pos[i].Start)
s.EndPos = pos[i].End
for _, g := range importComments[s] {
for _, c := range g.cg.List {
@@ -245,3 +245,14 @@ func sortSpecs(fset *token.FileSet, f *File, d *GenDecl, specs []Spec) []Spec {
return specs
}
+
+// updateBasicLitPos updates lit.Pos,
+// ensuring that lit.End is displaced by the same amount.
+// (See https://go.dev/issue/76395.)
+func updateBasicLitPos(lit *BasicLit, pos token.Pos) {
+ len := lit.End() - lit.Pos()
+ lit.ValuePos = pos
+ if lit.ValueEnd.IsValid() {
+ lit.ValueEnd = pos + len
+ }
+}
diff --git a/src/go/doc/example.go b/src/go/doc/example.go
index 5c03c6612f..228bdf58f8 100644
--- a/src/go/doc/example.go
+++ b/src/go/doc/example.go
@@ -238,7 +238,7 @@ func playExample(file *ast.File, f *ast.FuncDecl) *ast.File {
spec := *s
path := *s.Path
spec.Path = &path
- spec.Path.ValuePos = groupStart(&spec)
+ updateBasicLitPos(spec.Path, groupStart(&spec))
namedImports = append(namedImports, &spec)
delete(unresolved, n)
}
@@ -720,3 +720,14 @@ func isExampleSuffix(s string) bool {
r, size := utf8.DecodeRuneInString(s)
return size > 0 && unicode.IsLower(r)
}
+
+// updateBasicLitPos updates lit.Pos,
+// ensuring that lit.End is displaced by the same amount.
+// (See https://go.dev/issue/76395.)
+func updateBasicLitPos(lit *ast.BasicLit, pos token.Pos) {
+ len := lit.End() - lit.Pos()
+ lit.ValuePos = pos
+ if lit.ValueEnd.IsValid() {
+ lit.ValueEnd = pos + len
+ }
+}