[PATCH] D44272: [clangd] Support incremental document syncing
    Simon Marchi via Phabricator via cfe-commits 
    cfe-commits at lists.llvm.org
       
    Mon Mar 19 09:04:59 PDT 2018
    
    
  
simark marked 4 inline comments as done.
simark added inline comments.
================
Comment at: clangd/ClangdLSPServer.cpp:164
+  if (!Contents) {
+    log(llvm::toString(Contents.takeError()));
+    return;
----------------
ilya-biryukov wrote:
> We should signal an error to the client by calling `replyError`
`textDocument/didChange` is a jsonrpc notification, not request, so we can't send back an error.
================
Comment at: clangd/DraftStore.cpp:106
+    } else {
+      NewContents = Change.text;
+    }
----------------
ilya-biryukov wrote:
> It is impossible to mix full content changes with incremental range changes, right?
> 
> I suggest handling the full content change as a separate case at the start of the function:
> ```
> if (Changes.size() == 1 && !Changes[0].range) {
>   Contents = std::move(Change.text);
>   return Contents;
> }
> 
> for (auto &Change : Changes) {
>   if (!Change.range)
>     return make_error("Full change in the middle of incremental changes");
> }
> ```
> 
I'd say it is unlikely and there's probably no reason to do it, but the way the data structure is allows it.
Repository:
  rCTE Clang Tools Extra
https://reviews.llvm.org/D44272
    
    
More information about the cfe-commits
mailing list