)]}'
{
  "log": [
    {
      "commit": "c1193aca3e6b6c4b236d9fdfe2ab4f5fa8b0b639",
      "tree": "c48bd8b10b2b13a40ca02f4bfa7fe1f1135e558b",
      "parents": [
        "512c56d51b409f56d2b6a543e4f1bf00207e7a8f"
      ],
      "author": {
        "name": "Saleh",
        "email": "root@lr0.org",
        "time": "Tue Oct 27 01:40:12 2026 +0000"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Tue Oct 27 09:44:04 2026 -0700"
      },
      "message": "go/analysis/passes/printf: join Printf and Errorf wrapper kinds\n\nA wrapper that forwards to both fmt.Errorf and fmt.Sprintf, such as one that\ncalls Errorf only when the format contains %w, was classified by whichever\nforwarding call the analyzer saw last. When the Sprintf call came last, the\nwrapper was treated as Printf-like and every %w passed to it was reported as\nunsupported.\n\nTreat such a wrapper as Errorf-like regardless of the order of the calls.\n\nFixes golang/go#77638\n\nChange-Id: I78d72fbfbf6746ffb68154fe4df4e9f73fe6df76\nGitHub-Last-Rev: f60a22daf606a3381259ab0cc451a12f32c7323e\nGitHub-Pull-Request: golang/tools#695\nReviewed-on: https://go-review.googlesource.com/c/tools/+/848645\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\nAuto-Submit: Madeline Kalil \u003cmkalil@google.com\u003e\n"
    },
    {
      "commit": "512c56d51b409f56d2b6a543e4f1bf00207e7a8f",
      "tree": "187bae74831a6d7d2db7f0b30bc73525ae85b40d",
      "parents": [
        "5dd9c334831769ea0c3029c08a1702b9cc0a9be3"
      ],
      "author": {
        "name": "Peter Weinberger",
        "email": "pjw@google.com",
        "time": "Thu Sep 10 18:44:25 2026 -0400"
      },
      "committer": {
        "name": "Peter Weinberger",
        "email": "pjw@google.com",
        "time": "Tue Oct 27 07:52:17 2026 -0700"
      },
      "message": "gopls/internal/server: debounce didChangeWatchedFiles\n\nWhen external tools (like git checkout) change many files in rapid\nsuccession, clients can emit a burst of workspace/didChangeWatchedFiles\nnotifications. Previously, each notification triggered its own\nDidModifyFiles pass, leading to redundant snapshot invalidations,\ndiagnostic passes, and directory watch recalculations.\n\nDebounce these notifications within a configurable watchedFileDelay\nwindow (defaulting to 50ms). If an explicit editor operation\n(didSave, didChange, didOpen, or didClose) occurs while watched file\nchanges are pending, flush the pending changes immediately to preserve\nordering between on-disk files and editor overlays.\n\nWork-done progress tokens for each notification are coalesced and\ncompleted together once diagnosis finishes, and timer-driven flushes\nretain the client context so server logs reach the client.\n\nIn integration tests, watchedFileDelay defaults to 0s to avoid\ndelaying test execution. Add integration tests for coalescing,\nmax-delay capping, editor action flushing, and overlay ordering.\n\nUpdate MCP\u0027s fileOf to modify the session snapshot directly\nso snapshot queries are not delayed by the debounce timer.\n\nFor golang/go#81408\n\nChange-Id: I76568aa9d73d28aa948350bf7d6644109feec28e\nReviewed-on: https://go-review.googlesource.com/c/tools/+/830844\nReviewed-by: Alex Putman \u003caputman@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "5dd9c334831769ea0c3029c08a1702b9cc0a9be3",
      "tree": "29fd0994c7c1b4e3ba51ef91aff996a04fabbad6",
      "parents": [
        "86210da64f15f98d41324ae4dd5ea1f8be5f92eb"
      ],
      "author": {
        "name": "Peter Weinberger",
        "email": "pjw@google.com",
        "time": "Fri Oct 23 10:46:15 2026 -0400"
      },
      "committer": {
        "name": "Peter Weinberger",
        "email": "pjw@google.com",
        "time": "Mon Oct 26 12:36:29 2026 -0700"
      },
      "message": "gopls/internal/golang: fall back to method sets for non-dynamic calls\n\nWhen Implementations is invoked at the \u0027(\u0027 of a non-dynamic call (such\nas double-clicking a method name in VS Code, which places the cursor at\nthe \u0027(\u0027), fall back to the method-sets implementation lookup instead of\nfailing with \"not a dynamic function call\".\n\nAlso allow dynamic function calls to be queried on the called identifier\nin addition to \u0027(\u0027.\n\nFixes golang/go#82415\n\nChange-Id: I583428ddd5fe30e2aa06b055b51976b9848e55db\nReviewed-on: https://go-review.googlesource.com/c/tools/+/853165\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\n"
    },
    {
      "commit": "86210da64f15f98d41324ae4dd5ea1f8be5f92eb",
      "tree": "561ed964381d49aa1e42acdab5744bf2cdb28320",
      "parents": [
        "eb6c0ca8c61fcd4676bcd50c8f6323b0d616030d"
      ],
      "author": {
        "name": "Pieter Hollander",
        "email": "mail@pieterhollander.nl",
        "time": "Wed Oct 21 12:26:18 2026 +0200"
      },
      "committer": {
        "name": "Madeline Kalil",
        "email": "mkalil@google.com",
        "time": "Fri Oct 23 13:37:38 2026 -0700"
      },
      "message": "gopls/internal/mcp: annotate all MCP tools as read-only\n\nNone of the gopls MCP tools modifies the workspace: they report on it,\nand go_rename_symbol returns the edits as a diff rather than applying\nthem. Declare this with the readOnlyHint tool annotation, so that\nclients that ask for approval before running tools that are not\nread-only can run them without prompting.\n\nFixes golang/go#82392\n\nChange-Id: Iabed09d02e68477568bdaf3966167104f5e2be45\nReviewed-on: https://go-review.googlesource.com/c/tools/+/852105\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "eb6c0ca8c61fcd4676bcd50c8f6323b0d616030d",
      "tree": "167c7021de2a37ddf3474a1450f884fdaf65d799",
      "parents": [
        "02c9e4cb4c2fc8297ae9ea343a46e6f2da019f05"
      ],
      "author": {
        "name": "lazerg",
        "email": "lazerg2@gmail.com",
        "time": "Sun Oct 18 08:43:15 2026 +0500"
      },
      "committer": {
        "name": "Peter Weinberger",
        "email": "pjw@google.com",
        "time": "Fri Oct 23 07:02:35 2026 -0700"
      },
      "message": "gopls/internal/cmd: skip -remote\u003dauto tests on plan9\n\nPlan 9 is not covered by autostart_posix.go, so it uses the default\nautoNetworkAddress, which panics for \"auto;\u003cid\u003e\". Skip these tests on\nplan9 as already done on windows.\n\nFixes golang/go#82306\n\nChange-Id: Idacbb72226e3500fa99a31950d4aa6ce4fba1049\nReviewed-on: https://go-review.googlesource.com/c/tools/+/850405\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Hyang-Ah Hana Kim \u003chyangah@gmail.com\u003e\nReviewed-by: Peter Weinberger \u003cpjw@google.com\u003e\nAuto-Submit: Hyang-Ah Hana Kim \u003chyangah@gmail.com\u003e\n"
    },
    {
      "commit": "02c9e4cb4c2fc8297ae9ea343a46e6f2da019f05",
      "tree": "e757c4c7adb42de98d4d48de9889ebdec72af8d3",
      "parents": [
        "b65ac2ee22000e2f9929e539355d84d651833ed1"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Mon Oct 19 16:38:38 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Thu Oct 22 06:14:38 2026 -0700"
      },
      "message": "go/ssa: use TypeSetOf directly; fix indexMode.meet\n\nThis CL removes the typeset iterator and its wrappers underIs and\ntypeSetIsEmpty, replacing each use with a direct loop over the terms\nof typeparams.TypeSetOf, simplified using knowledge of each caller:\n\n- isBytestring, nillable, isBasicConvTypes, soleTypeKind: loop over\n  TypeSetOf(t).UnderlyingTypes(), without the f(nil) convention\n  for type sets with no specific terms.\n- emitConv: in well-typed code neither type set is empty or\n  unrestricted and classify never returns zero, so the nil checks,\n  early exit, and final panic were dead. The common case of a\n  conversion not involving type parameters (99.6% across the\n  tests) now avoids TypeSetOf entirely.\n- indexType: in well-typed code all terms are non-interface types\n  with identical element types, and are all maps or all non-maps.\n\nAlso, fix a bug in indexMode.meet, which returned the max, not\nmin (most constrained) mode as documented.  So for a type\nparameter whose type set mixed arrays or strings with slices, such as\n~[2]byte|~[]byte or ~string|~[]byte, indexType reported ixVar, and\nthe builder emitted IndexAddr on a non-addressable value (even a\nstring). meet is replaced by min.\n\nChange-Id: Ief87474a16361bfd834c7f570d7944a8c9cf7a66\nReviewed-on: https://go-review.googlesource.com/c/tools/+/850790\nReviewed-by: Mark Freeman \u003cmark@golang.org\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "b65ac2ee22000e2f9929e539355d84d651833ed1",
      "tree": "a1c7f85279bf880de71d0872f1f9bfcc3e993eaa",
      "parents": [
        "0710b86f93b6bfe6091de53b7ddf832419a8fe60"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@gmail.com",
        "time": "Wed Oct 21 18:24:53 2026 +0000"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Wed Oct 21 12:55:40 2026 -0700"
      },
      "message": "go/gcexportdata: clarify which export files require NewReader\n\nDistinguish compiler archives from standalone export data in the package\nand API documentation. Only compiler archives require NewReader; files\nwritten by Write or by go list -export with Go 1.28 or later can be read\ndirectly.\n\nExplain how the output of go list -export changes in Go 1.28, and\nclarify that the Go 1.29 removal concerns compiler-produced export data.\n\nUpdates golang/go#79427\n\nChange-Id: Ic5bbd6664d1a5223838804874136b5f1edcc290c\nGitHub-Last-Rev: bf3dd53810fd2f6a25868e17b5c155fc100f3e5e\nGitHub-Pull-Request: golang/tools#702\nReviewed-on: https://go-review.googlesource.com/c/tools/+/852225\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\nReviewed-by: Mark Freeman \u003cmark@golang.org\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\n"
    },
    {
      "commit": "0710b86f93b6bfe6091de53b7ddf832419a8fe60",
      "tree": "5ec73ea63cfab3cf053f575b58605e658331237b",
      "parents": [
        "b14f96f01e6bd2fe1ff693a830928784b3d166c1"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Tue Oct 20 17:19:48 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Wed Oct 21 11:23:36 2026 -0700"
      },
      "message": "internal/typeparams: remove TypeSet.Empty\n\nThe empty type set is now represented by a non-nil termlist of\nlength zero, and an unrestricted one by a nil termlist. Once the\nUnrestricted case is excluded, the set is exactly the union of its\nterms, so iterating over Terms gives the correct (vacuous) answer for\nthe empty set, and a separate Empty predicate is unnecessary.\n\nThis avoids the confusing distinction betweem Empty() and Len()\u003d\u003d0.\n\nIt also saves a word in the representation.\n\nUpdates golang/go#61013\n\nChange-Id: I08576314eafec4b4193b90e5a6bda9cbfa25ddf9\nReviewed-on: https://go-review.googlesource.com/c/tools/+/851489\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\nReviewed-by: Mark Freeman \u003cmark@golang.org\u003e\n"
    },
    {
      "commit": "b14f96f01e6bd2fe1ff693a830928784b3d166c1",
      "tree": "b6da0371a7480d7753cd70ae02b99295ab6c5e43",
      "parents": [
        "e853881f6df487f5cfd7f716a25446f85d3c4de2"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Tue Oct 20 14:23:18 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Wed Oct 21 11:20:35 2026 -0700"
      },
      "message": "go/analysis/unitchecker: make main.go example use vet.Suite\n\nUpdate golang/go#35487\n\nChange-Id: Ib6d6701e1bf4f18a7218d8b59f491343a602ce78\nReviewed-on: https://go-review.googlesource.com/c/tools/+/851546\nReviewed-by: Mark Freeman \u003cmark@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\n"
    },
    {
      "commit": "e853881f6df487f5cfd7f716a25446f85d3c4de2",
      "tree": "584d4e5f6f65229e7b2dae75667bcba033fb1676",
      "parents": [
        "be9542307a30c1e832d479720618e79381f3c952"
      ],
      "author": {
        "name": "Elena",
        "email": "ziy07@list.ru",
        "time": "Wed Oct 21 17:41:59 2026 +0000"
      },
      "committer": {
        "name": "Alex Putman",
        "email": "aputman@golang.org",
        "time": "Wed Oct 21 10:47:45 2026 -0700"
      },
      "message": "gopls/internal/util/typesutil: return any for void calls in FromContext\n\ngo/types records a call to a void function with the type\n(*types.Tuple)(nil). FromContext passed such types through validType,\nso a single-value hole such as x in\n\n\t_ \u003d voidFunc() + x\n\nwas given the tuple type. The undeclared-name quick fix then crashed\nwhen it called At(0) on the nil tuple, and the missing-method quick fix\ndeclared a method with no result.\n\nA tuple is never a valid type for a single-value hole: it arises only\nfrom a call to a void function, or from a multi-value call in a\nsingle-value context, both of which are errors. So validType now\nreturns any for it.\n\nFixes golang/go#82301\n\nChange-Id: I65986a9ce30556813b9beeea596cf01419fc4fb8\nGitHub-Last-Rev: 4dc222b45f1f4d606432b0e8043b7870e06cb06d\nGitHub-Pull-Request: golang/tools#701\nReviewed-on: https://go-review.googlesource.com/c/tools/+/851805\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\nReviewed-by: Alex Putman \u003caputman@golang.org\u003e\n"
    },
    {
      "commit": "be9542307a30c1e832d479720618e79381f3c952",
      "tree": "8ca495a167311ebf709192abc0900da7547973e1",
      "parents": [
        "f340a6d84cc27e68ea5cf28a971d052058740635"
      ],
      "author": {
        "name": "Peter Weinberger",
        "email": "pjw@google.com",
        "time": "Sat Sep 26 20:36:31 2026 -0400"
      },
      "committer": {
        "name": "Peter Weinberger",
        "email": "pjw@google.com",
        "time": "Wed Oct 21 08:28:09 2026 -0700"
      },
      "message": "go/analysis/passes/modernize: rangeint: check for aliased variables\n\nWhen a 3-clause loop assigns to a pre-existing variable (for i \u003d 0; ...),\nmodernizing it to a range loop changes the final value of i after the\nloop (from limit to limit-1) and shares a single variable across\niterations.\n\nPreviously, rangeint walked the loop body and parent AST to check for\nuses after the loop or inside defer statements, which missed:\n- pointers taken before the loop (p :\u003d \u0026i) and dereferenced after it,\n- closures capturing i (f :\u003d func() int { return i }) called after it,\n- uses of i after an enclosing block (such as an if statement).\n\nNow use typeindex.Uses(v) to inspect all uses of the loop variable in a\nsingle pass, and reject the transformation when a pre-existing loop\nvariable is used after the loop, assigned to or has its address taken\noutside the loop, or is captured by a FuncLit.\n\nFixes golang/go#77161\n\nChange-Id: I90450c373dd06600386f964e9acc7deb9e8d771b\nReviewed-on: https://go-review.googlesource.com/c/tools/+/839665\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "f340a6d84cc27e68ea5cf28a971d052058740635",
      "tree": "b8128d0d3ac2597a877a6cd4ca5da284b7db0df5",
      "parents": [
        "f64daeb7efebf3b9ecd00eb04d279ea8411c5c24"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Wed Oct 14 17:54:40 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Tue Oct 20 17:46:38 2026 -0700"
      },
      "message": "x/tools: add TestDeps to enforce dependency rules\n\nThis CL adds a test that enforces several invariants on the\npackage import graph, analogous to the test governing std.\n\nA rule either denies a dependency on a particular package or\nallows only a listed set of packages from this module.\n\nChecks:\n\n- the syntax packages go/ast/{astutil,edge,inspector} and\n  internal/astutil do not depend on go/types (the last of these\n  did so until the previous CL); and\n- go/gcexportdata depends only on an allowlist of x/tools packages.\n  This rule replaces go/gcexportdata/deps_test.go.\n- packages vendored into cmd must not depend on go/packages, go/ssa,\n  internal/event, internal/gocommand, or testing;\n- go/ssa must not depend on go/packages;\n- low-level type utilities must not depend on go/analysis,\n  go/packages, or go/ssa.\n- only test helpers may depend on test helpers.\n\nChange-Id: I72e8b1c8a86f494cb18118a250867181e4732f27\nReviewed-on: https://go-review.googlesource.com/c/tools/+/849666\nCommit-Queue: Alan Donovan \u003cadonovan@google.com\u003e\nReviewed-by: Alex Putman \u003caputman@golang.org\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "f64daeb7efebf3b9ecd00eb04d279ea8411c5c24",
      "tree": "a225259034b92b1ee84ba92b524697a0c5e7e4c4",
      "parents": [
        "06bd998e21a22f7ba68e480ce5cdf43102888534"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Thu Oct 08 17:41:49 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Tue Oct 20 17:37:11 2026 -0700"
      },
      "message": "gopls/internal/filecache: reduce I/O parallelism\n\nThis CL reduces the parallelism for writes to 8 (was 128).\nThis reduced time of a cold \"gopls check\" of k8s kubelet:\n- wall 22.2s -\u003e 20.0s (n\u003d3)\n- sys  46.9s -\u003e 42.6s.\n\nOn macOS, Set/Get account for 20% of CPU, mostly in open(2).\n(Both sys and wall time in open were 4-5x higher before.)\n\nSplitting the Set and Get operations into separate\nsemaphores was evaluated but not found profitable.\n\nChange-Id: Icae8e626f549df2fd5dcfedacf58211b2ad52850\nReviewed-on: https://go-review.googlesource.com/c/tools/+/847645\nReviewed-by: Peter Weinberger \u003cpjw@google.com\u003e\nReviewed-by: Alex Putman \u003caputman@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "06bd998e21a22f7ba68e480ce5cdf43102888534",
      "tree": "12a0800bb0813fb18526aa10ad759780d3748a2f",
      "parents": [
        "fb6d2e0d1c5d9af5f5197af0401249ca2c22f574"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Wed Oct 14 17:52:28 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Tue Oct 20 13:31:00 2026 -0700"
      },
      "message": "internal/astutil: move {Unpack,Pack}IndexExpr from internal/typeparams\n\nThese are syntax helpers, so they belong with UnpackRecv in\ninternal/astutil, which no longer depends on internal/typeparams.\n\nChange-Id: I66c686b4f4d1f3ab9c9146b8729f7f543e481477\nReviewed-on: https://go-review.googlesource.com/c/tools/+/849665\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Alex Putman \u003caputman@golang.org\u003e\n"
    },
    {
      "commit": "fb6d2e0d1c5d9af5f5197af0401249ca2c22f574",
      "tree": "dea70d6fa17487d69956da86a12245cd4f459b81",
      "parents": [
        "898186f0f13fe501959d327c5ba6df4fb2533296"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Tue Sep 22 19:11:20 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Tue Oct 20 13:10:53 2026 -0700"
      },
      "message": "cmd/deadcode: make output deterministic\n\nI noticed the output was nondeterministic in two places:\n\n- dead functions were sorted by (file, line), which is\n  not a total order if there are two functions on\n  the same line.\n\n- the -whylive path BFS explores each level of the graph\n  nondeterministically. Now we sort out-edges first.\n\nThe test doesn\u0027t fit in the old framework because it\nis explicitly order-dependent.\n\nChange-Id: Idbf8fb6091ab16198420d4919e5a7c3a188ffcf8\nReviewed-on: https://go-review.googlesource.com/c/tools/+/837145\nReviewed-by: Peter Weinberger \u003cpjw@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "898186f0f13fe501959d327c5ba6df4fb2533296",
      "tree": "e2c990096982098a07ceb242fa97690a85f9b8dd",
      "parents": [
        "b341c9ad2b936cbf166fa3840d29955795a57cc2"
      ],
      "author": {
        "name": "Madeline Kalil",
        "email": "mkalil@google.com",
        "time": "Tue Oct 20 12:57:53 2026 -0400"
      },
      "committer": {
        "name": "Madeline Kalil",
        "email": "mkalil@google.com",
        "time": "Tue Oct 20 10:58:48 2026 -0700"
      },
      "message": "gopls/internal: turn on MoveDeclaration codeaction by default\n\nRemove experimental setting that gates the MoveDeclaration codeaction\nso that it is always available.\n\nChange-Id: I66d66c37129d6f8454cfd12fe08ca45b4ccaf49c\nReviewed-on: https://go-review.googlesource.com/c/tools/+/851508\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "b341c9ad2b936cbf166fa3840d29955795a57cc2",
      "tree": "c69727481e295701843cbbcecc4ab316440f03c3",
      "parents": [
        "99f9958aa4f0dfa39d852b00dc3076255dbbb1e1"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Fri Oct 02 11:20:07 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Tue Oct 20 07:34:00 2026 -0700"
      },
      "message": "internal/analysis/analyzerutil: distinguish unknown file versions\n\n(Second attempt at CL 840566, reverted in CL 841445 because it\nwas submitted out of order,  breaking tests.)\n\nFileUsesGoVersion conflated \"unknown\" with \"before\", which is the\nconservative answer for most callers, but not for loopclosure, which\nwants to know whether a file is definitely before go1.22.\nAlso, it treated a missing FileVersions entry as \"before\" but an empty\nentry as an unknown future version (\"after\").\n\nAdd FileGoVersion, which returns the effective version of a file and\nreports whether it is known (valid). FileUsesGoVersion is now\nexpressed in terms of it, and treats both kinds of unknown as false.\n\nloopclosure now uses FileGoVersion and skips files whose version is\nunknown, to avoid false positives.\n\nChange-Id: If9dcc568882b79f2fffa6237d256b248ef98fdba\nReviewed-on: https://go-review.googlesource.com/c/tools/+/843565\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Alex Putman \u003caputman@golang.org\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\n"
    },
    {
      "commit": "99f9958aa4f0dfa39d852b00dc3076255dbbb1e1",
      "tree": "0c7fb80e9168848d986aa2c8ee89a4f81ecd7366",
      "parents": [
        "5fe18dca7371f0a1134b0e0cbb3f96961e8d0972"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Mon Sep 28 16:55:00 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Tue Oct 20 07:33:55 2026 -0700"
      },
      "message": "go/packages: set GoVersion for packages without a module\n\nPreviously, go/packages set types.Config.GoVersion only for packages\nbelonging to a module (or when an external driver reported a version),\nso packages in GOPATH mode, and standard packages, were type-checked\nwith an empty version, leaving types.Info.FileVersions entries empty.\n\ncmd/go compiles such packages using the toolchain\u0027s own language\nversion (-lang). Do the same, using the version of the go command\nreported by the driver. If the go command is newer than the go/types\nlinked into the application, go/types now reports a \"package requires\nnewer Go version\" error for these packages (including all standard\npackages), just as it already does for modules whose go.mod declares\na newer version; the existing diagnostic advises rebuilding the\napplication. Previously such stale applications type-checked these\npackages with an unknown version.\n\nDocument how analysistest.Run determines the Go version of each file.\n\nChange-Id: If1808274cd571a200d8bfb74dc5e526fc0ae8451\nReviewed-on: https://go-review.googlesource.com/c/tools/+/840565\nReviewed-by: Michael Matloob \u003cmatloob@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Michael Matloob \u003cmatloob@google.com\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\n"
    },
    {
      "commit": "5fe18dca7371f0a1134b0e0cbb3f96961e8d0972",
      "tree": "16bde294869d54ce8531a0218af45238fc528d66",
      "parents": [
        "a6974434bc0f817a640a7118e4f1c2f65b02b3f5"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Wed Oct 14 17:22:34 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Mon Oct 19 13:41:53 2026 -0700"
      },
      "message": "go/analysis/passes/modernize: minmax: use TypeSetOf in maybeNaN\n\nmaybeNaN, which suppresses the min/max transformation for operands\nthat may be floating-point, relied on CoreType, and so failed safe\n(reporting \"may be NaN\") for any type parameter without a core type,\nsuch as T ~int | ~int64. It now reports whether any term of the type\nset is a floating-point type.\n\nUpdates golang/go#61013\n\nChange-Id: Ib3845c1b448dfe58a0b33a47308ecc32d3788ffc\nReviewed-on: https://go-review.googlesource.com/c/tools/+/847989\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\n"
    },
    {
      "commit": "a6974434bc0f817a640a7118e4f1c2f65b02b3f5",
      "tree": "622548880a46edb0b057b607993363bc33cde800",
      "parents": [
        "ba9339289d1cdbdc1ef619895e4c0456f0f6f5c6"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Wed Oct 14 17:14:45 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Mon Oct 19 13:41:47 2026 -0700"
      },
      "message": "go/analysis/passes/nilness: use TypeSetOf instead of CoreType\n\nTwo uses of CoreType caused false negatives:\n\n- The IndexAddr check skipped operands of type-parameter type whose\n  type set mixes *array and slice types (e.g. *[4]int | []int), or\n  contains pointers to distinct array types (e.g. *[4]int | *A),\n  since these have no core type, though the operation is legal and\n  panics if the operand is nil. It now inspects each term.\n\n- isNillable, used to infer that the result of a failed type assertion\n  is nil, returned false for every interface type (since CoreType\n  returns nil for interfaces without type terms, its *types.Interface\n  case was unreachable) and for type parameters whose terms are all\n  nillable but not identical (e.g. *int | []int). It now reports true\n  for interfaces, and for type parameters iff every term is nillable.\n\nUpdates golang/go#61013\n\nChange-Id: I164fb0158480b8386b4cc6bf1965eef746b1d107\nReviewed-on: https://go-review.googlesource.com/c/tools/+/847988\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Mark Freeman \u003cmark@golang.org\u003e\n"
    },
    {
      "commit": "ba9339289d1cdbdc1ef619895e4c0456f0f6f5c6",
      "tree": "29cf0e73f3ec83b58dbd4abc41da111e5e518275",
      "parents": [
        "a29859fcb8739c83f2674d839dfeaa718f08c22a"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Wed Oct 14 16:16:43 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Mon Oct 19 13:41:42 2026 -0700"
      },
      "message": "internal/typeparams: replace NormalTerms et al with TypeSetOf\n\nThis CL replaces NormalTerms, StructuralTerms, InterfaceTermSet,\nUnionTermSet, and ErrEmptyTypeSet with a simpler API that\nin due course will be published to go/types:\n\n\ttype TypeSet struct { ... }\n\n\tfunc TypeSetOf(t types.Type) TypeSet\n\n\tfunc (TypeSet) Unrestricted() bool // no specific terms (any, comparable, interface{M()})\n\tfunc (TypeSet) Empty() bool        // no types at all (interface{int; string})\n\tfunc (TypeSet) Len() int\n\tfunc (TypeSet) Term(i int) *types.Term\n\tfunc (TypeSet) Terms() iter.Seq[*types.Term]\n\tfunc (TypeSet) UnderlyingTypes() iter.Seq[types.Type]\n\tfunc (TypeSet) String() string\n\nDesign notes:\n\n- No error result. The old error existed mainly because an empty\n  []*Term already meant \"unrestricted\", leaving no way to express\n  \"empty\". With Unrestricted and Empty as distinct forms, the\n  remaining errors (invalid constraints, cycles, excess complexity)\n  can arise only in ill-typed code, and are reported as Unrestricted.\n  That is the conservative answer to both common queries: \"do all\n  terms satisfy P?\" yields false (not vacuously true), and \"does\n  some term satisfy P?\" finds no witness. Every caller previously\n  discarded the error, except one that called log.Fatal.\n\n- Terms are real *types.Term values, obtained from the internal\n  term by an unsafe pointer conversion; the two types have identical\n  layout (go/types declares \"type Term term\"), which an init-time\n  check verifies. So iterating over the terms of a type parameter\n  never allocates.\n\n- A non-interface type t yields the singleton {t}, which costs one\n  allocation. Performance-sensitive callers can test\n  !types.IsInterface(t) first. Interfaces with no type terms (any,\n  error, io.Reader) take an IsMethodSet fast path and do not\n  allocate.\n\nOther changes:\n\n- All callers migrated: go/ssa, go/callgraph/vta, go/types/typeutil,\n  refactor/satisfy, gopls completion, and the composite, copylock,\n  nilness, printf, shift, intconv, and modernize/rangeint analyzers.\n  Several ad hoc type-set helpers were deleted.\n- rangeint no longer calls log.Fatal on an empty type set.\n- CoreType is reimplemented atop TypeSetOf using iterators.\n- typeutil.Hasher hashes of interfaces with empty type sets change\n  (still consistent with types.Identical).\n- Tests: TestTypeSetOf (formerly TestStructuralTerms) now anchors\n  its regexps; new TestTypeSetAPI and TestTypeSetAllocs; new\n  CoreType cases with distinct named channel types.\n\nUpdates golang/go#61013\nUpdates golang/go#79740\n\nChange-Id: Id4de2b259e7147c512ff73367a66866914fefbf0\nReviewed-on: https://go-review.googlesource.com/c/tools/+/848487\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Mark Freeman \u003cmark@golang.org\u003e\n"
    },
    {
      "commit": "a29859fcb8739c83f2674d839dfeaa718f08c22a",
      "tree": "42b37410b875049f0d1513484ad66f53a115f282",
      "parents": [
        "82ec52bf42afe426ab6450801625211851503172"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Thu Oct 15 15:01:47 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Mon Oct 19 07:37:53 2026 -0700"
      },
      "message": "gopls/internal/analysis/unusedfunc: report unused struct fields\n\nThe analyzer now also reports unexported fields of named struct types\nthat are never referenced. Embedded fields, fields implicitly used\nby unkeyed literals T{x, y}, and fields named \"pad\" (etc) are exempt.\n\nAlso, add refactor.DeleteStructField, and remove a handful of unused\nfields the analyzer detected.\n\n+ test, relnote (and update \"releases\" section of gopls doc)\n\nChange-Id: I291a9edb508adb0ee101587cdfb336e0aa75c50d\nReviewed-on: https://go-review.googlesource.com/c/tools/+/849765\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "82ec52bf42afe426ab6450801625211851503172",
      "tree": "296a0d478a54ae90b1a9d3884c6f8642a5f0529d",
      "parents": [
        "95c53bba21ce08eec91a3c1a119adfd306fb453b"
      ],
      "author": {
        "name": "Hongxiang Jiang",
        "email": "hxjiang@golang.org",
        "time": "Thu Oct 15 13:24:26 2026 -0400"
      },
      "committer": {
        "name": "Hongxiang Jiang",
        "email": "hxjiang@golang.org",
        "time": "Fri Oct 16 09:44:08 2026 -0700"
      },
      "message": "gopls/internal/test/marker: simplify undeclared test function names\n\nThe test focuses are already reflected properly in the test file name\n\"arguments/ident/focus\" \u0026 \"arguments/type/focus\". Avoid repetition\nin the function name.\n\nFor golang/go#81810\n\nChange-Id: I82e91e71f561729d821a44583873c211f2fdcb06\nReviewed-on: https://go-review.googlesource.com/c/tools/+/849685\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\n"
    },
    {
      "commit": "95c53bba21ce08eec91a3c1a119adfd306fb453b",
      "tree": "7b480c6d2478312f3938d50ca7f00192770aa98e",
      "parents": [
        "b15dad8b5006eba938371b65a9ba501ca53c0b14"
      ],
      "author": {
        "name": "shxwat",
        "email": "shashwat11muz@gmail.com",
        "time": "Thu Oct 15 17:00:35 2026 +0000"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Fri Oct 16 08:53:28 2026 -0700"
      },
      "message": "gopls/internal/golang: derive valid param names from argument types\n\nWhen the create-function quick fix derives parameter names from\nargument types, it previously sliced Type.String(). This produced\ninvalid syntax for composite types (e.g. \"func()\" for func) or\ncollided with Go keywords (e.g. \"range\" for Range).\n\nInspect the type directly to pick idiomatic names (e.g. \"fn\" for\nfunctions, \"range_\" for Range, and element types for containers),\nand skip reusing predeclared names like true and false.\n\nAdd marker tests for the generated parameter names, including aliases,\nand organize the cases by argument identifiers, argument types, and\nreturn types.\n\nFixes golang/go#81810\n\nChange-Id: Ie6a829213e84dd0db2a65746dc03952836881b58\nGitHub-Last-Rev: 85ca19d43320a74d2cfaf6286abc94ff13c78769\nGitHub-Pull-Request: golang/tools#693\nReviewed-on: https://go-review.googlesource.com/c/tools/+/843605\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nAuto-Submit: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nReviewed-by: Carlos Amedee \u003ccarlos@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "b15dad8b5006eba938371b65a9ba501ca53c0b14",
      "tree": "ef967dd1de2d0903aee7ddd0a5d9306ea400fb1a",
      "parents": [
        "0a284a38e26caf010444b7465585005b6ffd1379"
      ],
      "author": {
        "name": "Aman",
        "email": "amanopens@gmail.com",
        "time": "Thu Oct 15 00:41:02 2026 +0530"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Fri Oct 16 06:02:54 2026 -0700"
      },
      "message": "gopls/internal/golang: fix hover on null character literals and escapes\n\nHovering over null character literals (such as \u0027\\x00\u0027, \u0027\\000\u0027, or \u0027\\u0000\u0027)\nor null byte escapes in strings (such as \"...\\x00...\") displayed no tooltip.\n\nThis occurred because hoverConstantExpr initialized the rune variable r to\nthe zero value 0 and checked `value \u003d\u003d \"\" \u0026\u0026 r \u003d\u003d 0` to decide if there was\nnothing to format. Because U+0000 decodes to code point 0, null characters\nwere mistakenly treated as empty. Furthermore, formatting was guarded by\n`if r !\u003d 0`.\n\nFix this by initializing r to -1 and checking r \u003c 0 / r \u003e\u003d 0, distinguishing\nthe absence of a rune from code point U+0000.\n\nFixes golang/go#82218\n\nChange-Id: I0c9a58ec8dbd0728c2a8de52b073d7edbc779c7f\nReviewed-on: https://go-review.googlesource.com/c/tools/+/849187\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\nTryBot-Bypass: Alan Donovan \u003cadonovan@google.com\u003e\nAuto-Submit: Madeline Kalil \u003cmkalil@google.com\u003e\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\n"
    },
    {
      "commit": "0a284a38e26caf010444b7465585005b6ffd1379",
      "tree": "dcc4ba194f93deae92f38ee2c685069e6726e3d7",
      "parents": [
        "3528a233d8b5e87e605dd132601bb3d34f8c223a"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Thu Oct 15 15:32:52 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Thu Oct 15 14:03:11 2026 -0700"
      },
      "message": "gopls/internal/cache/parsego: pin Go version used by resolver_gen\n\nThe generator copied go/parser/resolver.go from the current\ntoolchain\u0027s GOROOT, so running go generate with a newer toolchain\n(e.g. go1.28, which adds parser.ResolveFile, golang/go#79802) caused spurious\ndiffs that were easily committed by accident.\n\nInstead, copy it from a pinned release, go1.27.0, the oldest\nsupported by gopls, obtained via GOTOOLCHAIN. The output is\nunchanged.\n\nChange-Id: I554b8de85440f46b06e8a31ca5ed73b249c11997\nReviewed-on: https://go-review.googlesource.com/c/tools/+/849766\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\nCommit-Queue: Alan Donovan \u003cadonovan@google.com\u003e\n"
    },
    {
      "commit": "3528a233d8b5e87e605dd132601bb3d34f8c223a",
      "tree": "8f28c0f5d512c6cd676e8b56bbc46042579d3acd",
      "parents": [
        "5368647c105f9f38e95f7f631e6f9267811da854"
      ],
      "author": {
        "name": "Madeline Kalil",
        "email": "mkalil@google.com",
        "time": "Thu Oct 08 16:37:33 2026 -0400"
      },
      "committer": {
        "name": "Madeline Kalil",
        "email": "mkalil@google.com",
        "time": "Thu Oct 15 13:18:52 2026 -0700"
      },
      "message": "gopls/internal/golang: MoveDeclaration - fix spacing and add tests for iota, generics\n\nAdd marker tests to verify:\n- When one const in an iota block moves, the whole iota blocks moves\n- When moving a generic type, its methods also move\n- When moving a generic type, instantiations across all packages\nare rewritten to use the new dest package qualifier\n- The moving set includes all appropriate references when a declaration\nis involved in chain of references or a reference cycle\n- Moving a method also moves its corresponding type\n\nAlso, fix tests in dialog_move_decl.txt - there were type errors that\nweren\u0027t effecting the test behavior.\n\nAlso, ensure we add a new line before adding decls to the end\nof an existing file, instead of just appending directly\nto the end of the file.\n\nFor golang/go#70583\n\nChange-Id: If9d4e56379fd0ae62f0e2ef0174ba8b32e08a90f\nReviewed-on: https://go-review.googlesource.com/c/tools/+/847485\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "5368647c105f9f38e95f7f631e6f9267811da854",
      "tree": "304ecc12b8f366208eef5b915b250544786e1c51",
      "parents": [
        "5ac30ec54ab564e56ee00cfc75bf77d6d0e4ea6a"
      ],
      "author": {
        "name": "Hongxiang Jiang",
        "email": "hxjiang@golang.org",
        "time": "Wed Oct 14 16:03:47 2026 -0400"
      },
      "committer": {
        "name": "Hongxiang Jiang",
        "email": "hxjiang@golang.org",
        "time": "Thu Oct 15 12:58:00 2026 -0700"
      },
      "message": "internal/refactor/inline: explicit type for single return func\n\nWhen inlining a call in statement context to a function whose body is\n{ return exprs }, results that are not valid standalone statements are\ndiscarded via _, _ \u003d exprs. If a return operand is a go1.28 inferred\ncomposite literal {...}, the blank identifier supplies no type, so we\nmust make its result type explicit.\n\nUpdates golang/go#82039\n\nChange-Id: Iceb9941f91af764d9938ba5afc8313c51367a622\nReviewed-on: https://go-review.googlesource.com/c/tools/+/848312\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\n"
    },
    {
      "commit": "5ac30ec54ab564e56ee00cfc75bf77d6d0e4ea6a",
      "tree": "b935a1c05886f0e9c65bc4215b51a78977234704",
      "parents": [
        "69a9d979794fdad6e4c9a3bbd8bb7a0246fbebbd"
      ],
      "author": {
        "name": "Hongxiang Jiang",
        "email": "hxjiang@golang.org",
        "time": "Wed Oct 14 16:03:27 2026 -0400"
      },
      "committer": {
        "name": "Hongxiang Jiang",
        "email": "hxjiang@golang.org",
        "time": "Thu Oct 15 12:57:56 2026 -0700"
      },
      "message": "internal/refactor/inline: explicit type for empty body func\n\nWhen inlining a call to an empty-body function, any remaining arguments\nthat could not be eliminated are discarded by assigning to blank\nidentifiers (_, _ \u003d args). If an argument is a go1.28 inferred\ncomposite literal {...}, the blank identifier supplies no type, so we\nmust make its parameter type explicit.\n\nFor golang/go#82039\n\nChange-Id: I840edb6743338cf2463d3694b24e4ee2583650dc\nReviewed-on: https://go-review.googlesource.com/c/tools/+/848314\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "69a9d979794fdad6e4c9a3bbd8bb7a0246fbebbd",
      "tree": "f8d009cec754e9e5423adc5cb24518df3d0f447d",
      "parents": [
        "f20f8d996fe79b979dddc804934832be888f4238"
      ],
      "author": {
        "name": "Madeline Kalil",
        "email": "mkalil@google.com",
        "time": "Wed Oct 14 12:51:29 2026 -0400"
      },
      "committer": {
        "name": "Hyang-Ah Hana Kim",
        "email": "hyangah@gmail.com",
        "time": "Thu Oct 15 12:35:59 2026 -0700"
      },
      "message": "gopls/internal/lsprpc: fix failing tests\n\nFix TestAddGoEnv and TestRemoteAutoEnvParity tests.\n\nThe error is \"unsupported GOOS/GOARCH pair solaris/arm64\".\nBoth tests set an alternate architecture to use as an override,\nwhich is arm64 by default. On a solaris/amd64 host, it sets\nGOARCH\u003darm64. Since Go doesn\u0027t support solaris/arm64, the call\nto \"go env\" fails.\n\nSet GOOS to linux so that the GOOS/GOARCH pair is always valid\n(either linux/arm64 or linux/amd64).\n\nFixes golang/go#82201, golang/go#82200, golang/go#82199\n\nChange-Id: I86af10237707519723cfb2fc805544cadb0a9bc4\nReviewed-on: https://go-review.googlesource.com/c/tools/+/849325\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Hyang-Ah Hana Kim \u003chyangah@gmail.com\u003e\n"
    },
    {
      "commit": "f20f8d996fe79b979dddc804934832be888f4238",
      "tree": "9ec0de58334eaca23011a600403a73e5817b8f1c",
      "parents": [
        "66b90f0b6d6178b2891e141d0948d7f3d4bbfbe6"
      ],
      "author": {
        "name": "Hongxiang Jiang",
        "email": "hxjiang@golang.org",
        "time": "Wed Oct 14 15:47:17 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Thu Oct 15 09:36:05 2026 -0700"
      },
      "message": "gopls/internal/server: add counter for Rune client\n\nThis adds the gopls/client:rune telemetry counter for the Rune editor.\n\nFor golang/go#82223\n\nChange-Id: Ifc0563a702f7b4fdbf15613cb338a9cab2a8fa3d\nReviewed-on: https://go-review.googlesource.com/c/tools/+/848308\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\nAuto-Submit: Hongxiang Jiang \u003chxjiang@golang.org\u003e\n"
    },
    {
      "commit": "66b90f0b6d6178b2891e141d0948d7f3d4bbfbe6",
      "tree": "9103cdb9696fd42f5fc9b18c99c51e9582e9e1ab",
      "parents": [
        "f046eeee3f2a87416ad466c70d2aef6ceb507bdf"
      ],
      "author": {
        "name": "Ville Vesilehto",
        "email": "ville@vesilehto.fi",
        "time": "Tue Oct 13 16:51:08 2026 +0000"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Thu Oct 15 09:25:18 2026 -0700"
      },
      "message": "go/ast/inspector: make Cursor.Enclosing inlinable\n\nCursor.Enclosing computed the type mask before returning its\niterator, which put its inlining cost at 89, over the budget of 80.\nAs it was not inlined, every call allocated three times: the iterator,\nand the closure and state of the caller\u0027s range loop.\n\nCompute the mask inside the iterator, as Inspector.PreorderSeq does.\nEnclosing now costs 25, and a range loop over it does not allocate.\nThe 3 allocs/op left below come from the benchmark\u0027s outer Preorder\nloop.\n\ngoos: darwin\ngoarch: arm64\npkg: golang.org/x/tools/go/ast/inspector\ncpu: Apple M1 Max\n                                │   old.txt   │               new.txt               │\n                                │   sec/op    │   sec/op     vs base                │\nInspectCalls/CursorEnclosing-10   245.1µ ± 0%   100.6µ ± 2%  -58.97% (p\u003d0.000 n\u003d20)\n\n                                │    old.txt     │              new.txt               │\n                                │      B/op      │    B/op     vs base                │\nInspectCalls/CursorEnclosing-10   131568.00 ± 0%   80.00 ± 0%  -99.94% (p\u003d0.000 n\u003d20)\n\n                                │    old.txt    │              new.txt               │\n                                │   allocs/op   │ allocs/op   vs base                │\nInspectCalls/CursorEnclosing-10   7047.000 ± 0%   3.000 ± 0%  -99.96% (p\u003d0.000 n\u003d20)\n\nFixes golang/go#82191\n\nChange-Id: Ie7dbc00c4d784eca551f4912fef12bda7f5f6140\nGitHub-Last-Rev: 75e5ac909c42be5dcb85d3a65d4c8447d240f4a8\nGitHub-Pull-Request: golang/tools#696\nReviewed-on: https://go-review.googlesource.com/c/tools/+/848686\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Carlos Amedee \u003ccarlos@golang.org\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\n"
    },
    {
      "commit": "f046eeee3f2a87416ad466c70d2aef6ceb507bdf",
      "tree": "b42103415b1f649db74d26596abe14143b4bd3ae",
      "parents": [
        "27170b2725e9bde63c1e6b4ede2a4f63fcc8e8dc"
      ],
      "author": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Thu Oct 15 07:41:15 2026 -0700"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Thu Oct 15 09:08:17 2026 -0700"
      },
      "message": "gopls/go.mod: update dependencies following the v0.24.0 release\n\nThis is an automated CL which updates the go.mod and go.sum.\n\nFor golang/go#81891\n\nChange-Id: I2aab5b0a25dbf20daede69bf9706b7906cbaf6d1\nReviewed-on: https://go-review.googlesource.com/c/tools/+/849626\nAuto-Submit: Gopher Robot \u003cgobot@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Alex Putman \u003caputman@golang.org\u003e\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\n"
    },
    {
      "commit": "27170b2725e9bde63c1e6b4ede2a4f63fcc8e8dc",
      "tree": "5d36554035df26660d2051b12818b9eef6dcfa22",
      "parents": [
        "61025459adb386ec71a39c9af50a68f51a8ba516"
      ],
      "author": {
        "name": "Aman",
        "email": "amanopens@gmail.com",
        "time": "Wed Oct 14 04:16:42 2026 +0530"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Wed Oct 14 13:24:56 2026 -0700"
      },
      "message": "gopls/internal/golang: fix hover on rune literals with byte escapes \u003e\u003d 0x80\n\nWhen hovering over a rune literal containing a hex or octal byte escape\nrepresenting a non-ASCII character (\u003e\u003d 0x80, such as \u0027\\xc6\u0027 or \u0027\\306\u0027),\ngopls returned a \"rune error\".\n\nThis occurred because hoverConstantExpr decoded character literals\nusing strconv.Unquote followed by utf8.DecodeRuneInString. For single-byte\nescapes, strconv.Unquote returns raw bytes rather than UTF-8 encoding\nthem (https://go.dev/issue/82205), causing utf8.DecodeRuneInString to\nreturn utf8.RuneError.\n\nFix this by using strconv.UnquoteChar directly, which correctly decodes\ncharacter literals and rejects invalid syntax with trailing characters\n(such as \u0027abc\u0027).\n\nFixes golang/go#82196\n\nChange-Id: Id649230ca93db3f9aa2ba647ad3923d88af2969a\nReviewed-on: https://go-review.googlesource.com/c/tools/+/849165\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\n"
    },
    {
      "commit": "61025459adb386ec71a39c9af50a68f51a8ba516",
      "tree": "f97af5361ea0bdb95b078726118a57b6d65988b7",
      "parents": [
        "a6c77bc6557e7a747f1b4c78e404c4e5ce376f8d"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Wed Oct 07 15:52:04 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Wed Oct 14 11:57:31 2026 -0700"
      },
      "message": "internal/refactor/inline: handle go1.28 inferred {...} literals\n\nIn go1.28 a composite literal may have no explicit type, in\nwhich case it is inferred top-down. Such expressions cannot\nbe moved arbitrarily without making the type explicit.\n\nThis CL checks for this case and adds the appropriate explicit\ntype (e.g. {...} \u003d\u003e T{...} or \u0026E{...}) or, if that\u0027s not\npossible, a conversion (T({...})). This applies to both\nsubstituted arguments and inlined return operands; the callee\nsummary now records which result literals are of pointer type.\n\nUpdates golang/go#82039\n\nChange-Id: I4699bf543cbd41f848d9669254d34837ef4f56ad\nReviewed-on: https://go-review.googlesource.com/c/tools/+/846688\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "a6c77bc6557e7a747f1b4c78e404c4e5ce376f8d",
      "tree": "cff6684ab02b2291a622a85d0890dd8e1f8f4829",
      "parents": [
        "046a7e9a08ad3ac953545c8efc413a5f54cefee7"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Tue Sep 15 17:50:00 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Wed Oct 14 09:56:18 2026 -0700"
      },
      "message": "x/tools/go/analysis: improve documentation of drivers\n\nThe relationship between these tools has been a perennial source\nof confusion. At the risk of slightly oversharing, this CL aims\nto provide a more comprehensive explanation.\n\nFor golang/go#81470\n\nChange-Id: I979c5d7f1f8a8d01cf2baf30a869d56b63003d53\nReviewed-on: https://go-review.googlesource.com/c/tools/+/833264\nReviewed-by: Dominik Honnef \u003cdominik@honnef.co\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Sean Liao \u003csean@liao.dev\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\nReviewed-by: Mark Freeman \u003cmark@golang.org\u003e\n"
    },
    {
      "commit": "046a7e9a08ad3ac953545c8efc413a5f54cefee7",
      "tree": "7de624a7fe26d692cceb12d0a80f7eea32876283",
      "parents": [
        "e9d5d322951e67ca3b0b6a953720152f57dcaa5d"
      ],
      "author": {
        "name": "Madeline Kalil",
        "email": "mkalil@google.com",
        "time": "Wed Oct 14 10:37:45 2026 -0400"
      },
      "committer": {
        "name": "Madeline Kalil",
        "email": "mkalil@google.com",
        "time": "Wed Oct 14 09:48:00 2026 -0700"
      },
      "message": "gopls/internal/lsprpc: disable TestAddGoEnv_GOWORK when go command is unavailable\n\nThis test calls AddGoEnv, which runs go env, so the test needs\naccess to the go command (which isn\u0027t available on js/wasm etc.).\nOther tests in ths file have testenv.NeedsTool(t, \"go\"), but\nthis one was missing.\n\nFixes golang/go#82198\n\nChange-Id: I46ce12bea09f335f2d65da1e365f0da691a0c446\nReviewed-on: https://go-review.googlesource.com/c/tools/+/849305\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\n"
    },
    {
      "commit": "e9d5d322951e67ca3b0b6a953720152f57dcaa5d",
      "tree": "c5550ccfbac5a9fdff03e7c6e0659c63d234f7eb",
      "parents": [
        "d2a1af255d7e04d30aa2da10879f63e96a171e69"
      ],
      "author": {
        "name": "Alex Putman",
        "email": "aputman@golang.org",
        "time": "Wed Oct 14 11:34:15 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Wed Oct 14 09:06:19 2026 -0700"
      },
      "message": "gopls: fix v0.24 expected release date\n\nWill cherrypick this to the pre-release before releasing v0.24 this\nweek.\n\nFor golang/go#81891\n\nChange-Id: I6843ef11ef6f5030afcfc469bfa891e96a6a6964\nReviewed-on: https://go-review.googlesource.com/c/tools/+/848328\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\nAuto-Submit: Alex Putman \u003caputman@golang.org\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\n"
    },
    {
      "commit": "d2a1af255d7e04d30aa2da10879f63e96a171e69",
      "tree": "d74ceb21687f48647525f4c2b5ce8286f3c8fd28",
      "parents": [
        "b8f586f8588e28f0c9fc12bcafd850db114ba049"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Tue Oct 13 09:57:29 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Wed Oct 14 07:42:44 2026 -0700"
      },
      "message": "gopls/internal/golang: CodeAction(source.doc): show [deprecated]\n\nThis CL causes the HTML for a deprecated symbol to include\na [DEPRECATED] slug, just like in pkg.go.dev.\n\n+ test\n\nChange-Id: I14cab9c9a69eceac6bce71b66d2a6fdcee607e32\nReviewed-on: https://go-review.googlesource.com/c/tools/+/848367\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\n"
    },
    {
      "commit": "b8f586f8588e28f0c9fc12bcafd850db114ba049",
      "tree": "5bf955a24344015ac5472ed55c9531cda62539b6",
      "parents": [
        "8a57089156dac55df39907a5ab81c5144216e60a"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Tue Oct 13 21:42:24 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Tue Oct 13 19:15:44 2026 -0700"
      },
      "message": "gopls/internal/test/marker: fix dialog_move_decl_refs.txt\n\nThe test is failing on master due to merge skew between\nCL 846685 and CL 840505.\n\nChange-Id: I7b873f13e86328f6bdc94515fe741f98f751adf2\nReviewed-on: https://go-review.googlesource.com/c/tools/+/848326\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\nReviewed-by: PJ Malloy \u003cpjmalloy@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: t hepudds \u003cthepudds1460@gmail.com\u003e\n"
    },
    {
      "commit": "8a57089156dac55df39907a5ab81c5144216e60a",
      "tree": "3e7989b38073e798826c55b5959b350a0b629c27",
      "parents": [
        "966056e2637c3c5d29ce9e543cb8928494c09f3c"
      ],
      "author": {
        "name": "Hongxiang Jiang",
        "email": "hxjiang@golang.org",
        "time": "Tue Oct 13 17:23:12 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Tue Oct 13 18:39:10 2026 -0700"
      },
      "message": "gopls/doc/design: sync the integration doc with the latest code\n\nFor unstablebuild/rune#166\n\nChange-Id: I1e902ae64e1f57bc48643fc35090909c34f2b4ba\nReviewed-on: https://go-review.googlesource.com/c/tools/+/848626\nAuto-Submit: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\n"
    },
    {
      "commit": "966056e2637c3c5d29ce9e543cb8928494c09f3c",
      "tree": "cad7426f5e646d2dc4b6702c54e207d92c30fd61",
      "parents": [
        "457dccf4ea522ccdb39b4aeba330b0430ec98612"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Tue Oct 13 10:22:07 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Tue Oct 13 18:16:02 2026 -0700"
      },
      "message": "internal/gcimporter: encode float constants exactly in iexport\n\nThis CL bumps the protocol (v4) to enable lossless encoding\nof floating-point constants in one of three formats, as\ndetermined by the constant.Value representation:\n\n- binary floating-point values with 512-bit mantissas (as before),\n- multiprecision integers, or\n- multiprecision rationals.\n\nThis allows constants like 1.0/3 to round-trip without loss.\nThe encoding is never more than one tag byte longer than before,\nand often shorter.\n\nAlso:\n- fix valueToRat, which dropped the sign of negative numerators\n  (constant.Bytes returns the absolute value). This latent\n  bug caused constants such as -1.0/7 to be exported as positive.\n- in the importer, use the recorded constant kind (versions \u003e\u003d 2)\n  to return an unknown constant without reading a value, as the\n  exporter writes none (go.dev/issue/60605).\n\nFixes golang/go#82186\n\nChange-Id: I8f93422284b4b8ac832b6d5fefff5c911456f12f\nReviewed-on: https://go-review.googlesource.com/c/tools/+/848287\nReviewed-by: Mark Freeman \u003cmark@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "457dccf4ea522ccdb39b4aeba330b0430ec98612",
      "tree": "30b0f3d099fb8e21448ad8fb964ff31b3b93973d",
      "parents": [
        "4552a8391b9f171295b11a70518c30f0fb507d6f"
      ],
      "author": {
        "name": "Madeline Kalil",
        "email": "mkalil@google.com",
        "time": "Wed Oct 07 16:10:50 2026 -0400"
      },
      "committer": {
        "name": "Hongxiang Jiang",
        "email": "hxjiang@golang.org",
        "time": "Tue Oct 13 15:06:09 2026 -0700"
      },
      "message": "gopls/internal/golang: MoveDeclaration - move doc comments and trailing comments\n\nExpand the movingRange of a moving decl to include the start of its\ndoc comment and the end of its trailing comment (if any).\n\nCopying the doc comment text without adjusting indent results\nin weird indentation, but gofmt will fix this so it is left\nunchanged (but added a TODO).\n\nAlso adjust the end range of moving decls that will\nbe deleted to include trailing whitespace so we don\u0027t\nleave a bunch of blank lines in the source file.\n\nFor golang/go#70583\n\nChange-Id: If718c2e85ead673687fba532c7b8c81f199b2966\nReviewed-on: https://go-review.googlesource.com/c/tools/+/846685\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nAuto-Submit: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "4552a8391b9f171295b11a70518c30f0fb507d6f",
      "tree": "228761b16da9f1b39cea639feecf241533e0675f",
      "parents": [
        "ee2ae556a2c2629b53996a00c14af1b7948f90b9"
      ],
      "author": {
        "name": "Hana Kim",
        "email": "hyangah@gmail.com",
        "time": "Wed Sep 23 05:36:15 2026 +0000"
      },
      "committer": {
        "name": "Hyang-Ah Hana Kim",
        "email": "hyangah@gmail.com",
        "time": "Tue Oct 13 14:05:53 2026 -0700"
      },
      "message": "gopls/internal/cmd: propagate client options to server via configuration\n\nThe remote daemon runs with default options.\nSend the client\u0027s configured options in (*client).Configuration so\nremote subcommands honor user flags.\n\nFor golang/go#81721\n\nChange-Id: Ie140f79919e98a05c634b69a5c71c4d66a6a6964\nReviewed-on: https://go-review.googlesource.com/c/tools/+/837928\nReviewed-by: Alex Putman \u003caputman@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "ee2ae556a2c2629b53996a00c14af1b7948f90b9",
      "tree": "65b567f8d0525cc09be7ad81f5ffce2ef2427f7b",
      "parents": [
        "f446f9b07734cea79586baac2772f2056d6a7d47"
      ],
      "author": {
        "name": "EyJunge1",
        "email": "Leder.Arne@gmail.com",
        "time": "Thu Aug 13 10:58:45 2026 +0200"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Tue Oct 13 10:56:49 2026 -0700"
      },
      "message": "internal/refactor/inline: harden escape against nil TypeOf\n\nTypeOf may be nil when errors exist only in transitive dependencies.\nGuard escape analysis, and widen gopls inliner recover to a cheap\ntransitively-ill-typed check over the dependency metadata graph.\n\nFixes golang/go#75236\n\nChange-Id: Iacf89c180e0915382f7c7c0a7c12ae7c3a541afd\nReviewed-on: https://go-review.googlesource.com/c/tools/+/814421\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nAuto-Submit: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "f446f9b07734cea79586baac2772f2056d6a7d47",
      "tree": "8311d1521dbd15016f8884fe1b43d87669648af4",
      "parents": [
        "f915d9961e566be41ae86619df24bd9199731c5a"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Wed Oct 07 17:15:53 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Tue Oct 13 09:52:47 2026 -0700"
      },
      "message": "gopls/internal/analysis/ptrtoerror: handle pointer-typed composite literals\n\nA composite literal whose type is implicit may have a pointer type\n*T, denoting \u0026T{...}: this occurs for nested literals ([]*T{{...}})\nand, since go1.28 (#12854), for any literal in an assignment context\n(var p *[]error \u003d {...}). The analyzer failed to unpointer the type,\nand so ignored the elements of such literals.\n\nUpdates golang/go#82039\n\nChange-Id: Ia1cbeeb228027b645cc6aa57952ad2297e2b2414\nReviewed-on: https://go-review.googlesource.com/c/tools/+/846692\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\n"
    },
    {
      "commit": "f915d9961e566be41ae86619df24bd9199731c5a",
      "tree": "e01e1f7182a8b46f0cc933c563c38ca52765d0e5",
      "parents": [
        "e6b397ea1031e8e63b8a9be2e31ecd107a77b550"
      ],
      "author": {
        "name": "Hana Kim",
        "email": "hyangah@gmail.com",
        "time": "Wed Sep 23 05:14:33 2026 +0000"
      },
      "committer": {
        "name": "Alex Putman",
        "email": "aputman@golang.org",
        "time": "Tue Oct 13 07:26:09 2026 -0700"
      },
      "message": "gopls/internal/cmd: send Go environment in remote mode initialize\n\nThe remote daemon defaults to its own process environment.\nSend the client\u0027s `go env` in initialize options so queries evaluate\nwith the caller\u0027s environment.\n\nFor golang/go#81721\n\nChange-Id: Ib2f88de1781894457d79a10d00fb91886a6a6964\nReviewed-on: https://go-review.googlesource.com/c/tools/+/837927\nReviewed-by: Alex Putman \u003caputman@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "e6b397ea1031e8e63b8a9be2e31ecd107a77b550",
      "tree": "89a0db9bdbdc761bb5773273956381bb4099e543",
      "parents": [
        "8d78e1188b50786a7b73f83416813488c41f8f41"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Wed Oct 07 17:38:47 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Tue Oct 13 07:10:32 2026 -0700"
      },
      "message": "gopls/internal/golang: undeclared: reject invalid type arguments\n\nAn argument with an invalid type (such as results from using an\n\"untyped\" composite literal in an assigment context that fails\nto supply a LHS type) should not create a parameter of type\n\"invalid type\".\n\nUpdates golang/go#82039\n\nChange-Id: I2478a53c9195a91b1f4915ab37b52a5a6dc4905d\nReviewed-on: https://go-review.googlesource.com/c/tools/+/846693\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "8d78e1188b50786a7b73f83416813488c41f8f41",
      "tree": "49774194c40cef2461196d670d1c139a68cc384f",
      "parents": [
        "291f247c61ddb421e27ad90628acf0aa838f43af"
      ],
      "author": {
        "name": "Peter Weinberger",
        "email": "pjw@google.com",
        "time": "Mon Oct 12 14:21:34 2026 -0400"
      },
      "committer": {
        "name": "Peter Weinberger",
        "email": "pjw@google.com",
        "time": "Tue Oct 13 07:04:51 2026 -0700"
      },
      "message": "internal/typesinternal: prepare for type.Invalid\n\nThe test checks for nil, but it should also check for\nInvalid, especially considering that fixes are coming to go/types.\n\nChange-Id: Ib068621636d2062b14c1f7148575561cd51c74e6\nReviewed-on: https://go-review.googlesource.com/c/tools/+/848805\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\n"
    },
    {
      "commit": "291f247c61ddb421e27ad90628acf0aa838f43af",
      "tree": "6d39001b52c844ef3cc5d3274ef87564406fde02",
      "parents": [
        "b960c4cb1af8e5626be487320337a54137473dca"
      ],
      "author": {
        "name": "Peter Weinberger",
        "email": "pjw@google.com",
        "time": "Tue Sep 29 17:31:03 2026 -0400"
      },
      "committer": {
        "name": "Peter Weinberger",
        "email": "pjw@google.com",
        "time": "Mon Oct 12 12:45:24 2026 -0700"
      },
      "message": "gopls/internal/analysis/unusedvariable: remove assignments to unused variables\n\nIf a variable is declared and assigned to, but never read, the\ncompiler reports it as unused. Previously, unusedvariable only\nremoved the variable\u0027s declaration, leaving behind invalid assignments\nto an undeclared variable.\n\nNow, unusedvariable also calls refactor.DeleteVar on any remaining LHS\nuses of the variable. To support this, DeleteVar is extended to handle\n\u0027\u003d\u0027 assignments and redeclarations in \u0027:\u003d\u0027 statements, and to simplify\nassignments whose remaining LHS consists only of blank identifiers\n(like \"_ \u003d f()\" or \"_, _ \u003d f()\") to expression statements when the RHS\nis a valid statement.\n\nFixes golang/go#81809\n\nChange-Id: I8dffa42e20f79998038befe16929c18226526978\nReviewed-on: https://go-review.googlesource.com/c/tools/+/841565\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "b960c4cb1af8e5626be487320337a54137473dca",
      "tree": "52f25e6cf0969dd5af62cf6c8c75b2664f48c754",
      "parents": [
        "28a86bd1b73d1a0b3370cd0c404cf6f35225499b"
      ],
      "author": {
        "name": "Hongxiang Jiang",
        "email": "hxjiang@golang.org",
        "time": "Mon Sep 28 15:45:30 2026 -0400"
      },
      "committer": {
        "name": "Hongxiang Jiang",
        "email": "hxjiang@golang.org",
        "time": "Mon Oct 12 12:04:01 2026 -0700"
      },
      "message": "internal/refactor: consider multiple positions when adding imports\n\nWhen moving declarations from a source package to a destination, gopls\nneeds to update all the references \"source.X\" to \"destination.X\".\nBut \"destination\" may not be available at all call sites, for example:\n\nfunc _() {\n\tvar destination int\n\tsource.X() // not available\n}\n\nfunc _() {\n\tsource.X() // available\n}\n\nOnce AddImport accepts a list of positions, move declaration can\nfigure out a consistent name for all locations. In the case above,\nAddImport will return \"destination0\", and MoveDeclaration can update all\nreferences to \"destination0.X()\".\n\nFor golang/go#70583\n\nChange-Id: Ib339fb91036eced0ff96d95b0a6a2c9187ee51a0\nReviewed-on: https://go-review.googlesource.com/c/tools/+/840505\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\n"
    },
    {
      "commit": "28a86bd1b73d1a0b3370cd0c404cf6f35225499b",
      "tree": "d79531122a652b9287f43e2332d7129fbcb79c05",
      "parents": [
        "b4346b771b1dde0a07acfc05b1f303cfbbc85724"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Wed Oct 07 17:15:15 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Mon Oct 12 11:39:35 2026 -0700"
      },
      "message": "refactor/eg: compare types of composite literals with implicit types\n\nA composite literal with no explicit type, such as an element of an\nenclosing literal, or, since go1.28 (#12854), any literal in an\nassignment context, f({1, 2}), was matched without regard to its\ntype, so a template {1, 2} of type T could match {1, 2} of type U.\n\nNow we always compare the types of the two literals.\n\nUpdates golang/go#82039\n\nChange-Id: Ie19326849031e5ea6c379c968ab0f5d985b430a0\nReviewed-on: https://go-review.googlesource.com/c/tools/+/846691\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\n"
    },
    {
      "commit": "b4346b771b1dde0a07acfc05b1f303cfbbc85724",
      "tree": "cc6b1dacac65e75de8d3e5b6f31e4e776111de79",
      "parents": [
        "bbe07eac6076c88a3470a387fa35fdb606d2d4c7"
      ],
      "author": {
        "name": "Madeline Kalil",
        "email": "mkalil@google.com",
        "time": "Wed Oct 07 15:27:01 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Mon Oct 12 10:58:50 2026 -0700"
      },
      "message": "gopls/internal/golang: MoveDeclaration - drop destPkg qualifier\n\nIf we are moving a declaration that references a symbol in the destPkg,\nit no longer needs to reference that symbol using the package qualifier.\n\nWhen we determine the text of the moving decl, we edit it to drop\npackage qualifiers that reference the destPkg.\n\nFor golang/go#70583\n\nChange-Id: I5b383940c3e8333ec5a4d1fec0e4856d8632c7ae\nReviewed-on: https://go-review.googlesource.com/c/tools/+/846645\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nAuto-Submit: Madeline Kalil \u003cmkalil@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "bbe07eac6076c88a3470a387fa35fdb606d2d4c7",
      "tree": "a8dbd4676aede6facfe5a56cd08cb5cbbae7e663",
      "parents": [
        "5d7abf099949ab26f3979a23c887d0ff9814c24e"
      ],
      "author": {
        "name": "Peter Weinberger",
        "email": "pjw@google.com",
        "time": "Sun Oct 11 15:18:39 2026 -0400"
      },
      "committer": {
        "name": "Peter Weinberger",
        "email": "pjw@google.com",
        "time": "Mon Oct 12 10:49:26 2026 -0700"
      },
      "message": "gopls/internal/golang: handle Typ[Invalid]\n\nPrepare for go.dev/cl/848066, which records invalid expressions\nin types.Info.Types with type Typ[Invalid] rather than omitting them:\n\n- In completion.selector and addPostfixSnippetCandidates, check\n  typeIsValid so that undeclared identifiers (such as unimported\n  package names) are not treated as valid selector operands and do not\n  trigger postfix snippet template errors.\n\n- In completion.builtinArgType, fall back to the parent expected type\n  when the first argument to append has an invalid type.\n\n- In hover, do not report hover information for non-identifier\n  expressions with Typ[Invalid] (such as malformed basic literals).\n\n- In dynamicFuncCallType, do not treat calls to expressions with\n  Typ[Invalid] (such as undeclared identifiers) as dynamic function\n  calls.\n\nFor golang/go#82058\n\nChange-Id: Ia1bbfad6a93f0fbb609cb107735f8f46abc24ed7\nReviewed-on: https://go-review.googlesource.com/c/tools/+/848625\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "5d7abf099949ab26f3979a23c887d0ff9814c24e",
      "tree": "f966e3c81408b7b8a238817448ea3717a18e98b2",
      "parents": [
        "31f699c742197c9eb5e5c2499e4cdf2b80a8f53f"
      ],
      "author": {
        "name": "Madeline Kalil",
        "email": "mkalil@google.com",
        "time": "Thu Oct 08 17:36:31 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Mon Oct 12 10:35:20 2026 -0700"
      },
      "message": "gopls/internal/golang: delete MoveType\n\nRemove the \"move type\" codeaction and its settings.\n\nChange-Id: Id8d741fa1157a533c9be574847d493762beb681f\nReviewed-on: https://go-review.googlesource.com/c/tools/+/847546\nReviewed-by: Peter Weinberger \u003cpjw@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nAuto-Submit: Madeline Kalil \u003cmkalil@google.com\u003e\n"
    },
    {
      "commit": "31f699c742197c9eb5e5c2499e4cdf2b80a8f53f",
      "tree": "f71579a84c64b1784dfc6331a865c485b2b25ceb",
      "parents": [
        "48c63253e1aefe38765e8760e7f03b43bbdae6fd"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Wed Oct 07 15:47:30 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Mon Oct 12 09:51:26 2026 -0700"
      },
      "message": "go/analysis/passes/modernize: newexpr: reject untyped composite literals\n\nSince go1.28 (#12854), a call varOf({1, 2}) may pass a composite\nliteral whose type is inferred from the parameter. Simplifying it\nto new({1, 2}) produces an error, since new supplies no target type.\n\nUpdates golang/go#82039\n\nChange-Id: Ia3676524ee731a762780de70e78fc57e6ccdf5c6\nReviewed-on: https://go-review.googlesource.com/c/tools/+/846687\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\n"
    },
    {
      "commit": "48c63253e1aefe38765e8760e7f03b43bbdae6fd",
      "tree": "fc294073667fd9cf633d79e4cb6c5a31828a2dbe",
      "parents": [
        "af7fda976e7f2e6bc23c571d9482f090207e0e85"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Fri Oct 09 17:41:14 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Mon Oct 12 08:01:52 2026 -0700"
      },
      "message": "internal/facts: remove brute-force importMap traversal\n\nFacts can only be queried for objects belonging to packages\ncreated by the importer used to type-check the current package,\nso the importer\u0027s package map is a sufficient lookup for decoding.\nunitchecker now uses its importer\u0027s map, and the old NewDecoder,\nwhich enumerated every object reachable from the direct imports,\nis deleted. NewDecoderFunc is renamed to NewDecoder.\n\nBenchmark: go vet with a printf-only unitchecker on\nkubernetes/cmd/kubelet (1711 packages), fresh vet cache,\nmean of 5 runs:\n\n         real    user    sys\n  old   13.59s  48.88s  30.15s\n  new   13.06s  43.06s  30.16s\n        -3.9%  -11.9%     0%\n\nChange-Id: If70168d5c1def7201ef40111be6b755d3aaed4e7\nReviewed-on: https://go-review.googlesource.com/c/tools/+/848166\nReviewed-by: Mark Freeman \u003cmark@golang.org\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "af7fda976e7f2e6bc23c571d9482f090207e0e85",
      "tree": "b2679159843433dc5519f72ae8f17bb0d9ce0167",
      "parents": [
        "16517d951552611e7bd358c48ee1051fd0e57b0c"
      ],
      "author": {
        "name": "Rithvik Reddy",
        "email": "rithvikreddymukkara@gmail.com",
        "time": "Fri Oct 09 09:09:27 2026 +0530"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Mon Oct 12 07:58:53 2026 -0700"
      },
      "message": "internal/typesinternal: fix nil deref in IsAssignedOrAddressTaken\n\nTypeOf may return nil for ill-typed operands of an index or slice\nexpression, such as undefined[0] or v.nofield[0], causing a crash\nin gopls\u0027s inline-variable code action. In the absence of type\ninformation, conservatively return true, so that callers such as\nmodernizers do not suggest fixes for ill-typed code.\n\nFixes golang/go#82058\n\nChange-Id: Ia9c00198bdf1f8c1210d742e1dcf6a40cbe81b17\nReviewed-on: https://go-review.googlesource.com/c/tools/+/847825\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "16517d951552611e7bd358c48ee1051fd0e57b0c",
      "tree": "6a7f4778786d5f5136463eaead46d8ec6cfe8ca5",
      "parents": [
        "a39b77340b27c5a86080ef22fa6fa5b4c489e177"
      ],
      "author": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Fri Oct 09 14:23:17 2026 -0700"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Sat Oct 10 12:29:17 2026 -0700"
      },
      "message": "go.mod: update golang.org/x dependencies\n\nUpdate golang.org/x dependencies to their latest tagged versions.\n\nChange-Id: I1ac4c713a2bdd1c9babb59c7d4a1fe4fbe8fdcd6\nReviewed-on: https://go-review.googlesource.com/c/tools/+/848266\nAuto-Submit: Gopher Robot \u003cgobot@golang.org\u003e\nReviewed-by: Dmitri Shuralyov \u003cdmitshur@google.com\u003e\nReviewed-by: Cherry Mui \u003ccherryyz@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "a39b77340b27c5a86080ef22fa6fa5b4c489e177",
      "tree": "03d42a5ab88af784859f9986deacadbe030aa81d",
      "parents": [
        "2faede3474a5d3b52625fbd756bf9b572c813770"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Fri Oct 09 11:07:49 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Fri Oct 09 20:48:27 2026 -0700"
      },
      "message": "gopls/internal/cache: fix shadowing bug\n\nThis CL fixes a classic Go shadowing bug that may cause\ngetOneTransitiveRefLocked to return nil spuriously in\nsome cases. This is unlikely be a common or serious\nbug. Thanks to pjw for identifying a test case.\n\n(The mistake was pointed out in passing by a coding agent.)\n\nChange-Id: Ica7703aba1272355dab85e5c858b7d308cb16dca\nReviewed-on: https://go-review.googlesource.com/c/tools/+/847709\nReviewed-by: Peter Weinberger \u003cpjw@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "2faede3474a5d3b52625fbd756bf9b572c813770",
      "tree": "031c8221a93464fcbb8ccec0f8f1e831a6ec0878",
      "parents": [
        "dbca0bb22f1311143d31a976b72ea6e101679c31"
      ],
      "author": {
        "name": "Hongxiang Jiang",
        "email": "hxjiang@golang.org",
        "time": "Fri Oct 09 19:17:11 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Fri Oct 09 17:23:44 2026 -0700"
      },
      "message": "gopls/internal/test/marker: reorganize undeclared test files\n\nRename test file names under undeclared as the test file\nnames (i.e. \"missingXXX\") repeat the dir (i.e. \"undeclare\").\n\nMerge the case relevant to \"return\" to func.txt.\n\nChange-Id: Ib74f8a52e7ebff70d3416ee77cc9ee4a370b36b1\nReviewed-on: https://go-review.googlesource.com/c/tools/+/848325\nReviewed-by: Peter Weinberger \u003cpjw@google.com\u003e\nAuto-Submit: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "dbca0bb22f1311143d31a976b72ea6e101679c31",
      "tree": "40088b780b0297d090700263b4f99e2b92663fc4",
      "parents": [
        "ec72d2badf3c8d5232023038a11ef663076b6208"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Wed Oct 07 15:46:48 2026 -0400"
      },
      "committer": {
        "name": "Alex Putman",
        "email": "aputman@golang.org",
        "time": "Fri Oct 09 16:37:49 2026 -0700"
      },
      "message": "go/ssa: support pointer-typed composite literals in all contexts\n\nIn go1.28 (#12854), a composite literal may omit its type in any\nassignment context; if the type is implicit and is a pointer *T,\nit denotes \u0026T{...}.\n\nPreviously this was possible only for nested literals (handled\nby builder.assign), but now such literals may appear in other\ncontexts (call arguments, etc) all of which reach expr0.\nIt used to load a T value where a *T was required, causing a crash.\n\nNow, expr0 treats a pointer type as an implicit \u0026-operation.\nThis actually eliminates a number of special cases.\n\nRecalling the recent change CL 778401, there is now no\ndifference at all between nested and non-nested literals.\nThis allows us to rip out the isZero machinery and the\nstorebuf parameter to compLit. Yay.\n\nUpdates golang/go#82039\n\nChange-Id: I104b48855b214bcc4d9c135834e181223d71bbb3\nReviewed-on: https://go-review.googlesource.com/c/tools/+/846686\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Alex Putman \u003caputman@golang.org\u003e\n"
    },
    {
      "commit": "ec72d2badf3c8d5232023038a11ef663076b6208",
      "tree": "7e4d00140258ca4cecc2b28978ca1db88deeb79e",
      "parents": [
        "2c549680fcf7d3de8cab0023a6308762ea3f6582"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Thu Oct 08 15:46:51 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Fri Oct 09 14:27:22 2026 -0700"
      },
      "message": "gopls/internal/cache: pass overlays to go mod commands\n\nBefore, gopls did not use -overlay with go mod commands,\neven though gopls always wrote the overlay file, so go mod tidy\nwould read Go files from disk without respecting unsaved edits.\nThis led to races with file save events, causing some tests\nto flake.  (This regression occurred in CL 730220.)\n\nBecause go mod tidy now sees unsaved buffers, its cached results no\nlonger need to be invalidated when a file is saved; it suffices to\ninvalidate only when there\u0027s a change to package metadata or a\ngo.{mod,sum} file.\n\nAlso, invalidating a tidy result now causes the view to be\nre-diagnosed. Previously this happened only by accident, when the\nchanged go.mod file shared a directory with the Go files of some\npackage.\n\nThis CL passes -overlay with all go mod commands, and adds\nregression tests that deterministically reproduced the\nproblem in the flaky test.\n\nFixes golang/go#82027\nFixes golang/go#53881\n\nChange-Id: I09699f60f68a3836199833d85243f36a1b30e48e\nReviewed-on: https://go-review.googlesource.com/c/tools/+/847425\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Peter Weinberger \u003cpjw@google.com\u003e\n"
    },
    {
      "commit": "2c549680fcf7d3de8cab0023a6308762ea3f6582",
      "tree": "0db927e553f48caa9e632f66717da28de08d06a8",
      "parents": [
        "1e27b6e002858089b6c1318498e3dd8b9cb149b2"
      ],
      "author": {
        "name": "Madeline Kalil",
        "email": "mkalil@google.com",
        "time": "Fri Sep 25 18:00:44 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Fri Oct 09 14:02:37 2026 -0700"
      },
      "message": "gopls/internal/golang: MoveDeclaration - fix imports for decls in multiple files\n\nThe moving decls may come from several different files of srcPkg,\nbut updateSrcDestImports only considered the imports of the\nfile containing the originally selected decl. So it skipped\nimports needed by moving decls in other files.\n\nWe need to compute the import changes separately for each\nsource file, and then dedupe the imports added to dest.\n\nAlso, updateSrcDestImports records all of its edits\ndirectly instead of returning them.\n\nUpdates golang/go#70583\n\nChange-Id: Ibb4fb9d38277da6dc724b93c22990dee9badaeb9\nReviewed-on: https://go-review.googlesource.com/c/tools/+/839206\nReviewed-by: Peter Weinberger \u003cpjw@google.com\u003e\nAuto-Submit: Madeline Kalil \u003cmkalil@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\n"
    },
    {
      "commit": "1e27b6e002858089b6c1318498e3dd8b9cb149b2",
      "tree": "6c246880b25e3c3ad864f08d591244b77b7bce64",
      "parents": [
        "2babe1edae6542f657408d556e1288fb0b2afc19"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Thu Oct 08 13:25:43 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Fri Oct 09 10:26:52 2026 -0700"
      },
      "message": "internal/cursorutil: promote from gopls, plus other cleanups\n\n- gopls/internal/util/cursorutil -\u003e internal/cursorutil\n  so it can be used outside gopls.\n- astutil.Unparen{,Enclosing}Cursor -\u003e cursorutil.Unparen{,Enclosing}\n- delete unused cursorutil.Path.\n- Add cursorutil.EnclosingFile, and use it where appropriate.\n\nChange-Id: I563c92c214ca14e626fdd8754744348ab8e03ff4\nReviewed-on: https://go-review.googlesource.com/c/tools/+/847285\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "2babe1edae6542f657408d556e1288fb0b2afc19",
      "tree": "726d9ae2cf07ed5fd03a3070477f1d0f996f47e5",
      "parents": [
        "a3af45f248c005a2f2485ca99ad978547753a17c"
      ],
      "author": {
        "name": "Hana Kim",
        "email": "hyangah@gmail.com",
        "time": "Fri Oct 09 01:27:53 2026 +0000"
      },
      "committer": {
        "name": "Hyang-Ah Hana Kim",
        "email": "hyangah@gmail.com",
        "time": "Fri Oct 09 10:01:33 2026 -0700"
      },
      "message": "gopls/internal/lsprpc: adjust dial retry logic\n\nReplace the fixed interval retry loop (5 times, 1sec apart)\nwith exponential backoff starting at 50ms and making 8 attempts.\nThis makes normal daemon cold-starts faster while giving heavily\nloaded race builders enough time (hopefully) for the daemon subprocess\nto bind its socket.\n\nIn gopls/internal/cmd, merge TestRemoteAutoFeatures into TestRemoteAuto\nas subtests reusing the same daemon and drop t.Parallel().\n\nFixes golang/go#82064\nFixes golang/go#82068\n\nChange-Id: I53010d6211395a658838476d6c3689536a6a6964\nReviewed-on: https://go-review.googlesource.com/c/tools/+/848065\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Alex Putman \u003caputman@golang.org\u003e\n"
    },
    {
      "commit": "a3af45f248c005a2f2485ca99ad978547753a17c",
      "tree": "f3a17ba68febae2cc5459d62d79cd3f4d437288d",
      "parents": [
        "ac4a446a34cf974f0202077f437008e88b07593c"
      ],
      "author": {
        "name": "EyJunge1",
        "email": "Leder.Arne@gmail.com",
        "time": "Tue Sep 01 16:48:53 2026 +0200"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Thu Oct 08 15:56:33 2026 -0700"
      },
      "message": "internal/refactor/inline: reduce void calls in tail position\n\nAllow inlining a void call statement immediately before a pure\nreturn (or as the last statement of a function) even when the\ncallee uses defer. Deferred calls still run when the caller\nreturns, so literalization is unnecessary in this case.\n\nUpdates golang/go#63352\nFixes golang/go#80984\n\nChange-Id: I0d48def41d9e25cd0f4ef8a92ea3ed68b039ff2f\nReviewed-on: https://go-review.googlesource.com/c/tools/+/814521\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\nAuto-Submit: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nCommit-Queue: Hongxiang Jiang \u003chxjiang@golang.org\u003e\n"
    },
    {
      "commit": "ac4a446a34cf974f0202077f437008e88b07593c",
      "tree": "efe7b18a2389d0e082538ac7e2bd40502e4faa90",
      "parents": [
        "9860b2f57a31338696c8f94913d4af18c2061453"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Thu Oct 08 10:55:56 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Thu Oct 08 15:42:21 2026 -0700"
      },
      "message": "gopls/internal/filewatcher: disable TestStress/fsnotify on 386\n\n...and other 32-bit machines: no-one runs gopls on them.\n\nFixes golang/go#82070\n\nChange-Id: I74317189964f230defcbe5cd03d9275e1e97c868\nReviewed-on: https://go-review.googlesource.com/c/tools/+/847085\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\n"
    },
    {
      "commit": "9860b2f57a31338696c8f94913d4af18c2061453",
      "tree": "7f6d8412ebfefe18eb6fcbe3748987dfd45dd121",
      "parents": [
        "e056796a371642d62c3ca5c9fc287919e387b195"
      ],
      "author": {
        "name": "Alex Putman",
        "email": "aputman@golang.org",
        "time": "Thu Oct 08 16:35:51 2026 -0400"
      },
      "committer": {
        "name": "Alex Putman",
        "email": "aputman@golang.org",
        "time": "Thu Oct 08 15:15:47 2026 -0700"
      },
      "message": "gopls/internal/cmd: separate out client and server\n\nDesigned to be minimally invasive, the client/server separation\nmostly affects file opening, as it\u0027s the only method off the\nclient that calls the server. Now a container of {client, server}\ncalled `cli` handles file opening, as it has access to both\nclient and server. But importantly, methods off of client now\ncan\u0027t access it, they can only access `getFile()` which reads\nthe in memory file contents.\n\nBy having `cli` contain an embeded cli, all callers that\npreviously used `cli.XYZ` don\u0027t have to change. And since\nalmost all `client` variables were called `cli`, they will\nstill correctly refer to the right type. `cli.server` will\nalso still work since the same field now exists in the `cli`\ntype. And the name `cli` is apt as it has a client and a server\nit uses.\n\nThe only change that individual cmd implementations will need to\nmake is if they have helper functions that take in a `client` and\ncall `client.openFile()`. They will need to change to instead\ntake in a `cli` (which can be seen in the few necessary examples\nin this cl).\n\nFor golang/go#81721\n\nChange-Id: I1cbf2136b80227bb2837187e0c258a406a6a6964\nReviewed-on: https://go-review.googlesource.com/c/tools/+/847486\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Hyang-Ah Hana Kim \u003chyangah@gmail.com\u003e\n"
    },
    {
      "commit": "e056796a371642d62c3ca5c9fc287919e387b195",
      "tree": "5c0b239dab26bfc830b2874d1c04968371147346",
      "parents": [
        "1332450b85b349fd9e89ac7c65048d366e81e5c2"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Wed Oct 07 17:43:46 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Thu Oct 08 11:29:26 2026 -0700"
      },
      "message": "go/gcexportdata: remove bundle functionality\n\nThese experimental functions are now marked as deprecated,\nand have no effect other than to return an error.\n\nAt the time the proposal was approved, there were zero known\nuses of these functions (outside of x/exp/apidiff, fixed by\nCL 845886, and numerous forks of it on GitHub). Since then\ntwo projects have started using the bundle functions; I\nhave filed issues to both advising of this change.\n\nFixes golang/go#69573\n\nChange-Id: Ibe148ce43b24362b2f3d66487046ebdce513c5cb\nReviewed-on: https://go-review.googlesource.com/c/tools/+/846705\nReviewed-by: Mark Freeman \u003cmark@golang.org\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "1332450b85b349fd9e89ac7c65048d366e81e5c2",
      "tree": "8d1d94cacb6a0181f50c0e2034a2b1b56f9ba81a",
      "parents": [
        "8b32320eebdd892e7cd95fec623363f68930ca6e"
      ],
      "author": {
        "name": "Peter Weinberger",
        "email": "pjw@google.com",
        "time": "Thu Sep 10 16:12:08 2026 -0400"
      },
      "committer": {
        "name": "Peter Weinberger",
        "email": "pjw@google.com",
        "time": "Thu Oct 08 10:56:33 2026 -0700"
      },
      "message": "internal/gocommand: kill process group on cancel\n\nWhen a Go command was cancelled, invoke.go sent SIGINT\nand SIGKILL only to the top-level go process. Subprocesses spawned\nby the go command (such as cgo and C compilers during \u0027go list\u0027\nor \u0027go build\u0027) did not receive the signal and continued running\nas orphans in the background, consuming CPU cores.\n\nOn Unix, configure the command to run as the leader of its own process\ngroup, and send cancellation signals (SIGINT, SIGKILL)\nto the entire process group (using -pid) so that descendant processes are\nterminated promptly upon cancellation.\n\n(It might be possible to do this for Windows, in its own CL.)\n\nFor golang/go#81408.\n\nChange-Id: I4484ea520f20312ac9bba437ce613ffb4a10e398\nReviewed-on: https://go-review.googlesource.com/c/tools/+/830824\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "8b32320eebdd892e7cd95fec623363f68930ca6e",
      "tree": "638ad57c7c393061665fe351e158deb64c739a9b",
      "parents": [
        "94dda69eec5a08ba9b5483fd6c059d5c7c1b0689"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Wed Oct 07 12:30:40 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Thu Oct 08 10:36:14 2026 -0700"
      },
      "message": "internal/refactor/inline: use refactor.DeleteSpec for imports\n\nNow that the inliner has a cursor for the call, it can use\nrefactor.DeleteSpec to delete an import made redundant by\ninlining, instead of its own hand-written logic.\n\nDeleteSpec deletes a non-final spec up to the start of the next\none, so it no longer leaves behind a whitespace-only line, which\ngofmt would turn into a blank line, splitting the import block\ninto two groups. Test expectations are updated accordingly.\n\nChange-Id: I6d4decd4a53580953243d066ce4b4a62575dfa7f\nReviewed-on: https://go-review.googlesource.com/c/tools/+/846547\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "94dda69eec5a08ba9b5483fd6c059d5c7c1b0689",
      "tree": "ce9c240b41481713bf8b78bb4e530b71f6b3c993",
      "parents": [
        "de121eea751c57d685b93e5ae494d61f583f89fc"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Wed Oct 07 12:28:48 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Thu Oct 08 10:30:47 2026 -0700"
      },
      "message": "internal/refactor/inline: use Cursors\n\nThis change uses a Cursor (now readily available to all inliner\nclients) to identify the call, instead of CallExpr and File syntax\nnodes, simplifying various operations.\n\nDetails:\n- The caller.path slice (formerly computed by PathEnclosingInterval)\n  is gone; its users (callStmt, callerFunc, callerLabels,\n  hasLabelConflict, lookup, tailCallSafeReturn, and paren and brace\n  removal) now use the cursor. callContext is replaced by\n  UnparenEnclosingCursor(...).Parent().\n- inlineCallResult.old, the node to be replaced, is now a cursor,\n  as is the result of callStmt.\n- callStmt now classifies restricted contexts by the ExprStmt\u0027s\n  parent edge rather than the parent\u0027s node type, and the\n  assignment strategy similarly checks for edge.BlockStmt_List.\n\nClients are updated:\n- the inline analyzer passes the cursor it already had;\n- gopls\u0027 enclosingStaticCall now uses pgf.Cursor (resolving a TODO);\n- gopls\u0027 inlineAllCalls finds calls using cursors and edge kinds,\n  and keeps a list of cursors, rebuilt after each re-parse.\n\nNo change in behavior.\n\nChange-Id: I8e235a620980fde3afb04541f177413f8052f172\nReviewed-on: https://go-review.googlesource.com/c/tools/+/846546\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "de121eea751c57d685b93e5ae494d61f583f89fc",
      "tree": "2a1e464072d94309f0c2b81265ca6a56ad0eeaee",
      "parents": [
        "31c58979aa257a4ccd3da5b6102a5d77cfc8d41b"
      ],
      "author": {
        "name": "Harald Nordgren",
        "email": "haraldnordgren@gmail.com",
        "time": "Thu Sep 24 13:22:31 2026 +0200"
      },
      "committer": {
        "name": "Madeline Kalil",
        "email": "mkalil@google.com",
        "time": "Thu Oct 08 10:27:50 2026 -0700"
      },
      "message": "go/analysis/passes/modernize: bloop: delete whole line of removed timer calls\n\nWhen the bloop fix removed a b.StopTimer, b.StartTimer, or\nb.ResetTimer call, it deleted only the statement itself, leaving\nbehind an empty line. For a call immediately preceding the loop,\nsuch as\n\n\tsetup()\n\tb.ResetTimer()\n\tfor i :\u003d 0; i \u003c b.N; i++ {\n\nthis produced a spurious blank line before the new \"for b.Loop()\".\n\nUse refactor.DeleteStmt, which removes the entire line.\n\nChange-Id: I2ef6fea1458660481fc447bf3f69108cdca05c52\nReviewed-on: https://go-review.googlesource.com/c/tools/+/838085\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Dmitri Shuralyov \u003cdmitshur@google.com\u003e\n"
    },
    {
      "commit": "31c58979aa257a4ccd3da5b6102a5d77cfc8d41b",
      "tree": "996e81af858586335e9bed1d9ef7f0fc7f805ecb",
      "parents": [
        "dab62dbe203364c63f1ce36eb3c0840e8deda61a"
      ],
      "author": {
        "name": "Peter Weinberger",
        "email": "pjw@google.com",
        "time": "Tue Sep 15 20:16:30 2026 -0400"
      },
      "committer": {
        "name": "Peter Weinberger",
        "email": "pjw@google.com",
        "time": "Wed Oct 07 17:21:32 2026 -0700"
      },
      "message": "gopls/internal/test/integration: faster execution time\n\nRunning the gopls integration tests was bottlenecked by running all\ntests in dual modes (Default and Forwarded), serial test queuing, and\nredundant LSP server sessions.\n\nThis change applies several optimizations to the integration tests:\n\n1. regtest.DefaultModes: Return Default mode by default in non-short\n   runs, doing rfindley\u0027s TODO. Running every test in both Default\n   and Forwarded mode duplicated LSP server boots and disk sandboxes.\n   Dedicated smoke tests (TestSimultaneousEdits, TestForwardedSmoke,\n   and TestDebugServer) in the misc package maintain explicit coverage\n   for Forwarded mode.\n\n2. Parallelization: Added t.Parallel() to 20 isolated test functions in\n   misc/rename_test.go and 61 top-level test functions in\n   diagnostics/diagnostics_test.go. Because each test executes in its\n   own isolated sandbox (t.TempDir()) and uses an in-process pipe\n   server, they safely run concurrently.\n\n3. didcreatefiles_test.go: Removed duplicate subtest 12 (an exact\n   duplicate of subtest 11) and consolidated the remaining 11 subtests\n   into a single shared LSP session.\n\nMeasurements (Mac / Linux):\n- Full (go test ./... ./gopls/...):\n  - Mac: ~450s -\u003e 387s (~63s saved)\n  - Linux: ~210s -\u003e ~140s (~70s saved)\n- Short (go test -short ./... ./gopls/...):\n  - Warm cache: 192s -\u003e 91s (Mac) / ~45s -\u003e ~35s (Linux)\n  - Cold clean: ~5.5-6.5m -\u003e ~3m40s-4m01s (Mac) / ~90s -\u003e ~72s (Linux)\n- Single packages short mode (Mac / Linux):\n  - misc: 95s / 28s -\u003e 69s / 22s\n  - diagnostics: 35s / 15s -\u003e 18s / 9s\n  - workspace: 43s / 12s -\u003e 32s / 10s\nChange-Id: Ic42a523a69f4a3ef36b23104e2a279deda51e6fa\nReviewed-on: https://go-review.googlesource.com/c/tools/+/833125\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "dab62dbe203364c63f1ce36eb3c0840e8deda61a",
      "tree": "72194a54128eab43a8748efcced79e83d63cc261",
      "parents": [
        "abf1056c531df16ede9f12afeb0cfae2883b4db1"
      ],
      "author": {
        "name": "Hana Kim",
        "email": "hyangah@gmail.com",
        "time": "Wed Sep 23 04:44:57 2026 +0000"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Wed Oct 07 16:31:16 2026 -0700"
      },
      "message": "gopls/internal/cmd: identify gopls cli in LSP initialize\n\ngopls subcommands sent initialize without clientInfo.\nSet ClientInfo to \"gopls-cli\" and record it in telemetry.\n\nFor golang/go#81721\n\nChange-Id: Iab2a37ad7630c9c27dbfbc54cdafbcd16a6a6964\nReviewed-on: https://go-review.googlesource.com/c/tools/+/837926\nAuto-Submit: Hyang-Ah Hana Kim \u003chyangah@gmail.com\u003e\nReviewed-by: Alex Putman \u003caputman@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "abf1056c531df16ede9f12afeb0cfae2883b4db1",
      "tree": "23e6f69588874eecdd62be72513d73e56347015c",
      "parents": [
        "dbd94db843162a901993114bd098179ac913853b"
      ],
      "author": {
        "name": "Alex Putman",
        "email": "aputman@golang.org",
        "time": "Mon Oct 05 12:43:41 2026 -0400"
      },
      "committer": {
        "name": "Alex Putman",
        "email": "aputman@golang.org",
        "time": "Wed Oct 07 15:47:06 2026 -0700"
      },
      "message": "gopls/internal/cmd: Add inspect subcommand\n\nThis is initial version of `gopls inspect ...` that supports\nshowing definition location and full hover documentation.\n\n`gopls inspect [flags] \u003ctarget\u003e` takes in a target query param that\nis sent to gopls.resolve_target to resolve to protocol.Locations\nthat are then used for subcommands. target querying is separated into\nit\u0027s own file, as its intended to be the main symbol based arg type.\nThese target query params are designed to replace the need for users\nto specify definition spans (file+line+col) themselves.\n\nSupported flags so far are : -markdown, -json, -pkg, -pos\n\nBut note that as of right now, gopls.resolve_target doesn\u0027t use\nthe Pos argument.\n\nFor golang/go#80874\n\nChange-Id: I447ef88e408e2007bbff7ff27db41fcf6a6a6964\nReviewed-on: https://go-review.googlesource.com/c/tools/+/846025\nReviewed-by: Hyang-Ah Hana Kim \u003chyangah@gmail.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "dbd94db843162a901993114bd098179ac913853b",
      "tree": "4eb8b486bc4183139dd2527b0d214ed48e2dbb89",
      "parents": [
        "1e4b371a3ebca8c6566fce3481987611d673e313"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Wed Oct 07 12:24:38 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Wed Oct 07 13:21:22 2026 -0700"
      },
      "message": "internal/refactor: ignore //line directives in Delete{Decl,Stmt}\n\nDeleteDecl and DeleteStmt compare line numbers to decide which\nadjacent comments to delete, but they used token.File.Line, which\nhonors //line directives. A directive could make a later line in\nthe file appear to be the same line as the end of a decl, causing\nDeleteDecl to extend its deletion over unrelated code.\n\nThis CL makes it use unadjusted line numbers instead.\n\n(We should probably add token.File.Line to the safetoken static check.\nI\u0027m almost tempted to make gopls smash the token.File.info field to\nnil to switch off this nuisance feature globally.)\n\nChange-Id: I6b98350b8155336aff88f5f588ba1c160ea736e6\nReviewed-on: https://go-review.googlesource.com/c/tools/+/846545\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\n"
    },
    {
      "commit": "1e4b371a3ebca8c6566fce3481987611d673e313",
      "tree": "6aeab204b12408bafd2f0aae1a6853296762661c",
      "parents": [
        "9388725c6722bf07db355831b2e0a15d898a15db"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Mon Oct 05 10:49:19 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Wed Oct 07 12:53:23 2026 -0700"
      },
      "message": "gopls/internal/golang: apply doc link boundary rule in comments\n\nAccording to https://go.dev/doc/comment#doclinks, a doc link must\nbe preceded and followed by punctuation, spaces, tabs,\nor the start or end of a line, so neither \"G[T]\" nor \"map[K]V\"\ncontains a link. findDocLinkIndices did not apply this rule,\ncausing semantic tokens, definition, and hover to treat such\nbrackets as doc links.\n\nAlso, allow nil as a location argument in marker tests, so that\n@hover(src, nil, re\"^$\") can assert the absence of a hover.\n\nHover of a declaration whose doc comment contains both a real\ndoc link [T] and G[T] still links the latter, because\nformatDocComment converts doc links to \"[T]: url\" link definitions,\nto which go/doc/comment does not apply the boundary rule\n(see issue 82013 for discussion).\nAdd a TODO and record the current behavior in the test.\n\nFixes golang/go#82005\nUpdates golang/go#82013\n\nChange-Id: Ibded1a41cc561d7c3985c7d398a5fffc9445c571\nReviewed-on: https://go-review.googlesource.com/c/tools/+/844985\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nAuto-Submit: Alex Putman \u003caputman@golang.org\u003e\nReviewed-by: Alex Putman \u003caputman@golang.org\u003e\n"
    },
    {
      "commit": "9388725c6722bf07db355831b2e0a15d898a15db",
      "tree": "6a2d270a31e755bc5c29518fefe3d0ff0eb24fdf",
      "parents": [
        "fec04d46ed1ed81d06f42302203da35141b13951"
      ],
      "author": {
        "name": "Hana Kim",
        "email": "hyangah@gmail.com",
        "time": "Tue Jun 09 17:29:04 2026 +0000"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Wed Oct 07 11:10:41 2026 -0700"
      },
      "message": "gopls/internal/cmd: start a daemon with -remote\u003dauto\n\nOnly \u0027serve\u0027 could start a daemon with -remote\u003dauto.\nPass remoteArgs so any subcommand can start the daemon.\nAlso handle server notifications sequentially to avoid dropped diagnostics.\n\nFor golang/go#81721\n\nChange-Id: Icc532252f2eab7958708649cace548e16a6a6964\nReviewed-on: https://go-review.googlesource.com/c/tools/+/837925\nAuto-Submit: Hyang-Ah Hana Kim \u003chyangah@gmail.com\u003e\nReviewed-by: Alex Putman \u003caputman@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "fec04d46ed1ed81d06f42302203da35141b13951",
      "tree": "b8f747d79b6ae21e2b003fb195a6c862eac70855",
      "parents": [
        "6b6190ba46f8bad305a6c052b213d09de4f9d54b"
      ],
      "author": {
        "name": "Shuang Zhang",
        "email": "stevenshuang521@gmail.com",
        "time": "Wed Sep 30 23:21:39 2026 +0800"
      },
      "committer": {
        "name": "Madeline Kalil",
        "email": "mkalil@google.com",
        "time": "Wed Oct 07 09:20:50 2026 -0700"
      },
      "message": "go/analysis/passes/modernize: stringscut - delete type of \"var i int\"\n\nWhen the Index call initializes a variable declared with an explicit\ntype, the fix kept the type, yielding ill-typed code:\n\n        var i int \u003d strings.Index(s, \",\")\n        return i \u003e\u003d 0\n\nwas rewritten to\n\n        var found int \u003d strings.Contains(s, \",\") // error: bool is not int\n        return found\n\nNow the fix also deletes the type, since the new variables are\nstrings or bools.\n\nThis affects both the strings and bytes variants.\n\nChange-Id: I443f154e15affb403076878be51dd15a35e6a056\nReviewed-on: https://go-review.googlesource.com/c/tools/+/842045\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Dmitri Shuralyov \u003cdmitshur@google.com\u003e\n"
    },
    {
      "commit": "6b6190ba46f8bad305a6c052b213d09de4f9d54b",
      "tree": "3dce14ef786164b22cd4a3b8a848c005bb6d1296",
      "parents": [
        "dcf3422456db7e8e760db511150f9491183de2d7"
      ],
      "author": {
        "name": "EyJunge1",
        "email": "Leder.Arne@gmail.com",
        "time": "Thu Aug 13 11:34:25 2026 +0200"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Wed Oct 07 08:36:25 2026 -0700"
      },
      "message": "internal/refactor/inline: use short binding decls when types are redundant\n\nWhen a binding declaration\u0027s argument type already matches the\nparameter type, omit the explicit type and prefer param :\u003d arg.\nKeep typed var decls when a conversion is required, and use\n_ \u003d arg for blank-only bindings.\n\nUpdates golang/go#63352\nFixes golang/go#81273\n\nChange-Id: I5d3852bfade01bfe22750c02dbf596ae7c7f319a\nReviewed-on: https://go-review.googlesource.com/c/tools/+/814441\nAuto-Submit: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nReviewed-by: Dmitri Shuralyov \u003cdmitshur@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\n"
    },
    {
      "commit": "dcf3422456db7e8e760db511150f9491183de2d7",
      "tree": "0e2dcfc9be588b89deea105711863c8f904311c3",
      "parents": [
        "89e1a1652a55e66e82f45f0fb604375fc468fad1"
      ],
      "author": {
        "name": "nnnkkk7",
        "email": "kurodanaoki0711pana@gmail.com",
        "time": "Thu Oct 01 19:52:51 2026 +0900"
      },
      "committer": {
        "name": "Alex Putman",
        "email": "aputman@golang.org",
        "time": "Wed Oct 07 08:29:24 2026 -0700"
      },
      "message": "go/analysis/passes/modernize: slicesbackward - skip slice expressions with side effects\n\nThe slicesbackward analyzer moves the slice expression into the range\nheader, where it is evaluated once, whereas the original loop evaluates\nit in the header and again in each s[i] in the body. If the expression\nhas side effects, such as a function call, the fix changes how many\ntimes they occur. For\n\n\tfor i :\u003d len(next()) - 1; i \u003e\u003d 0; i-- {\n\t\tprintln(next()[i])\n\t}\n\nthe offered fix\n\n\tfor _, v :\u003d range slices.Backward(next()) {\n\t\tprintln(v)\n\t}\n\ncalls next once instead of three times.\n\nSkip the loop when the body indexes a slice expression with side\neffects, as slicessort and slicescontains do for theirs. A body that\nnever indexes it still evaluates it once, so the fix remains safe there.\n\nFixes golang/go#81937\n\nChange-Id: I35db0054192b2e9dd64bb6eec9948e0d9c7eec2c\nReviewed-on: https://go-review.googlesource.com/c/tools/+/842865\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Alex Putman \u003caputman@golang.org\u003e\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\n"
    },
    {
      "commit": "89e1a1652a55e66e82f45f0fb604375fc468fad1",
      "tree": "b9bf9d58d8c0424518a61e1f9a67004b27e108d1",
      "parents": [
        "3e15c990d6868f3369d69fcc9bcb565f12eeeba8"
      ],
      "author": {
        "name": "nnnkkk7",
        "email": "kurodanaoki0711pana@gmail.com",
        "time": "Mon Oct 05 22:10:35 2026 +0900"
      },
      "committer": {
        "name": "Madeline Kalil",
        "email": "mkalil@google.com",
        "time": "Wed Oct 07 07:55:30 2026 -0700"
      },
      "message": "go/analysis/passes/modernize: stditerators - skip loops that ignore x.At(i)\n\nWhen the body of a loop such as\n\n\tfor i :\u003d 0; i \u003c t.NumField(); i++ {\n\t\t...\n\t}\n\nnever calls t.Field(i), the offered fix was\n\n\tfor field :\u003d range t.Fields() {\n\t\t...\n\t}\n\nwhich does not compile: field is declared and not used.\n\nRewriting the loop as \"for range t.Fields()\" would compile, but the\niterator would then compute each field only to discard it, which the\noriginal loop never did. Skip such loops, as slicesbackward does.\n\nFixes golang/go#82012\n\nChange-Id: I72e78abe4fb71ae7cd1098513d95d0e448ca6b95\nReviewed-on: https://go-review.googlesource.com/c/tools/+/844905\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\n"
    },
    {
      "commit": "3e15c990d6868f3369d69fcc9bcb565f12eeeba8",
      "tree": "37fa64fdd1f0d193883cec6ce8883caba8755f08",
      "parents": [
        "038c3ee3d2ea2008bcd61bf617081a5fe7359a41"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Thu Oct 01 16:32:49 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Tue Oct 06 13:57:30 2026 -0700"
      },
      "message": "gopls/doc: escape analyzer titles in Markdown output\n\nAnalyzer.Doc is in go/doc/comment syntax, not Markdown. The generator\nconverted the body of each analyzer\u0027s documentation to Markdown, but\npasted the title line verbatim into the heading, so that, for example,\nreflecttypefor\u0027s \"TypeFor[T]()\" was rendered on go.dev/gopls/analyzers\nas TypeFor followed by an empty link. Escape titles too.\n\nSimilarly, the EnumKeys of the \"analyses\" option in api.json held raw\nAnalyzer.Doc strings, though EnumKey.Doc is otherwise Markdown and is\nused as such by vscode-go (markdownDescription). Convert them, using\nabsolute pkg.go.dev URLs for doc links and omitting heading IDs\n({#hdr-...}), which are a go.dev extension.\n\nAlso:\n- document the text format (CommonMark, go/doc/comment, plain text)\n  of each string field of doc.API, and require that api.json doc\n  strings avoid renderer-specific extensions;\n- state that settings doc comments, including those of enum constants\n  and InlayHints, are CommonMark (not \"GitHub Markdown\");\n- link the \"analyses\" and \"hints\" settings docs to go.dev rather\n  than GitHub, using absolute URLs so they work in api.json clients;\n- add a direct link to the analyzer index from the features index.\n\nChange-Id: Ie664e12e3cd0ca1596c2aca0a33bff299483823b\nReviewed-on: https://go-review.googlesource.com/c/tools/+/843266\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\n"
    },
    {
      "commit": "038c3ee3d2ea2008bcd61bf617081a5fe7359a41",
      "tree": "e55edc0a89a73bb1cb6eca967a296ff6a8aec794",
      "parents": [
        "677a7a8ce9aa22fc77b37575312b884e20e975e5"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Tue Sep 22 16:07:11 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Tue Oct 06 13:29:17 2026 -0700"
      },
      "message": "gopls/internal: use ImplicitFieldSelections in more places\n\nAlso fix its signature to pass a pointer.\n\n(Follow-up to CL 785720.)\n\nChange-Id: Idd10761d851d61f0afccc9a7f7660688d9392fed\nReviewed-on: https://go-review.googlesource.com/c/tools/+/837045\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\n"
    },
    {
      "commit": "677a7a8ce9aa22fc77b37575312b884e20e975e5",
      "tree": "79b7daff48452dcadcd008dc1c11be8f7b539a49",
      "parents": [
        "53e9e205dbb8ccca4a038bd953c61e6b2ae9919a"
      ],
      "author": {
        "name": "Peter Weinberger",
        "email": "pjw@google.com",
        "time": "Thu Aug 20 19:54:48 2026 -0400"
      },
      "committer": {
        "name": "Peter Weinberger",
        "email": "pjw@google.com",
        "time": "Tue Oct 06 04:23:31 2026 -0700"
      },
      "message": "internal/modindex: fix TestIncrementalNope flakiness\n\nIn TestIncrementalNope, pass 1 builds an initial index\nwith later package versions, and pass 2 adds earlier\npackage versions to verify that Update preserves the later versions.\nHowever, idtests also contains \"bad,guy.com/go\" which only has one\nversion. Skipping i \u003d\u003d 0 in pass 1 caused \"bad,guy.com/go\"\nto be omitted entirely from the initial index and added as a brand-new\npackage in pass 2. On builders with coarse timestamp\ngranularity (such as linux-riscv64 under QEMU), its mtime wasn\u0027t\nlater, causing Update to miss it.\n\nFix this by including single-version packages in the pass 1 initial\nindex and skipping them in pass 2.\n\n(While verifying that earlier versions do not overwrite\nlater versions, bad,guy.com/go had no later version in  Pass 1,\ninstead it was inadvertently treated as a brand-new package in Pass 2,\nexposing it to filesystem timestamp coarseness.)\n\nFixes golang/go#74781\n\nChange-Id: Iddd601d4f26035a4fcde77a488fd269991a02285\nReviewed-on: https://go-review.googlesource.com/c/tools/+/818901\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "53e9e205dbb8ccca4a038bd953c61e6b2ae9919a",
      "tree": "aa0a2ebcda67c8a3ee5f128d97e7e827a2ddaa84",
      "parents": [
        "debe2f27be2d3be7937f3a5e93cb2c0fbc112289"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Tue Sep 29 10:21:54 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Mon Oct 05 14:54:54 2026 -0700"
      },
      "message": "gopls/internal/golang: quick fixes for go1.28 string(int) error\n\nGo 1.28 rejects string(x) conversions where x is a non-byte,\nnon-rune integer (go.dev/issue/3939). This CL offers quick fixes\nfor the resulting type error: the same two fixes offered by the\nstringintconv analyzer, which doesn\u0027t run on ill-typed packages:\nstring(rune(x)) or fmt.Sprintf(\"%c\", x), which preserve the existing\nbehavior, and fmt.Sprintf(\"%d\", x), which formats the number as a\ndecimal.\n\nThis lets a user who has already upgraded their module\u0027s go\ndirective fix the errors in the editor, without needing to make\nthe analyzer run despite errors.\n\nUpdates golang/go#81760\n\nChange-Id: I3444f3554ce1b34c709acc318d781e6476cdd868\nReviewed-on: https://go-review.googlesource.com/c/tools/+/840806\nReviewed-by: Peter Weinberger \u003cpjw@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "debe2f27be2d3be7937f3a5e93cb2c0fbc112289",
      "tree": "dc22516c42d6d8088f6f2cacf7156c00591583e2",
      "parents": [
        "d9d97d6694d60931b61f89d9dba25161f70b47f6"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Tue Sep 29 10:21:46 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Mon Oct 05 14:54:37 2026 -0700"
      },
      "message": "go/analysis/passes/stringintconv: make first fix behavior-preserving\n\nGo 1.28 rejects string(x) conversions where x is a non-byte,\nnon-rune integer (go.dev/issue/3939). To let \"go fix\" migrate code\nbefore a module\u0027s go directive is raised to go1.28, this CL makes\nthe analyzer\u0027s first suggested fix preserve the existing behavior,\nand adds the analyzer to the go fix suite.\n\nThe old \"Convert a single rune to a string\" fix, string(rune(x)),\nwas not behavior-preserving for types wider than 32 bits due to\ntruncation. For such types the fix now uses fmt.Sprintf(\"%c\", x),\nwhich is exactly equivalent to string(x). The plain rune(x) form is\nstill used for constants that fit in 32 bits and for types of at\nmost 32 bits.\n\nThe safe fix is now offered first, since that\u0027s what go fix applies.\nThe decimal-formatting fix, which changes behavior, is second; it now\nuses fmt.Sprintf(\"%d\", x), for symmetry, instead of fmt.Sprint(x).\nIf no behavior-preserving fix is available no fixes are offered at\nall, so that go fix never applies the second fix.\n\nAlso:\n- simplify the edits of both Sprintf fixes by choosing the range to\n  rewrite once: string(x) -\u003e fmt.Sprintf(...), and\n  mystring(x) -\u003e mystring(fmt.Sprintf(...)).\n  This fixes a bug in the old fmt.Sprint fix, which dropped the\n  conversion S(x) when S was a type parameter whose sole term\n  is string, yielding an ill-typed result.\n- update the doc, which recommended strconv.Itoa.\n\nUpdates golang/go#81760\n\nChange-Id: If445f650d045125475b2051e4c50e28f630a11ae\nReviewed-on: https://go-review.googlesource.com/c/tools/+/840805\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Alex Putman \u003caputman@golang.org\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\n"
    },
    {
      "commit": "d9d97d6694d60931b61f89d9dba25161f70b47f6",
      "tree": "1803a68c6601a1cb4e56a3ff4f332ce3239f4d28",
      "parents": [
        "596854572739ab6bc93c6b274f38eb3152b197a1"
      ],
      "author": {
        "name": "Hongxiang Jiang",
        "email": "hxjiang@golang.org",
        "time": "Thu Oct 01 13:45:33 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Mon Oct 05 13:23:20 2026 -0700"
      },
      "message": "gopls/internal/golang: use decl over assignment for undeclared var\n\nWhen fixing \"undeclared variable\", gopls used to offer assignment\ne.g. \"x :\u003d 0\", but it does not have proper support for specific\ntypes e.g. interface \"x :\u003d nil\".\n\nInstead, by default, offer fix through declaration allow us to\nexplicitly write the type for the variable and not worry about the\nzero value of the variable.\n\n+ not offer code action for comp lit as it is not supported.\n\nFix golang/go#81808\n\nChange-Id: Ic12e0302b65541b29255b60d5aa50cc23f6cffc4\nReviewed-on: https://go-review.googlesource.com/c/tools/+/845405\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\nAuto-Submit: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "596854572739ab6bc93c6b274f38eb3152b197a1",
      "tree": "66c4a0414eca87652b12ef76093afb5797dbd921",
      "parents": [
        "3f3efb7c3b31192232c67403b23a00bfcdbc3eec"
      ],
      "author": {
        "name": "Shuang Zhang",
        "email": "stevenshuang521@gmail.com",
        "time": "Thu Oct 01 00:44:12 2026 +0800"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Mon Oct 05 09:21:29 2026 -0700"
      },
      "message": "go/analysis/passes/modernize: stringscut - preserve non-ASCII IndexByte\n\nWhen rewriting strings.IndexByte(s, c) to Cut or Contains, the byte\nwas converted to a string using string(c), or string(byte(c)) for a\nconstant. But converting an integer to a string yields the UTF-8\nencoding of that code point, so a byte \u003e\u003d 0x80 became a two-byte\nstring, changing the meaning of the search:\n\n        strings.IndexByte(s, 0xff) \u003e\u003d 0\n\nwas rewritten to\n\n        strings.Contains(s, \"ÿ\") // \"\\xc3\\xbf\", not \"\\xff\"\n\nNow the fix uses string([]byte{c}) for a variable, and quotes the\nsingle-byte string for a constant, so 0xff becomes \"\\xff\".\n\nChange-Id: I40ce241ad5a3f50af43a4d10fabd500aabaeea0e\nReviewed-on: https://go-review.googlesource.com/c/tools/+/842205\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\nReviewed-by: Dmitri Shuralyov \u003cdmitshur@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "3f3efb7c3b31192232c67403b23a00bfcdbc3eec",
      "tree": "63cb52569cab51934bb5a487000901a8ecdd21a3",
      "parents": [
        "169531115dc47658f178066cf99c44ab19e3d916"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Thu Oct 01 16:32:25 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Fri Oct 02 13:57:39 2026 -0700"
      },
      "message": "go/analysis/passes/modernize: document reflecttypefor symbol rule\n\nCL 790701 suppressed the reflecttypefor fix when the operand of\nreflect.TypeOf refers to a non-type symbol (a var, const, func, or\nfield), since the rewrite would erase the reference to the symbol.\nDocument this behavior.\n\nUpdates golang/go#78452\n\nChange-Id: I0787290f20d0035900d68ad93b910dc2f35f09f3\nReviewed-on: https://go-review.googlesource.com/c/tools/+/843265\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\n"
    },
    {
      "commit": "169531115dc47658f178066cf99c44ab19e3d916",
      "tree": "16ce6b83261281c061f2130fb00c0a025216b97c",
      "parents": [
        "3fdd4748e1137855c012e5fe8c36c3dfdf0cfabd"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Thu Oct 01 15:29:45 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Fri Oct 02 13:53:43 2026 -0700"
      },
      "message": "gopls/doc/release/v0.24.0.md: prepare and polish\n\nUpdates golang/go#81891\n\nChange-Id: I3acd8808b5ee2c78ea30321c9bf312f0cfa4fe9b\nReviewed-on: https://go-review.googlesource.com/c/tools/+/843205\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "3fdd4748e1137855c012e5fe8c36c3dfdf0cfabd",
      "tree": "5fbe480856a66106014ced0cb54c23b584e0fb19",
      "parents": [
        "ea2f152dc35325e4b9b639583972375972350a84"
      ],
      "author": {
        "name": "Hongxiang Jiang",
        "email": "hxjiang@golang.org",
        "time": "Thu Oct 01 14:03:28 2026 -0400"
      },
      "committer": {
        "name": "Hongxiang Jiang",
        "email": "hxjiang@golang.org",
        "time": "Fri Oct 02 13:07:42 2026 -0700"
      },
      "message": "gopls/internal/golang: test Create variable in bad contexts\n\nFor golang/go#81808\n\nChange-Id: I94286b8e601fcd76f3ce858e0bafdda009ef1acf\nReviewed-on: https://go-review.googlesource.com/c/tools/+/842926\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\n"
    },
    {
      "commit": "ea2f152dc35325e4b9b639583972375972350a84",
      "tree": "996c000b7e4b2eafc848f511121134e0299cd48e",
      "parents": [
        "00443da123aa0b0f0729b6a72badabad7835b1d0"
      ],
      "author": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Fri Oct 02 11:29:40 2026 -0700"
      },
      "committer": {
        "name": "Mark Freeman",
        "email": "mark@golang.org",
        "time": "Fri Oct 02 11:49:45 2026 -0700"
      },
      "message": "go.mod: update golang.org/x dependencies\n\nUpdate golang.org/x dependencies to their latest tagged versions.\n\nChange-Id: Ib730efdee37b7e1d3657e9dc3f1f708b6052f9a5\nReviewed-on: https://go-review.googlesource.com/c/tools/+/843785\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Dmitri Shuralyov \u003cdmitshur@google.com\u003e\nAuto-Submit: Gopher Robot \u003cgobot@golang.org\u003e\nReviewed-by: Mark Freeman \u003cmark@golang.org\u003e\n"
    },
    {
      "commit": "00443da123aa0b0f0729b6a72badabad7835b1d0",
      "tree": "09d415953b5f3a1c5990d5e7093bfc0db9ed17b9",
      "parents": [
        "9ba0a15b6ac31e1d2748917e6f219e1d98c7c4fa"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Mon Sep 28 16:54:59 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Fri Oct 02 08:13:09 2026 -0700"
      },
      "message": "go/analysis/passes/printf: pin testdata Go versions\n\nSome tests relied on GOPATH-mode test packages being type-checked\nwith an empty Go version, which enables checks gated on any version.\nPin the file versions of packages a and nonconst using build tags,\nand run package w, whose expectations depend on the go1.27-gated %w\ncheck, only when the go command is at least go1.27.\n\nThis prepares for go/packages setting the Go version of packages\nthat do not belong to a module.\n\nChange-Id: I7aac81ea0337b4c25ec3d522d24ac9f61a9ddeb8\nReviewed-on: https://go-review.googlesource.com/c/tools/+/840646\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Michael Pratt \u003cmpratt@google.com\u003e\n"
    },
    {
      "commit": "9ba0a15b6ac31e1d2748917e6f219e1d98c7c4fa",
      "tree": "921face4347d057e80d7408e3589dd2e54d1f998",
      "parents": [
        "25196fcc818e9cc69a8ff7e263f5f60183c46b4e"
      ],
      "author": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Mon Sep 28 16:54:59 2026 -0400"
      },
      "committer": {
        "name": "Alan Donovan",
        "email": "adonovan@google.com",
        "time": "Fri Oct 02 08:12:58 2026 -0700"
      },
      "message": "internal/refactor/inline: check import accessibility before Go version\n\nCheck the accessibility of new imports as soon as the callee\u0027s free\nreferences have been resolved, rather than after the reduction\nstrategies have run, and do the Go version check (#75726) after it,\nso that when both apply we report the error the user cannot fix\nrather than suggest upgrading the file\u0027s Go version, which would not\nhelp.\n\nThis keeps the std-internal test from depending on the toolchain\nonce standard packages are type-checked using the go command\u0027s\nversion.\n\n(Also, move decl of inline1 down.)\n\nChange-Id: I55feb5eef294936575f5b068320e411fd65be8e7\nReviewed-on: https://go-review.googlesource.com/c/tools/+/840645\nReviewed-by: Peter Weinberger \u003cpjw@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "25196fcc818e9cc69a8ff7e263f5f60183c46b4e",
      "tree": "7f784853361c28c1c802e021b6d6f420eae43ef0",
      "parents": [
        "ead0503d8e7d79d756adf531c515223974a10c51"
      ],
      "author": {
        "name": "thepudds",
        "email": "thepudds1460@gmail.com",
        "time": "Wed Sep 30 22:49:50 2026 -0400"
      },
      "committer": {
        "name": "t hepudds",
        "email": "thepudds1460@gmail.com",
        "time": "Thu Oct 01 12:29:53 2026 -0700"
      },
      "message": "cmd/toolstash: check -linkobj files to support early export\n\ncmd/go now passes a -linkobj flag with an additional archive\nto support early export. The -o file now contains export\ndata while the -linkobj file contains the object code.\n\nThis CL makes sure \u0027toolstash -cmp\u0027 knows to compare the -linkobj\nfile.\n\nPrior to this CL, \u0027go build -toolexec \"toolstash -cmp\" -a std\u0027 would\nmiss changes in the -linkobj file, which I verified by making\na temporary SSA change.\n\nAfter this CL, \u0027toolstash -cmp\u0027 is again able to catch a change\nlike that. I also checked it still reports changes to the -o\nexport files by making a temporary inliner change.\n\nNote this relies on cmd/go CL 842645, which avoids \u0027toolstash -cmp\u0027\nfailing with a \u0027exportfd: broken pipe\u0027 error.\n\nUpdates golang/go#15734\n\nChange-Id: I14e5e37d9f92f4337a1bd659f82ae1788fe45695\nReviewed-on: https://go-review.googlesource.com/c/tools/+/842665\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Cherry Mui \u003ccherryyz@google.com\u003e\nReviewed-by: PJ Malloy \u003cpjmalloy@google.com\u003e\n"
    },
    {
      "commit": "ead0503d8e7d79d756adf531c515223974a10c51",
      "tree": "f8cdc68fe4699957a1315e850a8c78bfd758e101",
      "parents": [
        "5693030baf216af18b7756b08f6b6fa4a7e379b2"
      ],
      "author": {
        "name": "Hongxiang Jiang",
        "email": "hxjiang@golang.org",
        "time": "Thu Oct 01 11:22:37 2026 -0400"
      },
      "committer": {
        "name": "Gopher Robot",
        "email": "gobot@golang.org",
        "time": "Thu Oct 01 09:18:55 2026 -0700"
      },
      "message": "gopls/internal/golang: unexport dragon*Question variables\n\nThese question definitions are only used within package golang and do\nnot need to be exported.\n\nChange-Id: I4686ae22248d8e5d497ea7f02ecfcdb8f9999711\nReviewed-on: https://go-review.googlesource.com/c/tools/+/842925\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\nAuto-Submit: Hongxiang Jiang \u003chxjiang@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "5693030baf216af18b7756b08f6b6fa4a7e379b2",
      "tree": "0338815872f898f1be054fac9b600364c34aec3c",
      "parents": [
        "134264d72fba423ca1ad358683cd3c32699b010e"
      ],
      "author": {
        "name": "Peter Weinberger",
        "email": "pjw@google.com",
        "time": "Sat Sep 05 20:51:38 2026 -0400"
      },
      "committer": {
        "name": "Peter Weinberger",
        "email": "pjw@google.com",
        "time": "Thu Oct 01 06:44:14 2026 -0700"
      },
      "message": "gopls/internal/golang: call arguments mistreated in inlineAllCalls\n\n(this is a telemetry bug)\n\nWhen ChangeSignature searches for call sites to rewrite, inlineAllCalls\nwalks up the AST from each reference to find an enclosing ast.CallExpr.\ninlineAllCalls used to assume that any directly enclosing CallExpr\nmeant the referenced function was being called. So, references passed\nas call arguments (such as s.M(f) or use(f)) were mistakenly identified\nas calls to f.\n\nWhen the enclosing call was a method call with a receiver\nwhile the referenced function f had no receiver,\nthe inliner subsequently paniced attempting to access\ncalleeDecl.Recv.List[0].Type.\n\nFix this by walking up enclosing expressions (selectors, parentheses,\nand type instantiations) to verify that the referenced identifier is\nactually the callee (c.Fun) of the enclosing CallExpr. Also add a\ndefensive check in inlineCall to return an error rather than panic if\ncaller and callee signatures ever mismatch.\n\nCo-authored-by: Federico Guerinoni \u003cguerinoni.federico@gmail.com\u003e\n\nFixes golang/go#80834\n\nChange-Id: I84f8794dd3158bf51488f8fee3a4da93de2d60f5\nReviewed-on: https://go-review.googlesource.com/c/tools/+/828304\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Hongxiang Jiang \u003chxjiang@golang.org\u003e\n"
    }
  ],
  "next": "134264d72fba423ca1ad358683cd3c32699b010e"
}
