)]}'
{
  "commit": "6f109d8a2da2fe8d0fbfc52178300c033737b218",
  "tree": "68f8ed2a5b134b2f04b16ee397d5f17619921cad",
  "parents": [
    "0febdbab2720dc0360cd294c67db88d6d06580d4",
    "a70f37baa6ba8925e18771e1cf34ec2247246c48"
  ],
  "author": {
    "name": "bors",
    "email": "bors@rust-lang.org",
    "time": "Sat Apr 18 23:46:37 2026 +0000"
  },
  "committer": {
    "name": "bors",
    "email": "bors@rust-lang.org",
    "time": "Sat Apr 18 23:46:37 2026 +0000"
  },
  "message": "Auto merge of #155223 - teor2345:fndef-refactor, r\u003dmati865\n\nRefactor FnDecl and FnSig non-type fields into a new wrapper type\n\n\n\n\r\n\r\n#### Why this Refactor?\r\n\r\nThis PR is part of an initial cleanup for the [arg splat experiment](https://github.com/rust-lang/rust/issues/153629), but it\u0027s a useful refactor by itself.\r\n\r\nIt refactors the non-type fields of `FnDecl`, `FnSig`, and `FnHeader` into a new packed wrapper types, based on this comment in the `splat` experiment PR:\r\nhttps://github.com/rust-lang/rust/pull/153697#discussion_r3004637413\r\n\r\nIt also refactors some common `FnSig` creation settings into their own methods. I did this instead of creating a struct with defaults.\r\n\r\n#### Relationship to `splat` Experiment\r\n\r\nI don\u0027t think we can use functional struct updates (`..default()`) to create `FnDecl` and `FnSig`, because we need the bit-packing for the `splat` experiment.\r\n\r\nBit-packing will avoid breaking \"type is small\" assertions for commonly used types when `splat` is added.\r\nThis PR packs these types:\r\n- ExternAbi: enum + `unwind` variants (38) -\u003e 6 bits\r\n- ImplicitSelfKind: enum variants (5) -\u003e 3 bits\r\n- lifetime_elision_allowed, safety, c_variadic: bool -\u003e 1 bit\r\n\r\n#### Minor Changes\r\n\r\nFixes some typos, and applies rustfmt to clippy files that got skipped somehow.",
  "tree_diff": []
}
