[PATCH] D96544: [clangd] Extract binding of typed->untyped LSP handlers to LSPBinder. NFC
Kadir Cetinkaya via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Feb 15 01:21:54 PST 2021
kadircet accepted this revision.
kadircet added a comment.
This revision is now accepted and ready to land.
LGTM, thanks! (I wish outgoing calls were not so different :/)
================
Comment at: clang-tools-extra/clangd/ClangdLSPServer.cpp:173
} else {
- log("unhandled notification {0}", Method);
+ auto Handler = Server.Handlers.NotificationHandlers.find(Method);
+ if (Handler != Server.Handlers.NotificationHandlers.end()) {
----------------
why not keep the old lookup style ? since handlers are unique_functions, checking for null should still suffice (and be cheap)
================
Comment at: clang-tools-extra/clangd/LSPBinder.h:67
+ /// e.g. Bind.command("load", this, &ThisModule::load);
+ /// Handler should be e.g. void peek(const LoadParams&, Callback<LoadResult>);
+ /// LoadParams must be JSON-parseable and LoadResult must be serializable.
----------------
s/peek/load
================
Comment at: clang-tools-extra/clangd/unittests/LSPBinderTests.cpp:18
+
+using testing::_;
+using testing::HasSubstr;
----------------
please fix
================
Comment at: clang-tools-extra/clangd/unittests/LSPBinderTests.cpp:20
+using testing::HasSubstr;
+using testing::Pair;
+using testing::UnorderedElementsAre;
----------------
please fix
================
Comment at: clang-tools-extra/clangd/unittests/LSPBinderTests.cpp:25
+struct Foo {
+ int x;
+};
----------------
please fix (we usually follow camelCase for json-serializable types in clangd, but i don't think it is worth doing in tests)
================
Comment at: clang-tools-extra/clangd/unittests/LSPBinderTests.cpp:28
+bool fromJSON(const llvm::json::Value &V, Foo &F, llvm::json::Path P) {
+ return fromJSON(V, F.x, P);
+}
----------------
nit: s/P/P.field("x")
================
Comment at: clang-tools-extra/clangd/unittests/LSPBinderTests.cpp:51
+ void notify(const Foo &Params) { lastNotify = Params.x; }
+ int lastNotify = -1;
+ };
----------------
please fix, and maybe have a counter, in addition to last value to check for "invalid type" case?
================
Comment at: clang-tools-extra/clangd/unittests/LSPBinderTests.cpp:69
+ RawPlusOne(1, capture(Reply));
+ EXPECT_THAT_EXPECTED(Reply.getValue(), llvm::HasValue(2));
+ RawPlusOne("foo", capture(Reply));
----------------
nit: `ASSERT_THAT(Reply.hasValue())`
here and elsewhere
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D96544/new/
https://reviews.llvm.org/D96544
More information about the cfe-commits
mailing list