[PATCH] D102761: [clangd] New ParsingCallback for semantics changes
Kadir Cetinkaya via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue May 25 03:33:20 PDT 2021
kadircet added a comment.
> It seems like a lit test for this would be terrible. A ClangdServer one should be possible, but I can't quite wrap my head around how to write it.
> (Delivering the PreambleData as a param would make the test easier, you could assert that the preamble version was > any previously notified preamble & also > any preamble previously obtained via runWithPreamble.)
I also put some thought into it, but couldn't figure out a way that wouldn't be flaky. we can write a test that might catch a regression, but it won't catch all of them for sure unless we somehow block the execution of threads.
I tried to find some locking solution that wouldn't depend too much on the TUScheduler's implementation details but couldn't find any, and eventually gave up :/.
I can include a test that ensures `runWithAST` always sees a new preamble after `onPreamblePublished`, but as mentioned it is going to be a flaky at best. WDYT?
================
Comment at: clang-tools-extra/clangd/TUScheduler.h:175
+ /// on the file are guranteed to see new semantics after the callback.
+ virtual void onSemanticsMaybeChanged(PathRef File) {}
};
----------------
sammccall wrote:
> This seems a little vague/abstract for TUScheduler.
> The "caller" (i.e. ClangdServer impl) needs to know about preambles etc, c.f. onPreambleAST in this same interface.
>
> I'd suggest `onPreambleActive` or `onPreamblePublished` or something like that.
> (Passing the PreambleData struct as a param would also hint nicely at the distinction vs onPreambleAST but is maybe too cute if we're not actually going to use it...)
going with `onPreamblePublished`, since `Active` might mean it wasn't previously before (e.g. first preamble for a TU).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D102761/new/
https://reviews.llvm.org/D102761
More information about the cfe-commits
mailing list