)]}'
{
  "commit": "b7c65513ba18c29d7c1fb3912e109a191f75d58d",
  "tree": "f16b75a786516306f7501cc9ee78e1b0dd586b97",
  "parents": [
    "cc82c429f000d964e732b0f0fb29630991222fb7",
    "061017274d558da82d1bf02fc72e94f7ddebc9c3"
  ],
  "author": {
    "name": "Jacob Pratt",
    "email": "jacob@jhpratt.dev",
    "time": "Sun May 03 00:25:32 2026 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sun May 03 00:25:32 2026 -0400"
  },
  "message": "Rollup merge of #155940 - mejrs:filter, r\u003djdonszelmann\n\nrefactor rustc_on_unimplemented\u0027s filtering\n\nPreviously when you had a\n```rust\npub struct Directive {\n    pub is_rustc_attr: bool,\n    pub condition: Option\u003cOnUnimplementedCondition\u003e,\n    pub subcommands: ThinVec\u003cDirective\u003e,\n    pub message: Option\u003c(Span, FormatString)\u003e,\n    ...\n}\n```\nthat condition would control the emission of the message, label, notes etc. I\u0027ve changed that to\n```rust\npub struct Directive {\n    pub is_rustc_attr: bool,\n    pub filters: ThinVec\u003c(Filter, Directive)\u003e,\n    pub message: Option\u003c(Span, FormatString)\u003e,\n    ...\n```\n\nso that the message etc is always emitted, and there\u0027s a vec of tuples with (filter, directive) where the filter controls whether that directive is even emitted,  which i think is much clearer. That also makes it easier to not have to do the reverse iteration thing and this makes it so that notes are emitted in declaration order (with nonfiltered options always last).\n\nThe rename is because I plan on making it available to other diagnostic attributes at some point (very wip) so `OnUnimplementedCondition` and the like would have to be renamed anyway.\n",
  "tree_diff": []
}
