)]}'
{
  "commit": "7de0a8fa7f4d6dfbe9da784d8786eaae17440378",
  "tree": "fc698c32ff1b5ecac9802a3741b192478c281fbc",
  "parents": [
    "bebd421c7fa82d95ce980b3d048aecc2ef197663"
  ],
  "author": {
    "name": "Ian Chechin",
    "email": "ian00chechin@gmail.com",
    "time": "Wed May 13 15:55:44 2026 +0800"
  },
  "committer": {
    "name": "Gopher Robot",
    "email": "gobot@golang.org",
    "time": "Thu May 14 16:30:45 2026 -0700"
  },
  "message": "bind: align Objective-C setter selectors with sanitized property names\n\nWhen gobind generates an Objective-C binding for a Go struct field or\npackage-level variable, the getter selector is derived through\nobjcNameReplacer(lowerFirst(name)) so that the resulting property\nname avoids Objective-C reserved words and matches Cocoa conventions\nfor acronyms:\n\n    Go field      ObjC property\n    -----------   -------------\n    OSName    -\u003e  osName\n    ID        -\u003e  id_\n    Init      -\u003e  init_\n\nThe corresponding setter selector, however, was generated as\n\"set\" + raw Go name. The two names then disagree, so calling\nsetSomething: via Swift\u0027s property assignment dispatch does not reach\nthe synthesized setter and stores written through the property are\nsilently dropped before they reach the Go-side accessor (the original\nreproducer in the issue: a Go field named ID whose value never made\nit back to Go after Swift assigned to dc.id_).\n\nExtract objcGetterName for the existing objcNameReplacer(lowerFirst)\npipeline used to derive ObjC property and getter selectors, and add\nobjcSetterName that wraps it to produce the matching setter selector\n(set + capitalize(getter)). Replace inline call sites in genobjc.go\nwith objcGetterName, and use objcSetterName at every setter-name call\nsite (package-level var setters in both the header and the\nimplementation, and instance-method setters on struct fields).\n\nUpdate bind/testdata/doc.objc.m.golden to reflect the corrected\nselector for the existing SF field (setSF -\u003e setSf); no other golden\nfile is affected because the existing struct/variable test fixtures\ndo not contain acronyms or reserved-word names.\n\nAdds bind.TestObjcPropertyName covering both helpers across normal,\nacronym and reserved-word cases.\n\nFixes golang/go#76114.\nFixes golang/go#32008.\n\nChange-Id: I5c0b1606fa7d3fb2de713e2c13e594ebc3f2ed4c\nReviewed-on: https://go-review.googlesource.com/c/mobile/+/777520\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Hyang-Ah Hana Kim \u003chyangah@gmail.com\u003e\nReviewed-by: Dmitri Shuralyov \u003cdmitshur@google.com\u003e\nAuto-Submit: Hajime Hoshi \u003chajimehoshi@gmail.com\u003e\nReviewed-by: Hajime Hoshi \u003chajimehoshi@gmail.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "db0f99bb6980a54a301769a10a5cdcaad759e7cb",
      "old_mode": 33188,
      "old_path": "bind/bind_test.go",
      "new_id": "c30c1ba695645c6266479bc0dfc02a0b5f3a0ad9",
      "new_mode": 33188,
      "new_path": "bind/bind_test.go"
    },
    {
      "type": "modify",
      "old_id": "683df99753967e07ee26efaa7c10554537d8c581",
      "old_mode": 33188,
      "old_path": "bind/genobjc.go",
      "new_id": "572c88d37fb619bd32620d5e45f21134f9fe1785",
      "new_mode": 33188,
      "new_path": "bind/genobjc.go"
    },
    {
      "type": "modify",
      "old_id": "cb8c7c8d3bc916e1a3446f8e9499bc4933817e79",
      "old_mode": 33188,
      "old_path": "bind/testdata/doc.objc.m.golden",
      "new_id": "0c4308ae6bea7b01e114088ebe2867cb5195b7d8",
      "new_mode": 33188,
      "new_path": "bind/testdata/doc.objc.m.golden"
    }
  ]
}
