)]}'
{
  "commit": "ba9d1c41c41d568a798e0a8c38a89d294647c28d",
  "tree": "948be2f45e5cdbf25aa9b61195a11865b7f093ef",
  "parents": [
    "615d07ea55ea57afab0205aa739239070448a038"
  ],
  "author": {
    "name": "Matheus Izvekov",
    "email": "mizvekov@gmail.com",
    "time": "Fri Sep 12 13:55:38 2025 -0300"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Sep 12 13:55:38 2025 -0300"
  },
  "message": "[clang] AST: remove DependentTemplateSpecializationType (#158109)\n\nA DependentTemplateSpecializationType (DTST) is basically just a\nTemplateSpecializationType (TST) with a hardcoded DependentTemplateName\n(DTN) as its TemplateName.\n\nThis removes the DTST and replaces all uses of it with a TST, removing a\nlot of duplication in the implementation.\n\nTechnically the hardcoded DTN is an optimization for a most common case,\nbut the TST implementation is in better shape overall and with other\noptimizations, so this patch ends up being an overall performance\npositive:\n\u003cimg width\u003d\"1465\" height\u003d\"38\" alt\u003d\"image\"\nsrc\u003d\"https://github.com/user-attachments/assets/084b0694-2839-427a-b664-eff400f780b5\"\n/\u003e\n\nA DTST also didn\u0027t allow a template name representing a DTN that was\nsubstituted, such as from an alias template, while the TST does allow it\nby the simple fact it can hold an arbitrary TemplateName, so this patch\nalso increases the amount of sugar retained, while still being faster\noverall.\n\nExample (from included test case):\n```C++\ntemplate\u003ctemplate\u003cclass\u003e class TT\u003e using T1 \u003d TT\u003cint\u003e;\ntemplate\u003cclass T\u003e using T2 \u003d T1\u003cT::template X\u003e;\n```\n\nHere we can now represent in the AST that `TT` was substituted for the\ndependent template name `T::template X`.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "90539eaabbe031c20fff753d1bd8ebc06203fd66",
      "old_mode": 33188,
      "old_path": "clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp",
      "new_id": "24d346bdfaa535cb9977a30cf9c62e3d097cb962",
      "new_mode": 33188,
      "new_path": "clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp"
    },
    {
      "type": "modify",
      "old_id": "32018d1bf3a849ec2d147090f7a940cd39497860",
      "old_mode": 33188,
      "old_path": "clang-tools-extra/clangd/FindTarget.cpp",
      "new_id": "8aae41420b83ee74345a0513792082999040e471",
      "new_mode": 33188,
      "new_path": "clang-tools-extra/clangd/FindTarget.cpp"
    },
    {
      "type": "modify",
      "old_id": "2b151b12744285dae09abec21b7117e170cf6741",
      "old_mode": 33188,
      "old_path": "clang-tools-extra/clangd/SemanticHighlighting.cpp",
      "new_id": "ab720ebe6b47f725ffaad9a7e219b8e1d64e15a8",
      "new_mode": 33188,
      "new_path": "clang-tools-extra/clangd/SemanticHighlighting.cpp"
    },
    {
      "type": "modify",
      "old_id": "f369e1b0341e869cc0a2e386bf99d96d4c53b410",
      "old_mode": 33188,
      "old_path": "clang-tools-extra/clangd/unittests/FindTargetTests.cpp",
      "new_id": "dd26182630ae10eadf08c593fd2866f3fb8c4574",
      "new_mode": 33188,
      "new_path": "clang-tools-extra/clangd/unittests/FindTargetTests.cpp"
    },
    {
      "type": "modify",
      "old_id": "0cbf9a080a3ce0a057652754937c58ebff7f260a",
      "old_mode": 33188,
      "old_path": "clang-tools-extra/include-cleaner/lib/WalkAST.cpp",
      "new_id": "7bbdc8ba00dcac594c4508bc409cad8f2c1599c1",
      "new_mode": 33188,
      "new_path": "clang-tools-extra/include-cleaner/lib/WalkAST.cpp"
    },
    {
      "type": "modify",
      "old_id": "4868714d898eca0813a0462a81abc35d437d4a38",
      "old_mode": 33188,
      "old_path": "clang/docs/ReleaseNotes.rst",
      "new_id": "51e5973098c14a292e9e948e5009bf356f41d3d1",
      "new_mode": 33188,
      "new_path": "clang/docs/ReleaseNotes.rst"
    },
    {
      "type": "modify",
      "old_id": "1c17333b722f86b6f969218a2f914e7b805a636d",
      "old_mode": 33188,
      "old_path": "clang/include/clang/AST/ASTContext.h",
      "new_id": "b8f6de69bbb98fe659df9bfc03c8ec1065e9da89",
      "new_mode": 33188,
      "new_path": "clang/include/clang/AST/ASTContext.h"
    },
    {
      "type": "modify",
      "old_id": "fe08d637a1e1d67de1f0b8f4e2c603f3005ffda0",
      "old_mode": 33188,
      "old_path": "clang/include/clang/AST/ASTNodeTraverser.h",
      "new_id": "ea68cc70f91318e527aebef59acf1723d12323f7",
      "new_mode": 33188,
      "new_path": "clang/include/clang/AST/ASTNodeTraverser.h"
    },
    {
      "type": "modify",
      "old_id": "02581c8e732991d318959973495cc5a2e1b218c5",
      "old_mode": 33188,
      "old_path": "clang/include/clang/AST/RecursiveASTVisitor.h",
      "new_id": "c1944487716de25eb495d39854e3a7e515e72232",
      "new_mode": 33188,
      "new_path": "clang/include/clang/AST/RecursiveASTVisitor.h"
    },
    {
      "type": "modify",
      "old_id": "abb0669bff3788308baeb5ea920aeabe26763d95",
      "old_mode": 33188,
      "old_path": "clang/include/clang/AST/TemplateName.h",
      "new_id": "b6999a1b4e9b98b2b73d6e864a69aef613f9b7b3",
      "new_mode": 33188,
      "new_path": "clang/include/clang/AST/TemplateName.h"
    },
    {
      "type": "modify",
      "old_id": "db2ab04e4471cb15011bb6316b0ca2e0454977fd",
      "old_mode": 33188,
      "old_path": "clang/include/clang/AST/TypeBase.h",
      "new_id": "9074992a3de8c66af51320c1c3fb15bc72c0d2d3",
      "new_mode": 33188,
      "new_path": "clang/include/clang/AST/TypeBase.h"
    },
    {
      "type": "modify",
      "old_id": "d52e10419e97ad3248b2b32860e3b35d1757f49f",
      "old_mode": 33188,
      "old_path": "clang/include/clang/AST/TypeLoc.h",
      "new_id": "38e8fba569396b71c7ee44b172b309972d86c610",
      "new_mode": 33188,
      "new_path": "clang/include/clang/AST/TypeLoc.h"
    },
    {
      "type": "modify",
      "old_id": "185a968217f9765fedceacb58fa74e5f5b140510",
      "old_mode": 33188,
      "old_path": "clang/include/clang/AST/TypeProperties.td",
      "new_id": "b3932a67db69d3414e617f493040424346f65ba9",
      "new_mode": 33188,
      "new_path": "clang/include/clang/AST/TypeProperties.td"
    },
    {
      "type": "modify",
      "old_id": "f1d88a9523838a610873a5cc6573924a2d9391da",
      "old_mode": 33188,
      "old_path": "clang/include/clang/ASTMatchers/ASTMatchers.h",
      "new_id": "492863ddfc4a11f83ae2800a3b33cb69d1eb9bb2",
      "new_mode": 33188,
      "new_path": "clang/include/clang/ASTMatchers/ASTMatchers.h"
    },
    {
      "type": "modify",
      "old_id": "fb6862b90987f6ca99717fb855644b1d85774343",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Basic/TypeNodes.td",
      "new_id": "db43a8529f02b9bc300a83bed077b59fc14cfb9e",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Basic/TypeNodes.td"
    },
    {
      "type": "modify",
      "old_id": "71588bee92d16c6dd5a99b277f85bf4c79c25ae1",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Sema/HeuristicResolver.h",
      "new_id": "9a220ba147ecb699524c5e3a5dbf75ba6f05f9e4",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Sema/HeuristicResolver.h"
    },
    {
      "type": "modify",
      "old_id": "a7600ab88febe52e1301ea07351d562c81d74886",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Sema/Sema.h",
      "new_id": "7e00085685b2177c951fb7c27ccc8668efc20134",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Sema/Sema.h"
    },
    {
      "type": "modify",
      "old_id": "bea15254922c1f0c8074a145d6abc295537f4495",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Serialization/TypeBitCodes.def",
      "new_id": "d6c484563409c7258138d6c766b47a49c026dd96",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Serialization/TypeBitCodes.def"
    },
    {
      "type": "modify",
      "old_id": "ed4c6b0e38be305d52823ee873fdf3de50048106",
      "old_mode": 33188,
      "old_path": "clang/lib/AST/ASTContext.cpp",
      "new_id": "5240054c2f36ba96f2f44cd406eab08451a37bb4",
      "new_mode": 33188,
      "new_path": "clang/lib/AST/ASTContext.cpp"
    },
    {
      "type": "modify",
      "old_id": "db14272ae5db81f62abf9e00bdcc9319702f5470",
      "old_mode": 33188,
      "old_path": "clang/lib/AST/ASTImporter.cpp",
      "new_id": "1c8fd83feb7f8c6ec53cf0e619af698b83432430",
      "new_mode": 33188,
      "new_path": "clang/lib/AST/ASTImporter.cpp"
    },
    {
      "type": "modify",
      "old_id": "1292c30d475893e010578225911279e8558df9c4",
      "old_mode": 33188,
      "old_path": "clang/lib/AST/ASTStructuralEquivalence.cpp",
      "new_id": "155734679b2da4cef2c848c5dae74b3f86c68648",
      "new_mode": 33188,
      "new_path": "clang/lib/AST/ASTStructuralEquivalence.cpp"
    },
    {
      "type": "modify",
      "old_id": "d2f7fdbbad04d49910ed0f405d5130f763d76c8f",
      "old_mode": 33188,
      "old_path": "clang/lib/AST/ASTTypeTraits.cpp",
      "new_id": "84eb77730b1cb4cd9b9fcc16f10cae497b153913",
      "new_mode": 33188,
      "new_path": "clang/lib/AST/ASTTypeTraits.cpp"
    },
    {
      "type": "modify",
      "old_id": "3162857aac5d066baeb810e145c5926c3ef154a8",
      "old_mode": 33188,
      "old_path": "clang/lib/AST/DeclTemplate.cpp",
      "new_id": "b6bb6117d42af4d58ce0f6e2aef55baf7d1b5a8d",
      "new_mode": 33188,
      "new_path": "clang/lib/AST/DeclTemplate.cpp"
    },
    {
      "type": "modify",
      "old_id": "163cd43abd45a0f1cad35da54cb1bb842a38b614",
      "old_mode": 33188,
      "old_path": "clang/lib/AST/ItaniumMangle.cpp",
      "new_id": "2173aed5b45afe35acc0a87e6638f8a81b99ed35",
      "new_mode": 33188,
      "new_path": "clang/lib/AST/ItaniumMangle.cpp"
    },
    {
      "type": "modify",
      "old_id": "d96472e393f682a098a939c93d5fe542fb414e8a",
      "old_mode": 33188,
      "old_path": "clang/lib/AST/MicrosoftMangle.cpp",
      "new_id": "8cbc72b1db735907216d0df793cf922c7bf81a2c",
      "new_mode": 33188,
      "new_path": "clang/lib/AST/MicrosoftMangle.cpp"
    },
    {
      "type": "modify",
      "old_id": "fb95f58092c49df5587836a5c48c11b311c72951",
      "old_mode": 33188,
      "old_path": "clang/lib/AST/ODRHash.cpp",
      "new_id": "6842038b7eb573d322102a04a9afe72fba09d5d2",
      "new_mode": 33188,
      "new_path": "clang/lib/AST/ODRHash.cpp"
    },
    {
      "type": "modify",
      "old_id": "f2cb15dbc43dd7d7378b88842e3e420947598c7b",
      "old_mode": 33188,
      "old_path": "clang/lib/AST/TemplateName.cpp",
      "new_id": "2b8044e4188cd5ceae40de16fcfd168fbf241944",
      "new_mode": 33188,
      "new_path": "clang/lib/AST/TemplateName.cpp"
    },
    {
      "type": "modify",
      "old_id": "86621795d81e6e8a7b9d939c8eb10abb08c0c23e",
      "old_mode": 33188,
      "old_path": "clang/lib/AST/Type.cpp",
      "new_id": "9794314a98f8137ba5b927ae6b7e3bf155856910",
      "new_mode": 33188,
      "new_path": "clang/lib/AST/Type.cpp"
    },
    {
      "type": "modify",
      "old_id": "3e9597fc4d4717a66c6f3ffc32eedd85188db1d9",
      "old_mode": 33188,
      "old_path": "clang/lib/AST/TypeLoc.cpp",
      "new_id": "55476e2175a1f43b5e97c627bd109da77ff5f96e",
      "new_mode": 33188,
      "new_path": "clang/lib/AST/TypeLoc.cpp"
    },
    {
      "type": "modify",
      "old_id": "54ca42d2035adf20a34574f6682c216163f15e90",
      "old_mode": 33188,
      "old_path": "clang/lib/AST/TypePrinter.cpp",
      "new_id": "cd59678d67f2f65c7c6f01aeb2dfa696518657d6",
      "new_mode": 33188,
      "new_path": "clang/lib/AST/TypePrinter.cpp"
    },
    {
      "type": "modify",
      "old_id": "653b3810cb68b44561c7c03a318b6d4019494f82",
      "old_mode": 33188,
      "old_path": "clang/lib/ASTMatchers/ASTMatchersInternal.cpp",
      "new_id": "1f0e007dafc6589d13ae5b801acfdec9138f5e65",
      "new_mode": 33188,
      "new_path": "clang/lib/ASTMatchers/ASTMatchersInternal.cpp"
    },
    {
      "type": "modify",
      "old_id": "48a7b91969aef45fba63f7d102c9490f6fa45c0b",
      "old_mode": 33188,
      "old_path": "clang/lib/ASTMatchers/Dynamic/Registry.cpp",
      "new_id": "01c03f309a77bd6ca00bd32be7f143038292c152",
      "new_mode": 33188,
      "new_path": "clang/lib/ASTMatchers/Dynamic/Registry.cpp"
    },
    {
      "type": "modify",
      "old_id": "29840a430292ed191641d9c6c41ee0e181ab3c6a",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/HeuristicResolver.cpp",
      "new_id": "a5d1f5dd389cbc7acbf3df186ea07022c10a24d9",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/HeuristicResolver.cpp"
    },
    {
      "type": "modify",
      "old_id": "3eed6ad7fe6b38d4f8d6d0d3794566fa0944855d",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/SemaAttr.cpp",
      "new_id": "8411a3da8322df2dcbeb6c0c97c933502cc6af9a",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/SemaAttr.cpp"
    },
    {
      "type": "modify",
      "old_id": "437c69aa1587d106c0e92dc609010e4f5002ba7c",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/SemaCXXScopeSpec.cpp",
      "new_id": "e89243b9d767a6c90f16d049c600774d208d1322",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/SemaCXXScopeSpec.cpp"
    },
    {
      "type": "modify",
      "old_id": "cc03616e0dfe1fb3635190d92ccacee30ecd5ed8",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/SemaCoroutine.cpp",
      "new_id": "229e91ed04caa4af5b1fb2bd260259c41118e0ab",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/SemaCoroutine.cpp"
    },
    {
      "type": "modify",
      "old_id": "7c1459e320167c430ed35e281f198e1dc6100706",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/SemaDecl.cpp",
      "new_id": "2b0ddb584c37e90b3c0e40fb90e28af55a1c2ae5",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/SemaDecl.cpp"
    },
    {
      "type": "modify",
      "old_id": "63ce87b9b0607b882aa286adfda5c1735d9bb4f7",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/SemaDeclCXX.cpp",
      "new_id": "8008c7b160bedeca8e3a46535bcf5b250660800d",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/SemaDeclCXX.cpp"
    },
    {
      "type": "modify",
      "old_id": "bd62ac62341803f67d73ee5b8f6f93390dc84442",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/SemaExpr.cpp",
      "new_id": "439444281c2d5eb3d07ab4844ef31bf4025a0e41",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/SemaExpr.cpp"
    },
    {
      "type": "modify",
      "old_id": "54918c560b65530044ebdebe12432d9ea054fda5",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/SemaLookup.cpp",
      "new_id": "25728de1779ad61c0b31c486842a50b07bb8384c",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/SemaLookup.cpp"
    },
    {
      "type": "modify",
      "old_id": "58dae32569bcc30a56d1258bd1fbbad6a3a27666",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/SemaTemplate.cpp",
      "new_id": "d6b25c2d83613437857883594975a68f981c2387",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/SemaTemplate.cpp"
    },
    {
      "type": "modify",
      "old_id": "cce40c0c91f95edefa51783c37a9d90e25a92f3d",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/SemaTemplateDeduction.cpp",
      "new_id": "64be2aab259f564c5f3d1ca27a66201a53dcb547",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/SemaTemplateDeduction.cpp"
    },
    {
      "type": "modify",
      "old_id": "b3cbd7f8c1efef3226248b5c5660efdce45b0f1f",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/SemaTemplateInstantiateDecl.cpp",
      "new_id": "df1a100cab22c69cecf20a47aaa8b0a05d55b3ac",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/SemaTemplateInstantiateDecl.cpp"
    },
    {
      "type": "modify",
      "old_id": "0f655d7f684a5dc5b131d6ce2dce92b29e527abd",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/SemaType.cpp",
      "new_id": "d723fb80f437eab962b8c7fdac05f1f70d47b1a2",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/SemaType.cpp"
    },
    {
      "type": "modify",
      "old_id": "0587a7decbd8d335fad20bcc8bd70dbdc112b0f6",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/TreeTransform.h",
      "new_id": "6136937210978f4d614b0d331f3db78263988b95",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/TreeTransform.h"
    },
    {
      "type": "modify",
      "old_id": "1b3a8b13f1fb1aab83e82fdcc65652ad1a63e87b",
      "old_mode": 33188,
      "old_path": "clang/lib/Serialization/ASTReader.cpp",
      "new_id": "5f40e94074702c0ad21ca3185221ac768ab7ed22",
      "new_mode": 33188,
      "new_path": "clang/lib/Serialization/ASTReader.cpp"
    },
    {
      "type": "modify",
      "old_id": "a3a25e48f90654983431200941856d350305c550",
      "old_mode": 33188,
      "old_path": "clang/lib/Serialization/ASTWriter.cpp",
      "new_id": "15a3ed4c427f8502fda8afa25ac60093ffdc2467",
      "new_mode": 33188,
      "new_path": "clang/lib/Serialization/ASTWriter.cpp"
    },
    {
      "type": "modify",
      "old_id": "d9444110d421c6b893973fc009dfe466123d1e47",
      "old_mode": 33188,
      "old_path": "clang/lib/Tooling/Refactoring/Rename/USRLocFinder.cpp",
      "new_id": "c9108fc299cc17a58c24f6164476106ee68e1d28",
      "new_mode": 33188,
      "new_path": "clang/lib/Tooling/Refactoring/Rename/USRLocFinder.cpp"
    },
    {
      "type": "modify",
      "old_id": "b75f8ff6defeecc445b27648ad21de4008b80140",
      "old_mode": 33188,
      "old_path": "clang/lib/Tooling/Syntax/BuildTree.cpp",
      "new_id": "90fd1f91b9ef2b476cf8ec64f6f60e5aa5090744",
      "new_mode": 33188,
      "new_path": "clang/lib/Tooling/Syntax/BuildTree.cpp"
    },
    {
      "type": "modify",
      "old_id": "e43fe6b1dda255c246116fb1ca6c25c4b963807f",
      "old_mode": 33188,
      "old_path": "clang/test/AST/ast-dump-templates.cpp",
      "new_id": "18f62e4acdc788b8b3344624565511e126e60c71",
      "new_mode": 33188,
      "new_path": "clang/test/AST/ast-dump-templates.cpp"
    },
    {
      "type": "modify",
      "old_id": "0ed029c39885f3270c43386d524b7548a5ae8954",
      "old_mode": 33188,
      "old_path": "clang/tools/libclang/CIndex.cpp",
      "new_id": "9526f629bda42deecee0bc55c61c5fb35ba278b7",
      "new_mode": 33188,
      "new_path": "clang/tools/libclang/CIndex.cpp"
    },
    {
      "type": "modify",
      "old_id": "423dd1b25adadc2a8a995859846b8b93ae3cd7d7",
      "old_mode": 33188,
      "old_path": "clang/tools/libclang/CXIndexDataConsumer.cpp",
      "new_id": "932201a94cdae28b3d76c3be076a969299b1d4c0",
      "new_mode": 33188,
      "new_path": "clang/tools/libclang/CXIndexDataConsumer.cpp"
    },
    {
      "type": "modify",
      "old_id": "ac40a871c0252db6eaf8fbd5c54792111dddbc31",
      "old_mode": 33188,
      "old_path": "clang/unittests/AST/ASTImporterTest.cpp",
      "new_id": "e7160bcf2e0c236fcd929104db4fe9b6d5a962de",
      "new_mode": 33188,
      "new_path": "clang/unittests/AST/ASTImporterTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "d7df9cae01f33b85954e808810062c2d902634d7",
      "old_mode": 33188,
      "old_path": "clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp",
      "new_id": "9692d6e6fae9740adf3b2a8614d856d8898e7755",
      "new_mode": 33188,
      "new_path": "clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "39aacdb58e694954abf0ade595d8e7bbce43d9dc",
      "old_mode": 33188,
      "old_path": "lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp",
      "new_id": "e4544cd66f49b141e55e45318485a72167a1ae65",
      "new_mode": 33188,
      "new_path": "lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp"
    }
  ]
}
