)]}'
{
  "commit": "4358cb2f8cb304e64d9a2d2845f472297724e19f",
  "tree": "524ff2f5c3c6b5325f7e013b28aee1c879276e4a",
  "parents": [
    "df2c771ec596b385448117f237ee70be35efe4ce"
  ],
  "author": {
    "name": "Dino Radakovic",
    "email": "dinor@google.com",
    "time": "Fri Feb 09 18:46:09 2024 -0800"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Fri Feb 09 18:46:50 2024 -0800"
  },
  "message": "`demangle`: Parse `requires` clauses on template params, before function return type\n\nFor example, this covers the following:\n```\ntemplate \u003ctypename T\u003e\n    requires std::integral\u003cT\u003e\nint foo();\n```\n\nRefactor parsing of `Q \u003crequires-clause expr\u003e` into a single function that performs backtracking to avoid reimplementing `ParseTemplateArgs` in terms of nested if-else blocks.\n\nPiperOrigin-RevId: 605785418\nChange-Id: I118998a75e050dcf46af125b613b690312fd3cbe\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c2f1945178ee0716860f62cf133b2568aafdc5fb",
      "old_mode": 33188,
      "old_path": "absl/debugging/internal/demangle.cc",
      "new_id": "f86421bf54d6303e8be8ee73d6771926078aa605",
      "new_mode": 33188,
      "new_path": "absl/debugging/internal/demangle.cc"
    },
    {
      "type": "modify",
      "old_id": "4b9d7711537fdeb05c97ee25de59d4d6db3ca68b",
      "old_mode": 33188,
      "old_path": "absl/debugging/internal/demangle_test.cc",
      "new_id": "86e668865ab4008d830a213f58e2b37c48bf7678",
      "new_mode": 33188,
      "new_path": "absl/debugging/internal/demangle_test.cc"
    }
  ]
}
