)]}'
{
  "commit": "cc7c9058c2355a702d8b60e6434056b70458cf21",
  "tree": "db17bf4c88dbc3fe48d735d937948185661415bb",
  "parents": [
    "32f77c02294310054a660c393feded4bcb3f203c"
  ],
  "author": {
    "name": "Nikita Gupta",
    "email": "nikigupta@google.com",
    "time": "Mon Oct 05 00:08:25 2026 -0700"
  },
  "committer": {
    "name": "dawn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "dawn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Oct 05 00:08:25 2026 -0700"
  },
  "message": "[WebGPU][Kotlin] Use addins in dawn_kotlin.json\n\n- Replace the bespoke customize_api block with the generic addins\n  mechanism from https://dawn-review.googlesource.com/c/dawn/+/332056,\n  matching dawn_native.json.\n- Lets include_*/kotlin_name read attributes directly off the parsed\n  Python objects instead of walking five parallel lookup dicts, and\n  drops the obj/structure_name plumbing from include_method and\n  kotlin_record_members.\n- exclude_members becomes per-member \"omitted\" addins. Among record\n  members, \"omitted\" is asserted to only appear on structure members,\n  since omitting a function/method argument would silently pass a\n  zero-initialized value to the native call.\n- additional_members are now appended to struct.members\n  (kotlin_only\u003dTrue) so templates see a single member list; the\n  converter analysis skips kotlin_only members accordingly.\n- Document the dawn_kotlin.json schema and addin vocabulary in\n  docs/dawn/codegen.md.\n- No change to generated Kotlin/JNI output (verified by diffing the\n  output of the kotlin generator target against origin/main, and\n  running connectedDebugAndroidTest on device).\n\nSuggested by lokokung@ in\nhttps://dawn-review.googlesource.com/c/dawn/+/343975.\n\nBug: 568205909, 462825233\nChange-Id: I2abdc9ef4f8f5c76dd636ca1b99caaba6b4c9b3c\nReviewed-on: https://dawn-review.googlesource.com/c/dawn/+/347535\nCommit-Queue: Nikita Gupta \u003cnikigupta@google.com\u003e\nReviewed-by: Loko Kung \u003clokokung@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d5243e49d54e246113ff4e25e2afddd67ebc4170",
      "old_mode": 33188,
      "old_path": "docs/dawn/codegen.md",
      "new_id": "b8c5a47837c16e30653d156a291f37af2d49b07f",
      "new_mode": 33188,
      "new_path": "docs/dawn/codegen.md"
    },
    {
      "type": "modify",
      "old_id": "c5cb5c085b4d8e7b6919cf8ac5e278a0b1aa8182",
      "old_mode": 33188,
      "old_path": "generator/dawn_json_generator.py",
      "new_id": "2478875682fe330bdd9d0b36ce299e0279d54c28",
      "new_mode": 33188,
      "new_path": "generator/dawn_json_generator.py"
    },
    {
      "type": "modify",
      "old_id": "872e2cfe756444b3a58d8a8342506625e1f402a9",
      "old_mode": 33188,
      "old_path": "generator/templates/art/api_kotlin_functions.kt",
      "new_id": "2f819473de4f5313c081098ed5f1b24df1c05ab1",
      "new_mode": 33188,
      "new_path": "generator/templates/art/api_kotlin_functions.kt"
    },
    {
      "type": "modify",
      "old_id": "ecb202a2fd3ad819d80e71ccc4ca65d8ebb3bd42",
      "old_mode": 33188,
      "old_path": "generator/templates/art/api_kotlin_object.kt",
      "new_id": "31b619233ae5c0d09acd32bb33847a5a32445018",
      "new_mode": 33188,
      "new_path": "generator/templates/art/api_kotlin_object.kt"
    },
    {
      "type": "modify",
      "old_id": "7980cbd96a264dae5970272fba1329538b431bcc",
      "old_mode": 33188,
      "old_path": "generator/templates/art/api_kotlin_structure.kt",
      "new_id": "1e641c88d11e69091392c9be746a7e8700ab6533",
      "new_mode": 33188,
      "new_path": "generator/templates/art/api_kotlin_structure.kt"
    },
    {
      "type": "modify",
      "old_id": "991658833da5cd302fc4f88c70fb2f2d3dbeba49",
      "old_mode": 33188,
      "old_path": "generator/templates/art/kotlin_record_conversion.cpp",
      "new_id": "6963e98e7e3a0abb3e6181dc28317fdf2999ad2f",
      "new_mode": 33188,
      "new_path": "generator/templates/art/kotlin_record_conversion.cpp"
    },
    {
      "type": "modify",
      "old_id": "b8ccacb3a9e50308c6b2ac452f6f03d1cf85def1",
      "old_mode": 33188,
      "old_path": "generator/templates/art/methods.cpp",
      "new_id": "153c89944aef95fed1daad6ccd4fb373264367cb",
      "new_mode": 33188,
      "new_path": "generator/templates/art/methods.cpp"
    },
    {
      "type": "modify",
      "old_id": "834f9c554a97919b81b8d7ba07fa81ab33396706",
      "old_mode": 33188,
      "old_path": "generator/templates/art/structures.cpp",
      "new_id": "b0a3cd0a1dcf3fac259062418f5101c6ef5a3ca4",
      "new_mode": 33188,
      "new_path": "generator/templates/art/structures.cpp"
    },
    {
      "type": "modify",
      "old_id": "5504d3feaafd9f4ee23e9c1e0e1c134263dac889",
      "old_mode": 33188,
      "old_path": "src/dawn/dawn_kotlin.json",
      "new_id": "f690cf49ebf0f47317d13ce0e0dd699d8260b011",
      "new_mode": 33188,
      "new_path": "src/dawn/dawn_kotlin.json"
    }
  ]
}
