)]}'
{
  "commit": "6cbeeacfcd0b3bed4bb186e13df86bb3fbc720c0",
  "tree": "d731b9f85374766a87639f61d3ab8640dcd77e02",
  "parents": [
    "34919215823f8900957fde0e1a20fffb9524db23"
  ],
  "author": {
    "name": "Alan Donovan",
    "email": "adonovan@google.com",
    "time": "Fri Jul 10 10:45:53 2026 -0400"
  },
  "committer": {
    "name": "Gopher Robot",
    "email": "gobot@golang.org",
    "time": "Fri Jul 10 15:20:47 2026 -0700"
  },
  "message": "internal/typesinternal: avoid linkname hacks\n\nThis CL inverts the import relationship between typesinternal\nand the public typeutil package. Now: typeutil -\u003e typesinternal.\n\nThe implementations of Callee and StaticCallee were moved down\ninto typesinternal, and the linkname hack (a recipe for trouble)\nwas removed.\n\nThe typesinternal.ForEachElement function was simplified by\ncombining the \u0027yield\u0027 and \u0027de-dup\u0027 roles into a single\nparameter, breaking the dependency on typeutil.TypeMap;\nand the dependency on MethodSetCache was replaced by a\nclosure for the necessary method.\n\nAlso, in three places, Uses[UsedIdent()] was changed to do an\nexplicit nil check to save a doomed map lookup.\n\nThe only remaining use of linkname in x/tools is in go/ssa.\n\nChange-Id: Iae12162ad393d41e174bbbddb5fe5a3c142eab2f\nReviewed-on: https://go-review.googlesource.com/c/tools/+/798881\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",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "82faadeb66e0373f38f60c902844948ca3d252ff",
      "old_mode": 33188,
      "old_path": "go/ssa/methods.go",
      "new_id": "666ef365e789ae74c75e55c0a425c449bd341e1d",
      "new_mode": 33188,
      "new_path": "go/ssa/methods.go"
    },
    {
      "type": "modify",
      "old_id": "3d24a8c63711b5db7fe6f62f3d5af2f84434b7b7",
      "old_mode": 33188,
      "old_path": "go/types/typeutil/callee.go",
      "new_id": "b64a8f454951a820ac6bfca921f0a207625a9bb0",
      "new_mode": 33188,
      "new_path": "go/types/typeutil/callee.go"
    },
    {
      "type": "modify",
      "old_id": "7ebe9768bc3e7acbc4e80b4b23b3c83ac6a2985a",
      "old_mode": 33188,
      "old_path": "internal/typesinternal/classify_call.go",
      "new_id": "14f616ff5aa01768f7870246ad582c583ca4de5b",
      "new_mode": 33188,
      "new_path": "internal/typesinternal/classify_call.go"
    },
    {
      "type": "modify",
      "old_id": "89eeea165333eb73634c938cb37cf8d95f098af5",
      "old_mode": 33188,
      "old_path": "internal/typesinternal/element.go",
      "new_id": "6e0613c4af8270bc68a93762dd540517c1b89f6e",
      "new_mode": 33188,
      "new_path": "internal/typesinternal/element.go"
    },
    {
      "type": "modify",
      "old_id": "7e70d0b4a4b0ec7fe5c520e7eed88474ff251afb",
      "old_mode": 33188,
      "old_path": "internal/typesinternal/element_test.go",
      "new_id": "60789368b99a927ce480323a1c957857f60752ec",
      "new_mode": 33188,
      "new_path": "internal/typesinternal/element_test.go"
    }
  ]
}
