[
  {
    "diagram": "01-options",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 512,
    "text": "  tidy::ClangTidyOptions ClangTidyOpts;",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 513,
    "text": "  {",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 514,
    "text": "    trace::Span Tracer(\"ClangTidyOpts\");",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 515,
    "text": "    ClangTidyOpts = getTidyOptionsForFile(Inputs.ClangTidyProvider, Filename);",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 516,
    "text": "    dlog(\"ClangTidy configuration for file {0}: {1}\", Filename,",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 517,
    "text": "         tidy::configurationAsText(ClangTidyOpts));",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 538,
    "text": "    TidyDiagnosticGroups TidyGroups(ClangTidyOpts.Checks ? *ClangTidyOpts.Checks",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 539,
    "text": "                                                         : llvm::StringRef());",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 540,
    "text": "    if (ClangTidyOpts.ExtraArgsBefore)",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 541,
    "text": "      applyWarningOptions(*ClangTidyOpts.ExtraArgsBefore, TidyGroups, Diags);",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 542,
    "text": "    if (ClangTidyOpts.ExtraArgs)",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 543,
    "text": "      applyWarningOptions(*ClangTidyOpts.ExtraArgs, TidyGroups, Diags);",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 544,
    "text": "  }",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 545,
    "text": "",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 546,
    "text": "  auto Action = std::make_unique<ClangdFrontendAction>();",
    "changed": false
  },
  {
    "diagram": "01-options",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 547,
    "text": "  for (const auto &L : ASTListeners)",
    "changed": false
  },
  {
    "diagram": "01-options",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 548,
    "text": "    L->beforeBeginSourceFile(*Clang);",
    "changed": false
  },
  {
    "diagram": "01-options",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 549,
    "text": "  const FrontendInputFile &MainInput = Clang->getFrontendOpts().Inputs[0];",
    "changed": false
  },
  {
    "diagram": "01-options",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 550,
    "text": "  if (!Action->BeginSourceFile(*Clang, MainInput)) {",
    "changed": false
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 172,
    "text": "  void beforeBeginSourceFile(CompilerInstance &CI) override {",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 173,
    "text": "    // Warning options must precede frontend initialization: module loading in",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 174,
    "text": "    // BeginSourceFile() can consult their severity to decide whether to fail.",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 175,
    "text": "    const auto &Inputs = CI.getFrontendOpts().Inputs;",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 176,
    "text": "    if (Inputs.empty() || !Inputs.front().isFile()) {",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 177,
    "text": "      elog(\"Cannot configure clang-tidy without a main-file input\");",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 178,
    "text": "      return;",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 179,
    "text": "    }",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 180,
    "text": "    llvm::SmallString<256> Path(Inputs.front().getFile());",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 181,
    "text": "    // The remapped buffer carries clangd's original main-file spelling.",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 182,
    "text": "    for (const auto &Remap :",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 183,
    "text": "         llvm::reverse(CI.getPreprocessorOpts().RemappedFileBuffers)) {",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 184,
    "text": "      if (Remap.first == Inputs.front().getFile()) {",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 185,
    "text": "        Path = Remap.second->getBufferIdentifier();",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 186,
    "text": "        break;",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 187,
    "text": "      }",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 188,
    "text": "    }",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 189,
    "text": "    // Providers search parent directories for .clang-tidy and require an",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 190,
    "text": "    // absolute path. Respect the compiler's working directory, not clangd's.",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 191,
    "text": "    if (!llvm::sys::path::is_absolute(Path))",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 192,
    "text": "      CI.getFileManager().makeAbsolutePath(Path, /*Canonicalize=*/true);",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 193,
    "text": "    if (!llvm::sys::path::is_absolute(Path)) {",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 194,
    "text": "      elog(\"Cannot resolve clang-tidy input path: {0}\", Path);",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 195,
    "text": "      return;",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 196,
    "text": "    }",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 197,
    "text": "    Filename = Path.str().str();",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 198,
    "text": "    trace::Span Tracer(\"ClangTidyOpts\");",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 199,
    "text": "    Options = getTidyOptionsForFile(*Provider, Filename);",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 221,
    "text": "    TidyDiagnosticGroups EnabledGroups(Options->Checks ? *Options->Checks",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 222,
    "text": "                                                       : llvm::StringRef());",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 223,
    "text": "    if (Options->ExtraArgsBefore)",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 224,
    "text": "      applyWarningOptions(*Options->ExtraArgsBefore, EnabledGroups,",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 225,
    "text": "                          CI.getDiagnostics());",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 226,
    "text": "    if (Options->ExtraArgs)",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 227,
    "text": "      applyWarningOptions(*Options->ExtraArgs, EnabledGroups,",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 228,
    "text": "                          CI.getDiagnostics());",
    "changed": true
  },
  {
    "diagram": "01-options",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 229,
    "text": "  }",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 79,
    "text": "// Force the linker to link in Clang-tidy modules.",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 80,
    "text": "// clangd doesn't support the static analyzer.",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 81,
    "text": "#if CLANGD_TIDY_CHECKS",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 82,
    "text": "#define CLANG_TIDY_DISABLE_STATIC_ANALYZER_CHECKS",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 83,
    "text": "#include \"../clang-tidy/ClangTidyForceLinker.h\"",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 84,
    "text": "#endif",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 304,
    "text": "  TidyDiagnosticGroups(llvm::StringRef Checks) {",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 305,
    "text": "    constexpr llvm::StringLiteral CDPrefix = \"clang-diagnostic-\";",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 306,
    "text": "",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 307,
    "text": "    llvm::StringRef Check;",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 308,
    "text": "    while (!Checks.empty()) {",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 309,
    "text": "      std::tie(Check, Checks) = Checks.split(',');",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 310,
    "text": "      Check = Check.trim();",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 367,
    "text": "    bool NeedsWerrorExclusion = false;",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 368,
    "text": "    for (diag::kind ID : Members) {",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 369,
    "text": "      if (Enable) {",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 370,
    "text": "        if (Diags.getDiagnosticLevel(ID, SourceLocation()) <",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 371,
    "text": "            DiagnosticsEngine::Warning) {",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 372,
    "text": "          auto Group = Diags.getDiagnosticIDs()->getGroupForDiag(ID);",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 373,
    "text": "          if (!Group || !EnabledGroups(*Group))",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 374,
    "text": "            continue;",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 375,
    "text": "          Diags.setSeverity(ID, diag::Severity::Warning, SourceLocation());",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 376,
    "text": "          if (Diags.getWarningsAsErrors())",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 377,
    "text": "            NeedsWerrorExclusion = true;",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 378,
    "text": "        }",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 379,
    "text": "      } else {",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 380,
    "text": "        Diags.setSeverity(ID, diag::Severity::Ignored, SourceLocation());",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 381,
    "text": "      }",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 416,
    "text": "tidy::ClangTidyCheckFactories",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 417,
    "text": "filterFastTidyChecks(const tidy::ClangTidyCheckFactories &All,",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 418,
    "text": "                     Config::FastCheckPolicy Policy) {",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 419,
    "text": "  if (Policy == Config::FastCheckPolicy::None)",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 420,
    "text": "    return All;",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 421,
    "text": "  bool AllowUnknown = Policy == Config::FastCheckPolicy::Loose;",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 422,
    "text": "  tidy::ClangTidyCheckFactories Fast;",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 423,
    "text": "  for (const auto &Factory : All) {",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 424,
    "text": "    if (isFastTidyCheck(Factory.getKey()).value_or(AllowUnknown))",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 425,
    "text": "      Fast.registerCheckFactory(Factory.first(), Factory.second);",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 426,
    "text": "  }",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 427,
    "text": "  return Fast;",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 428,
    "text": "}",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 40,
    "text": "// Force the linker to link in Clang-tidy modules.",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 41,
    "text": "// clangd doesn't support the static analyzer.",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 42,
    "text": "#if CLANGD_TIDY_CHECKS",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 43,
    "text": "#define CLANG_TIDY_DISABLE_STATIC_ANALYZER_CHECKS",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 44,
    "text": "#include \"../clang-tidy/ClangTidyForceLinker.h\"",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 45,
    "text": "#endif",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 73,
    "text": "  TidyDiagnosticGroups(llvm::StringRef Checks) {",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 74,
    "text": "    constexpr llvm::StringLiteral Prefix = \"clang-diagnostic-\";",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 75,
    "text": "    llvm::StringRef Check;",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 76,
    "text": "    while (!Checks.empty()) {",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 77,
    "text": "      std::tie(Check, Checks) = Checks.split(',');",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 78,
    "text": "      Check = Check.trim();",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 79,
    "text": "      if (Check.empty())",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 80,
    "text": "        continue;",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 81,
    "text": "",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 82,
    "text": "      bool Enable = !Check.consume_front(\"-\");",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 83,
    "text": "      bool Glob = Check.consume_back(\"*\");",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 130,
    "text": "    bool NeedsWerrorExclusion = false;",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 131,
    "text": "    for (diag::kind ID : Members) {",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 132,
    "text": "      if (Enable) {",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 133,
    "text": "        if (Diags.getDiagnosticLevel(ID, SourceLocation()) >=",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 134,
    "text": "            DiagnosticsEngine::Warning)",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 135,
    "text": "          continue;",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 136,
    "text": "        auto DiagGroup = Diags.getDiagnosticIDs()->getGroupForDiag(ID);",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 137,
    "text": "        if (!DiagGroup || !EnabledGroups(*DiagGroup))",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 138,
    "text": "          continue;",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 139,
    "text": "        Diags.setSeverity(ID, diag::Severity::Warning, SourceLocation());",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 140,
    "text": "        NeedsWerrorExclusion |= Diags.getWarningsAsErrors();",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 141,
    "text": "      } else {",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 142,
    "text": "        Diags.setSeverity(ID, diag::Severity::Ignored, SourceLocation());",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 143,
    "text": "      }",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 154,
    "text": "tidy::ClangTidyCheckFactories",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 155,
    "text": "filterFastChecks(const tidy::ClangTidyCheckFactories &All,",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 156,
    "text": "                 Config::FastCheckPolicy Policy) {",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 157,
    "text": "  if (Policy == Config::FastCheckPolicy::None)",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 158,
    "text": "    return All;",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 159,
    "text": "  bool AllowUnknown = Policy == Config::FastCheckPolicy::Loose;",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 160,
    "text": "  tidy::ClangTidyCheckFactories Fast;",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 161,
    "text": "  for (const auto &Factory : All)",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 162,
    "text": "    if (isFastTidyCheck(Factory.getKey()).value_or(AllowUnknown))",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 163,
    "text": "      Fast.registerCheckFactory(Factory.first(), Factory.second);",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 164,
    "text": "  return Fast;",
    "changed": true
  },
  {
    "diagram": "02-helpers",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 165,
    "text": "}",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 572,
    "text": "  std::vector<std::unique_ptr<tidy::ClangTidyCheck>> CTChecks;",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 573,
    "text": "  ast_matchers::MatchFinder CTFinder;",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 574,
    "text": "  std::optional<tidy::ClangTidyContext> CTContext;",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 589,
    "text": "    CTContext.emplace(std::make_unique<tidy::DefaultOptionsProvider>(",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 590,
    "text": "                          tidy::ClangTidyGlobalOptions(), ClangTidyOpts),",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 591,
    "text": "                      /*AllowEnablingAnalyzerAlphaCheckers=*/false,",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 592,
    "text": "                      /*EnableModuleHeadersParsing=*/false,",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 593,
    "text": "                      Cfg.Diagnostics.ClangTidy.ExperimentalCustomChecks);",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 594,
    "text": "    // The lifetime of DiagnosticOptions is managed by \\c Clang.",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 595,
    "text": "    CTContext->setDiagnosticsEngine(nullptr, &Clang->getDiagnostics());",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 596,
    "text": "    CTContext->setASTContext(&Clang->getASTContext());",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 597,
    "text": "    CTContext->setCurrentFile(Filename);",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 598,
    "text": "    CTContext->setSelfContainedDiags(true);",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 599,
    "text": "    tidy::ClangTidyCheckFactories CTCheckFactories = *AllCTFactories;",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 252,
    "text": "            tidy::ClangTidyGlobalOptions(), std::move(*Options)),",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 253,
    "text": "        /*AllowEnablingAnalyzerAlphaCheckers=*/false,",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 254,
    "text": "        /*EnableModuleHeadersParsing=*/false,",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 255,
    "text": "        Config::current().Diagnostics.ClangTidy.ExperimentalCustomChecks);",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 256,
    "text": "    Options.reset();",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 257,
    "text": "    // The lifetime of DiagnosticOptions is managed by \\c Clang.",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 258,
    "text": "    Context->setDiagnosticsEngine(nullptr, &CI.getDiagnostics());",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 259,
    "text": "    Context->setASTContext(&CI.getASTContext());",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 260,
    "text": "    Context->setCurrentFile(Filename);",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 261,
    "text": "    Context->setSelfContainedDiags(true);",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 262,
    "text": "    tidy::ClangTidyCheckFactories Factories = *AllFactories;",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 263,
    "text": "#if CLANG_TIDY_ENABLE_QUERY_BASED_CUSTOM_CHECKS",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 377,
    "text": "private:",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 378,
    "text": "  std::shared_ptr<const TidyProvider> Provider;",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 379,
    "text": "  std::string Filename;",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 380,
    "text": "  std::optional<tidy::ClangTidyOptions> Options;",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 381,
    "text": "  // Destruction order matters: Finder and checks refer to Context.",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 382,
    "text": "  std::optional<tidy::ClangTidyContext> Context;",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 383,
    "text": "  std::vector<std::unique_ptr<tidy::ClangTidyCheck>> Checks;",
    "changed": true
  },
  {
    "diagram": "03-context",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 384,
    "text": "  ast_matchers::MatchFinder Finder;",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 582,
    "text": "    trace::Span Tracer(\"ClangTidyInit\");",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 583,
    "text": "    static const auto *AllCTFactories = [] {",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 584,
    "text": "      auto *CTFactories = new tidy::ClangTidyCheckFactories;",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 585,
    "text": "      for (const auto &E : tidy::ClangTidyModuleRegistry::entries())",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 586,
    "text": "        E.instantiate()->addCheckFactories(*CTFactories);",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 587,
    "text": "      return CTFactories;",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 588,
    "text": "    }();",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 600,
    "text": "#if CLANG_TIDY_ENABLE_QUERY_BASED_CUSTOM_CHECKS",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 601,
    "text": "    if (CTContext->canExperimentalCustomChecks() &&",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 602,
    "text": "        tidy::custom::RegisterCustomChecks) {",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 603,
    "text": "      // RegisterCustomChecks tracks names in process-wide mutable state.",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 604,
    "text": "      // Serializing its use keeps concurrent AST builds independent.",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 605,
    "text": "      static std::mutex CustomChecksMu;",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 606,
    "text": "      std::lock_guard<std::mutex> Lock(CustomChecksMu);",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 607,
    "text": "      tidy::custom::RegisterCustomChecks(CTContext->getOptions(),",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 608,
    "text": "                                         CTCheckFactories);",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 609,
    "text": "    }",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 610,
    "text": "#endif",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 611,
    "text": "    tidy::ClangTidyCheckFactories FastFactories = filterFastTidyChecks(",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 612,
    "text": "        CTCheckFactories, Cfg.Diagnostics.ClangTidy.FastCheckFilter);",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 613,
    "text": "    CTChecks = FastFactories.createChecksForLanguage(&*CTContext);",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 614,
    "text": "    Preprocessor *PP = &Clang->getPreprocessor();",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 615,
    "text": "    for (const auto &Check : CTChecks) {",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 616,
    "text": "      Check->registerPPCallbacks(Clang->getSourceManager(), PP, PP);",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 617,
    "text": "      Check->registerMatchers(&CTFinder);",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 618,
    "text": "    }",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 231,
    "text": "  void beforePPCallbacks(CompilerInstance &CI) override {",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 232,
    "text": "    // Preamble builds don't call beforeBeginSourceFile(). Running tidy there",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 233,
    "text": "    // would duplicate diagnostics and interfere with PCH generation.",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 234,
    "text": "    if (!Options)",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 235,
    "text": "      return;",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 245,
    "text": "      auto *Factories = new tidy::ClangTidyCheckFactories;",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 246,
    "text": "      for (const auto &Entry : tidy::ClangTidyModuleRegistry::entries())",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 247,
    "text": "        Entry.instantiate()->addCheckFactories(*Factories);",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 248,
    "text": "      return Factories;",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 249,
    "text": "    }();",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 250,
    "text": "    Context.emplace(",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 251,
    "text": "        std::make_unique<tidy::DefaultOptionsProvider>(",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 264,
    "text": "    if (Context->canExperimentalCustomChecks() &&",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 265,
    "text": "        tidy::custom::RegisterCustomChecks) {",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 266,
    "text": "      // RegisterCustomChecks tracks names in process-wide mutable state.",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 267,
    "text": "      // Serializing its use keeps concurrent AST builds independent.",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 268,
    "text": "      static std::mutex CustomChecksMu;",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 269,
    "text": "      std::lock_guard<std::mutex> Lock(CustomChecksMu);",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 270,
    "text": "      tidy::custom::RegisterCustomChecks(Context->getOptions(), Factories);",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 271,
    "text": "    }",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 272,
    "text": "#endif",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 273,
    "text": "    auto FastFactories = filterFastChecks(",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 274,
    "text": "        Factories, Config::current().Diagnostics.ClangTidy.FastCheckFilter);",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 275,
    "text": "    Checks = FastFactories.createChecksForLanguage(&*Context);",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 276,
    "text": "",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 277,
    "text": "    Preprocessor *PP = &CI.getPreprocessor();",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 278,
    "text": "    for (const auto &Check : Checks) {",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 279,
    "text": "      Check->registerPPCallbacks(CI.getSourceManager(), PP, PP);",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 280,
    "text": "      Check->registerMatchers(&Finder);",
    "changed": true
  },
  {
    "diagram": "04-checks",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 281,
    "text": "    }",
    "changed": true
  },
  {
    "diagram": "05-match",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 770,
    "text": "  // We have to consume the tokens before running clang-tidy to avoid collecting",
    "changed": false
  },
  {
    "diagram": "05-match",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 771,
    "text": "  // tokens from running the preprocessor inside the checks (only",
    "changed": false
  },
  {
    "diagram": "05-match",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 772,
    "text": "  // modernize-use-trailing-return-type does that today).",
    "changed": false
  },
  {
    "diagram": "05-match",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 773,
    "text": "  syntax::TokenBuffer Tokens = std::move(CollectTokens).consume();",
    "changed": false
  },
  {
    "diagram": "05-match",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 774,
    "text": "  // Makes SelectionTree build much faster.",
    "changed": false
  },
  {
    "diagram": "05-match",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 775,
    "text": "  Tokens.indexExpandedTokens();",
    "changed": false
  },
  {
    "diagram": "05-match",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 776,
    "text": "  std::vector<Decl *> ParsedDecls = Action->takeTopLevelDecls();",
    "changed": false
  },
  {
    "diagram": "05-match",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 777,
    "text": "  // AST traversals should exclude the preamble, to avoid performance cliffs.",
    "changed": false
  },
  {
    "diagram": "05-match",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 778,
    "text": "  Clang->getASTContext().setTraversalScope(ParsedDecls);",
    "changed": false
  },
  {
    "diagram": "05-match",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 779,
    "text": "  if (!CTChecks.empty()) {",
    "changed": true
  },
  {
    "diagram": "05-match",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 780,
    "text": "    // Run the AST-dependent part of the clang-tidy checks.",
    "changed": true
  },
  {
    "diagram": "05-match",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 781,
    "text": "    // (The preprocessor part ran already, via PPCallbacks).",
    "changed": true
  },
  {
    "diagram": "05-match",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 782,
    "text": "    trace::Span Tracer(\"ClangTidyMatch\");",
    "changed": true
  },
  {
    "diagram": "05-match",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 783,
    "text": "    CTFinder.matchAST(Clang->getASTContext());",
    "changed": true
  },
  {
    "diagram": "05-match",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 784,
    "text": "  }",
    "changed": true
  },
  {
    "diagram": "05-match",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 785,
    "text": "  for (const auto &L : ASTListeners)",
    "changed": false
  },
  {
    "diagram": "05-match",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 786,
    "text": "    L->afterExecute(*Clang);",
    "changed": false
  },
  {
    "diagram": "05-match",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 504,
    "text": "  // We have to consume the tokens before running clang-tidy to avoid collecting",
    "changed": false
  },
  {
    "diagram": "05-match",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 505,
    "text": "  // tokens from running the preprocessor inside the checks (only",
    "changed": false
  },
  {
    "diagram": "05-match",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 506,
    "text": "  // modernize-use-trailing-return-type does that today).",
    "changed": false
  },
  {
    "diagram": "05-match",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 507,
    "text": "  syntax::TokenBuffer Tokens = std::move(CollectTokens).consume();",
    "changed": false
  },
  {
    "diagram": "05-match",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 508,
    "text": "  // Makes SelectionTree build much faster.",
    "changed": false
  },
  {
    "diagram": "05-match",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 509,
    "text": "  Tokens.indexExpandedTokens();",
    "changed": false
  },
  {
    "diagram": "05-match",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 510,
    "text": "  std::vector<Decl *> ParsedDecls = Action->takeTopLevelDecls();",
    "changed": false
  },
  {
    "diagram": "05-match",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 511,
    "text": "  // AST traversals should exclude the preamble, to avoid performance cliffs.",
    "changed": false
  },
  {
    "diagram": "05-match",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 512,
    "text": "  Clang->getASTContext().setTraversalScope(ParsedDecls);",
    "changed": false
  },
  {
    "diagram": "05-match",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 513,
    "text": "  for (const auto &L : ASTListeners)",
    "changed": false
  },
  {
    "diagram": "05-match",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 514,
    "text": "    L->afterExecute(*Clang);",
    "changed": false
  },
  {
    "diagram": "05-match",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 284,
    "text": "  void afterExecute(CompilerInstance &CI) override {",
    "changed": true
  },
  {
    "diagram": "05-match",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 285,
    "text": "    if (Checks.empty())",
    "changed": true
  },
  {
    "diagram": "05-match",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 286,
    "text": "      return;",
    "changed": true
  },
  {
    "diagram": "05-match",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 287,
    "text": "    // Run the AST-dependent part of the clang-tidy checks.",
    "changed": true
  },
  {
    "diagram": "05-match",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 288,
    "text": "    // (The preprocessor part ran already, via PPCallbacks).",
    "changed": true
  },
  {
    "diagram": "05-match",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 289,
    "text": "    trace::Span Tracer(\"ClangTidyMatch\");",
    "changed": true
  },
  {
    "diagram": "05-match",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 290,
    "text": "    Finder.matchAST(CI.getASTContext());",
    "changed": true
  },
  {
    "diagram": "05-match",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 291,
    "text": "  }",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/FeatureModule.h",
    "line": 119,
    "text": "    /// remain consistent with the preamble, which may already have been built.",
    "changed": false
  },
  {
    "diagram": "06-multiplex",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/FeatureModule.h",
    "line": 120,
    "text": "    virtual void beforeBeginSourceFile(CompilerInstance &CI) {}",
    "changed": false
  },
  {
    "diagram": "06-multiplex",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/FeatureModule.h",
    "line": 129,
    "text": "    /// called.",
    "changed": false
  },
  {
    "diagram": "06-multiplex",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/FeatureModule.h",
    "line": 130,
    "text": "    virtual void beforePPCallbacks(CompilerInstance &CI) {}",
    "changed": false
  },
  {
    "diagram": "06-multiplex",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/FeatureModule.h",
    "line": 139,
    "text": "    /// The preprocessor has not received EndSourceFile() yet.",
    "changed": false
  },
  {
    "diagram": "06-multiplex",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/FeatureModule.h",
    "line": 140,
    "text": "    virtual void afterExecute(CompilerInstance &CI) {}",
    "changed": false
  },
  {
    "diagram": "06-multiplex",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/FeatureModule.h",
    "line": 144,
    "text": "    /// actions later on.",
    "changed": false
  },
  {
    "diagram": "06-multiplex",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/FeatureModule.h",
    "line": 145,
    "text": "    virtual void sawDiagnostic(const clang::Diagnostic &, clangd::Diag &) {}",
    "changed": false
  },
  {
    "diagram": "06-multiplex",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/FeatureModule.h",
    "line": 148,
    "text": "    /// fixes, and before it is returned to the caller.",
    "changed": false
  },
  {
    "diagram": "06-multiplex",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/FeatureModule.h",
    "line": 149,
    "text": "    virtual void finalizeDiagnostic(clangd::Diag &) {}",
    "changed": false
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 172,
    "text": "  void beforeBeginSourceFile(CompilerInstance &CI) override {",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 173,
    "text": "    // Warning options must precede frontend initialization: module loading in",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 174,
    "text": "    // BeginSourceFile() can consult their severity to decide whether to fail.",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 231,
    "text": "  void beforePPCallbacks(CompilerInstance &CI) override {",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 232,
    "text": "    // Preamble builds don't call beforeBeginSourceFile(). Running tidy there",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 233,
    "text": "    // would duplicate diagnostics and interfere with PCH generation.",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 234,
    "text": "    if (!Options)",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 235,
    "text": "      return;",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 236,
    "text": "",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 284,
    "text": "  void afterExecute(CompilerInstance &CI) override {",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 285,
    "text": "    if (Checks.empty())",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 286,
    "text": "      return;",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 287,
    "text": "    // Run the AST-dependent part of the clang-tidy checks.",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 288,
    "text": "    // (The preprocessor part ran already, via PPCallbacks).",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 289,
    "text": "    trace::Span Tracer(\"ClangTidyMatch\");",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 290,
    "text": "    Finder.matchAST(CI.getASTContext());",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 291,
    "text": "  }",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 293,
    "text": "  void sawDiagnostic(const clang::Diagnostic &Info, clangd::Diag &D) override {",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 294,
    "text": "    // Preserve the previous suppression policy when no checks are active.",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 295,
    "text": "    if (Checks.empty())",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 296,
    "text": "      return;",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 297,
    "text": "    std::string CheckName = Context->getCheckName(Info.getID());",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 344,
    "text": "  void finalizeDiagnostic(clangd::Diag &D) override {",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 345,
    "text": "    // Constructor diagnostics precede check initialization.",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 346,
    "text": "    if (D.Source == Diag::Unknown && Context &&",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 347,
    "text": "        !Context->isCompilerDiagnostic(D.ID)) {",
    "changed": true
  },
  {
    "diagram": "06-multiplex",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 348,
    "text": "      auto Name = Context->getCheckName(D.ID);",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 641,
    "text": "      if (!CTChecks.empty()) {",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 642,
    "text": "        std::string CheckName = CTContext->getCheckName(Info.getID());",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 643,
    "text": "        bool IsClangTidyDiag = !CheckName.empty();",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 644,
    "text": "        if (IsClangTidyDiag) {",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 645,
    "text": "          if (Cfg.Diagnostics.Suppress.contains(CheckName))",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 646,
    "text": "            return DiagnosticsEngine::Ignored;",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 653,
    "text": "          bool IsInsideMainFile =",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 654,
    "text": "              Info.hasSourceManager() &&",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 655,
    "text": "              isInsideMainFile(Info.getLocation(), Info.getSourceManager());",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 656,
    "text": "          SmallVector<tooling::Diagnostic, 1> TidySuppressedErrors;",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 657,
    "text": "          if (IsInsideMainFile && CTContext->shouldSuppressDiagnostic(",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 658,
    "text": "                                      DiagLevel, Info, TidySuppressedErrors,",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 659,
    "text": "                                      /*AllowIO=*/false,",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 660,
    "text": "                                      /*EnableNolintBlocks=*/true)) {",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 661,
    "text": "            // FIXME: should we expose the suppression error (invalid use of",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 662,
    "text": "            // NOLINT comments)?",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 667,
    "text": "              Info.getSourceManager().isInSystemMacro(Info.getLocation()))",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 668,
    "text": "            return DiagnosticsEngine::Ignored;",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 669,
    "text": "",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 670,
    "text": "          // Check for warning-as-error.",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 671,
    "text": "          if (DiagLevel == DiagnosticsEngine::Warning &&",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 672,
    "text": "              CTContext->treatAsError(CheckName)) {",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 673,
    "text": "            return DiagnosticsEngine::Error;",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 674,
    "text": "          }",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 675,
    "text": "        }",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 676,
    "text": "      }",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 677,
    "text": "      return DiagLevel;",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 678,
    "text": "    });",
    "changed": false
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 293,
    "text": "  void sawDiagnostic(const clang::Diagnostic &Info, clangd::Diag &D) override {",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 294,
    "text": "    // Preserve the previous suppression policy when no checks are active.",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 295,
    "text": "    if (Checks.empty())",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 296,
    "text": "      return;",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 297,
    "text": "    std::string CheckName = Context->getCheckName(Info.getID());",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 298,
    "text": "    if (CheckName.empty())",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 299,
    "text": "      return;",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 300,
    "text": "",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 301,
    "text": "    if (Config::current().Diagnostics.Suppress.contains(CheckName)) {",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 302,
    "text": "      D.Severity = DiagnosticsEngine::Ignored;",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 303,
    "text": "      return;",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 312,
    "text": "    bool InsideMainFile =",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 313,
    "text": "        Info.hasSourceManager() &&",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 314,
    "text": "        isInsideMainFile(Info.getLocation(), Info.getSourceManager());",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 315,
    "text": "    llvm::SmallVector<tooling::Diagnostic, 1> SuppressionErrors;",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 316,
    "text": "    if (InsideMainFile &&",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 317,
    "text": "        Context->shouldSuppressDiagnostic(D.Severity, Info, SuppressionErrors,",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 318,
    "text": "                                          /*AllowIO=*/false,",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 319,
    "text": "                                          /*EnableNolintBlocks=*/true)) {",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 320,
    "text": "      // FIXME: should we expose the suppression error (invalid use of",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 321,
    "text": "      // NOLINT comments)?",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 322,
    "text": "      D.Severity = DiagnosticsEngine::Ignored;",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 323,
    "text": "      return;",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 324,
    "text": "    }",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 325,
    "text": "    if (!Context->getOptions().SystemHeaders.value_or(false) &&",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 326,
    "text": "        Info.hasSourceManager() &&",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 327,
    "text": "        Info.getSourceManager().isInSystemMacro(Info.getLocation())) {",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 328,
    "text": "      D.Severity = DiagnosticsEngine::Ignored;",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 329,
    "text": "      return;",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 330,
    "text": "    }",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 331,
    "text": "    // Check for warning-as-error.",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 332,
    "text": "    if (D.Severity == DiagnosticsEngine::Warning &&",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 333,
    "text": "        Context->treatAsError(CheckName))",
    "changed": true
  },
  {
    "diagram": "07-filtering",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 334,
    "text": "      D.Severity = DiagnosticsEngine::Error;",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 574,
    "text": "std::vector<Diag> StoreDiags::take(const clang::tidy::ClangTidyContext *Tidy) {",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 602,
    "text": "      Diag.Source = Diag::Clang;",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 603,
    "text": "    } else if (Tidy != nullptr) {",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 604,
    "text": "      std::string TidyDiag = Tidy->getCheckName(Diag.ID);",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 605,
    "text": "      if (!TidyDiag.empty()) {",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 606,
    "text": "        Diag.Name = std::move(TidyDiag);",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 607,
    "text": "        Diag.Source = Diag::ClangTidy;",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.h",
    "line": 139,
    "text": "public:",
    "changed": false
  },
  {
    "diagram": "08-metadata",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.h",
    "line": 140,
    "text": "  // The ClangTidyContext populates Source and Name for clang-tidy diagnostics.",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.h",
    "line": 141,
    "text": "  std::vector<Diag> take(const clang::tidy::ClangTidyContext *Tidy = nullptr);",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 806,
    "text": "    std::vector<Diag> D = ASTDiags.take(&*CTContext);",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 807,
    "text": "    Diags.insert(Diags.end(), D.begin(), D.end());",
    "changed": false
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 336,
    "text": "    // Compiler warnings keep their clang source and -W name, even when their",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 337,
    "text": "    // severity or suppression is controlled by clang-tidy options.",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 338,
    "text": "    if (!Context->isCompilerDiagnostic(Info.getID())) {",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 339,
    "text": "      D.Name = std::move(CheckName);",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 340,
    "text": "      D.Source = Diag::ClangTidy;",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 341,
    "text": "    }",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 567,
    "text": "std::vector<Diag> StoreDiags::take() {",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 568,
    "text": "  // Do not forget to emit a pending diagnostic if there is one.",
    "changed": false
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 569,
    "text": "  flushLastDiag();",
    "changed": false
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 570,
    "text": "",
    "changed": false
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 571,
    "text": "  // Fill in name/source now that we have all the context needed to map them.",
    "changed": false
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 572,
    "text": "  for (auto &Diag : Output) {",
    "changed": false
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 573,
    "text": "    if (const char *ClangDiag = getDiagnosticCode(Diag.ID)) {",
    "changed": false
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 574,
    "text": "      // Feature modules may already have supplied diagnostic metadata.",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 575,
    "text": "      if (Diag.Source == Diag::Unknown)",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 576,
    "text": "        Diag.Source = Diag::Clang;",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 577,
    "text": "      if (Diag.Name.empty()) {",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 578,
    "text": "        // Warnings controlled by -Wfoo are better recognized by that name.",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/Diagnostics.h",
    "line": 135,
    "text": "class StoreDiags : public DiagnosticConsumer {",
    "changed": false
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/Diagnostics.h",
    "line": 136,
    "text": "public:",
    "changed": false
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/Diagnostics.h",
    "line": 137,
    "text": "  std::vector<Diag> take();",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 534,
    "text": "    std::vector<Diag> D = ASTDiags.take();",
    "changed": true
  },
  {
    "diagram": "08-metadata",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 535,
    "text": "    Diags.insert(Diags.end(), D.begin(), D.end());",
    "changed": false
  },
  {
    "diagram": "09-finalize",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 392,
    "text": "  if (D.Source == Diag::ClangTidy) {",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 393,
    "text": "    if (llvm::StringRef(D.Name).starts_with(\"misc-unused-\"))",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 394,
    "text": "      D.Tags.push_back(DiagnosticTag::Unnecessary);",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 395,
    "text": "    if (llvm::StringRef(D.Name).starts_with(\"modernize-\"))",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 396,
    "text": "      D.Tags.push_back(DiagnosticTag::Deprecated);",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 397,
    "text": "  }",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 398,
    "text": "}",
    "changed": false
  },
  {
    "diagram": "09-finalize",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 399,
    "text": "} // namespace",
    "changed": false
  },
  {
    "diagram": "09-finalize",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 610,
    "text": "        auto CleanMessage = [&](std::string &Msg) {",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 611,
    "text": "          StringRef Rest(Msg);",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 612,
    "text": "          if (Rest.consume_back(\"]\") && Rest.consume_back(Diag.Name) &&",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 613,
    "text": "              Rest.consume_back(\" [\"))",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 614,
    "text": "            Msg.resize(Rest.size());",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 615,
    "text": "        };",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 616,
    "text": "        CleanMessage(Diag.Message);",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 617,
    "text": "        for (auto &Note : Diag.Notes)",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 618,
    "text": "          CleanMessage(Note.Message);",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 619,
    "text": "        for (auto &Fix : Diag.Fixes)",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 620,
    "text": "          CleanMessage(Fix.Message);",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 344,
    "text": "  void finalizeDiagnostic(clangd::Diag &D) override {",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 345,
    "text": "    // Constructor diagnostics precede check initialization.",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 346,
    "text": "    if (D.Source == Diag::Unknown && Context &&",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 347,
    "text": "        !Context->isCompilerDiagnostic(D.ID)) {",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 348,
    "text": "      auto Name = Context->getCheckName(D.ID);",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 349,
    "text": "      if (!Name.empty()) {",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 350,
    "text": "        D.Name = std::move(Name);",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 351,
    "text": "        D.Source = Diag::ClangTidy;",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 352,
    "text": "      }",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 353,
    "text": "    }",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 354,
    "text": "    if (D.Source != Diag::ClangTidy)",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 355,
    "text": "      return;",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 356,
    "text": "    // clang-tidy bakes the name into diagnostic messages. Strip it out.",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 357,
    "text": "    // It would be much nicer to make clang-tidy not do this.",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 358,
    "text": "    auto CleanMessage = [&](std::string &Message) {",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 359,
    "text": "      llvm::StringRef Rest(Message);",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 360,
    "text": "      if (Rest.consume_back(\"]\") && Rest.consume_back(D.Name) &&",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 361,
    "text": "          Rest.consume_back(\" [\"))",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 362,
    "text": "        Message.resize(Rest.size());",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 363,
    "text": "    };",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 364,
    "text": "    CleanMessage(D.Message);",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 365,
    "text": "    for (auto &Note : D.Notes)",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 366,
    "text": "      CleanMessage(Note.Message);",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 367,
    "text": "    for (auto &Fix : D.Fixes)",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 368,
    "text": "      CleanMessage(Fix.Message);",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 369,
    "text": "    if (llvm::StringRef(D.Name).starts_with(\"misc-unused-\") &&",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 370,
    "text": "        !llvm::is_contained(D.Tags, DiagnosticTag::Unnecessary))",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 371,
    "text": "      D.Tags.push_back(DiagnosticTag::Unnecessary);",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 372,
    "text": "    if (llvm::StringRef(D.Name).starts_with(\"modernize-\") &&",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 373,
    "text": "        !llvm::is_contained(D.Tags, DiagnosticTag::Deprecated))",
    "changed": true
  },
  {
    "diagram": "09-finalize",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 374,
    "text": "      D.Tags.push_back(DiagnosticTag::Deprecated);",
    "changed": true
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/tool/ClangdMain.cpp",
    "line": 1024,
    "text": "      Providers.push_back(provideClangdConfig());",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/tool/ClangdMain.cpp",
    "line": 1025,
    "text": "    Providers.push_back(provideDefaultChecks());",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/tool/ClangdMain.cpp",
    "line": 1026,
    "text": "    Providers.push_back(disableUnusableChecks());",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/tool/ClangdMain.cpp",
    "line": 1027,
    "text": "    ClangTidyOptProvider = combine(std::move(Providers));",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/tool/ClangdMain.cpp",
    "line": 1028,
    "text": "    Opts.ClangTidyProvider = ClangTidyOptProvider;",
    "changed": true
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/tool/ClangdMain.cpp",
    "line": 1029,
    "text": "  }",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ClangdServer.h",
    "line": 148,
    "text": "    /// The Options provider to use when running clang-tidy. If null, clang-tidy",
    "changed": true
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ClangdServer.h",
    "line": 149,
    "text": "    /// checks will be disabled.",
    "changed": true
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ClangdServer.h",
    "line": 150,
    "text": "    TidyProviderRef ClangTidyProvider;",
    "changed": true
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ClangdServer.h",
    "line": 510,
    "text": "  // When set, provides clang-tidy options for a specific file.",
    "changed": true
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ClangdServer.h",
    "line": 511,
    "text": "  TidyProviderRef ClangTidyProvider;",
    "changed": true
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ClangdServer.cpp",
    "line": 314,
    "text": "  Inputs.ForceRebuild = ForceRebuild;",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ClangdServer.cpp",
    "line": 315,
    "text": "  Inputs.Opts = std::move(Opts);",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ClangdServer.cpp",
    "line": 316,
    "text": "  Inputs.Index = Index;",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ClangdServer.cpp",
    "line": 317,
    "text": "  Inputs.ClangTidyProvider = ClangTidyProvider;",
    "changed": true
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ClangdServer.cpp",
    "line": 318,
    "text": "  Inputs.FeatureModules = FeatureModules;",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ClangdServer.cpp",
    "line": 319,
    "text": "  Inputs.ModulesManager = ModulesManager;",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Compiler.h",
    "line": 61,
    "text": "  const SymbolIndex *Index = nullptr;",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Compiler.h",
    "line": 62,
    "text": "  ParseOptions Opts = ParseOptions();",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Compiler.h",
    "line": 63,
    "text": "  TidyProviderRef ClangTidyProvider = {};",
    "changed": true
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Compiler.h",
    "line": 64,
    "text": "  // Used to acquire ASTListeners when parsing files.",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Compiler.h",
    "line": 65,
    "text": "  FeatureModuleSet *FeatureModules = nullptr;",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Compiler.h",
    "line": 66,
    "text": "  // Used to build and manage (C++) modules.",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/ClangdMain.cpp",
    "line": 1045,
    "text": "  FeatureModuleSet ModuleSet = FeatureModuleSet::fromRegistry();",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/ClangdMain.cpp",
    "line": 1046,
    "text": "  if (EnableClangTidy)",
    "changed": true
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/ClangdMain.cpp",
    "line": 1047,
    "text": "    ModuleSet.add(std::make_unique<ClangTidyFeatureModule>(",
    "changed": true
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/ClangdMain.cpp",
    "line": 1048,
    "text": "        std::move(ClangTidyOptProvider)));",
    "changed": true
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/ClangdMain.cpp",
    "line": 1049,
    "text": "  if (ModuleSet.begin() != ModuleSet.end())",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/ClangdMain.cpp",
    "line": 1050,
    "text": "    Opts.FeatureModules = &ModuleSet;",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/ClangdMain.cpp",
    "line": 1051,
    "text": "",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangdServer.cpp",
    "line": 313,
    "text": "  Inputs.ForceRebuild = ForceRebuild;",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangdServer.cpp",
    "line": 314,
    "text": "  Inputs.Opts = std::move(Opts);",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangdServer.cpp",
    "line": 315,
    "text": "  Inputs.Index = Index;",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangdServer.cpp",
    "line": 316,
    "text": "  Inputs.FeatureModules = FeatureModules;",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangdServer.cpp",
    "line": 317,
    "text": "  Inputs.ModulesManager = ModulesManager;",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangdServer.cpp",
    "line": 318,
    "text": "  adjustParseInputs(Inputs, File);",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/Compiler.h",
    "line": 60,
    "text": "  const SymbolIndex *Index = nullptr;",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/Compiler.h",
    "line": 61,
    "text": "  ParseOptions Opts = ParseOptions();",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/Compiler.h",
    "line": 62,
    "text": "  // Used to acquire ASTListeners when parsing files.",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/Compiler.h",
    "line": 63,
    "text": "  FeatureModuleSet *FeatureModules = nullptr;",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/Compiler.h",
    "line": 64,
    "text": "  // Used to build and manage (C++) modules.",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/Compiler.h",
    "line": 65,
    "text": "  ModulesBuilder *ModulesManager = nullptr;",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 208,
    "text": "    Inputs.CompileCommand = Cmd;",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 209,
    "text": "    Inputs.TFS = &TFS;",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 210,
    "text": "    Inputs.FeatureModules = Opts.FeatureModules;",
    "changed": true
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 211,
    "text": "    Inputs.Opts.PreambleParseForwardingFunctions =",
    "changed": false
  },
  {
    "diagram": "10-wiring",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 212,
    "text": "        Opts.PreambleParseForwardingFunctions;",
    "changed": false
  },
  {
    "diagram": "11-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ClangdServer.h",
    "line": 148,
    "text": "    /// The Options provider to use when running clang-tidy. If null, clang-tidy",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ClangdServer.h",
    "line": 149,
    "text": "    /// checks will be disabled.",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ClangdServer.h",
    "line": 150,
    "text": "    TidyProviderRef ClangTidyProvider;",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Compiler.h",
    "line": 63,
    "text": "  TidyProviderRef ClangTidyProvider = {};",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Compiler.h",
    "line": 64,
    "text": "  // Used to acquire ASTListeners when parsing files.",
    "changed": false
  },
  {
    "diagram": "11-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Compiler.h",
    "line": 65,
    "text": "  FeatureModuleSet *FeatureModules = nullptr;",
    "changed": false
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.h",
    "line": 22,
    "text": "class ClangTidyFeatureModule final : public FeatureModule {",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.h",
    "line": 23,
    "text": "public:",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.h",
    "line": 24,
    "text": "  /// Construct explicitly with the application's clang-tidy options provider.",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.h",
    "line": 25,
    "text": "  /// Takes ownership of the provider; an empty provider disables checks.",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.h",
    "line": 26,
    "text": "  explicit ClangTidyFeatureModule(TidyProvider OptionsProvider) {",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.h",
    "line": 27,
    "text": "    setProvider(std::move(OptionsProvider));",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.h",
    "line": 28,
    "text": "  }",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.h",
    "line": 29,
    "text": "",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.h",
    "line": 30,
    "text": "  /// Swap provider snapshots, e.g. to temporarily override the configuration",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.h",
    "line": 31,
    "text": "  /// for benchmarking and restore it afterwards. Existing listeners retain",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.h",
    "line": 32,
    "text": "  /// their snapshot.",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.h",
    "line": 33,
    "text": "  void swapProvider(std::shared_ptr<const TidyProvider> &OptionsProvider);",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.h",
    "line": 34,
    "text": "",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.h",
    "line": 35,
    "text": "  std::unique_ptr<ASTListener> astListeners() override;",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.h",
    "line": 36,
    "text": "",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.h",
    "line": 37,
    "text": "private:",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.h",
    "line": 38,
    "text": "  void setProvider(TidyProvider OptionsProvider);",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.h",
    "line": 39,
    "text": "",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.h",
    "line": 40,
    "text": "  std::mutex ProviderMu;",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.h",
    "line": 41,
    "text": "  std::shared_ptr<const TidyProvider> Provider;",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 389,
    "text": "std::unique_ptr<FeatureModule::ASTListener>",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 390,
    "text": "ClangTidyFeatureModule::astListeners() {",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 391,
    "text": "  std::lock_guard<std::mutex> Lock(ProviderMu);",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 392,
    "text": "  if (!Provider)",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 393,
    "text": "    return nullptr;",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 394,
    "text": "  return std::make_unique<TidyASTListener>(Provider);",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 395,
    "text": "}",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 396,
    "text": "",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 397,
    "text": "void ClangTidyFeatureModule::setProvider(TidyProvider OptionsProvider) {",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 398,
    "text": "  std::shared_ptr<const TidyProvider> Replacement;",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 399,
    "text": "  if (OptionsProvider)",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 400,
    "text": "    Replacement =",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 401,
    "text": "        std::make_shared<const TidyProvider>(std::move(OptionsProvider));",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 402,
    "text": "  swapProvider(Replacement);",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 403,
    "text": "}",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 404,
    "text": "",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 405,
    "text": "void ClangTidyFeatureModule::swapProvider(",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 406,
    "text": "    std::shared_ptr<const TidyProvider> &OptionsProvider) {",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 407,
    "text": "  std::lock_guard<std::mutex> Lock(ProviderMu);",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 408,
    "text": "  Provider.swap(OptionsProvider);",
    "changed": true
  },
  {
    "diagram": "11-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 409,
    "text": "}",
    "changed": true
  },
  {
    "diagram": "12-benchmark",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 321,
    "text": "      TidyProvider CTProvider = [&](tidy::ClangTidyOptions &Opts,",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 322,
    "text": "                                    llvm::StringRef) {",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 323,
    "text": "        Opts.Checks = Checks.str();",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 324,
    "text": "      };",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 325,
    "text": "      Inputs.ClangTidyProvider = CTProvider;",
    "changed": true
  },
  {
    "diagram": "12-benchmark",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 326,
    "text": "      // Sigh, can't reuse the CompilerInvocation.",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 327,
    "text": "      IgnoringDiagConsumer IgnoreDiags;",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 328,
    "text": "      auto Invocation = buildCompilerInvocation(Inputs, IgnoreDiags);",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 329,
    "text": "      Duration Val = Time([&] {",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 330,
    "text": "        ParsedAST::build(File, Inputs, std::move(Invocation), {}, Preamble);",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 331,
    "text": "      });",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 332,
    "text": "      vlog(\"    Measured {0} ==> {1}\", Checks, Val);",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 333,
    "text": "      return Val;",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 371,
    "text": "    // Restore old options.",
    "changed": true
  },
  {
    "diagram": "12-benchmark",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 372,
    "text": "    Inputs.ClangTidyProvider = Opts.ClangTidyProvider;",
    "changed": true
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 303,
    "text": "  bool checkTidyTimes() {",
    "changed": true
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 304,
    "text": "    // Keep all other modules active while varying only tidy's configuration.",
    "changed": true
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 305,
    "text": "    auto *TidyModule =",
    "changed": true
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 306,
    "text": "        Inputs.FeatureModules",
    "changed": true
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 307,
    "text": "            ? Inputs.FeatureModules->get<ClangTidyFeatureModule>()",
    "changed": true
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 308,
    "text": "            : nullptr;",
    "changed": true
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 309,
    "text": "    if (!TidyModule) {",
    "changed": true
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 310,
    "text": "      elog(\"Cannot time clang-tidy checks without a clang-tidy feature module\");",
    "changed": true
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 311,
    "text": "      return false;",
    "changed": true
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 312,
    "text": "    }",
    "changed": true
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 333,
    "text": "      TidyProvider CTProvider = [&](tidy::ClangTidyOptions &Opts,",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 334,
    "text": "                                    llvm::StringRef) {",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 335,
    "text": "        Opts.Checks = Checks.str();",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 336,
    "text": "      };",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 337,
    "text": "      auto Provider =",
    "changed": true
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 338,
    "text": "          std::make_shared<const TidyProvider>(std::move(CTProvider));",
    "changed": true
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 339,
    "text": "      TidyModule->swapProvider(Provider);",
    "changed": true
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 340,
    "text": "      // Provider now holds the original configuration; restore it on exit.",
    "changed": true
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 341,
    "text": "      llvm::scope_exit RestoreProvider(",
    "changed": true
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 342,
    "text": "          [&] { TidyModule->swapProvider(Provider); });",
    "changed": true
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 343,
    "text": "      // Sigh, can't reuse the CompilerInvocation.",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 344,
    "text": "      IgnoringDiagConsumer IgnoreDiags;",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 345,
    "text": "      auto Invocation = buildCompilerInvocation(Inputs, IgnoreDiags);",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 346,
    "text": "      Duration Val = Time([&] {",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 347,
    "text": "        ParsedAST::build(File, Inputs, std::move(Invocation), {}, Preamble);",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 348,
    "text": "      });",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 349,
    "text": "      vlog(\"    Measured {0} ==> {1}\", Checks, Val);",
    "changed": false
  },
  {
    "diagram": "12-benchmark",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/tool/Check.cpp",
    "line": 350,
    "text": "      return Val;",
    "changed": false
  },
  {
    "diagram": "13-testtu",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 73,
    "text": "    FS.OverlayRealFileSystemForModules = true;",
    "changed": false
  },
  {
    "diagram": "13-testtu",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 74,
    "text": "  Inputs.TFS = &FS;",
    "changed": false
  },
  {
    "diagram": "13-testtu",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 75,
    "text": "  Inputs.Opts = ParseOptions();",
    "changed": false
  },
  {
    "diagram": "13-testtu",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 76,
    "text": "  if (ClangTidyProvider)",
    "changed": true
  },
  {
    "diagram": "13-testtu",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 77,
    "text": "    Inputs.ClangTidyProvider = ClangTidyProvider;",
    "changed": true
  },
  {
    "diagram": "13-testtu",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 78,
    "text": "  Inputs.Index = ExternalIndex;",
    "changed": false
  },
  {
    "diagram": "13-testtu",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 79,
    "text": "  return Inputs;",
    "changed": false
  },
  {
    "diagram": "13-testtu",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 115,
    "text": "ParsedAST TestTU::build() const {",
    "changed": false
  },
  {
    "diagram": "13-testtu",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 116,
    "text": "  MockFS FS;",
    "changed": false
  },
  {
    "diagram": "13-testtu",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 117,
    "text": "  auto Inputs = inputs(FS);",
    "changed": false
  },
  {
    "diagram": "13-testtu",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 118,
    "text": "  Inputs.Opts = ParseOpts;",
    "changed": false
  },
  {
    "diagram": "13-testtu",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 119,
    "text": "  StoreDiags Diags;",
    "changed": false
  },
  {
    "diagram": "13-testtu",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 120,
    "text": "  auto CI = buildCompilerInvocation(Inputs, Diags);",
    "changed": false
  },
  {
    "diagram": "13-testtu",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 114,
    "text": "ParsedAST TestTU::build() const {",
    "changed": false
  },
  {
    "diagram": "13-testtu",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 115,
    "text": "  if (ClangTidyProvider && FeatureModules) {",
    "changed": true
  },
  {
    "diagram": "13-testtu",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 116,
    "text": "    llvm::errs() << \"Use either ClangTidyProvider or FeatureModules\\n\";",
    "changed": true
  },
  {
    "diagram": "13-testtu",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 117,
    "text": "    std::abort();",
    "changed": true
  },
  {
    "diagram": "13-testtu",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 118,
    "text": "  }",
    "changed": true
  },
  {
    "diagram": "13-testtu",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 119,
    "text": "  MockFS FS;",
    "changed": false
  },
  {
    "diagram": "13-testtu",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 120,
    "text": "  auto Inputs = inputs(FS);",
    "changed": false
  },
  {
    "diagram": "13-testtu",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 121,
    "text": "  Inputs.Opts = ParseOpts;",
    "changed": false
  },
  {
    "diagram": "13-testtu",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 122,
    "text": "  FeatureModuleSet TidyModules;",
    "changed": true
  },
  {
    "diagram": "13-testtu",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 123,
    "text": "  if (ClangTidyProvider) {",
    "changed": true
  },
  {
    "diagram": "13-testtu",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 124,
    "text": "    TidyModules.add(std::make_unique<ClangTidyFeatureModule>(",
    "changed": true
  },
  {
    "diagram": "13-testtu",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 125,
    "text": "        [this](tidy::ClangTidyOptions &Opts, llvm::StringRef Filename) {",
    "changed": true
  },
  {
    "diagram": "13-testtu",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 126,
    "text": "          ClangTidyProvider(Opts, Filename);",
    "changed": true
  },
  {
    "diagram": "13-testtu",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 127,
    "text": "        }));",
    "changed": true
  },
  {
    "diagram": "13-testtu",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 128,
    "text": "    Inputs.FeatureModules = &TidyModules;",
    "changed": true
  },
  {
    "diagram": "13-testtu",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 129,
    "text": "  }",
    "changed": true
  },
  {
    "diagram": "13-testtu",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 130,
    "text": "  StoreDiags Diags;",
    "changed": false
  },
  {
    "diagram": "13-testtu",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 131,
    "text": "  auto CI = buildCompilerInvocation(Inputs, Diags);",
    "changed": false
  },
  {
    "diagram": "13-testtu",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 132,
    "text": "  assert(CI && \"Failed to build compilation invocation.\");",
    "changed": false
  },
  {
    "diagram": "13-testtu",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/TestTU.cpp",
    "line": 133,
    "text": "  if (OverlayRealFileSystemForModules)",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/ClangdTests.cpp",
    "line": 1228,
    "text": "  TidyProvider Provider = combine(std::move(Stack));",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/ClangdTests.cpp",
    "line": 1229,
    "text": "  CDB.ExtraClangFlags = {\"-xc++\"};",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/ClangdTests.cpp",
    "line": 1230,
    "text": "  auto Opts = ClangdServer::optsForTest();",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/ClangdTests.cpp",
    "line": 1231,
    "text": "  Opts.ClangTidyProvider = Provider;",
    "changed": true
  },
  {
    "diagram": "14-server-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/ClangdTests.cpp",
    "line": 1232,
    "text": "  ClangdServer Server(CDB, FS, Opts, &DiagConsumer);",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/ClangdTests.cpp",
    "line": 1233,
    "text": "  const char *SourceContents = R\"cpp(",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 212,
    "text": "                                        llvm::StringRef) {",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 213,
    "text": "    ClangTidyOpts.Checks = {\"-*,readability-identifier-naming\"};",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 214,
    "text": "    ClangTidyOpts.CheckOptions[\"readability-identifier-naming.FunctionCase\"] =",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 215,
    "text": "        \"CamelCase\";",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 216,
    "text": "  };",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 217,
    "text": "  Opts.ClangTidyProvider = ClangTidyProvider;",
    "changed": true
  },
  {
    "diagram": "14-server-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 218,
    "text": "  auto &Client = start();",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 219,
    "text": "  Client.didOpen(\"foo.hpp\", Header.code());",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 272,
    "text": "                                        llvm::StringRef) {",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 273,
    "text": "    ClangTidyOpts.Checks = {\"-*,boost-use-ranges\"};",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 274,
    "text": "  };",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 275,
    "text": "  Opts.ClangTidyProvider = ClangTidyProvider;",
    "changed": true
  },
  {
    "diagram": "14-server-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 276,
    "text": "  // Check that registering the boost-use-ranges checker's matchers",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 277,
    "text": "  // on two different threads does not cause a crash.",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 278,
    "text": "  auto &Client = start();",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdTests.cpp",
    "line": 1229,
    "text": "  TidyProvider Provider = combine(std::move(Stack));",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdTests.cpp",
    "line": 1230,
    "text": "  CDB.ExtraClangFlags = {\"-xc++\"};",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdTests.cpp",
    "line": 1231,
    "text": "  auto Opts = ClangdServer::optsForTest();",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdTests.cpp",
    "line": 1232,
    "text": "  FeatureModuleSet Modules;",
    "changed": true
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdTests.cpp",
    "line": 1233,
    "text": "  Modules.add(std::make_unique<ClangTidyFeatureModule>(std::move(Provider)));",
    "changed": true
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdTests.cpp",
    "line": 1234,
    "text": "  Opts.FeatureModules = &Modules;",
    "changed": true
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdTests.cpp",
    "line": 1235,
    "text": "  ClangdServer Server(CDB, FS, Opts, &DiagConsumer);",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdTests.cpp",
    "line": 1236,
    "text": "  const char *SourceContents = R\"cpp(",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 212,
    "text": "  constexpr auto ClangTidyProvider = [](tidy::ClangTidyOptions &ClangTidyOpts,",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 213,
    "text": "                                        llvm::StringRef) {",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 214,
    "text": "    ClangTidyOpts.Checks = {\"-*,readability-identifier-naming\"};",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 215,
    "text": "    ClangTidyOpts.CheckOptions[\"readability-identifier-naming.FunctionCase\"] =",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 216,
    "text": "        \"CamelCase\";",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 217,
    "text": "  };",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 218,
    "text": "  FeatureModules.add(",
    "changed": true
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 219,
    "text": "      std::make_unique<ClangTidyFeatureModule>(ClangTidyProvider));",
    "changed": true
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 220,
    "text": "  auto &Client = start();",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 221,
    "text": "  Client.didOpen(\"foo.hpp\", Header.code());",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 273,
    "text": "  constexpr auto ClangTidyProvider = [](tidy::ClangTidyOptions &ClangTidyOpts,",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 274,
    "text": "                                        llvm::StringRef) {",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 275,
    "text": "    ClangTidyOpts.Checks = {\"-*,boost-use-ranges\"};",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 276,
    "text": "  };",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 277,
    "text": "  FeatureModules.add(",
    "changed": true
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 278,
    "text": "      std::make_unique<ClangTidyFeatureModule>(ClangTidyProvider));",
    "changed": true
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 279,
    "text": "  // Check that registering the boost-use-ranges checker's matchers",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 280,
    "text": "  // on two different threads does not cause a crash.",
    "changed": false
  },
  {
    "diagram": "14-server-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp",
    "line": 281,
    "text": "  auto &Client = start();",
    "changed": false
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 625,
    "text": "    for (auto ID : {diag::ext_implicit_function_decl_c99,",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 626,
    "text": "                    diag::ext_implicit_lib_function_decl,",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 627,
    "text": "                    diag::ext_implicit_lib_function_decl_c99,",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 628,
    "text": "                    diag::warn_implicit_function_decl}) {",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 629,
    "text": "      OverriddenSeverity.try_emplace(",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 630,
    "text": "          ID, Clang->getDiagnostics().getDiagnosticLevel(ID, SourceLocation()));",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 631,
    "text": "      Clang->getDiagnostics().setSeverity(ID, diag::Severity::Error,",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 632,
    "text": "                                          SourceLocation());",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 633,
    "text": "    }",
    "changed": false
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 634,
    "text": "",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 635,
    "text": "    ASTDiags.setLevelAdjuster([&](DiagnosticsEngine::Level DiagLevel,",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 636,
    "text": "                                  const clang::Diagnostic &Info) {",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 637,
    "text": "      auto It = OverriddenSeverity.find(Info.getID());",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 638,
    "text": "      if (It != OverriddenSeverity.end())",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 639,
    "text": "        DiagLevel = It->second;",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 702,
    "text": "      FixIncludes.emplace(Filename, Inserter, *Inputs.Index,",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 703,
    "text": "                          /*IndexRequestLimit=*/5, Directive);",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 704,
    "text": "      ASTDiags.contributeFixes([&FixIncludes](DiagnosticsEngine::Level DiagLevl,",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 705,
    "text": "                                              const clang::Diagnostic &Info) {",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 706,
    "text": "        return FixIncludes->fix(DiagLevl, Info);",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 707,
    "text": "      });",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 708,
    "text": "      Clang->setExternalSemaSource(FixIncludes->unresolvedNameRecorder());",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 776,
    "text": "  std::vector<Decl *> ParsedDecls = Action->takeTopLevelDecls();",
    "changed": false
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 777,
    "text": "  // AST traversals should exclude the preamble, to avoid performance cliffs.",
    "changed": false
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 778,
    "text": "  Clang->getASTContext().setTraversalScope(ParsedDecls);",
    "changed": false
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 779,
    "text": "  if (!CTChecks.empty()) {",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 780,
    "text": "    // Run the AST-dependent part of the clang-tidy checks.",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 781,
    "text": "    // (The preprocessor part ran already, via PPCallbacks).",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 782,
    "text": "    trace::Span Tracer(\"ClangTidyMatch\");",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 783,
    "text": "    CTFinder.matchAST(Clang->getASTContext());",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 784,
    "text": "  }",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 785,
    "text": "  for (const auto &L : ASTListeners)",
    "changed": false
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 786,
    "text": "    L->afterExecute(*Clang);",
    "changed": false
  },
  {
    "diagram": "15-stays",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 787,
    "text": "",
    "changed": false
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 395,
    "text": "  // Clang only corrects typos for use of undeclared functions in C if that",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 396,
    "text": "  // use is an error. Include fixer relies on typo correction, so pretend",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 397,
    "text": "  // this is an error. (The actual typo correction is nice too).",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 398,
    "text": "  // We restore the original severity in the level adjuster.",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 399,
    "text": "  // FIXME: It would be better to have a real API for this, but what?",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 400,
    "text": "  for (auto ID : {diag::ext_implicit_function_decl_c99,",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 401,
    "text": "                  diag::ext_implicit_lib_function_decl,",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 402,
    "text": "                  diag::ext_implicit_lib_function_decl_c99,",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 403,
    "text": "                  diag::warn_implicit_function_decl}) {",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 404,
    "text": "    OverriddenSeverity.try_emplace(",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 405,
    "text": "        ID, Clang->getDiagnostics().getDiagnosticLevel(ID, SourceLocation()));",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 406,
    "text": "    Clang->getDiagnostics().setSeverity(ID, diag::Severity::Error,",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 407,
    "text": "                                        SourceLocation());",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 408,
    "text": "  }",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 409,
    "text": "  ASTDiags.setLevelAdjuster(",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 410,
    "text": "      [&](DiagnosticsEngine::Level Level, const clang::Diagnostic &Info) {",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 411,
    "text": "        auto It = OverriddenSeverity.find(Info.getID());",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 412,
    "text": "        return It == OverriddenSeverity.end() ? Level : It->second;",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 413,
    "text": "      });",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 430,
    "text": "    // FIXME: Consider piping through ASTSignals to fetch this to handle the",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 431,
    "text": "    // case where a header file contains ObjC decls but no #imports.",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 432,
    "text": "    Symbol::IncludeDirective Directive =",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 433,
    "text": "        Inputs.Opts.ImportInsertions",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 434,
    "text": "            ? preferredIncludeDirective(Filename, Clang->getLangOpts(),",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 435,
    "text": "                                        MainFileIncludes, {})",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 436,
    "text": "            : Symbol::Include;",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 437,
    "text": "    FixIncludes.emplace(Filename, Inserter, *Inputs.Index,",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 438,
    "text": "                        /*IndexRequestLimit=*/5, Directive);",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 439,
    "text": "    ASTDiags.contributeFixes([&FixIncludes](DiagnosticsEngine::Level Level,",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 440,
    "text": "                                            const clang::Diagnostic &Info) {",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 441,
    "text": "      return FixIncludes->fix(Level, Info);",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 442,
    "text": "    });",
    "changed": false
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 443,
    "text": "    Clang->setExternalSemaSource(FixIncludes->unresolvedNameRecorder());",
    "changed": true
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 444,
    "text": "  }",
    "changed": false
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 507,
    "text": "  syntax::TokenBuffer Tokens = std::move(CollectTokens).consume();",
    "changed": false
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 508,
    "text": "  // Makes SelectionTree build much faster.",
    "changed": false
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 509,
    "text": "  Tokens.indexExpandedTokens();",
    "changed": false
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 510,
    "text": "  std::vector<Decl *> ParsedDecls = Action->takeTopLevelDecls();",
    "changed": false
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 511,
    "text": "  // AST traversals should exclude the preamble, to avoid performance cliffs.",
    "changed": false
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 512,
    "text": "  Clang->getASTContext().setTraversalScope(ParsedDecls);",
    "changed": false
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 513,
    "text": "  for (const auto &L : ASTListeners)",
    "changed": false
  },
  {
    "diagram": "15-stays",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 514,
    "text": "    L->afterExecute(*Clang);",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 831,
    "text": "TEST(DiagnosticTest, ClangTidyCompilerWarningsWithoutChecks) {",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 832,
    "text": "  auto TU = TestTU::withCode(\"static void foo() {}\");",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 833,
    "text": "  TU.ClangTidyProvider = [](tidy::ClangTidyOptions &Opts, llvm::StringRef) {",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 834,
    "text": "    Opts.Checks = \"-*,clang-diagnostic-*\";",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 835,
    "text": "    Opts.ExtraArgs = {\"-Wunused-function\"};",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 836,
    "text": "    Opts.WarningsAsErrors = \"clang-diagnostic-unused-function\";",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 837,
    "text": "  };",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 838,
    "text": "  auto Warning = AllOf(diagName(\"-Wunused-function\"), diagSource(Diag::Clang),",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 839,
    "text": "                       diagSeverity(DiagnosticsEngine::Warning));",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 840,
    "text": "  EXPECT_THAT(TU.build().getDiagnostics(), ElementsAre(Warning));",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 841,
    "text": "",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 842,
    "text": "  // Without tidy checks, NOLINT and WarningsAsErrors don't affect warnings.",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 843,
    "text": "  TU.Code = \"static void foo() {} // NOLINT(clang-diagnostic-unused-function)\";",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 844,
    "text": "  EXPECT_THAT(TU.build().getDiagnostics(), ElementsAre(Warning));",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 845,
    "text": "}",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 847,
    "text": "TEST(DiagnosticTest, ClangTidyWarningOptionsBeforeBeginSourceFile) {",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 848,
    "text": "  auto Build = [](bool Suppress, bool ExtraArgsBefore) {",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 849,
    "text": "    auto TU = TestTU::withCode(\"int value;\");",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 850,
    "text": "    TU.ClangTidyProvider = [=](tidy::ClangTidyOptions &Opts, llvm::StringRef) {",
    "changed": true
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 851,
    "text": "      Opts.Checks = \"-*\";",
    "changed": true
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 852,
    "text": "      if (Suppress) {",
    "changed": true
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 853,
    "text": "        auto &Args = ExtraArgsBefore ? Opts.ExtraArgsBefore : Opts.ExtraArgs;",
    "changed": true
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 854,
    "text": "        Args = {\"-Wno-incomplete-umbrella\"};",
    "changed": true
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 855,
    "text": "      }",
    "changed": true
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 856,
    "text": "    };",
    "changed": true
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 857,
    "text": "    TU.ExtraArgs = {\"-fmodules\",",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 858,
    "text": "                    \"-fmodule-map-file=\" + testPath(\"module.modulemap\")};",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 859,
    "text": "    TU.AdditionalFiles[\"module.modulemap\"] =",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 832,
    "text": "TEST(DiagnosticTest, ClangTidyCompilerWarningsWithoutChecks) {",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 833,
    "text": "  auto TU = TestTU::withCode(\"static void foo() {}\");",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 834,
    "text": "  TU.ClangTidyProvider = [](tidy::ClangTidyOptions &Opts, llvm::StringRef) {",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 835,
    "text": "    Opts.Checks = \"-*,clang-diagnostic-*\";",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 836,
    "text": "    Opts.ExtraArgs = {\"-Wunused-function\"};",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 837,
    "text": "    Opts.WarningsAsErrors = \"clang-diagnostic-unused-function\";",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 838,
    "text": "  };",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 839,
    "text": "  auto Warning = AllOf(diagName(\"-Wunused-function\"), diagSource(Diag::Clang),",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 840,
    "text": "                       diagSeverity(DiagnosticsEngine::Warning));",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 841,
    "text": "  EXPECT_THAT(TU.build().getDiagnostics(), ElementsAre(Warning));",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 842,
    "text": "",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 843,
    "text": "  // Without tidy checks, NOLINT and WarningsAsErrors don't affect warnings.",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 844,
    "text": "  TU.Code = \"static void foo() {} // NOLINT(clang-diagnostic-unused-function)\";",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 845,
    "text": "  EXPECT_THAT(TU.build().getDiagnostics(), ElementsAre(Warning));",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 846,
    "text": "}",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 848,
    "text": "TEST(DiagnosticTest, ClangTidyWarningOptionsBeforeBeginSourceFile) {",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 849,
    "text": "  auto Build = [](bool Suppress, bool ExtraArgsBefore) {",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 850,
    "text": "    auto TU = TestTU::withCode(\"int value;\");",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 851,
    "text": "    FeatureModuleSet Modules;",
    "changed": true
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 852,
    "text": "    Modules.add(std::make_unique<ClangTidyFeatureModule>(",
    "changed": true
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 853,
    "text": "        [=](tidy::ClangTidyOptions &Opts, llvm::StringRef) {",
    "changed": true
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 854,
    "text": "          Opts.Checks = \"-*\";",
    "changed": true
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 855,
    "text": "          if (Suppress) {",
    "changed": true
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 856,
    "text": "            auto &Args =",
    "changed": true
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 857,
    "text": "                ExtraArgsBefore ? Opts.ExtraArgsBefore : Opts.ExtraArgs;",
    "changed": true
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 858,
    "text": "            Args = {\"-Wno-incomplete-umbrella\"};",
    "changed": true
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 859,
    "text": "          }",
    "changed": true
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 860,
    "text": "        }));",
    "changed": true
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 861,
    "text": "    TU.FeatureModules = &Modules;",
    "changed": true
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 862,
    "text": "    TU.ExtraArgs = {\"-fmodules\",",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 863,
    "text": "                    \"-fmodule-map-file=\" + testPath(\"module.modulemap\")};",
    "changed": false
  },
  {
    "diagram": "16-build-tests",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 864,
    "text": "    TU.AdditionalFiles[\"module.modulemap\"] =",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 879,
    "text": "TEST(DiagnosticTest, ClangTidyRelativeInput) {",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 880,
    "text": "  if (!CLANGD_TIDY_CHECKS)",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 881,
    "text": "    GTEST_SKIP() << \"Requires clang-tidy checks\";",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 882,
    "text": "  MockFS FS;",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 883,
    "text": "  auto TU = TestTU::withCode(\"int *p = 0;\");",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 884,
    "text": "  TU.Filename = \"project/src/test.cpp\";",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 885,
    "text": "  TU.AdditionalFiles[\"project/src/.clang-tidy\"] =",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 886,
    "text": "      \"Checks: '-*,modernize-use-nullptr'\";",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 887,
    "text": "  auto Provider = provideClangTidyFiles(FS);",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 888,
    "text": "  TU.ClangTidyProvider = [&](tidy::ClangTidyOptions &Opts,",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 889,
    "text": "                             llvm::StringRef Filename) {",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 890,
    "text": "    EXPECT_EQ(Filename, testPath(TU.Filename));",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 891,
    "text": "    Provider(Opts, Filename);",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 892,
    "text": "  };",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 893,
    "text": "  auto Inputs = TU.inputs(FS);",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 894,
    "text": "  Inputs.CompileCommand.Directory = testPath(\"project\");",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 895,
    "text": "  // Configuration lookup must use the requested file, not the frontend input.",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 896,
    "text": "  for (const auto *InputFile : {\"src/./test.cpp\", \"../other/test.cpp\"}) {",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 897,
    "text": "    SCOPED_TRACE(InputFile);",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 898,
    "text": "    IgnoringDiagConsumer Diags;",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 899,
    "text": "    auto CI = buildCompilerInvocation(Inputs, Diags);",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 900,
    "text": "    ASSERT_TRUE(CI);",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 901,
    "text": "    auto Kind = CI->getFrontendOpts().Inputs.front().getKind();",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 902,
    "text": "    CI->getFrontendOpts().Inputs = {FrontendInputFile(InputFile, Kind)};",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 903,
    "text": "    auto AST = ParsedAST::build(testPath(TU.Filename), Inputs, std::move(CI),",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 904,
    "text": "                                {}, nullptr);",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 905,
    "text": "    ASSERT_TRUE(AST);",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 906,
    "text": "    ASSERT_THAT(AST->getDiagnostics(), SizeIs(1));",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 907,
    "text": "    EXPECT_EQ(AST->getDiagnostics().front().Name, \"modernize-use-nullptr\");",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 908,
    "text": "  }",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 909,
    "text": "}",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 884,
    "text": "TEST(DiagnosticTest, ClangTidyRelativeInput) {",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 885,
    "text": "  if (!CLANGD_TIDY_CHECKS)",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 886,
    "text": "    GTEST_SKIP() << \"Requires clang-tidy checks\";",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 887,
    "text": "  MockFS FS;",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 888,
    "text": "  auto TU = TestTU::withCode(\"int *p = 0;\");",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 889,
    "text": "  TU.Filename = \"project/src/test.cpp\";",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 890,
    "text": "  TU.AdditionalFiles[\"project/src/.clang-tidy\"] =",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 891,
    "text": "      \"Checks: '-*,modernize-use-nullptr'\";",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 892,
    "text": "  auto Provider = provideClangTidyFiles(FS);",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 893,
    "text": "  FeatureModuleSet Modules;",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 894,
    "text": "  Modules.add(std::make_unique<ClangTidyFeatureModule>(",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 895,
    "text": "      [&](tidy::ClangTidyOptions &Opts, llvm::StringRef Filename) {",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 896,
    "text": "        EXPECT_EQ(Filename, testPath(TU.Filename));",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 897,
    "text": "        Provider(Opts, Filename);",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 898,
    "text": "      }));",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 899,
    "text": "  TU.FeatureModules = &Modules;",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 900,
    "text": "  auto Inputs = TU.inputs(FS);",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 901,
    "text": "  Inputs.CompileCommand.Directory = testPath(\"project\");",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 902,
    "text": "  // Configuration lookup must use the requested file, not the frontend input.",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 903,
    "text": "  for (const auto *InputFile : {\"src/./test.cpp\", \"../other/test.cpp\"}) {",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 904,
    "text": "    SCOPED_TRACE(InputFile);",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 905,
    "text": "    IgnoringDiagConsumer Diags;",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 906,
    "text": "    auto CI = buildCompilerInvocation(Inputs, Diags);",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 907,
    "text": "    ASSERT_TRUE(CI);",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 908,
    "text": "    auto Kind = CI->getFrontendOpts().Inputs.front().getKind();",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 909,
    "text": "    CI->getFrontendOpts().Inputs = {FrontendInputFile(InputFile, Kind)};",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 910,
    "text": "    auto AST = ParsedAST::build(testPath(TU.Filename), Inputs, std::move(CI),",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 911,
    "text": "                                {}, nullptr);",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 912,
    "text": "    ASSERT_TRUE(AST);",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 913,
    "text": "    ASSERT_THAT(AST->getDiagnostics(), SizeIs(1));",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 914,
    "text": "    EXPECT_EQ(AST->getDiagnostics().front().Name, \"modernize-use-nullptr\");",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 915,
    "text": "  }",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/DiagnosticsTests.cpp",
    "line": 916,
    "text": "}",
    "changed": false
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/FeatureModulesTests.cpp",
    "line": 310,
    "text": "TEST(FeatureModulesTest, ClangTidyTemporaryProvider) {",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/FeatureModulesTests.cpp",
    "line": 311,
    "text": "  if (!CLANGD_TIDY_CHECKS)",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/FeatureModulesTests.cpp",
    "line": 312,
    "text": "    GTEST_SKIP() << \"Requires clang-tidy checks\";",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/FeatureModulesTests.cpp",
    "line": 313,
    "text": "  FeatureModuleSet Modules;",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/FeatureModulesTests.cpp",
    "line": 314,
    "text": "  Modules.add(std::make_unique<ClangTidyFeatureModule>(",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/FeatureModulesTests.cpp",
    "line": 315,
    "text": "      addTidyChecks(\"modernize-use-nullptr\")));",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/FeatureModulesTests.cpp",
    "line": 316,
    "text": "  auto TU = TestTU::withCode(\"int *p = 0;\");",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/FeatureModulesTests.cpp",
    "line": 317,
    "text": "  TU.FeatureModules = &Modules;",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/FeatureModulesTests.cpp",
    "line": 318,
    "text": "  auto *Tidy = Modules.get<ClangTidyFeatureModule>();",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/FeatureModulesTests.cpp",
    "line": 319,
    "text": "  auto Provider = std::make_shared<const TidyProvider>(addTidyChecks(\"-*\"));",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/FeatureModulesTests.cpp",
    "line": 320,
    "text": "  // Check-mode timing temporarily overrides tidy's configuration, then",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/FeatureModulesTests.cpp",
    "line": 321,
    "text": "  // restores the original provider for subsequent builds.",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/FeatureModulesTests.cpp",
    "line": 322,
    "text": "  Tidy->swapProvider(Provider);",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/FeatureModulesTests.cpp",
    "line": 323,
    "text": "  EXPECT_THAT(TU.build().getDiagnostics(), testing::IsEmpty());",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/FeatureModulesTests.cpp",
    "line": 324,
    "text": "  Tidy->swapProvider(Provider);",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/FeatureModulesTests.cpp",
    "line": 325,
    "text": "  auto AST = TU.build();",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/FeatureModulesTests.cpp",
    "line": 326,
    "text": "  ASSERT_THAT(AST.getDiagnostics(), testing::SizeIs(1));",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/FeatureModulesTests.cpp",
    "line": 327,
    "text": "  EXPECT_EQ(AST.getDiagnostics().front().Name, \"modernize-use-nullptr\");",
    "changed": true
  },
  {
    "diagram": "17-paths-provider",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/unittests/FeatureModulesTests.cpp",
    "line": 328,
    "text": "}",
    "changed": true
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/CMakeLists.txt",
    "line": 66,
    "text": "  ASTSignals.cpp",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/CMakeLists.txt",
    "line": 67,
    "text": "  ClangdLSPServer.cpp",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/CMakeLists.txt",
    "line": 68,
    "text": "  ClangdServer.cpp",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/CMakeLists.txt",
    "line": 69,
    "text": "  CodeComplete.cpp",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/CMakeLists.txt",
    "line": 70,
    "text": "  CodeCompletionStrings.cpp",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/CMakeLists.txt",
    "line": 71,
    "text": "  CollectMacros.cpp",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "llvm/utils/gn/secondary/clang-tools-extra/clangd/BUILD.gn",
    "line": 82,
    "text": "    \"ASTSignals.cpp\",",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "llvm/utils/gn/secondary/clang-tools-extra/clangd/BUILD.gn",
    "line": 83,
    "text": "    \"ClangdLSPServer.cpp\",",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "llvm/utils/gn/secondary/clang-tools-extra/clangd/BUILD.gn",
    "line": 84,
    "text": "    \"ClangdServer.cpp\",",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "llvm/utils/gn/secondary/clang-tools-extra/clangd/BUILD.gn",
    "line": 85,
    "text": "    \"CodeComplete.cpp\",",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "llvm/utils/gn/secondary/clang-tools-extra/clangd/BUILD.gn",
    "line": 86,
    "text": "    \"CodeCompletionStrings.cpp\",",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "llvm/utils/gn/secondary/clang-tools-extra/clangd/BUILD.gn",
    "line": 87,
    "text": "    \"CollectMacros.cpp\",",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/CMakeLists.txt",
    "line": 66,
    "text": "  ASTSignals.cpp",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/CMakeLists.txt",
    "line": 67,
    "text": "  ClangdLSPServer.cpp",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/CMakeLists.txt",
    "line": 68,
    "text": "  ClangdServer.cpp",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/CMakeLists.txt",
    "line": 69,
    "text": "  ClangTidyFeatureModule.cpp",
    "changed": true
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/CMakeLists.txt",
    "line": 70,
    "text": "  CodeComplete.cpp",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/CMakeLists.txt",
    "line": 71,
    "text": "  CodeCompletionStrings.cpp",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/CMakeLists.txt",
    "line": 72,
    "text": "  CollectMacros.cpp",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "llvm/utils/gn/secondary/clang-tools-extra/clangd/BUILD.gn",
    "line": 82,
    "text": "    \"ASTSignals.cpp\",",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "llvm/utils/gn/secondary/clang-tools-extra/clangd/BUILD.gn",
    "line": 83,
    "text": "    \"ClangdLSPServer.cpp\",",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "llvm/utils/gn/secondary/clang-tools-extra/clangd/BUILD.gn",
    "line": 84,
    "text": "    \"ClangdServer.cpp\",",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "llvm/utils/gn/secondary/clang-tools-extra/clangd/BUILD.gn",
    "line": 85,
    "text": "    \"ClangTidyFeatureModule.cpp\",",
    "changed": true
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "llvm/utils/gn/secondary/clang-tools-extra/clangd/BUILD.gn",
    "line": 86,
    "text": "    \"CodeComplete.cpp\",",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "llvm/utils/gn/secondary/clang-tools-extra/clangd/BUILD.gn",
    "line": 87,
    "text": "    \"CodeCompletionStrings.cpp\",",
    "changed": false
  },
  {
    "diagram": "18-diagnostic-build",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "llvm/utils/gn/secondary/clang-tools-extra/clangd/BUILD.gn",
    "line": 88,
    "text": "    \"CollectMacros.cpp\",",
    "changed": false
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 287,
    "text": "// Filter for clang diagnostics groups enabled by CTOptions.Checks.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 288,
    "text": "//",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 289,
    "text": "// These are check names like clang-diagnostics-unused.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 290,
    "text": "// Note that unlike -Wunused, clang-diagnostics-unused does not imply",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 291,
    "text": "// subcategories like clang-diagnostics-unused-function.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 292,
    "text": "//",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 293,
    "text": "// This is used to determine which diagnostics can be enabled by ExtraArgs in",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 294,
    "text": "// the clang-tidy configuration.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 295,
    "text": "class TidyDiagnosticGroups {",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 519,
    "text": "    // If clang-tidy is configured to emit clang warnings, we should too.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 520,
    "text": "    //",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 521,
    "text": "    // Such clang-tidy configuration consists of two parts:",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 522,
    "text": "    //   - ExtraArgs: [\"-Wfoo\"] causes clang to produce the warnings",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 523,
    "text": "    //   - Checks: \"clang-diagnostic-foo\" prevents clang-tidy filtering them out",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 524,
    "text": "    //",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 525,
    "text": "    // In clang-tidy, diagnostics are emitted if they pass both checks.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 526,
    "text": "    // When groups contain subgroups, -Wparent includes the child, but",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 527,
    "text": "    // clang-diagnostic-parent does not.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 528,
    "text": "    //",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 529,
    "text": "    // We *don't* want to change the compile command directly. This can have",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 530,
    "text": "    // too many unexpected effects: breaking the command, interactions with",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 531,
    "text": "    // -- and -Werror, etc. Besides, we've already parsed the command.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 532,
    "text": "    // Instead we parse the -W<group> flags and handle them directly.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 533,
    "text": "    //",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 534,
    "text": "    // Similarly, we don't want to use Checks to filter clang diagnostics after",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 535,
    "text": "    // they are generated, as this spreads clang-tidy emulation everywhere.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 536,
    "text": "    // Instead, we just use these to filter which extra diagnostics we enable.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 537,
    "text": "    auto &Diags = Clang->getDiagnostics();",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 538,
    "text": "    TidyDiagnosticGroups TidyGroups(ClangTidyOpts.Checks ? *ClangTidyOpts.Checks",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 539,
    "text": "                                                         : llvm::StringRef());",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 566,
    "text": "  // Set up ClangTidy. Must happen after BeginSourceFile() so ASTContext exists.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 567,
    "text": "  // Clang-tidy has some limitations to ensure reasonable performance:",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 568,
    "text": "  //  - checks don't see all preprocessor events in the preamble",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 569,
    "text": "  //  - matchers run only over the main-file top-level decls (and can't see",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 570,
    "text": "  //    ancestors outside this scope).",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 571,
    "text": "  // In practice almost all checks work well without modifications.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 572,
    "text": "  std::vector<std::unique_ptr<tidy::ClangTidyCheck>> CTChecks;",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 383,
    "text": "    if (NeedsWerrorExclusion) {",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 384,
    "text": "      // FIXME: there's no API to suppress -Werror for single diagnostics.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 385,
    "text": "      // In some cases with sub-groups, we may end up erroneously",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 386,
    "text": "      // downgrading diagnostics that were -Werror in the compile command.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/ParsedAST.cpp",
    "line": 387,
    "text": "      Diags.setDiagnosticGroupWarningAsError(Group, false);",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 608,
    "text": "        // clang-tidy bakes the name into diagnostic messages. Strip it out.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 609,
    "text": "        // It would be much nicer to make clang-tidy not do this.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "before",
    "commit": "101584320859c12c84929443136e9deb54de544a",
    "file": "clang-tools-extra/clangd/Diagnostics.cpp",
    "line": 610,
    "text": "        auto CleanMessage = [&](std::string &Msg) {",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 56,
    "text": "// Filter for clang diagnostics groups enabled by CTOptions.Checks.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 57,
    "text": "//",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 58,
    "text": "// These are check names like clang-diagnostics-unused.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 59,
    "text": "// Note that unlike -Wunused, clang-diagnostics-unused does not imply",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 60,
    "text": "// subcategories like clang-diagnostics-unused-function.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 61,
    "text": "//",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 62,
    "text": "// This is used to determine which diagnostics can be enabled by ExtraArgs in",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 63,
    "text": "// the clang-tidy configuration.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 64,
    "text": "class TidyDiagnosticGroups {",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 203,
    "text": "    // If clang-tidy is configured to emit clang warnings, we should too.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 204,
    "text": "    //",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 205,
    "text": "    // Such clang-tidy configuration consists of two parts:",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 206,
    "text": "    //   - ExtraArgs: [\"-Wfoo\"] causes clang to produce the warnings",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 207,
    "text": "    //   - Checks: \"clang-diagnostic-foo\" prevents clang-tidy filtering them out",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 208,
    "text": "    //",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 209,
    "text": "    // In clang-tidy, diagnostics are emitted if they pass both checks.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 210,
    "text": "    // When groups contain subgroups, -Wparent includes the child, but",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 211,
    "text": "    // clang-diagnostic-parent does not.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 212,
    "text": "    //",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 213,
    "text": "    // We *don't* want to change the compile command directly. This can have",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 214,
    "text": "    // too many unexpected effects: breaking the command, interactions with",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 215,
    "text": "    // -- and -Werror, etc. Besides, we've already parsed the command.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 216,
    "text": "    // Instead we parse the -W<group> flags and handle them directly.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 217,
    "text": "    //",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 218,
    "text": "    // Similarly, we don't want to use Checks to filter clang diagnostics after",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 219,
    "text": "    // they are generated, as this spreads clang-tidy emulation everywhere.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 220,
    "text": "    // Instead, we just use these to filter which extra diagnostics we enable.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 221,
    "text": "    TidyDiagnosticGroups EnabledGroups(Options->Checks ? *Options->Checks",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 222,
    "text": "                                                       : llvm::StringRef());",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 237,
    "text": "    // Set up ClangTidy. Must happen after BeginSourceFile() so ASTContext",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 238,
    "text": "    // exists. Clang-tidy has some limitations to ensure reasonable performance:",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 239,
    "text": "    //  - checks don't see all preprocessor events in the preamble",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 240,
    "text": "    //  - matchers run only over the main-file top-level decls (and can't see",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 241,
    "text": "    //    ancestors outside this scope).",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 242,
    "text": "    // In practice almost all checks work well without modifications.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 243,
    "text": "    trace::Span Tracer(\"ClangTidyInit\");",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 244,
    "text": "    static const auto *AllFactories = [] {",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 245,
    "text": "      auto *Factories = new tidy::ClangTidyCheckFactories;",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 145,
    "text": "    if (NeedsWerrorExclusion) {",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 146,
    "text": "      // FIXME: there's no API to suppress -Werror for single diagnostics.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 147,
    "text": "      // In some cases with sub-groups, we may end up erroneously",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 148,
    "text": "      // downgrading diagnostics that were -Werror in the compile command.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 149,
    "text": "      Diags.setDiagnosticGroupWarningAsError(Group, false);",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 356,
    "text": "    // clang-tidy bakes the name into diagnostic messages. Strip it out.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 357,
    "text": "    // It would be much nicer to make clang-tidy not do this.",
    "changed": true
  },
  {
    "diagram": "19-comments",
    "side": "after",
    "commit": "c64f1fca38c610faa448c14c5336808087b1996e",
    "file": "clang-tools-extra/clangd/ClangTidyFeatureModule.cpp",
    "line": 358,
    "text": "    auto CleanMessage = [&](std::string &Message) {",
    "changed": true
  }
]
