[PATCH] D38425: [clangd] Document highlights for clangd
Marc-Andre Laperle via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sun Dec 3 21:08:08 PST 2017
malaperle requested changes to this revision.
malaperle added inline comments.
This revision now requires changes to proceed.
================
Comment at: clangd/ClangdServer.cpp:528
+ Value = llvm::make_error<llvm::StringError>(
+ "invalid AST",
+ llvm::errc::invalid_argument);
----------------
Invalid
================
Comment at: clangd/ClangdServer.cpp:530
+ llvm::errc::invalid_argument);
+ Value = make_tagged(clangd::findDocumentHighlights(*AST, Pos, Logger), TaggedFS.Tag);
+ });
----------------
It trips here with assertions enabled because we haven't checked the previous "Value" for error before, sigh.
Expected<T> must be checked before access or destruction.
Expected<T> value was in success state. (Note: Expected<T> values in success mode must still be checked prior to being destroyed).
How about this:
```
std::vector<DocumentHighlight> Result;
llvm::Optional<llvm::Error> Err;
Resources->getAST().get()->runUnderLock([Pos, &Result, &Err,
this](ParsedAST *AST) {
if (!AST)
Err = llvm::make_error<llvm::StringError>("Invalid AST",
llvm::errc::invalid_argument);
Result = clangd::findDocumentHighlights(*AST, Pos, Logger);
});
if (Err)
return std::move(*Err);
return make_tagged(Result, TaggedFS.Tag);
```
The tests pass for me with this.
================
Comment at: clangd/Protocol.cpp:372
+
+
+
----------------
Too many new lines. Only keep one.
================
Comment at: clangd/Protocol.h:568
+struct DocumentHighlight {
+ /*
+ *
----------------
Use /// like other places
================
Comment at: clangd/Protocol.h:575
+ /**
+ * The highlight kind, default is DocumentHighlightKind.Text.
+ */
----------------
Use /// like other places
Repository:
rCTE Clang Tools Extra
https://reviews.llvm.org/D38425
More information about the cfe-commits
mailing list