)]}'
{
  "commit": "262e2bd92c4e592b527f8f73bf3c0c3b09c2db4d",
  "tree": "e4f0c0df95c2334dcb3d9b097c4fdb225ec20638",
  "parents": [
    "6c0e6996f3e7bd4f88a578a225e428d2ebdbc745"
  ],
  "author": {
    "name": "Madeline Kalil",
    "email": "mkalil@google.com",
    "time": "Thu Apr 16 15:01:12 2026 -0400"
  },
  "committer": {
    "name": "Gopher Robot",
    "email": "gobot@golang.org",
    "time": "Mon Apr 27 11:42:11 2026 -0700"
  },
  "message": "go/analysis/passes/modernize: add embedlit modernizer\n\nThis modernizer offers to simplify references to embedded fields\nin struct literals by removing unneccessary field type specifiers.\nThis rewrite is possible due to a spec change, introduced in Go1.27,\nallowing direct reference to embedded fields in struct literals.\n\nFor example:\n\ntype T struct { U }\ntype U struct { x int }\n\nT{U: U{x:1}}\n\ncan be rewritten as\n\nT{x: 1}\n\nCertain struct literals cannot be rewritten, or only partially simplified,\nif they contain unkeyed fields or ambiguous types.\n\nNote: this CL addresses patterns where values are initialized\ninside the struct, and leaves as a TODO patterns where values\nare set after struct initialization using \"dot field\" references\n(i.e. t :\u003d T{} ... t.x \u003d x  \u003d\u003e t :\u003d T{x: x}).\n\nUpdates golang/go#77965\nChange-Id: I246f2251ee55d9cb7c529b83e50ff2259eeac5d0\nReviewed-on: https://go-review.googlesource.com/c/tools/+/768240\nAuto-Submit: Alan Donovan \u003cadonovan@google.com\u003e\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",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8636b462d76f64b20688b849997a548631daeeef",
      "old_mode": 33188,
      "old_path": "go/analysis/passes/modernize/doc.go",
      "new_id": "6184a1987d86321c6554118692592ae0d4445d08",
      "new_mode": 33188,
      "new_path": "go/analysis/passes/modernize/doc.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "090ee4cd99808963d56a0ca0409de7546a4cfb16",
      "new_mode": 33188,
      "new_path": "go/analysis/passes/modernize/embedlit.go"
    },
    {
      "type": "modify",
      "old_id": "db3b86fbf4c8a8aa8b8ef5dc08bbab907ea3c33e",
      "old_mode": 33188,
      "old_path": "go/analysis/passes/modernize/modernize.go",
      "new_id": "b84f8fe6f186d7b0e9bdb3757c018169c79be8f9",
      "new_mode": 33188,
      "new_path": "go/analysis/passes/modernize/modernize.go"
    },
    {
      "type": "modify",
      "old_id": "f757e997c80235899dc1444f0df712b2fa9c2232",
      "old_mode": 33188,
      "old_path": "go/analysis/passes/modernize/modernize_test.go",
      "new_id": "239920b82c1cf5bee2bcf623665137a9ee4469ff",
      "new_mode": 33188,
      "new_path": "go/analysis/passes/modernize/modernize_test.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5f7cc61a053b82da859eeb1b97d7786af66f843e",
      "new_mode": 33188,
      "new_path": "go/analysis/passes/modernize/testdata/src/embedlit/embedlit.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f79de538a01fafa09970e3fd3ed75d881ca23ac4",
      "new_mode": 33188,
      "new_path": "go/analysis/passes/modernize/testdata/src/embedlit/embedlit_go127.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d20da95250ee39d7ecccc37ee7777fe5c3c0ec5d",
      "new_mode": 33188,
      "new_path": "go/analysis/passes/modernize/testdata/src/embedlit/embedlit_go127.go.golden"
    },
    {
      "type": "modify",
      "old_id": "a3d6d8423198fbd3877167177bce6d8691418669",
      "old_mode": 33188,
      "old_path": "gopls/doc/release/v0.22.0.md",
      "new_id": "444936eb0024d520097621e5d470191fcc761063",
      "new_mode": 33188,
      "new_path": "gopls/doc/release/v0.22.0.md"
    },
    {
      "type": "modify",
      "old_id": "5ed4765c723d630b27d010445ab41519eab1f413",
      "old_mode": 33188,
      "old_path": "internal/astutil/comment.go",
      "new_id": "40a347214b5a38c17c5fbb32a0ad39aad11a6991",
      "new_mode": 33188,
      "new_path": "internal/astutil/comment.go"
    },
    {
      "type": "modify",
      "old_id": "57c15c414efd2a8b014af5beace88990b5b3cf65",
      "old_mode": 33188,
      "old_path": "internal/goplsexport/export.go",
      "new_id": "414c9cb03ef22e81ed0fef8d0fe79d2d74838f68",
      "new_mode": 33188,
      "new_path": "internal/goplsexport/export.go"
    },
    {
      "type": "modify",
      "old_id": "9e4aaf94855ade4e6c2c85d4f264202dd309c770",
      "old_mode": 33188,
      "old_path": "internal/moreiters/iters.go",
      "new_id": "3dc81c4dbfdf779494dfa9d7a5fb206b8fbafd34",
      "new_mode": 33188,
      "new_path": "internal/moreiters/iters.go"
    }
  ]
}
