)]}'
{
  "commit": "2e922938d07f0ab6689b9bc341b9121d3ce1357b",
  "tree": "25689e0954d7195f89f0f6d26b03a7c11f4dd9ef",
  "parents": [
    "8471f958f05feb4fd03fefba6b332d6e5e064989"
  ],
  "author": {
    "name": "Timo Furrer",
    "email": "tuxtimo@gmail.com",
    "time": "Thu Aug 20 12:07:16 2026 +0200"
  },
  "committer": {
    "name": "Gopher Robot",
    "email": "gobot@golang.org",
    "time": "Thu Aug 27 19:56:39 2026 -0700"
  },
  "message": "go/callgraph/rta: skip generic methods in addRuntimeType\n\naddRuntimeType adds every exported method of a newly discovered concrete\ntype to the worklist. Program.MethodValue returns nil when the\nselection\u0027s type is parameterized, which is the case for a generic\nmethod that mentions its own type parameter in its signature, so the nil\nreached the worklist and visitFunc dereferenced it. Skip those methods,\nas fingerprint already does: reflection cannot call a generic method\nwithout instantiating it first.\n\nGo 1.27 made math/rand/v2.(*Rand).N generic, so this crashed cmd/deadcode\nand cmd/callgraph -algo\u003drta on any program that boxes a *rand.Rand.\n\nThe genericmethod test did not catch this because its method is\nFoo[T any](): with no type parameter in the signature, MethodValue\nreturns the uninstantiated function rather than nil. Give it a signature\nthat uses T, and box the receiver so that addRuntimeType runs at all.\n\nFixes golang/go#80973\n\nChange-Id: I1b5806285b819bb5b0b02b532754317f6da54d33\nReviewed-on: https://go-review.googlesource.com/c/tools/+/818580\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\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\nReviewed-by: David Chase \u003cdrchase@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fdb64e05e2b626f704ac7a47fea438ee0205559f",
      "old_mode": 33188,
      "old_path": "go/callgraph/rta/rta.go",
      "new_id": "5b21565d8887b3fb97e310dade3c70fd45501711",
      "new_mode": 33188,
      "new_path": "go/callgraph/rta/rta.go"
    },
    {
      "type": "modify",
      "old_id": "e2b96cd3127cb3e5f18bde5d743daf385e650511",
      "old_mode": 33188,
      "old_path": "go/callgraph/rta/testdata/genericmethod.txtar",
      "new_id": "2b4b994e7e6ea2f82d26dc170362a929ef3b7d7c",
      "new_mode": 33188,
      "new_path": "go/callgraph/rta/testdata/genericmethod.txtar"
    }
  ]
}
