[PATCH] D84499: [clangd] Add more logs and attach tracers to remote index server routines

Kirill Bobyrev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Jul 27 01:18:50 PDT 2020


kbobyrev added inline comments.


================
Comment at: clang-tools-extra/clangd/index/remote/server/Server.cpp:73
 private:
+  template <typename RequestT, typename ReplyT, typename ClangdRequestT,
+            typename IndexCall, typename StreamType, typename CallbackT>
----------------
sammccall wrote:
> you don't need both RequestT and ClangdRequest as template params:
>  - the things you're currently doing are all available through protobuf::Message base class
>  - but why not move the request fromProtobuf call in here so you only need to pass a single parameter?
> but why not move the request fromProtobuf call in here so you only need to pass a single parameter?
Yeah this is the idea; I have D84525 for extending `fromProtobuf` so that it can be moved here.


================
Comment at: clang-tools-extra/clangd/index/remote/server/Server.cpp:75
+            typename IndexCall, typename StreamType, typename CallbackT>
+  typename std::result_of<IndexCall(clangd::SymbolIndex &,
+                                    const ClangdRequestT &, CallbackT)>::type
----------------
sammccall wrote:
> can't the return type just be `auto`?
> Then I think you don't need CallbackT as a template param.
Ah, I thought LLVM is still C++ 11, not 14. Good to know, thanks!


================
Comment at: clang-tools-extra/clangd/index/remote/server/Server.cpp:96
+    } Counter(Request->DebugString());
+    return std::forward<IndexCall>(Call)(
+        *Index, ClangdRequest, [&](const StreamType &Item) {
----------------
sammccall wrote:
> kbobyrev wrote:
> > sammccall wrote:
> > > I don't think you need forward here... just take the param by const reference?
> > How do I do that? The problem is that some functions return `bool` and one `void`, so I can't really assign the result to variable and then return it.
> Currently you have 
> ```
> template <typename IndexCall>(IndexCall&& Call) {
>   forward<IndexCall>(Call);
> }
> ```
> but I think this would work fine here:
> ```
> template <typename IndexCall>(const IndexCall& Call) {
>   IndexCall(Call);
> }
> ```
> (nothing particularly wrong with this use of forward, but "more template goop" feels particularly expensive here.
Ah, you meant passing the callback by const reference. I see, thanks for the suggestion!


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D84499





More information about the cfe-commits mailing list