[clang-tools-extra] 6525a6b - [clangd] Use structured PublishDiagnosticsParams. NFC
Sam McCall via cfe-commits
cfe-commits at lists.llvm.org
Tue Mar 3 03:44:49 PST 2020
Author: Sam McCall
Date: 2020-03-03T12:44:40+01:00
New Revision: 6525a6b7b2afc62edc6c2425b1e845c99f3c94fe
URL: https://github.com/llvm/llvm-project/commit/6525a6b7b2afc62edc6c2425b1e845c99f3c94fe
DIFF: https://github.com/llvm/llvm-project/commit/6525a6b7b2afc62edc6c2425b1e845c99f3c94fe.diff
LOG: [clangd] Use structured PublishDiagnosticsParams. NFC
Added:
Modified:
clang-tools-extra/clangd/ClangdLSPServer.cpp
clang-tools-extra/clangd/ClangdLSPServer.h
clang-tools-extra/clangd/Protocol.cpp
clang-tools-extra/clangd/Protocol.h
Removed:
################################################################################
diff --git a/clang-tools-extra/clangd/ClangdLSPServer.cpp b/clang-tools-extra/clangd/ClangdLSPServer.cpp
index e6d077b11885..9d93b8592fdc 100644
--- a/clang-tools-extra/clangd/ClangdLSPServer.cpp
+++ b/clang-tools-extra/clangd/ClangdLSPServer.cpp
@@ -814,7 +814,9 @@ void ClangdLSPServer::onDocumentDidClose(
// VSCode). Note that this cannot race with actual diagnostics responses
// because removeDocument() guarantees no diagnostic callbacks will be
// executed after it returns.
- publishDiagnostics(URIForFile::canonicalize(File, /*TUPath=*/File), {});
+ PublishDiagnosticsParams Notification;
+ Notification.uri = URIForFile::canonicalize(File, /*TUPath=*/File);
+ publishDiagnostics(Notification);
}
void ClangdLSPServer::onDocumentOnTypeFormatting(
@@ -1151,18 +1153,13 @@ void ClangdLSPServer::applyConfiguration(
}
void ClangdLSPServer::publishSemanticHighlighting(
- SemanticHighlightingParams Params) {
+ const SemanticHighlightingParams &Params) {
notify("textDocument/semanticHighlighting", Params);
}
void ClangdLSPServer::publishDiagnostics(
- const URIForFile &File, std::vector<clangd::Diagnostic> Diagnostics) {
- // Publish diagnostics.
- notify("textDocument/publishDiagnostics",
- llvm::json::Object{
- {"uri", File},
- {"diagnostics", std::move(Diagnostics)},
- });
+ const PublishDiagnosticsParams &Params) {
+ notify("textDocument/publishDiagnostics", Params);
}
// FIXME: This function needs to be properly tested.
@@ -1368,15 +1365,15 @@ void ClangdLSPServer::onHighlightingsReady(
void ClangdLSPServer::onDiagnosticsReady(PathRef File,
std::vector<Diag> Diagnostics) {
- auto URI = URIForFile::canonicalize(File, /*TUPath=*/File);
- std::vector<Diagnostic> LSPDiagnostics;
+ PublishDiagnosticsParams Notification;
+ Notification.uri = URIForFile::canonicalize(File, /*TUPath=*/File);
DiagnosticToReplacementMap LocalFixIts; // Temporary storage
for (auto &Diag : Diagnostics) {
- toLSPDiags(Diag, URI, DiagOpts,
+ toLSPDiags(Diag, Notification.uri, DiagOpts,
[&](clangd::Diagnostic Diag, llvm::ArrayRef<Fix> Fixes) {
auto &FixItsForDiagnostic = LocalFixIts[Diag];
llvm::copy(Fixes, std::back_inserter(FixItsForDiagnostic));
- LSPDiagnostics.push_back(std::move(Diag));
+ Notification.diagnostics.push_back(std::move(Diag));
});
}
@@ -1387,7 +1384,7 @@ void ClangdLSPServer::onDiagnosticsReady(PathRef File,
}
// Send a notification to the LSP client.
- publishDiagnostics(URI, std::move(LSPDiagnostics));
+ publishDiagnostics(Notification);
}
void ClangdLSPServer::onBackgroundIndexProgress(
diff --git a/clang-tools-extra/clangd/ClangdLSPServer.h b/clang-tools-extra/clangd/ClangdLSPServer.h
index 09167ca39a0f..4ab0354ead72 100644
--- a/clang-tools-extra/clangd/ClangdLSPServer.h
+++ b/clang-tools-extra/clangd/ClangdLSPServer.h
@@ -133,11 +133,10 @@ class ClangdLSPServer : private ClangdServer::Callbacks {
void applyConfiguration(const ConfigurationSettings &Settings);
/// Sends a "publishSemanticHighlighting" notification to the LSP client.
- void publishSemanticHighlighting(SemanticHighlightingParams Params);
+ void publishSemanticHighlighting(const SemanticHighlightingParams &);
/// Sends a "publishDiagnostics" notification to the LSP client.
- void publishDiagnostics(const URIForFile &File,
- std::vector<clangd::Diagnostic> Diagnostics);
+ void publishDiagnostics(const PublishDiagnosticsParams &);
/// Since initialization of CDBs and ClangdServer is done lazily, the
/// following context captures the one used while creating ClangdLSPServer and
diff --git a/clang-tools-extra/clangd/Protocol.cpp b/clang-tools-extra/clangd/Protocol.cpp
index 8e89c1f45f3a..5a867c52c1ed 100644
--- a/clang-tools-extra/clangd/Protocol.cpp
+++ b/clang-tools-extra/clangd/Protocol.cpp
@@ -531,6 +531,13 @@ bool fromJSON(const llvm::json::Value &Params, Diagnostic &R) {
return true;
}
+llvm::json::Value toJSON(const PublishDiagnosticsParams &PDP) {
+ return llvm::json::Object{
+ {"uri", PDP.uri},
+ {"diagnostics", PDP.diagnostics},
+ };
+}
+
bool fromJSON(const llvm::json::Value &Params, CodeActionContext &R) {
llvm::json::ObjectMapper O(Params);
return O && O.map("diagnostics", R.diagnostics);
diff --git a/clang-tools-extra/clangd/Protocol.h b/clang-tools-extra/clangd/Protocol.h
index b706e07e5686..596c7e9004e7 100644
--- a/clang-tools-extra/clangd/Protocol.h
+++ b/clang-tools-extra/clangd/Protocol.h
@@ -792,6 +792,14 @@ struct LSPDiagnosticCompare {
bool fromJSON(const llvm::json::Value &, Diagnostic &);
llvm::raw_ostream &operator<<(llvm::raw_ostream &, const Diagnostic &);
+struct PublishDiagnosticsParams {
+ /// The URI for which diagnostic information is reported.
+ URIForFile uri;
+ /// An array of diagnostic information items.
+ std::vector<Diagnostic> diagnostics;
+};
+llvm::json::Value toJSON(const PublishDiagnosticsParams &);
+
struct CodeActionContext {
/// An array of diagnostics.
std::vector<Diagnostic> diagnostics;
More information about the cfe-commits
mailing list