)]}'
{
  "commit": "ee0ca4e81f1fdd86d5eddc3290175fe8cb28b97f",
  "tree": "4b79c0c9cf88b89b46dd5045161d222f3ff00eb7",
  "parents": [
    "29f11f0a3240dff1e10ed3d4a5412ecb8c762327"
  ],
  "author": {
    "name": "Joshua Batista",
    "email": "jbatista@microsoft.com",
    "time": "Fri Nov 22 09:47:29 2024 -0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Nov 22 09:47:29 2024 -0800"
  },
  "message": "[HLSL] Add implicit resource element type concepts to AST  (#116413)\n\nThis PR is step one on the journey to implement resource element type\r\nvalidation via C++20 concepts. The PR sets up the infrastructure for\r\ninjecting implicit concept decls / concept specialization expressions\r\ninto the AST, which will then be evaluated after template arguments are\r\ninstantiated. This is not meant to be a complete implementation of the\r\ndesired validation for HLSL,\r\nthere are a couple of missing elements:\r\n\r\nWe need the __builtin_hlsl_is_typed_resource_element_compatible builtin\r\nto be implemented.\r\nWe need other constraints, like is_intangible\r\nWe need to put the first 2 points together, and construct a finalized\r\nconstraint expression, which should differ between typed and raw buffers\r\nThis is just an initial PR that puts some of the core infrastructure in\r\nplace.\r\n\r\nThis PR is an edit of #112600, so that new tests that were put into main\r\ndon\u0027t fail\r\nFixes #75676",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a14e7d50a6043ff18be5307747285286c39a5fe4",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/HLSLExternalSemaSource.cpp",
      "new_id": "822202fd81dc89411b239fccabe33aad2380c114",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/HLSLExternalSemaSource.cpp"
    },
    {
      "type": "modify",
      "old_id": "616481d62de887cc7cc0c3ad98571d1bdf1d112e",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/SemaExprCXX.cpp",
      "new_id": "d85819b21c8265905cb8728cdf2c16665e372053",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/SemaExprCXX.cpp"
    },
    {
      "type": "modify",
      "old_id": "8c951e9829211433fac58d8a15f1123e63db06e3",
      "old_mode": 33188,
      "old_path": "clang/test/AST/HLSL/AppendStructuredBuffer-AST.hlsl",
      "new_id": "291a3804ee8e3a2252ba192068ff8160467ee115",
      "new_mode": 33188,
      "new_path": "clang/test/AST/HLSL/AppendStructuredBuffer-AST.hlsl"
    },
    {
      "type": "modify",
      "old_id": "86e3d387883dcc674331e1dea471043cab295ff3",
      "old_mode": 33188,
      "old_path": "clang/test/AST/HLSL/ConsumeStructuredBuffer-AST.hlsl",
      "new_id": "aa09fa78c660f50a47bf3fd488c2017185a8b5f8",
      "new_mode": 33188,
      "new_path": "clang/test/AST/HLSL/ConsumeStructuredBuffer-AST.hlsl"
    },
    {
      "type": "modify",
      "old_id": "f2eba75481fd5521259179e847f6dc2415ab2058",
      "old_mode": 33188,
      "old_path": "clang/test/AST/HLSL/RWBuffer-AST.hlsl",
      "new_id": "4cee0bb4b421a4016974d99fbff19f17b0b56ecf",
      "new_mode": 33188,
      "new_path": "clang/test/AST/HLSL/RWBuffer-AST.hlsl"
    },
    {
      "type": "modify",
      "old_id": "cc10b41b7c2b0dd7edf0990d82a5a88baad8a552",
      "old_mode": 33188,
      "old_path": "clang/test/AST/HLSL/RWStructuredBuffer-AST.hlsl",
      "new_id": "bef054a62e794dfdea8bb08068f6cd3565d0ed8e",
      "new_mode": 33188,
      "new_path": "clang/test/AST/HLSL/RWStructuredBuffer-AST.hlsl"
    },
    {
      "type": "modify",
      "old_id": "1aac67b5ced5bc90207eb6ffa193d43dce9a189e",
      "old_mode": 33188,
      "old_path": "clang/test/AST/HLSL/RasterizerOrderedStructuredBuffer-AST.hlsl",
      "new_id": "3a808710e16f30b292cd793cf1c41402650c15b7",
      "new_mode": 33188,
      "new_path": "clang/test/AST/HLSL/RasterizerOrderedStructuredBuffer-AST.hlsl"
    },
    {
      "type": "modify",
      "old_id": "95ae20ead32bfebb7afae3728daa6ce105259502",
      "old_mode": 33188,
      "old_path": "clang/test/AST/HLSL/StructuredBuffer-AST.hlsl",
      "new_id": "60f2f403f84c707717681e80c29a3c30d6ee0191",
      "new_mode": 33188,
      "new_path": "clang/test/AST/HLSL/StructuredBuffer-AST.hlsl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "68aa3a32e7d11be263b13fa9d87ee93087af975f",
      "new_mode": 33188,
      "new_path": "clang/test/AST/HLSL/is_typed_resource_element_compatible_concept.hlsl"
    },
    {
      "type": "modify",
      "old_id": "3c2ea557b1982be5b74f1afebc60b8a7c99c6314",
      "old_mode": 33188,
      "old_path": "clang/test/SemaHLSL/BuiltIns/RWBuffers.hlsl",
      "new_id": "941e0a975d5f44d2de6ccf015eafc914199a326d",
      "new_mode": 33188,
      "new_path": "clang/test/SemaHLSL/BuiltIns/RWBuffers.hlsl"
    },
    {
      "type": "modify",
      "old_id": "b0cf9453cecfcfe456aaef3694592b6f7c97ff5b",
      "old_mode": 33188,
      "old_path": "clang/test/SemaHLSL/BuiltIns/StructuredBuffers.hlsl",
      "new_id": "edfc1b48037c9f1c0e6f99f5eb03b2a862b9e19f",
      "new_mode": 33188,
      "new_path": "clang/test/SemaHLSL/BuiltIns/StructuredBuffers.hlsl"
    },
    {
      "type": "modify",
      "old_id": "0467844e1cab8c5c084600eb6eb633aa5008626d",
      "old_mode": 33188,
      "old_path": "clang/test/SemaHLSL/Types/Traits/IsTypedResourceElementCompatible.hlsl",
      "new_id": "abe022af73cc63c21a82c9da2e69bafa277a9105",
      "new_mode": 33188,
      "new_path": "clang/test/SemaHLSL/Types/Traits/IsTypedResourceElementCompatible.hlsl"
    },
    {
      "type": "delete",
      "old_id": "d3d79aa0499e54b35edb798659423dc506ee42de",
      "old_mode": 33188,
      "old_path": "clang/test/SemaHLSL/Types/Traits/IsTypedResourceElementCompatibleErrors.hlsl",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    }
  ]
}
