summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clangd/Protocol.cpp
diff options
context:
space:
mode:
authorSam McCall <sam.mccall@gmail.com>2019-04-18 15:17:07 +0000
committerSam McCall <sam.mccall@gmail.com>2019-04-18 15:17:07 +0000
commitc9e4ee9ca995fbbb0b5e7b7b67bf0ffec4ba1046 (patch)
tree5023772e64461bf7dd3cf9626b66b1f19a9d66f2 /clang-tools-extra/clangd/Protocol.cpp
parent2751b69dd3945ef9bd1298c16dca5b59076f8f17 (diff)
downloadbcm5719-llvm-c9e4ee9ca995fbbb0b5e7b7b67bf0ffec4ba1046.tar.gz
bcm5719-llvm-c9e4ee9ca995fbbb0b5e7b7b67bf0ffec4ba1046.zip
[clangd] Support relatedInformation in diagnostics.
Summary: We already have the structure internally, we just need to expose it. Reviewers: ilya-biryukov Subscribers: ioeric, MaskRay, jkorous, arphaman, kadircet, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D60267 llvm-svn: 358675
Diffstat (limited to 'clang-tools-extra/clangd/Protocol.cpp')
-rw-r--r--clang-tools-extra/clangd/Protocol.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/clang-tools-extra/clangd/Protocol.cpp b/clang-tools-extra/clangd/Protocol.cpp
index 60c047b30b5..a8b1c43732d 100644
--- a/clang-tools-extra/clangd/Protocol.cpp
+++ b/clang-tools-extra/clangd/Protocol.cpp
@@ -277,6 +277,8 @@ bool fromJSON(const llvm::json::Value &Params, ClientCapabilities &R) {
R.DiagnosticCategory = *CategorySupport;
if (auto CodeActions = Diagnostics->getBoolean("codeActionsInline"))
R.DiagnosticFixes = *CodeActions;
+ if (auto RelatedInfo = Diagnostics->getBoolean("relatedInformation"))
+ R.DiagnosticRelatedInformation = *RelatedInfo;
}
if (auto *Completion = TextDocument->getObject("completion")) {
if (auto *Item = Completion->getObject("completionItem")) {
@@ -419,6 +421,13 @@ bool fromJSON(const llvm::json::Value &Params, DocumentSymbolParams &R) {
return O && O.map("textDocument", R.textDocument);
}
+llvm::json::Value toJSON(const DiagnosticRelatedInformation &DRI) {
+ return llvm::json::Object{
+ {"location", DRI.location},
+ {"message", DRI.message},
+ };
+}
+
llvm::json::Value toJSON(const Diagnostic &D) {
llvm::json::Object Diag{
{"range", D.range},
@@ -433,6 +442,8 @@ llvm::json::Value toJSON(const Diagnostic &D) {
Diag["code"] = D.code;
if (!D.source.empty())
Diag["source"] = D.source;
+ if (D.relatedInformation)
+ Diag["relatedInformation"] = *D.relatedInformation;
return std::move(Diag);
}
OpenPOWER on IntegriCloud