)]}'
{
  "commit": "3cb480b1bd8c3a368c33e180483178309c9ca753",
  "tree": "521b4b9ec865cac4169f53131776b0c3d416ef95",
  "parents": [
    "f9783c559f16991c19924898357edb9240a5f0aa"
  ],
  "author": {
    "name": "Aaron Ballman",
    "email": "aaron@aaronballman.com",
    "time": "Wed May 07 12:39:41 2025 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed May 07 12:39:41 2025 -0400"
  },
  "message": "[C++20] Fix crash with invalid concept requirement (#138877)\n\nWe were previously recovering a bit too hard; consumeClose() would skip\nto a recovery point, then we would call skipToEnd() to skip to another\nrecovery point. Needless to say, the follow-on diagnostics were not\ngreat. But also, follow-on diagnostics were crashing due to unexpected\nnull constraint expressions.\n\nNow we only recover once.\n\nFixes #138820",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "55f774f5a672e13dad6c6df5230c02eaea37af21",
      "old_mode": 33188,
      "old_path": "clang/docs/ReleaseNotes.rst",
      "new_id": "350244e3054cfd0309317c758e67de69db93b553",
      "new_mode": 33188,
      "new_path": "clang/docs/ReleaseNotes.rst"
    },
    {
      "type": "modify",
      "old_id": "32b08a12a3bb63ec2fb6483d9eb5e0bbb59ac842",
      "old_mode": 33188,
      "old_path": "clang/lib/Parse/ParseExprCXX.cpp",
      "new_id": "546c228a30513a2f022281d97bb403cb55530230",
      "new_mode": 33188,
      "new_path": "clang/lib/Parse/ParseExprCXX.cpp"
    },
    {
      "type": "modify",
      "old_id": "c38f8888075ded17e04d63c56dc815eb652dcae2",
      "old_mode": 33188,
      "old_path": "clang/test/SemaCXX/concept-crash-on-diagnostic.cpp",
      "new_id": "1efed72522fef9617acf8ac06b766a0c9df9134e",
      "new_mode": 33188,
      "new_path": "clang/test/SemaCXX/concept-crash-on-diagnostic.cpp"
    }
  ]
}
