[clangd] Provide patched diagnostics with preamble patch
authorKadir Cetinkaya <kadircet@google.com>
Wed, 1 Feb 2023 18:26:10 +0000 (19:26 +0100)
committerKadir Cetinkaya <kadircet@google.com>
Wed, 22 Feb 2023 14:54:15 +0000 (15:54 +0100)
commit8c2a12f7f9b6dc078bfb18df9333379fdf27c6a3
treeb9bb226af50d010a9875e176c4e9fcb94d452263
parent909cd1f9a8934033a803659da8c54c87013941ef
[clangd] Provide patched diagnostics with preamble patch

Translates diagnostics from baseline preamble to relevant modified
contents.

Translation is done by looking for a set of lines that have the same
contents in diagnostic/note/fix ranges inside baseline and modified
contents.

A diagnostic is preserved if its main range is outside of main file or
there's a translation from baseline to modified contents. Later on fixes
and notes attached to that diagnostic with relevant ranges are also
translated and preserved.

Depends on D143095

Differential Revision: https://reviews.llvm.org/D143096
clang-tools-extra/clangd/ParsedAST.cpp
clang-tools-extra/clangd/Preamble.cpp
clang-tools-extra/clangd/Preamble.h
clang-tools-extra/clangd/unittests/PreambleTests.cpp