[PATCH] D42517: [clangd] Pass Context implicitly using TLS.
    Sam McCall via Phabricator via cfe-commits 
    cfe-commits at lists.llvm.org
       
    Wed Jan 31 04:59:00 PST 2018
    
    
  
sammccall marked 2 inline comments as done.
sammccall added inline comments.
================
Comment at: clangd/JSONRPCDispatcher.h:60
+/// Current context must derive from JSONRPCDispatcher::Handler.
+void reply(json::Expr &&Result);
+/// Sends an error response to the client, and logs it.
----------------
ilya-biryukov wrote:
> `reply`'s signature is scary now.
> Should we change it to accept something request-specific that can be found in the `Context` by the clients? WDYT? 
> 
> PS we could change it after the patch lands, just wanted to get your opinion on this
Oops, missed this.
To me, the scariest part is that "reply" is a very generic name and its parameter is approximately "anything".
In principle your suggestion makes sense, but passing `Context::current()` explicitly is plain weird, and passing `Context::current().get(kRequestToken)` seems pretty grungy in the context.
I think I'd be more partial to either giving it a more specific name like `replyToLSPRequest` which hints at the current-context requirement, or actually making all our LSP handlers accept a `UniqueFunction<Expected<T>>` and obviating the need for `reply` altogether.
Either way, I'd prefer to address this separately (partly because I'm not sure which is best).
Repository:
  rCTE Clang Tools Extra
https://reviews.llvm.org/D42517
    
    
More information about the cfe-commits
mailing list