)]}'
{
  "commit": "d7a18fca936d64d8c6e7ef7c535e2cfc6665aa8d",
  "tree": "a7b69edc22621a1218cdb22dcb61c4a0cf6bc153",
  "parents": [
    "58f3920e31f3c436e1d6f9cbd2e2c93c152cc35a"
  ],
  "author": {
    "name": "Wang Jinghao",
    "email": "zheng.xianyuwang@gmail.com",
    "time": "Fri Aug 14 17:27:03 2026 -0400"
  },
  "committer": {
    "name": "Jason Merrill",
    "email": "jason@redhat.com",
    "time": "Thu Aug 27 17:36:49 2026 -0700"
  },
  "message": "c++/contracts: contract pack expansion referring to parameter [PR125645]\n\nContract conditions are parsed outside the function body, so\n`at_function_scope_p()\u0027 is false when their parameter pack expansions\nare formed.  However, function parameter packs in contract conditions\nshould use local specializations during substitution, just as they do\nwithin a function body.\n\nlocal_bindings_p seems like a better test than at_function_scope_p, but we\nneed to move sk_contract earlier in scope_kind for it to give the right\nanswer.\n\n\tPR c++/125645\n\ngcc/cp/ChangeLog:\n\n\t* cp-tree.h (PACK_INDEX_PARENTHESIZED_P): Fix incorrect\n\tdocumentation in usage.\n\t* name-lookup.h (enum scope_kind): Move sk_contract before\n\tsk_function_parms.\n\t* pt.cc (make_pack_expansion): Use local_bindings_p.\n\ngcc/testsuite/ChangeLog:\n\n\t* g++.dg/contracts/cpp26/fold-pr125645.C: New test.\n\nSigned-off-by: Wang Jinghao \u003czheng.xianyuwang@gmail.com\u003e\nCo-authored-by: Jason Merrill \u003cjason@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0f989eb1648dcd6f956628d0f15d6515b4a82d6e",
      "old_mode": 33188,
      "old_path": "gcc/cp/cp-tree.h",
      "new_id": "75c00f88a083aedbc01a992b73a1f997fa52feb5",
      "new_mode": 33188,
      "new_path": "gcc/cp/cp-tree.h"
    },
    {
      "type": "modify",
      "old_id": "a0e7e10795e7d4c24dd522ddee3e27c806ed0f6c",
      "old_mode": 33188,
      "old_path": "gcc/cp/name-lookup.h",
      "new_id": "af3fd927f3d1d3766cfab2bad91d76406fb5234f",
      "new_mode": 33188,
      "new_path": "gcc/cp/name-lookup.h"
    },
    {
      "type": "modify",
      "old_id": "81fa2adef557c86c185b3df1d79552dfaf736c4f",
      "old_mode": 33188,
      "old_path": "gcc/cp/pt.cc",
      "new_id": "ef912d1a7a7a5157c9927d5c5ce0251623447455",
      "new_mode": 33188,
      "new_path": "gcc/cp/pt.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ecc9cf853ac4d9b849d0de8c78f0cedb9bb7672f",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/g++.dg/contracts/cpp26/fold-pr125645.C"
    }
  ]
}
