[PATCH] D83095: [clangd] Config: compute config in TUScheduler and BackgroundIndex

Kadir Cetinkaya via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Jul 3 12:24:17 PDT 2020


kadircet added inline comments.


================
Comment at: clang-tools-extra/clangd/ClangdServer.cpp:748
 
+Context ClangdServer::createProcessingContext(PathRef File) const {
+  if (!ConfigProvider)
----------------
sammccall wrote:
> kadircet wrote:
> > why not make this a free function in `ConfigProvider.h` ?
> > 
> > that way we could just keep passing ConfigProvider around rather than a derived lambda.
> > It makes testing more cumbersome, but enables us to move the logic out of ClangdServer
> Oh, I thought hiding this logic in ClangdServer was a feature!
> 
> For instance, if we want to report configuration errors as LSP diagnostics or as notifications, we need to have access to the ClangdServer to do that.
hmm, I thought we would rather make DiagnosticHandler an input parameter in such a scenario, (we even have the alias `config::DiagnosticCallback` 😅) with a nullptr just logging the errors and warnings (as in current implementation).

I don't see any other interaction but surfacing diagnostics, and I believe it would look nicer if we provided a callback for diags when creating context with configs. But this one also gets the job done, so up to you.


================
Comment at: clang-tools-extra/clangd/ClangdServer.cpp:761
+  auto DiagnosticHandler = [](const llvm::SMDiagnostic &Diag) {
+    log("config {0} at {1}:{2}:{3}: {4}",
+        Diag.getKind() == llvm::SourceMgr::DK_Error ? "error" : "warning",
----------------
kadircet wrote:
> why not elog
this is still logging though :D (not elog)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D83095/new/

https://reviews.llvm.org/D83095





More information about the cfe-commits mailing list