]> Cypherpunks repositories - gostls13.git/commitdiff
all: update vendored x/tools
authorDmitri Shuralyov <dmitshur@golang.org>
Fri, 2 Jan 2026 16:36:00 +0000 (11:36 -0500)
committerGopher Robot <gobot@golang.org>
Wed, 7 Jan 2026 19:30:02 +0000 (11:30 -0800)
Pull in the following x/tools changes:

- CL 732260: go/analysis/passes/modernize: disable BLoop analyzer
- CL 733340: gopls/internal/analysis/modernize: mapsloop: undefined loop-var

For #74967.
For #77008.

[git-generate]
go install golang.org/x/build/cmd/updatestd@latest
go install golang.org/x/tools/cmd/bundle@latest
updatestd -goroot=$(pwd) -branch=internal-branch.go1.26-vendor

Change-Id: Ic0c10569a4a3a292aec9164e6dd034e55d052904
Reviewed-on: https://go-review.googlesource.com/c/go/+/733780
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
src/cmd/go.mod
src/cmd/go.sum
src/cmd/vendor/golang.org/x/tools/go/analysis/passes/modernize/doc.go
src/cmd/vendor/golang.org/x/tools/go/analysis/passes/modernize/maps.go
src/cmd/vendor/golang.org/x/tools/go/analysis/passes/modernize/modernize.go
src/cmd/vendor/modules.txt

index c7d3cc6136b5494e04f7a98a83a7f1b94682bb02..85e8c4cb5fb305166491f7933daf882523783662 100644 (file)
@@ -11,7 +11,7 @@ require (
        golang.org/x/sys v0.39.0
        golang.org/x/telemetry v0.0.0-20251128220624-abf20d0e57ec
        golang.org/x/term v0.38.0
-       golang.org/x/tools v0.39.1-0.20251205000126-062ef7b6ced2
+       golang.org/x/tools v0.39.1-0.20251230210517-d44be789a05c
 )
 
 require (
index b02c469a41d244b4b045957c138cf503bb64f20e..61c88e5253094079013bc322da6730aebe822e01 100644 (file)
@@ -22,7 +22,7 @@ golang.org/x/term v0.38.0 h1:PQ5pkm/rLO6HnxFR7N2lJHOZX6Kez5Y1gDSJla6jo7Q=
 golang.org/x/term v0.38.0/go.mod h1:bSEAKrOT1W+VSu9TSCMtoGEOUcKxOKgl3LE5QEF/xVg=
 golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU=
 golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY=
-golang.org/x/tools v0.39.1-0.20251205000126-062ef7b6ced2 h1:2Qqv605Nus9iUp3ErvEU/q92Q3HAzeROztzl9pzAno8=
-golang.org/x/tools v0.39.1-0.20251205000126-062ef7b6ced2/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ=
+golang.org/x/tools v0.39.1-0.20251230210517-d44be789a05c h1:0pZej6BQOooNbOfjJEu4v5qx9hdwFX8HnvHCcNXcs2w=
+golang.org/x/tools v0.39.1-0.20251230210517-d44be789a05c/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ=
 rsc.io/markdown v0.0.0-20240306144322-0bf8f97ee8ef h1:mqLYrXCXYEZOop9/Dbo6RPX11539nwiCNBb1icVPmw8=
 rsc.io/markdown v0.0.0-20240306144322-0bf8f97ee8ef/go.mod h1:8xcPgWmwlZONN1D9bjxtHEjrUtSEa3fakVF8iaewYKQ=
index 45aed7909c36348da0cdf378680dc8aef1271fac..f1202c7a117739494bb45d7ce6298b9dabb7499d 100644 (file)
@@ -80,6 +80,8 @@ or b.ResetTimer within the same function will also be removed.
 Caveats: The b.Loop() method is designed to prevent the compiler from
 optimizing away the benchmark loop, which can occasionally result in
 slower execution due to increased allocations in some specific cases.
+Since its fix may change the performance of nanosecond-scale benchmarks,
+bloop is disabled by default in the `go fix` analyzer suite; see golang/go#74967.
 
 # Analyzer any
 
index f97541d4b34490168827c225fcfc470fd748d3c4..795f5b6c6b812e92f4c9c7ec0daa8e67a11702e1 100644 (file)
@@ -231,9 +231,28 @@ func mapsloop(pass *analysis.Pass) (any, error) {
                                // Have: for k, v := range x { lhs = rhs }
 
                                assign := rng.Body.List[0].(*ast.AssignStmt)
+
+                               // usesKV reports whether e references vars k or v.
+                               usesKV := func(e ast.Expr) bool {
+                                       k := info.Defs[rng.Key.(*ast.Ident)]
+                                       v := info.Defs[rng.Value.(*ast.Ident)]
+                                       for n := range ast.Preorder(e) {
+                                               if id, ok := n.(*ast.Ident); ok {
+                                                       obj := info.Uses[id]
+                                                       if obj != nil && // don't rely on k, v being non-nil
+                                                               (obj == k || obj == v) {
+                                                               return true
+                                                       }
+                                               }
+                                       }
+                                       return false
+                               }
+
                                if index, ok := assign.Lhs[0].(*ast.IndexExpr); ok &&
+                                       len(assign.Lhs) == 1 &&
                                        astutil.EqualSyntax(rng.Key, index.Index) &&
-                                       astutil.EqualSyntax(rng.Value, assign.Rhs[0]) {
+                                       astutil.EqualSyntax(rng.Value, assign.Rhs[0]) &&
+                                       !usesKV(index.X) { // reject (e.g.) f(k, v)[k] = v
                                        if tmap, ok := typeparams.CoreType(info.TypeOf(index.X)).(*types.Map); ok &&
                                                types.Identical(info.TypeOf(index), info.TypeOf(rng.Value)) && // m[k], v
                                                types.Identical(tmap.Key(), info.TypeOf(rng.Key)) {
index 013ce79d6c7155b2b80036d12738a6fba1408fd1..f09a2d26ca23507880e7110443e3c0731922c3ef 100644 (file)
@@ -34,7 +34,7 @@ var doc string
 var Suite = []*analysis.Analyzer{
        AnyAnalyzer,
        // AppendClippedAnalyzer, // not nil-preserving!
-       BLoopAnalyzer,
+       // BLoopAnalyzer, // may skew benchmark results, see golang/go#74967
        FmtAppendfAnalyzer,
        ForVarAnalyzer,
        MapsLoopAnalyzer,
index 7c122cd9d171bf957157233cbdb5163a9c4eba38..9c179c4bcd4c306ec13629225b75221c3c2f5db1 100644 (file)
@@ -73,7 +73,7 @@ golang.org/x/text/internal/tag
 golang.org/x/text/language
 golang.org/x/text/transform
 golang.org/x/text/unicode/norm
-# golang.org/x/tools v0.39.1-0.20251205000126-062ef7b6ced2
+# golang.org/x/tools v0.39.1-0.20251230210517-d44be789a05c
 ## explicit; go 1.24.0
 golang.org/x/tools/cmd/bisect
 golang.org/x/tools/cover