)]}'
{
  "commit": "e584174c13ac6825c9675a3a8b767d00102f1c8d",
  "tree": "6bfba1b9668e0a681ce2feb38d52677a3c23c8c0",
  "parents": [
    "a5e753582716355a0f71181cf4003babf227568e"
  ],
  "author": {
    "name": "Emilio Cobos Álvarez",
    "email": "emilio@crisal.io",
    "time": "Tue Oct 27 09:39:59 2026 +0000"
  },
  "committer": {
    "name": "Emilio Cobos Álvarez",
    "email": "emilio@crisal.io",
    "time": "Tue Oct 27 09:58:03 2026 +0000"
  },
  "message": "comp: Prevent recursive layout computation with template unions.\n\nMore minimal version of #3419 which avoids the crash even though it\ndoesn\u0027t get the right layout (we\u0027d need to enforce rust unions for\nthese).\n\nIn llvm/llvm-project#185449, LLVM\u0027s libc++ changed a header to use a\nrecursive self-referential type, which looks approximately like:\n\n```\ntemplate \u003cclass A0, class... As\u003e union RUnion { A0 arg; RUnion\u003cAs...\u003e u; };\ntemplate \u003cclass A\u003e union RUnion\u003cA\u003e { A arg; };\nstruct Wrap { RUnion\u003cint, float\u003e u; };\n```\n\nUninstantiated union templates don\u0027t have a meaningful layout anyway, so\nreturn `None` from `CompInfo::layout` for them.\n\nCloses #3397\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e1d27d15a4a187ebd082ad3f810c9dcb87fdad1f",
      "old_mode": 33188,
      "old_path": "bindgen-tests/tests/expectations/tests/transform-op.rs",
      "new_id": "045a298d39b24a5a0945641487ba4392429d275b",
      "new_mode": 33188,
      "new_path": "bindgen-tests/tests/expectations/tests/transform-op.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "91c5ed480268b16f57f1a2d59a8b3b2ac70cbbcc",
      "new_mode": 33188,
      "new_path": "bindgen-tests/tests/expectations/tests/variadic_template_union.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d8ef582df8dbaaa49c5c0a40d840cf268f87cbd8",
      "new_mode": 33188,
      "new_path": "bindgen-tests/tests/headers/variadic_template_union.hpp"
    },
    {
      "type": "modify",
      "old_id": "3f02b136fc6b7035bbc2a4d154cf943f8aaafdc9",
      "old_mode": 33188,
      "old_path": "bindgen/ir/comp.rs",
      "new_id": "246909de4829c10da886abe76034466ff3569efd",
      "new_mode": 33188,
      "new_path": "bindgen/ir/comp.rs"
    }
  ]
}
