)]}'
{
  "commit": "060f3f0dd1614b624b527e871019970e4303de11",
  "tree": "b55b9c6a2dba1245f0d8af9636ee80472b8a7802",
  "parents": [
    "1041d54bd4f693c1ac03077680ece67e03c99e22"
  ],
  "author": {
    "name": "Jan Svoboda",
    "email": "jan_svoboda@apple.com",
    "time": "Wed Apr 23 10:33:12 2025 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Apr 23 10:33:12 2025 -0700"
  },
  "message": "[clang][deps] Make dependency directives getter thread-safe (#136178)\n\nThis PR fixes two issues in one go:\n1. The dependency directives getter (a `std::function`) was being stored\nin `PreprocessorOptions`. This goes against the principle where the\noptions classes are supposed to be value-objects representing the `-cc1`\ncommand line arguments. This is fixed by moving the getter directly to\n`CompilerInstance` and propagating it explicitly.\n2. The getter was capturing the `ScanInstance` VFS. That\u0027s fine in\nsynchronous implicit module builds where the same VFS instance is used\nthroughout, but breaks down once you try to build modules asynchronously\n(which forces the use of separate VFS instances). This is fixed by\nexplicitly passing a `FileManager` into the getter and extracting the\nright instance of the scanning VFS out of it.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6007d5659c6b41f9a16f820d99978a117658c724",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Frontend/CompilerInstance.h",
      "new_id": "8c91a2a86cfcd3b0924cb87ccbda1d7ae706cbdc",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Frontend/CompilerInstance.h"
    },
    {
      "type": "modify",
      "old_id": "0e115906fbfe51924d8028c7cc024de86a507e6d",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Lex/DependencyDirectivesScanner.h",
      "new_id": "acdc9e2bf9aa409da906daf9f38e902df7d44d8a",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Lex/DependencyDirectivesScanner.h"
    },
    {
      "type": "modify",
      "old_id": "10260c61bdf1124c6c7533c2e7608f138230f5b1",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Lex/Preprocessor.h",
      "new_id": "f2dfd3a349b8b88508355a50e4f9de98926e7f50",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Lex/Preprocessor.h"
    },
    {
      "type": "modify",
      "old_id": "c2e3d68333024a54ee06fe37031ef43af20d22da",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Lex/PreprocessorOptions.h",
      "new_id": "d4c4e1ccbf2c47496f65d5296bafe78766da69b2",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Lex/PreprocessorOptions.h"
    },
    {
      "type": "modify",
      "old_id": "74b40f7452edb051b8a4d7bf4da63a7a534cc8a6",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Tooling/DependencyScanning/DependencyScanningFilesystem.h",
      "new_id": "a20a89a4c2b76444812064fd94e2f095a78109b3",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Tooling/DependencyScanning/DependencyScanningFilesystem.h"
    },
    {
      "type": "modify",
      "old_id": "de633f0ec8734a4b4c73f1fede68deb7f4d6e7cb",
      "old_mode": 33188,
      "old_path": "clang/lib/Frontend/CompilerInstance.cpp",
      "new_id": "8596dd03148e8602deb11e3c75025e4a8dc30dff",
      "new_mode": 33188,
      "new_path": "clang/lib/Frontend/CompilerInstance.cpp"
    },
    {
      "type": "modify",
      "old_id": "db6069e31fa46cc92b23af36a7cd13a9137f8c57",
      "old_mode": 33188,
      "old_path": "clang/lib/Lex/PPLexerChange.cpp",
      "new_id": "44b5fa8be9f1b92b506e4cb1e7470ed1178674e0",
      "new_mode": 33188,
      "new_path": "clang/lib/Lex/PPLexerChange.cpp"
    },
    {
      "type": "modify",
      "old_id": "b88a7cb2dca21510d178150659b5b27e0e92fa41",
      "old_mode": 33188,
      "old_path": "clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp",
      "new_id": "8e05a678fcdbcd85d9fee33b6639db3e2932c0d7",
      "new_mode": 33188,
      "new_path": "clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp"
    },
    {
      "type": "modify",
      "old_id": "03f1432d990cb0be2f5745afb625fe2c730145d8",
      "old_mode": 33188,
      "old_path": "clang/unittests/Lex/PPDependencyDirectivesTest.cpp",
      "new_id": "6ab80ba01677e576070185504d49070930b49e4f",
      "new_mode": 33188,
      "new_path": "clang/unittests/Lex/PPDependencyDirectivesTest.cpp"
    }
  ]
}
