)]}'
{
  "commit": "3a5f1f07e64b6e2ecfcd4d62863f1eb7305553da",
  "tree": "8a39190fee5dcd4cb68e5c7b6e852a16779e7888",
  "parents": [
    "58d6425be864f904aee3f2e7c7fd66d3ee2288c7"
  ],
  "author": {
    "name": "Michael Stapelberg",
    "email": "stapelberg@golang.org",
    "time": "Tue May 06 10:46:20 2025 +0200"
  },
  "committer": {
    "name": "Michael Stapelberg",
    "email": "stapelberg@golang.org",
    "time": "Tue May 06 02:29:38 2025 -0700"
  },
  "message": "internal/impl: clean up usePresenceForField() (no-op)\n\nWhen looking into presence behavior, I noticed that this function\nis rather hard to follow. Specifically:\n\n1. usesPresenceArray was only used in the default case,\n   but re-iterated all conditions of the non-default cases.\n   usesPresenceArray was a convoluted way to write fd.HasPresence().\n\n2. hasLazyField was a misnomer: the function does not look at entire\n   messages (which can have a lazy field), but at an individual field.\n\n3. Only messages can be lazy right now, so the definition and usage\n   of isLazy can be moved into the message case.\n\n4. Instead of the wall-of-text comment above the function,\n   I have moved the comments to each individual case.\n\nI have verified Google-internally that my new usePresenceForField()\nyields exactly the same results as the old one on all our .protos\n(see Google-internal CL 753969456 for details).\n\nChange-Id: Ida598fda7f472c71e18802aecabfae3e16de321c\nReviewed-on: https://go-review.googlesource.com/c/protobuf/+/670275\nReviewed-by: Lasse Folger \u003classefolger@google.com\u003e\nLUCI-TryBot-Result: Go LUCI \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dd55e8e009c22d01d917459115afe4642e3a8dc1",
      "old_mode": 33188,
      "old_path": "internal/impl/message_opaque.go",
      "new_id": "e6b3e41823d336cb052600c3fa251591cb148603",
      "new_mode": 33188,
      "new_path": "internal/impl/message_opaque.go"
    }
  ]
}
