[PATCH] D35894: [clangd] Code hover for Clangd
Simon Marchi via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Feb 8 14:04:40 PST 2018
simark added inline comments.
================
Comment at: clangd/ClangdLSPServer.cpp:325
+void ClangdLSPServer::onHover(TextDocumentPositionParams &Params) {
+
+ llvm::Expected<Tagged<Hover>> H =
----------------
ilya-biryukov wrote:
> NIT: remove the empty line at the start of function
Done.
================
Comment at: clangd/Protocol.cpp:324
+json::Expr toJSON(const MarkupContent &MC) {
+ const char *KindStr = NULL;
+
----------------
ilya-biryukov wrote:
> NIT: use nullptr instead of NULL
> (irrelevant if we use `StringRef`, see other comment below)
Ack.
================
Comment at: clangd/Protocol.cpp:331
+
+ switch (MC.kind) {
+ case MarkupKind::PlainText:
----------------
ilya-biryukov wrote:
> - `StringRef` is a nicer abstraction, maybe use it instead of `const char*`?
> - Maybe move declaration of `KindStr` closer to its usage?
> - Maybe extract a helper function to mark the code path for invalid kinds as unreachable? I.e.
> ```
> static StringRef toTextKind(MarkupKind Kind) {
> switch (Kind) {
> case MarkupKind::PlainText:
> return "plaintext";
> case MarkupKind::Markdown:
> return "markdown";
> }
> llvm_unreachable("Invalid MarkupKind");
> }
> ```
Done.
================
Comment at: clangd/XRefs.cpp:326
+ if (const TagDecl *TD = dyn_cast<TagDecl>(ND)) {
+ switch (TD->getTagKind()) {
+ case TTK_Class:
----------------
ilya-biryukov wrote:
> Same suggestion as before. Could we extract a helper function to mark invalid enum values unreachable?
>
Done.
================
Comment at: clangd/XRefs.cpp:552
+ if (!Decls.empty()) {
+ assert(Decls[0] != nullptr);
+ if (Decls[0] != nullptr)
----------------
ilya-biryukov wrote:
> This assert seems rather unlikely and just makes the code more complex. Let's assume it's true and remove it (along with the subsequent if statement)
Done...
================
Comment at: clangd/XRefs.cpp:560
+ assert(Macros[0] != nullptr);
+ if (Macros[0] != nullptr)
+ return getHoverContents(Macros[0], AST);
----------------
ilya-biryukov wrote:
> This assert seems rather unlikely and just makes the code more complex. Let's assume it's true and remove it (along with the subsequent if statement)
>
>
... and done.
================
Comment at: test/clangd/hover.test:2
+# RUN: clangd -run-synchronously < %s | FileCheck %s
+# It is absolutely vital that this file has CRLF line endings.
+#
----------------
ilya-biryukov wrote:
> We have a more readable format for the lit-tests now. Could we update this test to use it?
> (see other tests in test/clangd for example)
Indeed the new format looks much more readable. I'll modify this one to look like completion.test.
Repository:
rCTE Clang Tools Extra
https://reviews.llvm.org/D35894
More information about the cfe-commits
mailing list