[PATCH] D33047: [ClangD] Refactor clangd into separate components

Krasimir Georgiev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu May 11 06:44:08 PDT 2017


krasimir added inline comments.


================
Comment at: clangd/CMakeLists.txt:12
   ProtocolHandlers.cpp
   )
 
----------------
nit: we might want to keep these sorted


================
Comment at: clangd/ClangdMain.cpp:41
   // dispatching.
-  DocumentStore Store;
-  ASTManager AST(Out, Store, RunSynchronously);
-  Store.addListener(&AST);
+  ClangdLSPServer AST(Out, RunSynchronously);
   JSONRPCDispatcher Dispatcher(llvm::make_unique<Handler>(Out));
----------------
The combination of the name and the type of this variable makes no sense.


================
Comment at: clangd/ClangdServer.h:41
 
-  void cacheFixIts(DiagnosticToReplacementMap FixIts);
-  std::vector<clang::tooling::Replacement>
-  getFixIts(const clangd::Diagnostic &D) const;
-
-private:
-  std::unique_ptr<ASTUnit> AST;
-  DiagnosticToReplacementMap FixIts;
+  virtual bool shouldBuildDiagnosticsForFile(PathRef File) = 0;
+  virtual void onDiagnosticsReady(PathRef File,
----------------
I feel that `shouldBuildDiagnosticsForFile` doesn't belong to this interface.


================
Comment at: clangd/ClangdServer.h:49
 /// A request to the worker thread
-class ASTManagerRequest {
+class ServerRequest {
 public:
----------------
If this models a request to the worker thread, why not call it `WorkerRequest` or something? The current name is confusing, because it implies that also other requests might be handled in this way.


================
Comment at: clangd/ClangdServer.h:62
+/// Handles scheduling on a different thread for ClangdServer
+class ClangdScheduler {
+public:
----------------
Maybe explicitly mention `Worker` in the name of this class?


================
Comment at: clangd/ClangdServer.h:68
+  /// Enqueue ServerRequest to be run on a worker thread
+  void Enqueue(ClangdServer &Server, ServerRequest Request);
 
----------------
The constructor already gets a `ClangdServer`, why pass it here?


https://reviews.llvm.org/D33047





More information about the cfe-commits mailing list