)]}'
{
  "commit": "b441908e32e0ab864ca154c2ad1e183c95d0586d",
  "tree": "6092364b19282e3e13777cc42d659327d738be62",
  "parents": [
    "591dfa620de7b00c9525c075f0e0ab6dec46d710"
  ],
  "author": {
    "name": "Alan Donovan",
    "email": "adonovan@google.com",
    "time": "Wed Jul 15 12:57:15 2026 -0400"
  },
  "committer": {
    "name": "Alan Donovan",
    "email": "adonovan@google.com",
    "time": "Thu Jul 16 11:28:06 2026 -0700"
  },
  "message": "gopls/internal/analysis/ptrtoerror: support type assert and instances\n\nThe previous CL missed two important cases where syntax implies\nan implements relation between E (or *E) and the error interface:\n\n1. Type assertions and type switches\n      err.(E)\n      switch err.(type) { case E: }\n\n2. Instantiatio of type parameters\n     errors.AsType[E](err)\n\nThis change augments the \u0027conversions\u0027 iterator to return them too,\nand adds tests for the missing cases.\n\nUpdates golang/go#61342\nUpdates golang/go#70638\nUpdates golang/go#80159\n\nChange-Id: I7612aa0a9e38079ef4dec1b8eabff458e74ea81b\nReviewed-on: https://go-review.googlesource.com/c/tools/+/801000\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",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b044c7e66c100bc5d26933f4383f2d8ebc8b7cd7",
      "old_mode": 33188,
      "old_path": "gopls/internal/analysis/ptrtoerror/conv.go",
      "new_id": "c3b1b9b021edf150d78a75342116180f757fc310",
      "new_mode": 33188,
      "new_path": "gopls/internal/analysis/ptrtoerror/conv.go"
    },
    {
      "type": "modify",
      "old_id": "9597b14e02c5a3fae1cfb100098662df7b0f6058",
      "old_mode": 33188,
      "old_path": "gopls/internal/analysis/ptrtoerror/ptrtoerror_test.go",
      "new_id": "a5dd9b5bc1b6b37646541ebff17244fbaccd5a49",
      "new_mode": 33188,
      "new_path": "gopls/internal/analysis/ptrtoerror/ptrtoerror_test.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dcfae795745de29ca9b022a708ae4eee292f77aa",
      "new_mode": 33188,
      "new_path": "gopls/internal/analysis/ptrtoerror/testdata/src/c/c.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dcfae795745de29ca9b022a708ae4eee292f77aa",
      "new_mode": 33188,
      "new_path": "gopls/internal/analysis/ptrtoerror/testdata/src/c/c.go.golden"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a9b4edaadd0ff568d905968edc45d798ce7edbbb",
      "new_mode": 33188,
      "new_path": "gopls/internal/analysis/ptrtoerror/testdata/src/d/d.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ccc0376df1397e4bf3b72ab0b84116e628f9460e",
      "new_mode": 33188,
      "new_path": "gopls/internal/analysis/ptrtoerror/testdata/src/errors/errors.go"
    }
  ]
}
