Clangd was using bounds from the stale preamble, which might result in
crashes. For example:
#include "a.h" #include "b.h" // this line is newly inserted #include "c.h"
PreambleBounds for the baseline only contains first two lines, but
ReplayPreamble logic contains an include from the third line. This would
result in a crash as we only lex preamble part of the current file
during ReplayPreamble.
This patch adds a preambleBounds method to PreamblePatch, which can be
used to figure out preamble bounds for the current version of the file.
Then uses it when attaching ReplayPreamble, so that it can lex the
up-to-date preamble region.
current -> Modified
I'd suggest calling this modifiedBounds()