From: Dmitri Shuralyov Date: Fri, 2 Jan 2026 16:36:00 +0000 (-0500) Subject: all: update vendored x/tools X-Git-Tag: go1.26rc2~7^2 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=f6ebd91129;p=gostls13.git all: update vendored x/tools 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 Reviewed-by: Dmitri Shuralyov Auto-Submit: Dmitri Shuralyov Reviewed-by: Cherry Mui --- diff --git a/src/cmd/go.mod b/src/cmd/go.mod index c7d3cc6136..85e8c4cb5f 100644 --- a/src/cmd/go.mod +++ b/src/cmd/go.mod @@ -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 ( diff --git a/src/cmd/go.sum b/src/cmd/go.sum index b02c469a41..61c88e5253 100644 --- a/src/cmd/go.sum +++ b/src/cmd/go.sum @@ -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= diff --git a/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/modernize/doc.go b/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/modernize/doc.go index 45aed7909c..f1202c7a11 100644 --- a/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/modernize/doc.go +++ b/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/modernize/doc.go @@ -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 diff --git a/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/modernize/maps.go b/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/modernize/maps.go index f97541d4b3..795f5b6c6b 100644 --- a/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/modernize/maps.go +++ b/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/modernize/maps.go @@ -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)) { diff --git a/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/modernize/modernize.go b/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/modernize/modernize.go index 013ce79d6c..f09a2d26ca 100644 --- a/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/modernize/modernize.go +++ b/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/modernize/modernize.go @@ -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, diff --git a/src/cmd/vendor/modules.txt b/src/cmd/vendor/modules.txt index 7c122cd9d1..9c179c4bcd 100644 --- a/src/cmd/vendor/modules.txt +++ b/src/cmd/vendor/modules.txt @@ -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