[PATCH] D63126: [clangd] Implement "prepareRename"

Sam McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Jul 23 04:42:45 PDT 2019


sammccall added inline comments.


================
Comment at: clang-tools-extra/clangd/ClangdLSPServer.cpp:393
         }}}};
+  if (Params.capabilities.RenamePrepareSupport)
+    Result["renameProvider"] = llvm::json::Object{{"prepareProvider", true}};
----------------
why set this only if the client advertised support?


================
Comment at: clang-tools-extra/clangd/ClangdServer.cpp:295
+    auto &AST = InpAST->AST;
+    // Return null if the "rename" is not valid at the position.
+    auto Changes = renameWithinFile(AST, File, Pos, "dummy", Index);
----------------
move this comment to at/in the !Changes block?


================
Comment at: clang-tools-extra/clangd/ClangdServer.cpp:296
+    // Return null if the "rename" is not valid at the position.
+    auto Changes = renameWithinFile(AST, File, Pos, "dummy", Index);
+    if (!Changes) {
----------------
High level comment indicating why we use rename to implement preparerename?
(i.e. why isn't it too expensive)


================
Comment at: clang-tools-extra/clangd/ClangdServer.cpp:298
+    if (!Changes) {
+      llvm::consumeError(Changes.takeError());
+      return CB(llvm::None);
----------------
I thought the point of supporting this was to get errors to the user sooner. That can't happen if we throw away the error message...


================
Comment at: clang-tools-extra/clangd/Protocol.h:412
+  /// before execution.
+  bool RenamePrepareSupport = false;
 };
----------------
(i think we shouldn't need to parse this at all)


================
Comment at: clang-tools-extra/clangd/test/prepare-rename.test:2
+# RUN: clangd -lit-test < %s | FileCheck -strict-whitespace %s
+{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"clangd","capabilities":{"textDocument": {"rename": {"dynamicRegistration": true, "prepareSupport": true}}},"trace":"off"}}
+# CHECK:      "renameProvider": {
----------------
inline this test into rename.test?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D63126





More information about the cfe-commits mailing list