[PATCH] D77392: [WIP][clangd] Make signatureHelp work with stale preambles
Kadir Cetinkaya via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Apr 20 14:06:13 PDT 2020
kadircet marked 15 inline comments as done.
kadircet added inline comments.
================
Comment at: clang-tools-extra/clangd/Preamble.cpp:278
+ // This shouldn't coincide with any real file name.
+ PP.PatchFileName = llvm::formatv("{0}_preamble_patch.h", FileName);
+
----------------
sammccall wrote:
> I'm slightly nervous about incorporating the filename itself, not sure why but it feels unneccesary.
> WDYT about "dir/__preamble_patch__.h"?
it was done to get rid of path manipulations, but not that important.
================
Comment at: clang-tools-extra/clangd/Preamble.cpp:281
+ // We are only interested in newly added includes.
+ llvm::StringSet<> ExistingIncludes;
+ for (const auto &Inc : Preamble.LexedIncludes)
----------------
sammccall wrote:
> Why not a DenseSet<pair<PPKeywordKind, StringRef>>?
> (The copies probably don't matter, but I think it'd be a bit clearer and more typesafe)
PPKeywordKind didn't have a DenseMapInfo, adding one. It already has two invalid enum values.
================
Comment at: clang-tools-extra/clangd/Preamble.h:74
+ /// ones in disabled regions.
+ std::vector<Inclusion> LexedIncludes;
};
----------------
sammccall wrote:
> Since computing these inclusions seems to be cheap (you've disabled all the IO), would it be clearer and more flexible to store the preamble text as a string and compute both the baseline & new includes at the same time?
> I'm thinking if other preamble constructs (macros?) are added, needing to put more data structures in PreambleData, where if you store the text only those can be private details.
>
> (In fact the preamble text is already stored in PrecompiledPreamble, you could just expose it there)
>
>
since a preamble can be used with multiple preamble patches i wanted to reduce lexing overhead. I suppose we can address that later if it shows up in the traces. exposing the contents in PrecompiledPreamble.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D77392/new/
https://reviews.llvm.org/D77392
More information about the cfe-commits
mailing list